CLASS zcl_abapgit_object_enho_badi DEFINITION PUBLIC. PUBLIC SECTION. METHODS: constructor IMPORTING is_item TYPE zif_abapgit_definitions=>ty_item io_files TYPE REF TO zcl_abapgit_objects_files. INTERFACES: zif_abapgit_object_enho. PRIVATE SECTION. DATA: ms_item TYPE zif_abapgit_definitions=>ty_item. ENDCLASS. CLASS zcl_abapgit_object_enho_badi IMPLEMENTATION. METHOD constructor. ms_item = is_item. ENDMETHOD. METHOD zif_abapgit_object_enho~serialize. DATA: lo_badi_impl TYPE REF TO cl_enh_tool_badi_impl, lv_spot_name TYPE enhspotname, lv_shorttext TYPE string, lt_impl TYPE enh_badi_impl_data_it. FIELD-SYMBOLS: LIKE LINE OF lt_impl, LIKE LINE OF -filter_values, LIKE LINE OF -filters. lo_badi_impl ?= ii_enh_tool. lv_shorttext = lo_badi_impl->if_enh_object_docu~get_shorttext( ). lv_spot_name = lo_badi_impl->get_spot_name( ). lt_impl = lo_badi_impl->get_implementations( ). LOOP AT lt_impl ASSIGNING . * make sure the XML serialization does not dump, field type = N LOOP AT -filter_values ASSIGNING . IF -filter_numeric_value1 CA space. CLEAR -filter_numeric_value1. ENDIF. ENDLOOP. LOOP AT -filters ASSIGNING . IF -filter_numeric_value1 CA space. CLEAR -filter_numeric_value1. ENDIF. ENDLOOP. ENDLOOP. io_xml->add( iv_name = 'TOOL' ig_data = ii_enh_tool->get_tool( ) ). io_xml->add( ig_data = lv_shorttext iv_name = 'SHORTTEXT' ). io_xml->add( iv_name = 'SPOT_NAME' ig_data = lv_spot_name ). io_xml->add( iv_name = 'IMPL' ig_data = lt_impl ). ENDMETHOD. METHOD zif_abapgit_object_enho~deserialize. DATA: lv_spot_name TYPE enhspotname, lv_shorttext TYPE string, lv_enhname TYPE enhname, lo_badi TYPE REF TO cl_enh_tool_badi_impl, li_tool TYPE REF TO if_enh_tool, lv_package TYPE devclass, lt_impl TYPE enh_badi_impl_data_it. FIELD-SYMBOLS: LIKE LINE OF lt_impl. io_xml->read( EXPORTING iv_name = 'SHORTTEXT' CHANGING cg_data = lv_shorttext ). io_xml->read( EXPORTING iv_name = 'SPOT_NAME' CHANGING cg_data = lv_spot_name ). io_xml->read( EXPORTING iv_name = 'IMPL' CHANGING cg_data = lt_impl ). lv_enhname = ms_item-obj_name. lv_package = iv_package. TRY. cl_enh_factory=>create_enhancement( EXPORTING enhname = lv_enhname enhtype = cl_abstract_enh_tool_redef=>credefinition enhtooltype = cl_enh_tool_badi_impl=>tooltype IMPORTING enhancement = li_tool CHANGING devclass = lv_package ). lo_badi ?= li_tool. lo_badi->set_spot_name( lv_spot_name ). lo_badi->if_enh_object_docu~set_shorttext( lv_shorttext ). LOOP AT lt_impl ASSIGNING . lo_badi->add_implementation( ). ENDLOOP. lo_badi->if_enh_object~save( run_dark = abap_true ). lo_badi->if_enh_object~unlock( ). CATCH cx_enh_root. zcx_abapgit_exception=>raise( 'error deserializing ENHO badi' ). ENDTRY. ENDMETHOD. ENDCLASS.