mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
108 lines
3.6 KiB
ABAP
108 lines
3.6 KiB
ABAP
CLASS zcl_abapgit_object_enhs_hook_d DEFINITION PUBLIC.
|
|
|
|
PUBLIC SECTION.
|
|
INTERFACES: zif_abapgit_object_enhs.
|
|
|
|
PROTECTED SECTION.
|
|
PRIVATE SECTION.
|
|
TYPES: BEGIN OF ty_hook_defifnition,
|
|
pgmid TYPE tadir-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_defifnition.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS zcl_abapgit_object_enhs_hook_d IMPLEMENTATION.
|
|
|
|
|
|
METHOD zif_abapgit_object_enhs~deserialize.
|
|
|
|
DATA: lv_enh_shorttext TYPE string,
|
|
ls_enh_hook_definition TYPE enh_hook_def,
|
|
ls_hook_definition TYPE ty_hook_defifnition,
|
|
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_enh_root TYPE REF TO cx_enh_root.
|
|
|
|
FIELD-SYMBOLS: <ls_hook_definition> TYPE enh_hook_def_ext.
|
|
|
|
ii_xml->read( EXPORTING iv_name = 'SHORTTEXT'
|
|
CHANGING cg_data = lv_enh_shorttext ).
|
|
|
|
ii_xml->read( EXPORTING iv_name = 'BADI_DATA'
|
|
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_shorttext ).
|
|
|
|
lo_hookdef_tool ?= ii_enh_spot_tool.
|
|
|
|
lo_hookdef_tool->set_original_object( pgmid = ls_hook_definition-pgmid
|
|
obj_name = ls_hook_definition-obj_name
|
|
obj_type = ls_hook_definition-obj_type
|
|
program = ls_hook_definition-program
|
|
main_type = ls_hook_definition-main_type
|
|
main_name = ls_hook_definition-main_name ).
|
|
|
|
LOOP AT ls_hook_definition-def_hooks ASSIGNING <ls_hook_definition>.
|
|
MOVE-CORRESPONDING <ls_hook_definition> TO ls_enh_hook_definition.
|
|
lo_hookdef_tool->add_hook_def( ls_enh_hook_definition ).
|
|
ENDLOOP.
|
|
|
|
li_enh_object->save( ).
|
|
li_enh_object->activate( ).
|
|
li_enh_object->unlock( ).
|
|
|
|
CATCH cx_enh_root INTO lx_enh_root.
|
|
zcx_abapgit_exception=>raise_with_text( lx_enh_root ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object_enhs~serialize.
|
|
|
|
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,
|
|
ls_hook_definition TYPE ty_hook_defifnition.
|
|
|
|
lo_hookdef_tool ?= ii_enh_spot_tool.
|
|
|
|
li_enh_object_docu ?= ii_enh_spot_tool.
|
|
lv_enh_shorttext = li_enh_object_docu->get_shorttext( ).
|
|
|
|
ls_hook_definition-def_hooks = lo_hookdef_tool->get_hook_defs( ).
|
|
|
|
lo_hookdef_tool->get_original_object(
|
|
IMPORTING
|
|
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 ).
|
|
|
|
ii_xml->add( ig_data = ii_enh_spot_tool->get_tool( )
|
|
iv_name = 'TOOL' ).
|
|
|
|
ii_xml->add( ig_data = lv_enh_shorttext
|
|
iv_name = 'SHORTTEXT' ).
|
|
|
|
ii_xml->add( ig_data = ls_hook_definition
|
|
iv_name = 'BADI_DATA' ).
|
|
|
|
ENDMETHOD.
|
|
ENDCLASS.
|