diff --git a/src/zabapgit_object_enhs.prog.abap b/src/zabapgit_object_enhs.prog.abap index 321afd9e2..6decb3f94 100644 --- a/src/zabapgit_object_enhs.prog.abap +++ b/src/zabapgit_object_enhs.prog.abap @@ -41,27 +41,26 @@ CLASS lcl_object_enhs IMPLEMENTATION. METHOD lif_object~deserialize. - DATA: lv_message TYPE string, - lv_parent TYPE enhspotcompositename, - lv_spot_name TYPE enhspotname, - lv_enh_shtext TYPE string, - ls_enh_badi TYPE enh_badi_data, - lt_enh_badi TYPE enh_badi_data_it, - lx_root TYPE REF TO cx_root, - lv_tool TYPE enhspottooltype, - lv_package LIKE iv_package, - li_spot_ref TYPE REF TO if_enh_spot_tool, - lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, - lo_badi_hook TYPE REF TO cl_enh_tool_hook_def, - lt_hook_defs TYPE enh_hook_def_ext_it. - + DATA: lv_message TYPE string, + lv_parent TYPE enhspotcompositename, + lv_spot_name TYPE enhspotname, + lv_enh_shtext TYPE string, + ls_enh_badi TYPE enh_badi_data, + lt_enh_badi TYPE enh_badi_data_it, + lx_root TYPE REF TO cx_root, + lv_tool TYPE enhspottooltype, + lv_package LIKE iv_package, + li_spot_ref TYPE REF TO if_enh_spot_tool, + lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, + lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, + lt_hook_definitions TYPE enh_hook_def_ext_it, + li_enh_object TYPE REF TO if_enh_object, + li_enh_object_docu TYPE REF TO if_enh_object_docu. lv_spot_name = ms_item-obj_name. io_xml->read( EXPORTING iv_name = 'TOOL' CHANGING cg_data = lv_tool ). - io_xml->read( EXPORTING iv_name = 'PARENT_COMP' - CHANGING cg_data = lv_parent ). io_xml->read( EXPORTING iv_name = 'SHORTTEXT' CHANGING cg_data = lv_enh_shtext ). @@ -83,43 +82,43 @@ CLASS lcl_object_enhs IMPLEMENTATION. CHANGING devclass = lv_package ). + li_enh_object ?= li_spot_ref. + li_enh_object_docu ?= li_spot_ref. + + li_enh_object_docu->set_shorttext( lv_enh_shtext ). + CASE lv_tool. WHEN cl_enh_tool_badi_def=>tooltype.. + io_xml->read( EXPORTING iv_name = 'PARENT_COMP' + CHANGING cg_data = lv_parent ). + io_xml->read( EXPORTING iv_name = 'BADI_DATA' CHANGING cg_data = lt_enh_badi ). lo_badidef_tool ?= li_spot_ref. - lo_badidef_tool->if_enh_object_docu~set_shorttext( lv_enh_shtext ). - LOOP AT lt_enh_badi INTO ls_enh_badi. lo_badidef_tool->add_badi_def( ls_enh_badi ). ENDLOOP. - lo_badidef_tool->if_enh_object~save( ). - lo_badidef_tool->if_enh_object~activate( ). - lo_badidef_tool->if_enh_object~unlock( ). - WHEN cl_enh_tool_hook_def=>tool_type. io_xml->read( EXPORTING iv_name = 'BADI_DATA' - CHANGING cg_data = lt_hook_defs ). + CHANGING cg_data = lt_hook_definitions ). - lo_badi_hook ?= li_spot_ref. + lo_hookdef_tool ?= li_spot_ref. - lo_badi_hook->if_enh_object_docu~set_shorttext( lv_enh_shtext ). - - LOOP AT lt_hook_defs ASSIGNING FIELD-SYMBOL(). - lo_badi_hook->add_hook_def( CORRESPONDING #( ) ). + LOOP AT lt_hook_definitions ASSIGNING FIELD-SYMBOL(). + lo_hookdef_tool->add_hook_def( CORRESPONDING #( ) ). ENDLOOP. - lo_badi_hook->if_enh_object~save( ). - lo_badi_hook->if_enh_object~activate( ). - lo_badi_hook->if_enh_object~unlock( ). - ENDCASE. + li_enh_object->save( ). + li_enh_object->activate( ). + li_enh_object->unlock( ). + CATCH cx_enh_root INTO lx_root. lv_message = `Error occured while deserializing EHNS: ` && lx_root->get_text( ) ##NO_TEXT. @@ -130,17 +129,17 @@ CLASS lcl_object_enhs IMPLEMENTATION. METHOD lif_object~serialize. - DATA: lv_spot_name TYPE enhspotname, - lv_enh_shtext TYPE string, - lv_parent TYPE enhspotcompositename, - lt_enh_badi TYPE enh_badi_data_it, - lv_tool TYPE enhspottooltype, - lx_root TYPE REF TO cx_root, - li_spot_ref TYPE REF TO if_enh_spot_tool, - lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, - lo_badi_hook TYPE REF TO cl_enh_tool_hook_def, - lt_hook_defs TYPE enh_hook_def_ext_it. - + DATA: lv_spot_name TYPE enhspotname, + lv_enh_shtext TYPE string, + lv_parent TYPE enhspotcompositename, + lt_enh_badi TYPE enh_badi_data_it, + lv_tool TYPE enhspottooltype, + lx_root TYPE REF TO cx_root, + li_spot_ref TYPE REF TO if_enh_spot_tool, + lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, + lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, + lt_hook_definitions TYPE enh_hook_def_ext_it, + li_enh_object_docu TYPE REF TO if_enh_object_docu. lv_spot_name = ms_item-obj_name. @@ -148,41 +147,42 @@ CLASS lcl_object_enhs IMPLEMENTATION. li_spot_ref = cl_enh_factory=>get_enhancement_spot( lv_spot_name ). lv_tool = li_spot_ref->get_tool( ). + li_enh_object_docu ?= li_spot_ref. + lv_enh_shtext = li_enh_object_docu->get_shorttext( ). + + io_xml->add( ig_data = lv_tool + iv_name = 'TOOL' ). + io_xml->add( ig_data = lv_enh_shtext + iv_name = 'SHORTTEXT' ). + CASE lv_tool. WHEN cl_enh_tool_badi_def=>tooltype. lo_badidef_tool ?= li_spot_ref. - lv_enh_shtext = lo_badidef_tool->if_enh_object_docu~get_shorttext( ). "get parent = composite enhs (ENHC) lv_parent = cl_r3standard_persistence=>enh_find_parent_composite( lv_spot_name ). "get subsequent BADI definitions lt_enh_badi = lo_badidef_tool->get_badi_defs( ). + io_xml->add( ig_data = lv_parent + iv_name = 'PARENT_COMP' ). io_xml->add( ig_data = lt_enh_badi iv_name = 'BADI_DATA' ). WHEN cl_enh_tool_hook_def=>tool_type. - lo_badi_hook ?= li_spot_ref. - lv_enh_shtext = lo_badi_hook->if_enh_object_docu~get_shorttext( ). + lo_hookdef_tool ?= li_spot_ref. - "get parent = composite enhs (ENHC) - lv_parent = cl_r3standard_persistence=>enh_find_parent_composite( lv_spot_name ). - lt_hook_defs = lo_badi_hook->get_hook_defs( ). + lt_hook_definitions = lo_hookdef_tool->get_hook_defs( ). - io_xml->add( ig_data = lt_hook_defs + io_xml->add( ig_data = lt_hook_definitions iv_name = 'BADI_DATA' ). + WHEN OTHERS. + zcx_abapgit_exception=>raise( |ENHS: Unsupported tool { lv_tool }| ). ENDCASE. - io_xml->add( ig_data = lv_tool - iv_name = 'TOOL' ). - io_xml->add( ig_data = lv_parent - iv_name = 'PARENT_COMP' ). - io_xml->add( ig_data = lv_enh_shtext - iv_name = 'SHORTTEXT' ). - CATCH cx_enh_root INTO lx_root. zcx_abapgit_exception=>raise( `Error occured while serializing EHNS: ` && lx_root->get_text( ) ) ##NO_TEXT. @@ -203,15 +203,9 @@ CLASS lcl_object_enhs IMPLEMENTATION. li_spot_ref = cl_enh_factory=>get_enhancement_spot( lv_spot_name ). lv_tool = li_spot_ref->get_tool( ). - CASE lv_tool. - WHEN cl_enh_tool_badi_def=>tooltype. - rv_bool = abap_true. - WHEN cl_enh_tool_hook_def=>tool_type. - rv_bool = abap_true. - WHEN OTHERS. -* todo: implement additional tool types - rv_bool = abap_false. - ENDCASE. + + rv_bool = abap_true. + CATCH cx_enh_root. rv_bool = abap_false. ENDTRY. @@ -220,31 +214,21 @@ CLASS lcl_object_enhs IMPLEMENTATION. METHOD lif_object~delete. - DATA: lv_spot_name TYPE enhspotname, - lx_root TYPE REF TO cx_root, - li_spot_ref TYPE REF TO if_enh_spot_tool, - lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, - li_enh_object TYPE REF TO if_enh_object. + DATA: lv_spot_name TYPE enhspotname, + lx_root TYPE REF TO cx_root, + li_enh_object TYPE REF TO if_enh_object. lv_spot_name = ms_item-obj_name. TRY. - li_spot_ref = cl_enh_factory=>get_enhancement_spot( - spot_name = lv_spot_name - lock = abap_true ). + li_enh_object ?= cl_enh_factory=>get_enhancement_spot( + spot_name = lv_spot_name + lock = abap_true ). - IF li_spot_ref IS BOUND. - li_enh_object ?= li_spot_ref. - li_enh_object->delete( - nevertheless_delete = abap_true - run_dark = abap_true ). - li_enh_object->unlock( ). -* lo_badidef_tool ?= li_spot_ref. -* lo_badidef_tool->if_enh_object~delete( -* nevertheless_delete = abap_true -* run_dark = abap_true ). -* lo_badidef_tool->if_enh_object~unlock( ). - ENDIF. + li_enh_object->delete( nevertheless_delete = abap_true + run_dark = abap_true ). + + li_enh_object->unlock( ). CATCH cx_enh_root INTO lx_root. zcx_abapgit_exception=>raise( `Error occured while deleting EHNS: `