From ef234a20fb52036dc73373404c424f259ed9e1e5 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Thu, 1 Oct 2020 03:49:48 -0400 Subject: [PATCH] New object type CMOD - Customer Enhancement Project (#3947) * New object type CMOD - Customer Enhancement Project Test repo https://github.com/abapGit-tests/CMOD * CMOD * boolc Co-authored-by: Lars Hvam * Update src/objects/zcl_abapgit_object_cmod.clas.abap Co-authored-by: g-back <27279305+g-back@users.noreply.github.com> Co-authored-by: Lars Hvam Co-authored-by: g-back <27279305+g-back@users.noreply.github.com> --- src/objects/zcl_abapgit_object_cmod.clas.abap | 202 ++++++++++++++++++ src/objects/zcl_abapgit_object_cmod.clas.xml | 16 ++ 2 files changed, 218 insertions(+) create mode 100644 src/objects/zcl_abapgit_object_cmod.clas.abap create mode 100644 src/objects/zcl_abapgit_object_cmod.clas.xml diff --git a/src/objects/zcl_abapgit_object_cmod.clas.abap b/src/objects/zcl_abapgit_object_cmod.clas.abap new file mode 100644 index 000000000..9b36f78be --- /dev/null +++ b/src/objects/zcl_abapgit_object_cmod.clas.abap @@ -0,0 +1,202 @@ +CLASS zcl_abapgit_object_cmod DEFINITION + PUBLIC + INHERITING FROM zcl_abapgit_objects_super + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + INTERFACES zif_abapgit_object . + PROTECTED SECTION. + PRIVATE SECTION. + +ENDCLASS. + + + +CLASS ZCL_ABAPGIT_OBJECT_CMOD IMPLEMENTATION. + + + METHOD zif_abapgit_object~changed_by. + + SELECT SINGLE anam FROM modattr INTO rv_user WHERE name = ms_item-obj_name. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. + + ENDMETHOD. + + + METHOD zif_abapgit_object~delete. + + DATA lv_name TYPE modact-name. + + lv_name = ms_item-obj_name. + + CALL FUNCTION 'MOD_KUN_ACTIVATE' + EXPORTING + activate = abap_false + deactivate = abap_true + modname = lv_name + EXCEPTIONS + call_error = 1 + generate_error = 2 + modattr_status = 3 + mod_active = 4 + mod_enqueued = 5 + not_activated = 6 + no_modification = 7 + permission_failure = 8 + OTHERS = 9. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + CALL FUNCTION 'MOD_KUN_DELETE' + EXPORTING + modname = lv_name + screen = abap_false + EXCEPTIONS + attr_enqueued = 1 + mod_active = 2 + mod_enqueued = 3 + text_enqueued = 4 + permission_failure = 5 + OTHERS = 6. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + + METHOD zif_abapgit_object~deserialize. + + DATA: lv_name TYPE modact-name, + lt_modact TYPE TABLE OF modact, + lt_modtext TYPE TABLE OF modtext, + lt_modattr TYPE TABLE OF modattr. + + lv_name = ms_item-obj_name. + + DELETE FROM modact WHERE name = lv_name. + DELETE FROM modtext WHERE name = lv_name. + DELETE FROM modattr WHERE name = lv_name. + + io_xml->read( EXPORTING iv_name = 'MODACT' + CHANGING cg_data = lt_modact ). + + io_xml->read( EXPORTING iv_name = 'MODTEXT' + CHANGING cg_data = lt_modtext ). + + io_xml->read( EXPORTING iv_name = 'MODATTR' + CHANGING cg_data = lt_modattr ). + + INSERT modact FROM TABLE lt_modact. + INSERT modtext FROM TABLE lt_modtext. + INSERT modattr FROM TABLE lt_modattr. + + tadir_insert( iv_package ). + + CALL FUNCTION 'MOD_KUN_ACTIVATE' + EXPORTING + activate = abap_true + deactivate = abap_false + modname = lv_name + EXCEPTIONS + call_error = 1 + generate_error = 2 + modattr_status = 3 + mod_active = 4 + mod_enqueued = 5 + not_activated = 6 + no_modification = 7 + permission_failure = 8 + OTHERS = 9. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + + ENDMETHOD. + + + METHOD zif_abapgit_object~exists. + + DATA: lv_name TYPE modact-name. + + SELECT SINGLE name FROM modact INTO lv_name WHERE name = ms_item-obj_name. + rv_bool = boolc( sy-subrc = 0 ). + + ENDMETHOD. + + + METHOD zif_abapgit_object~get_comparator. + RETURN. + ENDMETHOD. + + + METHOD zif_abapgit_object~get_deserialize_steps. + APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps. + ENDMETHOD. + + + METHOD zif_abapgit_object~get_metadata. + rs_metadata = get_metadata( ). + ENDMETHOD. + + + METHOD zif_abapgit_object~is_active. + rv_active = is_active( ). + ENDMETHOD. + + + METHOD zif_abapgit_object~is_locked. + rv_is_locked = abap_false. + ENDMETHOD. + + + METHOD zif_abapgit_object~jump. + zcx_abapgit_exception=>raise( |Jump to CMOD is not supported| ). + ENDMETHOD. + + + METHOD zif_abapgit_object~serialize. + + DATA: lt_modact TYPE TABLE OF modact, + lt_modtext TYPE TABLE OF modtext, + lt_modattr TYPE TABLE OF modattr. + + FIELD-SYMBOLS: TYPE modattr. + + IF zif_abapgit_object~exists( ) = abap_false. + RETURN. + ENDIF. + + SELECT * FROM modact INTO TABLE lt_modact WHERE name = ms_item-obj_name. + IF sy-subrc = 0. + io_xml->add( iv_name = 'MODACT' + ig_data = lt_modact ). + ENDIF. + + SELECT * FROM modtext INTO TABLE lt_modtext WHERE name = ms_item-obj_name AND sprsl = mv_language. + IF sy-subrc = 0. + io_xml->add( iv_name = 'MODTEXT' + ig_data = lt_modtext ). + ENDIF. + + SELECT * FROM modattr INTO TABLE lt_modattr WHERE name = ms_item-obj_name. + IF sy-subrc = 0. + LOOP AT lt_modattr ASSIGNING . + CLEAR: + -cnam, -cdat, + -unam, -udat, + -anam, -adat, + -fnam, -fdat. + ENDLOOP. + + io_xml->add( iv_name = 'MODATTR' + ig_data = lt_modattr ). + ENDIF. + + ENDMETHOD. +ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_cmod.clas.xml b/src/objects/zcl_abapgit_object_cmod.clas.xml new file mode 100644 index 000000000..c6db3d833 --- /dev/null +++ b/src/objects/zcl_abapgit_object_cmod.clas.xml @@ -0,0 +1,16 @@ + + + + + + ZCL_ABAPGIT_OBJECT_CMOD + E + CMOD + 1 + X + X + X + + + +