CLASS zcl_abapgit_object_enhs_hook_d DEFINITION PUBLIC. PUBLIC SECTION. INTERFACES: zif_abapgit_object_enhs. PRIVATE SECTION. TYPES: BEGIN OF ty_hook_defifnition, 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_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_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_shorttext ). io_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 . MOVE-CORRESPONDING 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_error. lv_text = lx_error->get_text( ). zcx_abapgit_exception=>raise( lv_text ). 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 ). io_xml->add( ig_data = ii_enh_spot_tool->get_tool( ) iv_name = 'TOOL' ). io_xml->add( ig_data = lv_enh_shorttext iv_name = 'SHORTTEXT' ). io_xml->add( ig_data = ls_hook_definition iv_name = 'BADI_DATA' ). ENDMETHOD. ENDCLASS.