From 762f663c00bc8bc6cda1a1e766e757fd21533b73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Thu, 2 Nov 2017 20:59:17 +0000 Subject: [PATCH 1/7] First try hook def --- src/zabapgit_object_enhs.prog.abap | 107 ++++++++++++++++++++++------- 1 file changed, 82 insertions(+), 25 deletions(-) diff --git a/src/zabapgit_object_enhs.prog.abap b/src/zabapgit_object_enhs.prog.abap index 91aeecc17..321afd9e2 100644 --- a/src/zabapgit_object_enhs.prog.abap +++ b/src/zabapgit_object_enhs.prog.abap @@ -48,19 +48,22 @@ CLASS lcl_object_enhs IMPLEMENTATION. 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_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. 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 ). - io_xml->read( EXPORTING iv_name = 'BADI_DATA' - CHANGING cg_data = lt_enh_badi ). IF lif_object~exists( ) = abap_true. lif_object~delete( ). @@ -72,7 +75,7 @@ CLASS lcl_object_enhs IMPLEMENTATION. cl_enh_factory=>create_enhancement_spot( EXPORTING spot_name = lv_spot_name - tooltype = cl_enh_tool_badi_def=>tooltype + tooltype = lv_tool dark = abap_false compositename = lv_parent IMPORTING @@ -80,17 +83,42 @@ CLASS lcl_object_enhs IMPLEMENTATION. CHANGING devclass = lv_package ). - lo_badidef_tool ?= li_spot_ref. + CASE lv_tool. + WHEN cl_enh_tool_badi_def=>tooltype.. - lo_badidef_tool->if_enh_object_docu~set_shorttext( lv_enh_shtext ). + io_xml->read( EXPORTING iv_name = 'BADI_DATA' + CHANGING cg_data = lt_enh_badi ). - LOOP AT lt_enh_badi INTO ls_enh_badi. - lo_badidef_tool->add_badi_def( ls_enh_badi ). - ENDLOOP. + lo_badidef_tool ?= li_spot_ref. - lo_badidef_tool->if_enh_object~save( ). - lo_badidef_tool->if_enh_object~activate( ). - lo_badidef_tool->if_enh_object~unlock( ). + 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 ). + + lo_badi_hook ?= 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 #( ) ). + ENDLOOP. + + lo_badi_hook->if_enh_object~save( ). + lo_badi_hook->if_enh_object~activate( ). + lo_badi_hook->if_enh_object~unlock( ). + + ENDCASE. CATCH cx_enh_root INTO lx_root. lv_message = `Error occured while deserializing EHNS: ` @@ -109,7 +137,9 @@ CLASS lcl_object_enhs IMPLEMENTATION. 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_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. lv_spot_name = ms_item-obj_name. @@ -118,13 +148,33 @@ CLASS lcl_object_enhs IMPLEMENTATION. li_spot_ref = cl_enh_factory=>get_enhancement_spot( lv_spot_name ). lv_tool = li_spot_ref->get_tool( ). - lo_badidef_tool ?= li_spot_ref. - lv_enh_shtext = lo_badidef_tool->if_enh_object_docu~get_shorttext( ). + CASE lv_tool. + WHEN cl_enh_tool_badi_def=>tooltype. - "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( ). + 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 = 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( ). + + "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( ). + + io_xml->add( ig_data = lt_hook_defs + iv_name = 'BADI_DATA' ). + + ENDCASE. io_xml->add( ig_data = lv_tool iv_name = 'TOOL' ). @@ -132,8 +182,6 @@ CLASS lcl_object_enhs IMPLEMENTATION. iv_name = 'PARENT_COMP' ). io_xml->add( ig_data = lv_enh_shtext iv_name = 'SHORTTEXT' ). - io_xml->add( ig_data = lt_enh_badi - iv_name = 'BADI_DATA' ). CATCH cx_enh_root INTO lx_root. zcx_abapgit_exception=>raise( `Error occured while serializing EHNS: ` @@ -158,6 +206,8 @@ CLASS lcl_object_enhs IMPLEMENTATION. 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. @@ -173,7 +223,8 @@ CLASS lcl_object_enhs IMPLEMENTATION. 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. + lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, + li_enh_object TYPE REF TO if_enh_object. lv_spot_name = ms_item-obj_name. @@ -183,12 +234,18 @@ CLASS lcl_object_enhs IMPLEMENTATION. lock = abap_true ). IF li_spot_ref IS BOUND. - lo_badidef_tool ?= li_spot_ref. - lo_badidef_tool->if_enh_object~delete( + 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. - lo_badidef_tool->if_enh_object~unlock( ). + CATCH cx_enh_root INTO lx_root. zcx_abapgit_exception=>raise( `Error occured while deleting EHNS: ` && lx_root->get_text( ) ) ##NO_TEXT. From 6458708a05aa190b2dfc76f60746c5b59851f9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Thu, 2 Nov 2017 21:19:10 +0000 Subject: [PATCH 2/7] Refactoring --- src/zabapgit_object_enhs.prog.abap | 156 +++++++++++++---------------- 1 file changed, 70 insertions(+), 86 deletions(-) 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: ` From 425f9390013208f0a312bded134d545caf0fbee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Thu, 2 Nov 2017 21:35:39 +0000 Subject: [PATCH 3/7] Cleanup --- src/zabapgit_object_enhs.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_object_enhs.prog.abap b/src/zabapgit_object_enhs.prog.abap index 6decb3f94..585cc0124 100644 --- a/src/zabapgit_object_enhs.prog.abap +++ b/src/zabapgit_object_enhs.prog.abap @@ -88,7 +88,7 @@ CLASS lcl_object_enhs IMPLEMENTATION. li_enh_object_docu->set_shorttext( lv_enh_shtext ). CASE lv_tool. - WHEN cl_enh_tool_badi_def=>tooltype.. + WHEN cl_enh_tool_badi_def=>tooltype. io_xml->read( EXPORTING iv_name = 'PARENT_COMP' CHANGING cg_data = lv_parent ). From 6335f9e35596ff88bb150e384c907a2fee37d25c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Fri, 3 Nov 2017 15:19:06 +0000 Subject: [PATCH 4/7] Refactor to strategy pattern --- src/zabapgit_object_enhs.prog.abap | 354 ++++++++++++++++++++--------- 1 file changed, 246 insertions(+), 108 deletions(-) diff --git a/src/zabapgit_object_enhs.prog.abap b/src/zabapgit_object_enhs.prog.abap index 585cc0124..cdad4d4df 100644 --- a/src/zabapgit_object_enhs.prog.abap +++ b/src/zabapgit_object_enhs.prog.abap @@ -2,6 +2,24 @@ *& Include ZABAPGIT_OBJECT_ENHS *&---------------------------------------------------------------------* +* For complete list of tool_type - see ENHSPOTTOOLS table + +INTERFACE lif_object_enhs. + + METHODS: + deserialize + IMPORTING io_xml TYPE REF TO lcl_xml_input + iv_package TYPE devclass + ii_enh_spot_tool TYPE REF TO if_enh_spot_tool + RAISING zcx_abapgit_exception, + + serialize + IMPORTING io_xml TYPE REF TO lcl_xml_output + ii_enh_spot_tool TYPE REF TO if_enh_spot_tool + RAISING zcx_abapgit_exception. + +ENDINTERFACE. "lif_object_enho + *----------------------------------------------------------------------* * CLASS lcl_object_enhs DEFINITION *----------------------------------------------------------------------* @@ -11,8 +29,39 @@ CLASS lcl_object_enhs DEFINITION INHERITING FROM lcl_objects_super FINAL. INTERFACES lif_object. ALIASES mo_files FOR lif_object~mo_files. + PRIVATE SECTION. + METHODS: + factory + IMPORTING + iv_tool TYPE enhtooltype + RETURNING + VALUE(ri_enho) TYPE REF TO lif_object_enhs + RAISING + zcx_abapgit_exception. + ENDCLASS. "lcl_object_enhs +*----------------------------------------------------------------------* +* CLASS lcl_object_enhs_badi_def DEFINITION +*----------------------------------------------------------------------* +CLASS lcl_object_enhs_badi_def DEFINITION. + + PUBLIC SECTION. + INTERFACES: lif_object_enhs. + +ENDCLASS. + +*----------------------------------------------------------------------* +* CLASS lcl_object_enhs_hook_def DEFINITION +*----------------------------------------------------------------------* +CLASS lcl_object_enhs_hook_def DEFINITION. + + PUBLIC SECTION. + INTERFACES: lif_object_enhs. + +ENDCLASS. + + *----------------------------------------------------------------------* * CLASS lcl_object_enhs IMPLEMENTATION *----------------------------------------------------------------------* @@ -41,28 +90,18 @@ 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_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. + DATA: lv_parent TYPE enhspotcompositename, + lv_spot_name TYPE enhspotname, + 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, + li_enhs TYPE REF TO lif_object_enhs. 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 = 'SHORTTEXT' - CHANGING cg_data = lv_enh_shtext ). IF lif_object~exists( ) = abap_true. lif_object~delete( ). @@ -82,112 +121,39 @@ 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. - - LOOP AT lt_enh_badi INTO ls_enh_badi. - lo_badidef_tool->add_badi_def( ls_enh_badi ). - ENDLOOP. - - WHEN cl_enh_tool_hook_def=>tool_type. - - io_xml->read( EXPORTING iv_name = 'BADI_DATA' - CHANGING cg_data = lt_hook_definitions ). - - lo_hookdef_tool ?= li_spot_ref. - - LOOP AT lt_hook_definitions ASSIGNING FIELD-SYMBOL(). - lo_hookdef_tool->add_hook_def( CORRESPONDING #( ) ). - ENDLOOP. - - 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. - zcx_abapgit_exception=>raise( lv_message ). + zcx_abapgit_exception=>raise( 'Error from CL_ENH_FACTORY' ). ENDTRY. + li_enhs = factory( lv_tool ). + + li_enhs->deserialize( io_xml = io_xml + iv_package = iv_package + ii_enh_spot_tool = li_spot_ref ). + ENDMETHOD. "deserialize 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_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. + DATA: lv_spot_name TYPE enhspotname, + lx_root TYPE REF TO cx_root, + li_spot_ref TYPE REF TO if_enh_spot_tool, + li_enhs TYPE REF TO lif_object_enhs. lv_spot_name = ms_item-obj_name. TRY. 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. - - "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_hookdef_tool ?= li_spot_ref. - - lt_hook_definitions = lo_hookdef_tool->get_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. CATCH cx_enh_root INTO lx_root. - zcx_abapgit_exception=>raise( `Error occured while serializing EHNS: ` - && lx_root->get_text( ) ) ##NO_TEXT. + zcx_abapgit_exception=>raise( 'Error from CL_ENH_FACTORY' ). ENDTRY. + li_enhs = factory( li_spot_ref->get_tool( ) ). + + li_enhs->serialize( io_xml = io_xml + ii_enh_spot_tool = li_spot_ref ). + ENDMETHOD. "serialize METHOD lif_object~exists. @@ -196,7 +162,6 @@ CLASS lcl_object_enhs IMPLEMENTATION. lv_tool TYPE enhspottooltype, li_spot_ref TYPE REF TO if_enh_spot_tool. - lv_spot_name = ms_item-obj_name. TRY. @@ -256,4 +221,177 @@ CLASS lcl_object_enhs IMPLEMENTATION. CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. ENDMETHOD. + METHOD factory. + + CASE iv_tool. + WHEN cl_enh_tool_badi_def=>tooltype. + CREATE OBJECT ri_enho TYPE lcl_object_enhs_badi_def. + WHEN cl_enh_tool_hook_def=>tool_type. + CREATE OBJECT ri_enho TYPE lcl_object_enhs_hook_def. + WHEN OTHERS. + zcx_abapgit_exception=>raise( |ENHS: Unsupported tool { iv_tool }| ). + ENDCASE. + + ENDMETHOD. + ENDCLASS. "lcl_object_enhs + +*----------------------------------------------------------------------* +* CLASS lcl_object_enhs_badi_def IMPLEMENTATION +*----------------------------------------------------------------------* +CLASS lcl_object_enhs_badi_def IMPLEMENTATION. + + METHOD lif_object_enhs~deserialize. + + DATA: lv_parent TYPE enhspotcompositename, + ls_enh_badi TYPE enh_badi_data, + lt_enh_badi TYPE enh_badi_data_it, + lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, + lv_enh_shtext TYPE string, + lv_package LIKE iv_package, + li_enh_object TYPE REF TO if_enh_object, + li_enh_object_docu TYPE REF TO if_enh_object_docu, + lx_error TYPE REF TO cx_enh_root, + lv_text TYPE string. + + 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 ). + + io_xml->read( EXPORTING iv_name = 'SHORTTEXT' + CHANGING cg_data = lv_enh_shtext ). + + lv_package = iv_package. + + li_enh_object ?= ii_enh_spot_tool. + li_enh_object_docu ?= ii_enh_spot_tool. + + TRY. + li_enh_object_docu->set_shorttext( lv_enh_shtext ). + + lo_badidef_tool ?= ii_enh_spot_tool. + + LOOP AT lt_enh_badi INTO ls_enh_badi. + lo_badidef_tool->add_badi_def( ls_enh_badi ). + ENDLOOP. + + li_enh_object->save( ). + li_enh_object->activate( ). + li_enh_object->unlock( ). + + CATCH cx_enh_root INTO lx_error. + lv_text = lx_error->get_text( ). + zcx_abapgit_exception=>raise( lv_text ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object_enhs~serialize. + + DATA: lv_spot_name TYPE enhspotname, + lv_parent TYPE enhspotcompositename, + lt_enh_badi TYPE enh_badi_data_it, + lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, + lv_enh_shtext TYPE string, + li_enh_object_docu TYPE REF TO if_enh_object_docu. + + lo_badidef_tool ?= ii_enh_spot_tool. + + li_enh_object_docu ?= ii_enh_spot_tool. + lv_enh_shtext = li_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 = ii_enh_spot_tool->get_tool( ) + iv_name = 'TOOL' ). + + io_xml->add( ig_data = lv_enh_shtext + iv_name = 'SHORTTEXT' ). + + io_xml->add( ig_data = lv_parent + iv_name = 'PARENT_COMP' ). + + io_xml->add( ig_data = lt_enh_badi + iv_name = 'BADI_DATA' ). + + ENDMETHOD. + +ENDCLASS. + +*----------------------------------------------------------------------* +* CLASS lcl_object_enhs_hook_def IMPLEMENTATION +*----------------------------------------------------------------------* +CLASS lcl_object_enhs_hook_def IMPLEMENTATION. + + METHOD lif_object_enhs~deserialize. + + DATA: lv_enh_shtext TYPE string, + ls_hook_def TYPE enh_hook_def, + li_enh_object TYPE REF TO if_enh_object, + li_enh_object_docu TYPE REF TO if_enh_object_docu, + lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, + lt_hook_definitions TYPE enh_hook_def_ext_it, + lx_error TYPE REF TO cx_enh_root, + lv_text TYPE string. + + io_xml->read( EXPORTING iv_name = 'SHORTTEXT' + CHANGING cg_data = lv_enh_shtext ). + + io_xml->read( EXPORTING iv_name = 'BADI_DATA' + CHANGING cg_data = lt_hook_definitions ). + + li_enh_object ?= ii_enh_spot_tool. + li_enh_object_docu ?= ii_enh_spot_tool. + + TRY. + li_enh_object_docu->set_shorttext( lv_enh_shtext ). + + lo_hookdef_tool ?= ii_enh_spot_tool. + + LOOP AT lt_hook_definitions ASSIGNING FIELD-SYMBOL(). + MOVE-CORRESPONDING TO ls_hook_def. + lo_hookdef_tool->add_hook_def( ls_hook_def ). + ENDLOOP. + + li_enh_object->save( ). + li_enh_object->activate( ). + li_enh_object->unlock( ). + + CATCH cx_enh_root INTO lx_error. + lv_text = lx_error->get_text( ). + zcx_abapgit_exception=>raise( lv_text ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object_enhs~serialize. + + DATA: lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, + lt_hook_definitions TYPE enh_hook_def_ext_it, + lv_enh_shtext TYPE string, + li_enh_object_docu TYPE REF TO if_enh_object_docu. + + lo_hookdef_tool ?= ii_enh_spot_tool. + + li_enh_object_docu ?= ii_enh_spot_tool. + lv_enh_shtext = li_enh_object_docu->get_shorttext( ). + + lt_hook_definitions = lo_hookdef_tool->get_hook_defs( ). + + io_xml->add( ig_data = ii_enh_spot_tool->get_tool( ) + iv_name = 'TOOL' ). + + io_xml->add( ig_data = lv_enh_shtext + iv_name = 'SHORTTEXT' ). + + io_xml->add( ig_data = lt_hook_definitions + iv_name = 'BADI_DATA' ). + + ENDMETHOD. + +ENDCLASS. From f0a3412c8f3d261b3629af11a19b4371b7a27ece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Fri, 3 Nov 2017 15:34:56 +0000 Subject: [PATCH 5/7] Cleanup --- src/zabapgit_object_enhs.prog.abap | 37 +++++++++++++----------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/src/zabapgit_object_enhs.prog.abap b/src/zabapgit_object_enhs.prog.abap index cdad4d4df..86d09369a 100644 --- a/src/zabapgit_object_enhs.prog.abap +++ b/src/zabapgit_object_enhs.prog.abap @@ -76,12 +76,12 @@ CLASS lcl_object_enhs IMPLEMENTATION. DATA: lv_spot_name TYPE enhspotname, li_spot_ref TYPE REF TO if_enh_spot_tool. - lv_spot_name = ms_item-obj_name. TRY. li_spot_ref = cl_enh_factory=>get_enhancement_spot( lv_spot_name ). li_spot_ref->get_attributes( IMPORTING changedby = rv_user ). + CATCH cx_enh_root. rv_user = c_user_unknown. ENDTRY. @@ -92,22 +92,21 @@ CLASS lcl_object_enhs IMPLEMENTATION. DATA: lv_parent TYPE enhspotcompositename, lv_spot_name TYPE enhspotname, - 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, - li_enhs TYPE REF TO lif_object_enhs. - - lv_spot_name = ms_item-obj_name. - - io_xml->read( EXPORTING iv_name = 'TOOL' - CHANGING cg_data = lv_tool ). + li_enhs TYPE REF TO lif_object_enhs, + lx_root TYPE REF TO cx_root. IF lif_object~exists( ) = abap_true. lif_object~delete( ). ENDIF. - lv_package = iv_package. + io_xml->read( EXPORTING iv_name = 'TOOL' + CHANGING cg_data = lv_tool ). + + lv_spot_name = ms_item-obj_name. + lv_package = iv_package. TRY. cl_enh_factory=>create_enhancement_spot( @@ -136,9 +135,9 @@ CLASS lcl_object_enhs IMPLEMENTATION. METHOD lif_object~serialize. DATA: lv_spot_name TYPE enhspotname, - lx_root TYPE REF TO cx_root, li_spot_ref TYPE REF TO if_enh_spot_tool, - li_enhs TYPE REF TO lif_object_enhs. + li_enhs TYPE REF TO lif_object_enhs, + lx_root TYPE REF TO cx_root. lv_spot_name = ms_item-obj_name. @@ -159,7 +158,6 @@ CLASS lcl_object_enhs IMPLEMENTATION. METHOD lif_object~exists. DATA: lv_spot_name TYPE enhspotname, - lv_tool TYPE enhspottooltype, li_spot_ref TYPE REF TO if_enh_spot_tool. lv_spot_name = ms_item-obj_name. @@ -167,8 +165,6 @@ CLASS lcl_object_enhs IMPLEMENTATION. TRY. li_spot_ref = cl_enh_factory=>get_enhancement_spot( lv_spot_name ). - lv_tool = li_spot_ref->get_tool( ). - rv_bool = abap_true. CATCH cx_enh_root. @@ -180,10 +176,10 @@ CLASS lcl_object_enhs IMPLEMENTATION. METHOD lif_object~delete. DATA: lv_spot_name TYPE enhspotname, - lx_root TYPE REF TO cx_root, - li_enh_object TYPE REF TO if_enh_object. + li_enh_object TYPE REF TO if_enh_object, + lx_root TYPE REF TO cx_root. - lv_spot_name = ms_item-obj_name. + lv_spot_name = ms_item-obj_name. TRY. li_enh_object ?= cl_enh_factory=>get_enhancement_spot( @@ -196,8 +192,7 @@ CLASS lcl_object_enhs IMPLEMENTATION. li_enh_object->unlock( ). CATCH cx_enh_root INTO lx_root. - zcx_abapgit_exception=>raise( `Error occured while deleting EHNS: ` - && lx_root->get_text( ) ) ##NO_TEXT. + zcx_abapgit_exception=>raise( 'Error from CL_ENH_FACTORY' ). ENDTRY. ENDMETHOD. "delete @@ -251,8 +246,8 @@ CLASS lcl_object_enhs_badi_def IMPLEMENTATION. lv_package LIKE iv_package, li_enh_object TYPE REF TO if_enh_object, li_enh_object_docu TYPE REF TO if_enh_object_docu, - lx_error TYPE REF TO cx_enh_root, - lv_text TYPE string. + lv_text TYPE string, + lx_error TYPE REF TO cx_enh_root. io_xml->read( EXPORTING iv_name = 'PARENT_COMP' CHANGING cg_data = lv_parent ). From ef3af5dc7b9dc8abe08dc950bc42c2f23bae0643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Fri, 3 Nov 2017 16:13:04 +0000 Subject: [PATCH 6/7] Support for enhancement sections added --- src/zabapgit_object_enhs.prog.abap | 34 ++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/src/zabapgit_object_enhs.prog.abap b/src/zabapgit_object_enhs.prog.abap index 86d09369a..381fcc60e 100644 --- a/src/zabapgit_object_enhs.prog.abap +++ b/src/zabapgit_object_enhs.prog.abap @@ -58,6 +58,16 @@ CLASS lcl_object_enhs_hook_def DEFINITION. PUBLIC SECTION. INTERFACES: lif_object_enhs. + PRIVATE SECTION. + TYPES: BEGIN OF ty_hook_def, + pgmid TYPE pgmid, + obj_name TYPE trobj_name, + obj_type TYPE trobjtype, + main_type TYPE trobjtype, + main_name TYPE eu_aname, + program TYPE progname, + def_hooks TYPE enh_hook_def_ext_it, + END OF ty_hook_def. ENDCLASS. @@ -327,10 +337,10 @@ CLASS lcl_object_enhs_hook_def IMPLEMENTATION. DATA: lv_enh_shtext TYPE string, ls_hook_def TYPE enh_hook_def, + ls_abapgit_hook_def TYPE ty_hook_def, li_enh_object TYPE REF TO if_enh_object, li_enh_object_docu TYPE REF TO if_enh_object_docu, lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, - lt_hook_definitions TYPE enh_hook_def_ext_it, lx_error TYPE REF TO cx_enh_root, lv_text TYPE string. @@ -338,7 +348,7 @@ CLASS lcl_object_enhs_hook_def IMPLEMENTATION. CHANGING cg_data = lv_enh_shtext ). io_xml->read( EXPORTING iv_name = 'BADI_DATA' - CHANGING cg_data = lt_hook_definitions ). + CHANGING cg_data = ls_abapgit_hook_def ). li_enh_object ?= ii_enh_spot_tool. li_enh_object_docu ?= ii_enh_spot_tool. @@ -348,7 +358,7 @@ CLASS lcl_object_enhs_hook_def IMPLEMENTATION. lo_hookdef_tool ?= ii_enh_spot_tool. - LOOP AT lt_hook_definitions ASSIGNING FIELD-SYMBOL(). + LOOP AT ls_abapgit_hook_def-def_hooks ASSIGNING FIELD-SYMBOL(). MOVE-CORRESPONDING TO ls_hook_def. lo_hookdef_tool->add_hook_def( ls_hook_def ). ENDLOOP. @@ -367,16 +377,26 @@ CLASS lcl_object_enhs_hook_def IMPLEMENTATION. METHOD lif_object_enhs~serialize. DATA: lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, - lt_hook_definitions TYPE enh_hook_def_ext_it, lv_enh_shtext TYPE string, - li_enh_object_docu TYPE REF TO if_enh_object_docu. + li_enh_object_docu TYPE REF TO if_enh_object_docu, + lv_include_bound TYPE enhboolean, + ls_abapgit_hook_def TYPE ty_hook_def. lo_hookdef_tool ?= ii_enh_spot_tool. li_enh_object_docu ?= ii_enh_spot_tool. lv_enh_shtext = li_enh_object_docu->get_shorttext( ). - lt_hook_definitions = lo_hookdef_tool->get_hook_defs( ). + ls_abapgit_hook_def-def_hooks = lo_hookdef_tool->get_hook_defs( ). + lv_include_bound = lo_hookdef_tool->get_include_bound( ). + lo_hookdef_tool->get_original_object( + IMPORTING + pgmid = ls_abapgit_hook_def-pgmid + obj_name = ls_abapgit_hook_def-obj_name + obj_type = ls_abapgit_hook_def-obj_type + main_type = ls_abapgit_hook_def-main_type + main_name = ls_abapgit_hook_def-main_name + program = ls_abapgit_hook_def-program ). io_xml->add( ig_data = ii_enh_spot_tool->get_tool( ) iv_name = 'TOOL' ). @@ -384,7 +404,7 @@ CLASS lcl_object_enhs_hook_def IMPLEMENTATION. io_xml->add( ig_data = lv_enh_shtext iv_name = 'SHORTTEXT' ). - io_xml->add( ig_data = lt_hook_definitions + io_xml->add( ig_data = ls_abapgit_hook_def iv_name = 'BADI_DATA' ). ENDMETHOD. From 6d6c4b8b363fba5c749c68356b864d9a29cae56b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Fri, 3 Nov 2017 21:47:25 +0000 Subject: [PATCH 7/7] Cleanup --- src/zabapgit_object_enhs.prog.abap | 86 ++++++++++++++++-------------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/src/zabapgit_object_enhs.prog.abap b/src/zabapgit_object_enhs.prog.abap index 381fcc60e..7bea1369c 100644 --- a/src/zabapgit_object_enhs.prog.abap +++ b/src/zabapgit_object_enhs.prog.abap @@ -58,6 +58,7 @@ CLASS lcl_object_enhs_hook_def DEFINITION. PUBLIC SECTION. INTERFACES: lif_object_enhs. + PRIVATE SECTION. TYPES: BEGIN OF ty_hook_def, pgmid TYPE pgmid, @@ -192,9 +193,8 @@ CLASS lcl_object_enhs IMPLEMENTATION. lv_spot_name = ms_item-obj_name. TRY. - li_enh_object ?= 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 ). li_enh_object->delete( nevertheless_delete = abap_true run_dark = abap_true ). @@ -249,16 +249,17 @@ CLASS lcl_object_enhs_badi_def IMPLEMENTATION. METHOD lif_object_enhs~deserialize. DATA: lv_parent TYPE enhspotcompositename, - ls_enh_badi TYPE enh_badi_data, lt_enh_badi TYPE enh_badi_data_it, lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, - lv_enh_shtext TYPE string, + lv_enh_shorttext TYPE string, lv_package LIKE iv_package, li_enh_object TYPE REF TO if_enh_object, li_enh_object_docu TYPE REF TO if_enh_object_docu, lv_text TYPE string, lx_error TYPE REF TO cx_enh_root. + FIELD-SYMBOLS: LIKE LINE OF lt_enh_badi. + io_xml->read( EXPORTING iv_name = 'PARENT_COMP' CHANGING cg_data = lv_parent ). @@ -266,7 +267,7 @@ CLASS lcl_object_enhs_badi_def IMPLEMENTATION. CHANGING cg_data = lt_enh_badi ). io_xml->read( EXPORTING iv_name = 'SHORTTEXT' - CHANGING cg_data = lv_enh_shtext ). + CHANGING cg_data = lv_enh_shorttext ). lv_package = iv_package. @@ -274,12 +275,12 @@ CLASS lcl_object_enhs_badi_def IMPLEMENTATION. li_enh_object_docu ?= ii_enh_spot_tool. TRY. - li_enh_object_docu->set_shorttext( lv_enh_shtext ). + li_enh_object_docu->set_shorttext( lv_enh_shorttext ). lo_badidef_tool ?= ii_enh_spot_tool. - LOOP AT lt_enh_badi INTO ls_enh_badi. - lo_badidef_tool->add_badi_def( ls_enh_badi ). + LOOP AT lt_enh_badi ASSIGNING . + lo_badidef_tool->add_badi_def( ). ENDLOOP. li_enh_object->save( ). @@ -299,13 +300,13 @@ CLASS lcl_object_enhs_badi_def IMPLEMENTATION. lv_parent TYPE enhspotcompositename, lt_enh_badi TYPE enh_badi_data_it, lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def, - lv_enh_shtext TYPE string, + lv_enh_shorttext TYPE string, li_enh_object_docu TYPE REF TO if_enh_object_docu. lo_badidef_tool ?= ii_enh_spot_tool. li_enh_object_docu ?= ii_enh_spot_tool. - lv_enh_shtext = li_enh_object_docu->get_shorttext( ). + lv_enh_shorttext = li_enh_object_docu->get_shorttext( ). "get parent = composite enhs (ENHC) lv_parent = cl_r3standard_persistence=>enh_find_parent_composite( lv_spot_name ). @@ -315,7 +316,7 @@ CLASS lcl_object_enhs_badi_def IMPLEMENTATION. io_xml->add( ig_data = ii_enh_spot_tool->get_tool( ) iv_name = 'TOOL' ). - io_xml->add( ig_data = lv_enh_shtext + io_xml->add( ig_data = lv_enh_shorttext iv_name = 'SHORTTEXT' ). io_xml->add( ig_data = lv_parent @@ -335,32 +336,34 @@ CLASS lcl_object_enhs_hook_def IMPLEMENTATION. METHOD lif_object_enhs~deserialize. - DATA: lv_enh_shtext TYPE string, - ls_hook_def TYPE enh_hook_def, - ls_abapgit_hook_def TYPE ty_hook_def, - li_enh_object TYPE REF TO if_enh_object, - li_enh_object_docu TYPE REF TO if_enh_object_docu, - lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, - lx_error TYPE REF TO cx_enh_root, - lv_text TYPE string. + DATA: lv_enh_shorttext TYPE string, + ls_enh_hook_definition TYPE enh_hook_def, + ls_hook_definition TYPE ty_hook_def, + li_enh_object TYPE REF TO if_enh_object, + li_enh_object_docu TYPE REF TO if_enh_object_docu, + lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, + lx_error TYPE REF TO cx_enh_root, + lv_text TYPE string. + + FIELD-SYMBOLS: TYPE enh_hook_def_ext. io_xml->read( EXPORTING iv_name = 'SHORTTEXT' - CHANGING cg_data = lv_enh_shtext ). + CHANGING cg_data = lv_enh_shorttext ). io_xml->read( EXPORTING iv_name = 'BADI_DATA' - CHANGING cg_data = ls_abapgit_hook_def ). + CHANGING cg_data = ls_hook_definition ). li_enh_object ?= ii_enh_spot_tool. li_enh_object_docu ?= ii_enh_spot_tool. TRY. - li_enh_object_docu->set_shorttext( lv_enh_shtext ). + li_enh_object_docu->set_shorttext( lv_enh_shorttext ). lo_hookdef_tool ?= ii_enh_spot_tool. - LOOP AT ls_abapgit_hook_def-def_hooks ASSIGNING FIELD-SYMBOL(). - MOVE-CORRESPONDING TO ls_hook_def. - lo_hookdef_tool->add_hook_def( ls_hook_def ). + LOOP AT ls_hook_definition-def_hooks ASSIGNING . + MOVE-CORRESPONDING TO ls_enh_hook_definition. + lo_hookdef_tool->add_hook_def( ls_enh_hook_definition ). ENDLOOP. li_enh_object->save( ). @@ -376,35 +379,36 @@ CLASS lcl_object_enhs_hook_def IMPLEMENTATION. METHOD lif_object_enhs~serialize. - DATA: lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, - lv_enh_shtext TYPE string, - li_enh_object_docu TYPE REF TO if_enh_object_docu, - lv_include_bound TYPE enhboolean, - ls_abapgit_hook_def TYPE ty_hook_def. + DATA: lo_hookdef_tool TYPE REF TO cl_enh_tool_hook_def, + lv_enh_shorttext TYPE string, + li_enh_object_docu TYPE REF TO if_enh_object_docu, + lv_include_bound TYPE enhboolean, + ls_hook_definition TYPE ty_hook_def. lo_hookdef_tool ?= ii_enh_spot_tool. li_enh_object_docu ?= ii_enh_spot_tool. - lv_enh_shtext = li_enh_object_docu->get_shorttext( ). + lv_enh_shorttext = li_enh_object_docu->get_shorttext( ). - ls_abapgit_hook_def-def_hooks = lo_hookdef_tool->get_hook_defs( ). + ls_hook_definition-def_hooks = lo_hookdef_tool->get_hook_defs( ). lv_include_bound = lo_hookdef_tool->get_include_bound( ). + lo_hookdef_tool->get_original_object( IMPORTING - pgmid = ls_abapgit_hook_def-pgmid - obj_name = ls_abapgit_hook_def-obj_name - obj_type = ls_abapgit_hook_def-obj_type - main_type = ls_abapgit_hook_def-main_type - main_name = ls_abapgit_hook_def-main_name - program = ls_abapgit_hook_def-program ). + pgmid = ls_hook_definition-pgmid + obj_name = ls_hook_definition-obj_name + obj_type = ls_hook_definition-obj_type + main_type = ls_hook_definition-main_type + main_name = ls_hook_definition-main_name + program = ls_hook_definition-program ). io_xml->add( ig_data = ii_enh_spot_tool->get_tool( ) iv_name = 'TOOL' ). - io_xml->add( ig_data = lv_enh_shtext + io_xml->add( ig_data = lv_enh_shorttext iv_name = 'SHORTTEXT' ). - io_xml->add( ig_data = ls_abapgit_hook_def + io_xml->add( ig_data = ls_hook_definition iv_name = 'BADI_DATA' ). ENDMETHOD.