diff --git a/src/objects/zcl_abapgit_object_wdcc.clas.abap b/src/objects/zcl_abapgit_object_wdcc.clas.abap index 01eff5a27..e364a98c0 100644 --- a/src/objects/zcl_abapgit_object_wdcc.clas.abap +++ b/src/objects/zcl_abapgit_object_wdcc.clas.abap @@ -1,7 +1,7 @@ CLASS zcl_abapgit_object_wdcc DEFINITION - PUBLIC INHERITING FROM zcl_abapgit_objects_super - CREATE PUBLIC . + PUBLIC. + PUBLIC SECTION. INTERFACES zif_abapgit_object. ALIASES mo_files FOR zif_abapgit_object~mo_files. @@ -17,7 +17,17 @@ ENDCLASS. -CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. +CLASS ZCL_ABAPGIT_OBJECT_WDCC IMPLEMENTATION. + + + METHOD constructor. + + super->constructor( is_item = is_item + iv_language = iv_language ). + + ENDMETHOD. + + METHOD zif_abapgit_object~changed_by. DATA: ls_outline TYPE wdy_cfg_outline_data, @@ -40,6 +50,7 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~delete. DATA: ls_config_key TYPE wdy_config_key, lv_subrc TYPE sysubrc. @@ -47,17 +58,174 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ls_config_key-config_id = ms_item-obj_name+0(32). ls_config_key-config_type = '00'. - cl_wdr_cfg_persistence_utils=>delete_configuration( - EXPORTING - config_key = ls_config_key - RECEIVING - subrc = lv_subrc ). - IF lv_subrc <> 0. - zcx_abapgit_exception=>raise( 'Error deleting WDCC: ' && ms_item-obj_name ). - ENDIF. + TRY. + " does not exist in 702 + CALL METHOD cl_wdr_cfg_persistence_utils=>('DELETE_CONFIGURATION') + EXPORTING + config_key = ls_config_key + RECEIVING + subrc = lv_subrc. + IF lv_subrc <> 0. + zcx_abapgit_exception=>raise( 'Error deleting WDCC: ' && ms_item-obj_name ). + ENDIF. + CATCH cx_root. + zcx_abapgit_exception=>raise( 'Object type WDCC not supported for this release' ). + ENDTRY. ENDMETHOD. + + METHOD zif_abapgit_object~deserialize. + + DATA: lo_translator TYPE REF TO object, "if_wdr_config_otr + lv_config_id TYPE c LENGTH 32, + lv_config_type TYPE n LENGTH 2, + lv_config_var TYPE c LENGTH 6, + lt_otr_texts TYPE TABLE OF wdy_config_compt, + ls_orig_config TYPE wdy_config_data, + lt_config_datt TYPE TABLE OF wdy_config_datt, + lv_xml_string TYPE string, + lv_xml_xstring TYPE xstring. + + FIELD-SYMBOLS: TYPE any. + + io_xml->read( EXPORTING iv_name = 'CONFIG_ID' + CHANGING cg_data = ls_orig_config-config_id ). + + io_xml->read( EXPORTING iv_name = 'CONFIG_TYPE' + CHANGING cg_data = ls_orig_config-config_type ). + + io_xml->read( EXPORTING iv_name = 'CONFIG_VAR' + CHANGING cg_data = ls_orig_config-config_var ). + + ASSIGN COMPONENT 'CONFIG_IDPAR' OF STRUCTURE ls_orig_config TO . + IF sy-subrc = 0. + io_xml->read( EXPORTING iv_name = 'CONFIG_IDPAR' + CHANGING cg_data = ). + ELSE. + ii_log->add_error( iv_msg = |Object type WDCC not supported for this release| + is_item = ms_item ). + RETURN. + ENDIF. + + ASSIGN COMPONENT 'CONFIG_TYPEPAR' OF STRUCTURE ls_orig_config TO . + IF sy-subrc = 0. + io_xml->read( EXPORTING iv_name = 'CONFIG_TYPEPAR' + CHANGING cg_data = ). + ENDIF. + + ASSIGN COMPONENT 'CONFIG_VARPAR' OF STRUCTURE ls_orig_config TO . + IF sy-subrc = 0. + io_xml->read( EXPORTING iv_name = 'CONFIG_VARPAR' + CHANGING cg_data = ). + ENDIF. + + io_xml->read( EXPORTING iv_name = 'WDA_COMPONENT' + CHANGING cg_data = ls_orig_config-component ). + + lv_xml_string = mo_files->read_string( iv_extra = 'comp_config' + iv_ext = 'xml' ). + TRY. + lv_xml_string = zcl_abapgit_xml_pretty=>print( iv_xml = lv_xml_string + iv_ignore_errors = abap_false + iv_unpretty = abap_true ). + CATCH zcx_abapgit_exception. + zcx_abapgit_exception=>raise( 'Error Un-Pretty Printing WDCC XML Content: ' && ms_item-obj_name ). + ENDTRY. + + REPLACE FIRST OCCURRENCE + OF REGEX '<\?xml version="1\.0" encoding="[\w-]+"\?>' + IN lv_xml_string + WITH ''. + ASSERT sy-subrc = 0. + + lv_xml_xstring = zcl_abapgit_convert=>string_to_xstring( iv_str = lv_xml_string ). + ls_orig_config-xcontent = lv_xml_xstring. + + ASSIGN COMPONENT 'PARENT' OF STRUCTURE ls_orig_config TO . + IF sy-subrc = 0. + io_xml->read( EXPORTING iv_name = 'PARENT' + CHANGING cg_data = ). + ENDIF. + + io_xml->read( EXPORTING iv_name = 'RELID' + CHANGING cg_data = ls_orig_config-relid ). + + ls_orig_config-author = sy-uname. + ls_orig_config-changedby = sy-uname. + ls_orig_config-changedon = sy-datum. + ls_orig_config-createdon = sy-datum. + + CALL FUNCTION 'ENQUEUE_E_WDY_CONFCOMP' + EXPORTING + mode_wdy_config_data = 'E' "if_wdr_cfg_constants=>c_lock_mode_exclusive + config_id = lv_config_id + config_type = lv_config_type + config_var = lv_config_var + x_config_id = 'X' + x_config_type = 'X' + x_config_var = 'X' + EXCEPTIONS + foreign_lock = 1 + system_failure = 2 + OTHERS = 3. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'Error Enqueueing Component Config: ' && ms_item-obj_name ). + ENDIF. + + " CL_WDR_CFG_PERSISTENCE_UTILS=>SAVE_COMP_CONFIG_TO_DB does not exist in 702 so we save directly to DB + DELETE FROM wdy_config_data + WHERE config_id = ls_orig_config-config_id + AND config_type = ls_orig_config-config_type + AND config_var = ls_orig_config-config_var. + MODIFY wdy_config_data FROM ls_orig_config. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'Error Updating WDY_CONFIG_DATA for Component Config ' && ms_item-obj_name ). + ENDIF. + + io_xml->read( EXPORTING iv_name = 'OTR_TEXT' + CHANGING cg_data = lt_otr_texts ). + + IF lt_otr_texts IS NOT INITIAL. + DELETE FROM wdy_config_compt + WHERE config_id = ls_orig_config-config_id + AND config_type = ls_orig_config-config_type + AND config_var = ls_orig_config-config_var. + MODIFY wdy_config_compt FROM TABLE lt_otr_texts. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'Error Updating WDY_CONFIG_COMPT for Component Config ' && ms_item-obj_name ). + ENDIF. + ENDIF. + + io_xml->read( EXPORTING iv_name = 'DESCR_LANG' + CHANGING cg_data = lt_config_datt ). + + IF lt_config_datt IS NOT INITIAL. + DELETE FROM wdy_config_datt + WHERE config_id = ls_orig_config-config_id + AND config_type = ls_orig_config-config_type + AND config_var = ls_orig_config-config_var. + MODIFY wdy_config_datt FROM TABLE lt_config_datt. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'Error Updating WDY_CONFIG_DATT for Component Config ' && ms_item-obj_name ). + ENDIF. + ENDIF. + + CALL FUNCTION 'DEQUEUE_E_WDY_CONFCOMP' + EXPORTING + mode_wdy_config_data = 'E' "if_wdr_cfg_constants=>c_lock_mode_exclusive + config_id = lv_config_id + config_type = lv_config_type + config_var = lv_config_var + x_config_id = 'X' + x_config_type = 'X' + x_config_var = 'X'. + + tadir_insert( iv_package = iv_package ). + + ENDMETHOD. + + METHOD zif_abapgit_object~exists. DATA: ls_outline TYPE wdy_cfg_outline_data, @@ -81,14 +249,17 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. 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. DATA ls_meta_data TYPE zif_abapgit_definitions=>ty_metadata. @@ -100,10 +271,12 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~is_active. rv_active = abap_true. ENDMETHOD. + METHOD zif_abapgit_object~is_locked. DATA: lt_enq TYPE STANDARD TABLE OF seqg3, @@ -138,6 +311,7 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~jump. CALL FUNCTION 'RS_TOOL_ACCESS' @@ -149,6 +323,7 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ENDMETHOD. + METHOD zif_abapgit_object~serialize. DATA: lv_xml_xstring TYPE xstring, @@ -159,6 +334,8 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ls_config_key TYPE wdy_config_key, lv_xml_string TYPE string. + FIELD-SYMBOLS: TYPE any. + io_xml->add( iv_name = 'OBJECT_NAME' ig_data = ms_item-obj_name ). @@ -166,16 +343,19 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ls_config_key-config_type = '00'. TRY. - cl_wdr_cfg_persistence_utils=>read_comp_config_from_db( + " original_config_data does not exist in 702 + CALL METHOD cl_wdr_cfg_persistence_utils=>('READ_COMP_CONFIG_FROM_DB') EXPORTING config_key = ls_config_key IMPORTING xml_xcontent = lv_xml_xstring original_config_data = ls_orig_config - outline_data = ls_outline ). + outline_data = ls_outline. CATCH cx_static_check. zcx_abapgit_exception=>raise( 'Error Reading Component Config from DB: ' && ms_item-obj_name ). + CATCH cx_root. + zcx_abapgit_exception=>raise( 'Object type WDCC not supported for this release' ). ENDTRY. io_xml->add( iv_name = 'CONFIG_ID' @@ -190,17 +370,29 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. io_xml->add( iv_name = 'WDA_COMPONENT' ig_data = ls_orig_config-component ). - io_xml->add( iv_name = 'CONFIG_IDPAR' - ig_data = ls_orig_config-config_idpar ). + ASSIGN COMPONENT 'CONFIG_IDPAR' OF STRUCTURE ls_orig_config TO . + IF sy-subrc = 0. + io_xml->add( iv_name = 'CONFIG_IDPAR' + ig_data = ). + ENDIF. - io_xml->add( iv_name = 'CONFIG_TYPEPAR' - ig_data = ls_orig_config-config_typepar ). + ASSIGN COMPONENT 'CONFIG_TYPEPAR' OF STRUCTURE ls_orig_config TO . + IF sy-subrc = 0. + io_xml->add( iv_name = 'CONFIG_TYPEPAR' + ig_data = ). + ENDIF. - io_xml->add( iv_name = 'CONFIG_VARPAR' - ig_data = ls_orig_config-config_varpar ). + ASSIGN COMPONENT 'CONFIG_VARPAR' OF STRUCTURE ls_orig_config TO . + IF sy-subrc = 0. + io_xml->add( iv_name = 'CONFIG_VARPAR' + ig_data = ). + ENDIF. - io_xml->add( iv_name = 'PARENT' - ig_data = ls_orig_config-parent ). + ASSIGN COMPONENT 'PARENT' OF STRUCTURE ls_orig_config TO . + IF sy-subrc = 0. + io_xml->add( iv_name = 'PARENT' + ig_data = ). + ENDIF. io_xml->add( iv_name = 'RELID' ig_data = ls_orig_config-relid ). @@ -241,131 +433,4 @@ CLASS zcl_abapgit_object_wdcc IMPLEMENTATION. ENDIF. ENDMETHOD. - - METHOD zif_abapgit_object~deserialize. - - DATA: lo_translator TYPE REF TO if_wdr_config_otr, - lv_config_id TYPE c LENGTH 32, - lv_config_type TYPE n LENGTH 2, - lv_config_var TYPE c LENGTH 6, - lt_otr_texts TYPE TABLE OF wdy_config_compt, - ls_orig_config TYPE wdy_config_data, - lt_config_datt TYPE TABLE OF wdy_config_datt, - lv_xml_string TYPE string, - lv_xml_xstring TYPE xstring. - - io_xml->read( EXPORTING iv_name = 'CONFIG_ID' - CHANGING cg_data = ls_orig_config-config_id ). - - io_xml->read( EXPORTING iv_name = 'CONFIG_TYPE' - CHANGING cg_data = ls_orig_config-config_type ). - - io_xml->read( EXPORTING iv_name = 'CONFIG_VAR' - CHANGING cg_data = ls_orig_config-config_var ). - - io_xml->read( EXPORTING iv_name = 'CONFIG_IDPAR' - CHANGING cg_data = ls_orig_config-config_idpar ). - - io_xml->read( EXPORTING iv_name = 'CONFIG_TYPEPAR' - CHANGING cg_data = ls_orig_config-config_typepar ). - - io_xml->read( EXPORTING iv_name = 'CONFIG_VARPAR' - CHANGING cg_data = ls_orig_config-config_varpar ). - - io_xml->read( EXPORTING iv_name = 'WDA_COMPONENT' - CHANGING cg_data = ls_orig_config-component ). - - lv_xml_string = mo_files->read_string( iv_extra = 'comp_config' - iv_ext = 'xml' ). - TRY. - lv_xml_string = zcl_abapgit_xml_pretty=>print( iv_xml = lv_xml_string - iv_ignore_errors = abap_false - iv_unpretty = abap_true ). - CATCH zcx_abapgit_exception. - zcx_abapgit_exception=>raise( 'Error Un-Pretty Printing WDCC XML Content: ' && ms_item-obj_name ). - ENDTRY. - - REPLACE FIRST OCCURRENCE - OF REGEX '<\?xml version="1\.0" encoding="[\w-]+"\?>' - IN lv_xml_string - WITH ''. - ASSERT sy-subrc = 0. - - lv_xml_xstring = zcl_abapgit_convert=>string_to_xstring( iv_str = lv_xml_string ). - ls_orig_config-xcontent = lv_xml_xstring. - - io_xml->read( EXPORTING iv_name = 'PARENT' - CHANGING cg_data = ls_orig_config-parent ). - - io_xml->read( EXPORTING iv_name = 'RELID' - CHANGING cg_data = ls_orig_config-relid ). - - ls_orig_config-author = sy-uname. - ls_orig_config-changedby = sy-uname. - ls_orig_config-changedon = sy-datum. - ls_orig_config-createdon = sy-datum. - - CALL FUNCTION 'ENQUEUE_E_WDY_CONFCOMP' - EXPORTING - mode_wdy_config_data = if_wdr_cfg_constants=>c_lock_mode_exclusive - config_id = lv_config_id - config_type = lv_config_type - config_var = lv_config_var - x_config_id = 'X' - x_config_type = 'X' - x_config_var = 'X' - EXCEPTIONS - foreign_lock = 1 - system_failure = 2 - OTHERS = 3. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'Error Enqueueing Component Config: ' && ms_item-obj_name ). - ENDIF. - - io_xml->read( EXPORTING iv_name = 'OTR_TEXT' - CHANGING cg_data = lt_otr_texts ). - - IF lt_otr_texts IS NOT INITIAL. - DELETE FROM wdy_config_compt WHERE config_id = ls_orig_config-config_id. - MODIFY wdy_config_compt FROM TABLE lt_otr_texts. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'Error Updating WDY_CONFIG_COMPT for Component Config ' && ms_item-obj_name ). - ENDIF. - ENDIF. - - io_xml->read( EXPORTING iv_name = 'DESCR_LANG' - CHANGING cg_data = lt_config_datt ). - - IF lt_config_datt IS NOT INITIAL. - DELETE FROM wdy_config_datt WHERE config_id = ls_orig_config-config_id. - MODIFY wdy_config_datt FROM TABLE lt_config_datt. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'Error Updating WDY_CONFIG_DATT for Component Config ' && ms_item-obj_name ). - ENDIF. - ENDIF. - - cl_wdr_cfg_persistence_utils=>save_comp_config_to_db( config_data = ls_orig_config - translator = lo_translator ). - - CALL FUNCTION 'DEQUEUE_E_WDY_CONFCOMP' - EXPORTING - mode_wdy_config_data = if_wdr_cfg_constants=>c_lock_mode_exclusive - config_id = lv_config_id - config_type = lv_config_type - config_var = lv_config_var - x_config_id = 'X' - x_config_type = 'X' - x_config_var = 'X'. - - tadir_insert( iv_package = iv_package ). - - ENDMETHOD. - - METHOD constructor. - - super->constructor( is_item = is_item - iv_language = iv_language ). - - ENDMETHOD. - ENDCLASS.