mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
TABL: use sy-subrc instead of syst_subrc
This commit is contained in:
parent
ca41c7d783
commit
9a935d2a14
|
@ -51,7 +51,24 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD check_is_idoc_segment.
|
||||||
|
|
||||||
|
DATA lv_segment_type TYPE edilsegtyp.
|
||||||
|
|
||||||
|
lv_segment_type = ms_item-obj_name.
|
||||||
|
|
||||||
|
SELECT SINGLE segtyp
|
||||||
|
FROM edisegment
|
||||||
|
INTO lv_segment_type
|
||||||
|
WHERE segtyp = lv_segment_type.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( 'No IDoc segment' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD clear_dd03p_fields.
|
METHOD clear_dd03p_fields.
|
||||||
|
@ -96,6 +113,22 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD clear_dd03p_fields_common.
|
||||||
|
|
||||||
|
CLEAR: cs_dd03p-ddlanguage,
|
||||||
|
cs_dd03p-dtelmaster,
|
||||||
|
cs_dd03p-logflag,
|
||||||
|
cs_dd03p-ddtext,
|
||||||
|
cs_dd03p-reservedte,
|
||||||
|
cs_dd03p-reptext,
|
||||||
|
cs_dd03p-scrtext_s,
|
||||||
|
cs_dd03p-scrtext_m,
|
||||||
|
cs_dd03p-scrtext_l.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD clear_dd03p_fields_dataelement.
|
METHOD clear_dd03p_fields_dataelement.
|
||||||
|
|
||||||
* type specified via data element
|
* type specified via data element
|
||||||
|
@ -123,18 +156,192 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD delete_idoc_segment.
|
||||||
|
|
||||||
METHOD clear_dd03p_fields_common.
|
DATA lv_segment_type TYPE edilsegtyp.
|
||||||
|
DATA lv_result LIKE sy-subrc.
|
||||||
|
|
||||||
CLEAR: cs_dd03p-ddlanguage,
|
TRY.
|
||||||
cs_dd03p-dtelmaster,
|
check_is_idoc_segment( ).
|
||||||
cs_dd03p-logflag,
|
|
||||||
cs_dd03p-ddtext,
|
CATCH zcx_abapgit_exception ##no_handler.
|
||||||
cs_dd03p-reservedte,
|
rv_deleted = abap_false.
|
||||||
cs_dd03p-reptext,
|
RETURN. "previous XML version or no IDoc segment
|
||||||
cs_dd03p-scrtext_s,
|
ENDTRY.
|
||||||
cs_dd03p-scrtext_m,
|
|
||||||
cs_dd03p-scrtext_l.
|
rv_deleted = abap_true.
|
||||||
|
lv_segment_type = ms_item-obj_name.
|
||||||
|
|
||||||
|
CALL FUNCTION 'SEGMENT_DELETE'
|
||||||
|
EXPORTING
|
||||||
|
segmenttyp = lv_segment_type
|
||||||
|
IMPORTING
|
||||||
|
result = lv_result
|
||||||
|
EXCEPTIONS
|
||||||
|
OTHERS = 1.
|
||||||
|
IF sy-subrc <> 0 OR lv_result <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD deserialize_idoc_segment.
|
||||||
|
|
||||||
|
DATA lv_version TYPE segmentvrs .
|
||||||
|
DATA lv_result LIKE sy-subrc.
|
||||||
|
DATA lt_segment_definitions TYPE ty_segment_definitions.
|
||||||
|
DATA lv_package TYPE devclass.
|
||||||
|
FIELD-SYMBOLS <ls_segment_definition> TYPE ty_segment_definition.
|
||||||
|
|
||||||
|
rv_deserialized = abap_false.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
|
||||||
|
io_xml->read( EXPORTING iv_name = c_s_dataname-segment_definition
|
||||||
|
CHANGING cg_data = lt_segment_definitions ).
|
||||||
|
|
||||||
|
|
||||||
|
CATCH zcx_abapgit_exception ##no_handler.
|
||||||
|
RETURN. "previous XML version or no IDoc segment
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
IF lines( lt_segment_definitions ) = 0.
|
||||||
|
RETURN. "no IDoc segment
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
rv_deserialized = abap_true.
|
||||||
|
|
||||||
|
lv_package = iv_package.
|
||||||
|
|
||||||
|
LOOP AT lt_segment_definitions ASSIGNING <ls_segment_definition>.
|
||||||
|
<ls_segment_definition>-segmentheader-presp =
|
||||||
|
<ls_segment_definition>-segmentheader-pwork = cl_abap_syst=>get_user_name( ).
|
||||||
|
|
||||||
|
CALL FUNCTION 'SEGMENT_READ'
|
||||||
|
EXPORTING
|
||||||
|
segmenttyp = <ls_segment_definition>-segmentheader-segtyp
|
||||||
|
IMPORTING
|
||||||
|
result = lv_result
|
||||||
|
EXCEPTIONS
|
||||||
|
OTHERS = 1.
|
||||||
|
IF sy-subrc <> 0 OR lv_result <> 0.
|
||||||
|
CALL FUNCTION 'SEGMENT_CREATE'
|
||||||
|
IMPORTING
|
||||||
|
segmentdefinition = <ls_segment_definition>-segmentdefinition
|
||||||
|
TABLES
|
||||||
|
segmentstructure = <ls_segment_definition>-segmentstructures
|
||||||
|
CHANGING
|
||||||
|
segmentheader = <ls_segment_definition>-segmentheader
|
||||||
|
devclass = lv_package
|
||||||
|
EXCEPTIONS
|
||||||
|
OTHERS = 1.
|
||||||
|
ELSE.
|
||||||
|
|
||||||
|
CALL FUNCTION 'SEGMENT_MODIFY'
|
||||||
|
CHANGING
|
||||||
|
segmentheader = <ls_segment_definition>-segmentheader
|
||||||
|
devclass = lv_package
|
||||||
|
EXCEPTIONS
|
||||||
|
OTHERS = 1.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
CALL FUNCTION 'SEGMENTDEFINITION_MODIFY'
|
||||||
|
TABLES
|
||||||
|
segmentstructure = <ls_segment_definition>-segmentstructures
|
||||||
|
CHANGING
|
||||||
|
segmentdefinition = <ls_segment_definition>-segmentdefinition
|
||||||
|
EXCEPTIONS
|
||||||
|
OTHERS = 1.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TR_TADIR_INTERFACE'
|
||||||
|
EXPORTING
|
||||||
|
wi_test_modus = abap_false
|
||||||
|
wi_tadir_pgmid = 'R3TR'
|
||||||
|
wi_tadir_object = ms_item-obj_type
|
||||||
|
wi_tadir_obj_name = ms_item-obj_name
|
||||||
|
wi_tadir_author = cl_abap_syst=>get_user_name( )
|
||||||
|
wi_tadir_devclass = iv_package
|
||||||
|
wi_tadir_masterlang = mv_language
|
||||||
|
iv_set_edtflag = abap_true
|
||||||
|
iv_delflag = abap_false
|
||||||
|
EXCEPTIONS
|
||||||
|
OTHERS = 1.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( 'error from TR_TADIR_INTERFACE' ).
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD serialize_idoc_segment.
|
||||||
|
|
||||||
|
DATA lv_segment_type TYPE edilsegtyp.
|
||||||
|
DATA lv_result LIKE sy-subrc.
|
||||||
|
DATA lv_devclass TYPE devclass.
|
||||||
|
DATA lt_segmentdefinitions TYPE STANDARD TABLE OF edisegmdef.
|
||||||
|
DATA ls_segment_definition TYPE ty_segment_definition.
|
||||||
|
DATA lt_segment_definitions TYPE ty_segment_definitions.
|
||||||
|
FIELD-SYMBOLS: <ls_segemtndefinition> TYPE edisegmdef.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
check_is_idoc_segment( ).
|
||||||
|
|
||||||
|
lv_segment_type = ms_item-obj_name.
|
||||||
|
CALL FUNCTION 'SEGMENT_READ'
|
||||||
|
EXPORTING
|
||||||
|
segmenttyp = lv_segment_type
|
||||||
|
IMPORTING
|
||||||
|
result = lv_result
|
||||||
|
TABLES
|
||||||
|
segmentdefinition = lt_segmentdefinitions
|
||||||
|
EXCEPTIONS
|
||||||
|
OTHERS = 1.
|
||||||
|
IF sy-subrc <> 0 OR lv_result <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
LOOP AT lt_segmentdefinitions ASSIGNING <ls_segemtndefinition>.
|
||||||
|
CLEAR ls_segment_definition.
|
||||||
|
CALL FUNCTION 'SEGMENTDEFINITION_READ'
|
||||||
|
EXPORTING
|
||||||
|
segmenttyp = <ls_segemtndefinition>-segtyp
|
||||||
|
IMPORTING
|
||||||
|
result = lv_result
|
||||||
|
devclass = lv_devclass
|
||||||
|
segmentheader = ls_segment_definition-segmentheader
|
||||||
|
segmentdefinition = ls_segment_definition-segmentdefinition
|
||||||
|
TABLES
|
||||||
|
segmentstructure = ls_segment_definition-segmentstructures
|
||||||
|
CHANGING
|
||||||
|
version = <ls_segemtndefinition>-version
|
||||||
|
EXCEPTIONS
|
||||||
|
no_authority = 1
|
||||||
|
segment_not_existing = 2
|
||||||
|
OTHERS = 3.
|
||||||
|
IF sy-subrc <> 0 OR lv_result <> 0.
|
||||||
|
zcx_abapgit_exception=>raise_t100( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
zcl_abapgit_object_idoc=>clear_idoc_segement_fields(
|
||||||
|
CHANGING cs_structure = ls_segment_definition-segmentdefinition ).
|
||||||
|
zcl_abapgit_object_idoc=>clear_idoc_segement_fields(
|
||||||
|
CHANGING cs_structure = ls_segment_definition-segmentheader ).
|
||||||
|
|
||||||
|
APPEND ls_segment_definition TO lt_segment_definitions.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
io_xml->add( iv_name = c_s_dataname-segment_definition
|
||||||
|
ig_data = lt_segment_definitions ).
|
||||||
|
|
||||||
|
CATCH zcx_abapgit_exception ##no_handler.
|
||||||
|
"ok, no Idoc segment
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -614,211 +821,4 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
serialize_idoc_segment( io_xml ).
|
serialize_idoc_segment( io_xml ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD serialize_idoc_segment.
|
|
||||||
|
|
||||||
DATA lv_segment_type TYPE edilsegtyp.
|
|
||||||
DATA lv_result TYPE syst_subrc.
|
|
||||||
DATA lv_devclass TYPE devclass.
|
|
||||||
DATA lt_segmentdefinitions TYPE STANDARD TABLE OF edisegmdef.
|
|
||||||
DATA ls_segment_definition TYPE ty_segment_definition.
|
|
||||||
DATA lt_segment_definitions TYPE ty_segment_definitions.
|
|
||||||
FIELD-SYMBOLS: <ls_segemtndefinition> TYPE edisegmdef.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
check_is_idoc_segment( ).
|
|
||||||
|
|
||||||
lv_segment_type = ms_item-obj_name.
|
|
||||||
CALL FUNCTION 'SEGMENT_READ'
|
|
||||||
EXPORTING
|
|
||||||
segmenttyp = lv_segment_type
|
|
||||||
IMPORTING
|
|
||||||
result = lv_result
|
|
||||||
TABLES
|
|
||||||
segmentdefinition = lt_segmentdefinitions
|
|
||||||
EXCEPTIONS
|
|
||||||
OTHERS = 1.
|
|
||||||
IF sy-subrc <> 0 OR lv_result <> 0.
|
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
LOOP AT lt_segmentdefinitions ASSIGNING <ls_segemtndefinition>.
|
|
||||||
CLEAR ls_segment_definition.
|
|
||||||
CALL FUNCTION 'SEGMENTDEFINITION_READ'
|
|
||||||
EXPORTING
|
|
||||||
segmenttyp = <ls_segemtndefinition>-segtyp
|
|
||||||
IMPORTING
|
|
||||||
result = lv_result
|
|
||||||
devclass = lv_devclass
|
|
||||||
segmentheader = ls_segment_definition-segmentheader
|
|
||||||
segmentdefinition = ls_segment_definition-segmentdefinition
|
|
||||||
TABLES
|
|
||||||
segmentstructure = ls_segment_definition-segmentstructures
|
|
||||||
CHANGING
|
|
||||||
version = <ls_segemtndefinition>-version
|
|
||||||
EXCEPTIONS
|
|
||||||
no_authority = 1
|
|
||||||
segment_not_existing = 2
|
|
||||||
OTHERS = 3.
|
|
||||||
IF sy-subrc <> 0 OR lv_result <> 0.
|
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
zcl_abapgit_object_idoc=>clear_idoc_segement_fields(
|
|
||||||
CHANGING cs_structure = ls_segment_definition-segmentdefinition ).
|
|
||||||
zcl_abapgit_object_idoc=>clear_idoc_segement_fields(
|
|
||||||
CHANGING cs_structure = ls_segment_definition-segmentheader ).
|
|
||||||
|
|
||||||
APPEND ls_segment_definition TO lt_segment_definitions.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
io_xml->add( iv_name = c_s_dataname-segment_definition
|
|
||||||
ig_data = lt_segment_definitions ).
|
|
||||||
|
|
||||||
CATCH zcx_abapgit_exception ##no_handler.
|
|
||||||
"ok, no Idoc segment
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD check_is_idoc_segment.
|
|
||||||
|
|
||||||
DATA lv_segment_type TYPE edilsegtyp.
|
|
||||||
|
|
||||||
lv_segment_type = ms_item-obj_name.
|
|
||||||
|
|
||||||
SELECT SINGLE segtyp
|
|
||||||
FROM edisegment
|
|
||||||
INTO lv_segment_type
|
|
||||||
WHERE segtyp = lv_segment_type.
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
zcx_abapgit_exception=>raise( 'No IDoc segment' ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD deserialize_idoc_segment.
|
|
||||||
|
|
||||||
DATA lv_version TYPE segmentvrs .
|
|
||||||
DATA lv_result TYPE syst_subrc.
|
|
||||||
DATA lt_segment_definitions TYPE ty_segment_definitions.
|
|
||||||
DATA lv_package TYPE devclass.
|
|
||||||
FIELD-SYMBOLS <ls_segment_definition> TYPE ty_segment_definition.
|
|
||||||
|
|
||||||
rv_deserialized = abap_false.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
|
|
||||||
io_xml->read( EXPORTING iv_name = c_s_dataname-segment_definition
|
|
||||||
CHANGING cg_data = lt_segment_definitions ).
|
|
||||||
|
|
||||||
|
|
||||||
CATCH zcx_abapgit_exception ##no_handler.
|
|
||||||
RETURN. "previous XML version or no IDoc segment
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
IF lines( lt_segment_definitions ) = 0.
|
|
||||||
RETURN. "no IDoc segment
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
rv_deserialized = abap_true.
|
|
||||||
|
|
||||||
lv_package = iv_package.
|
|
||||||
|
|
||||||
LOOP AT lt_segment_definitions ASSIGNING <ls_segment_definition>.
|
|
||||||
<ls_segment_definition>-segmentheader-presp =
|
|
||||||
<ls_segment_definition>-segmentheader-pwork = cl_abap_syst=>get_user_name( ).
|
|
||||||
|
|
||||||
CALL FUNCTION 'SEGMENT_READ'
|
|
||||||
EXPORTING
|
|
||||||
segmenttyp = <ls_segment_definition>-segmentheader-segtyp
|
|
||||||
IMPORTING
|
|
||||||
result = lv_result
|
|
||||||
EXCEPTIONS
|
|
||||||
OTHERS = 1.
|
|
||||||
IF sy-subrc <> 0 OR lv_result <> 0.
|
|
||||||
CALL FUNCTION 'SEGMENT_CREATE'
|
|
||||||
IMPORTING
|
|
||||||
segmentdefinition = <ls_segment_definition>-segmentdefinition
|
|
||||||
TABLES
|
|
||||||
segmentstructure = <ls_segment_definition>-segmentstructures
|
|
||||||
CHANGING
|
|
||||||
segmentheader = <ls_segment_definition>-segmentheader
|
|
||||||
devclass = lv_package
|
|
||||||
EXCEPTIONS
|
|
||||||
OTHERS = 1.
|
|
||||||
ELSE.
|
|
||||||
|
|
||||||
CALL FUNCTION 'SEGMENT_MODIFY'
|
|
||||||
CHANGING
|
|
||||||
segmentheader = <ls_segment_definition>-segmentheader
|
|
||||||
devclass = lv_package
|
|
||||||
EXCEPTIONS
|
|
||||||
OTHERS = 1.
|
|
||||||
IF sy-subrc = 0.
|
|
||||||
CALL FUNCTION 'SEGMENTDEFINITION_MODIFY'
|
|
||||||
TABLES
|
|
||||||
segmentstructure = <ls_segment_definition>-segmentstructures
|
|
||||||
CHANGING
|
|
||||||
segmentdefinition = <ls_segment_definition>-segmentdefinition
|
|
||||||
EXCEPTIONS
|
|
||||||
OTHERS = 1.
|
|
||||||
ENDIF.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
CALL FUNCTION 'TR_TADIR_INTERFACE'
|
|
||||||
EXPORTING
|
|
||||||
wi_test_modus = abap_false
|
|
||||||
wi_tadir_pgmid = 'R3TR'
|
|
||||||
wi_tadir_object = ms_item-obj_type
|
|
||||||
wi_tadir_obj_name = ms_item-obj_name
|
|
||||||
wi_tadir_author = cl_abap_syst=>get_user_name( )
|
|
||||||
wi_tadir_devclass = iv_package
|
|
||||||
wi_tadir_masterlang = mv_language
|
|
||||||
iv_set_edtflag = abap_true
|
|
||||||
iv_delflag = abap_false
|
|
||||||
EXCEPTIONS
|
|
||||||
OTHERS = 1.
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
zcx_abapgit_exception=>raise( 'error from TR_TADIR_INTERFACE' ).
|
|
||||||
ENDIF.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD delete_idoc_segment.
|
|
||||||
|
|
||||||
DATA lv_segment_type TYPE edilsegtyp.
|
|
||||||
DATA lv_result TYPE syst_subrc.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
check_is_idoc_segment( ).
|
|
||||||
|
|
||||||
CATCH zcx_abapgit_exception ##no_handler.
|
|
||||||
rv_deleted = abap_false.
|
|
||||||
RETURN. "previous XML version or no IDoc segment
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
rv_deleted = abap_true.
|
|
||||||
lv_segment_type = ms_item-obj_name.
|
|
||||||
|
|
||||||
CALL FUNCTION 'SEGMENT_DELETE'
|
|
||||||
EXPORTING
|
|
||||||
segmenttyp = lv_segment_type
|
|
||||||
IMPORTING
|
|
||||||
result = lv_result
|
|
||||||
EXCEPTIONS
|
|
||||||
OTHERS = 1.
|
|
||||||
IF sy-subrc <> 0 OR lv_result <> 0.
|
|
||||||
zcx_abapgit_exception=>raise_t100( ).
|
|
||||||
ENDIF.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user