diff --git a/src/objects/zcl_abapgit_object_iext.clas.abap b/src/objects/zcl_abapgit_object_iext.clas.abap new file mode 100644 index 000000000..af3d3b8fa --- /dev/null +++ b/src/objects/zcl_abapgit_object_iext.clas.abap @@ -0,0 +1,225 @@ +CLASS zcl_abapgit_object_iext DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES zif_abapgit_object. + ALIASES mo_files FOR zif_abapgit_object~mo_files. + METHODS: + constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras. + + PRIVATE SECTION. + TYPES: + BEGIN OF ty_extention, + attributes TYPE edi_iapi01, + t_syntax TYPE STANDARD TABLE OF edi_iapi03 WITH NON-UNIQUE DEFAULT KEY, + END OF ty_extention. + + DATA: + mv_extension TYPE edi_cimtyp. + +ENDCLASS. + + + +CLASS zcl_abapgit_object_iext IMPLEMENTATION. + + + METHOD constructor. + + super->constructor( is_item = is_item + iv_language = iv_language ). + + mv_extension = ms_item-obj_name. + + ENDMETHOD. + + + METHOD zif_abapgit_object~changed_by. + + DATA: ls_attributes TYPE edi_iapi01. + + CALL FUNCTION 'EXTTYPE_READ' + EXPORTING + pi_cimtyp = mv_extension + IMPORTING + pe_attributes = ls_attributes + EXCEPTIONS + object_not_found = 1 + db_error = 2 + no_authority = 3 + OTHERS = 4. + + rv_user = ls_attributes-plast. + + ENDMETHOD. + + + METHOD zif_abapgit_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. + ENDMETHOD. + + + METHOD zif_abapgit_object~delete. + + CALL FUNCTION 'EXTTYPE_DELETE' + EXPORTING + pi_cimtyp = mv_extension + EXCEPTIONS + object_not_found = 1 + lock_error = 2 + action_not_possible = 3 + transport_error = 4 + db_error = 5 + no_authority = 6 + OTHERS = 7. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + + METHOD zif_abapgit_object~deserialize. + + DATA: ls_extension TYPE ty_extention, + ls_attributes TYPE edi_iapi05. + + io_xml->read( + EXPORTING + iv_name = 'IEXT' + CHANGING + cg_data = ls_extension ). + + MOVE-CORRESPONDING ls_extension-attributes TO ls_attributes. + + CALL FUNCTION 'EXTTYPE_CREATE' + EXPORTING + pi_cimtyp = mv_extension + pi_devclass = iv_package + pi_attributes = ls_attributes + TABLES + pt_syntax = ls_extension-t_syntax + EXCEPTIONS + object_not_found = 1 + object_exists = 2 + action_not_possible = 3 + syntax_error = 4 + segment_error = 5 + transport_error = 6 + db_error = 7 + no_authority = 8 + OTHERS = 9. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + + METHOD zif_abapgit_object~exists. + + CALL FUNCTION 'EXTTYPE_READ' + EXPORTING + pi_cimtyp = mv_extension + EXCEPTIONS + object_not_found = 1 + db_error = 2 + no_authority = 3 + OTHERS = 4. + + rv_bool = boolc( sy-subrc = 0 ). + + ENDMETHOD. + + + METHOD zif_abapgit_object~get_metadata. + rs_metadata = get_metadata( ). + ENDMETHOD. + + + METHOD zif_abapgit_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. + + + METHOD zif_abapgit_object~jump. + + DATA: lt_bdcdata TYPE TABLE OF bdcdata. + + FIELD-SYMBOLS: LIKE LINE OF lt_bdcdata. + + APPEND INITIAL LINE TO lt_bdcdata ASSIGNING . + -program = 'SAPMSED5'. + -dynpro = '0010'. + -dynbegin = abap_true. + + APPEND INITIAL LINE TO lt_bdcdata ASSIGNING . + -fnam = 'SED5STRUC-OBJECT'. + -fval = ms_item-obj_name. + + APPEND INITIAL LINE TO lt_bdcdata ASSIGNING . + -fnam = 'SED5STRUC-SELECT_EXT'. + -fval = abap_true. + + APPEND INITIAL LINE TO lt_bdcdata ASSIGNING . + -fnam = 'BDC_OKCODE'. + -fval = '=DISP'. + + CALL FUNCTION 'ABAP4_CALL_TRANSACTION' + STARTING NEW TASK 'GIT' + EXPORTING + tcode = 'WE30' + mode_val = 'E' + TABLES + using_tab = lt_bdcdata + EXCEPTIONS + system_failure = 1 + communication_failure = 2 + resource_failure = 3 + OTHERS = 4. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + + METHOD zif_abapgit_object~serialize. + + DATA: ls_extension TYPE ty_extention. + + CALL FUNCTION 'EXTTYPE_READ' + EXPORTING + pi_cimtyp = mv_extension + IMPORTING + pe_attributes = ls_extension-attributes + TABLES + pt_syntax = ls_extension-t_syntax + EXCEPTIONS + object_not_found = 1 + db_error = 2 + no_authority = 3 + OTHERS = 4. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + CLEAR: ls_extension-attributes-devc, + ls_extension-attributes-plast, + ls_extension-attributes-credate, + ls_extension-attributes-cretime, + ls_extension-attributes-ldate, + ls_extension-attributes-ltime. + + io_xml->add( iv_name = 'IEXT' + ig_data = ls_extension ). + + ENDMETHOD. + +ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_iext.clas.xml b/src/objects/zcl_abapgit_object_iext.clas.xml new file mode 100644 index 000000000..92d5409f6 --- /dev/null +++ b/src/objects/zcl_abapgit_object_iext.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_OBJECT_IEXT + 1 + E + 2 + 1 + X + X + X + X + + + + diff --git a/src/zcl_abapgit_dependencies.clas.abap b/src/zcl_abapgit_dependencies.clas.abap index b2bae70b9..3131f6d8e 100644 --- a/src/zcl_abapgit_dependencies.clas.abap +++ b/src/zcl_abapgit_dependencies.clas.abap @@ -127,6 +127,10 @@ CLASS ZCL_ABAPGIT_DEPENDENCIES IMPLEMENTATION. ELSE. -korrnum = '1000'. ENDIF. + WHEN 'IDOC'. + -korrnum = '2000'. + WHEN 'IEXT'. + -korrnum = '1500'. WHEN OTHERS. -korrnum = '1000'. ENDCASE.