CLASS zcl_abapgit_object_enho_clif DEFINITION PUBLIC CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS deserialize IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_input !io_clif TYPE REF TO cl_enh_tool_clif RAISING zcx_abapgit_exception cx_enh_root . CLASS-METHODS serialize IMPORTING !io_xml TYPE REF TO zif_abapgit_xml_output !io_clif TYPE REF TO cl_enh_tool_clif RAISING zcx_abapgit_exception . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_abapgit_object_enho_clif IMPLEMENTATION. METHOD deserialize. DATA: lt_tab_attributes TYPE enhclasstabattrib, lt_tab_types TYPE enhtype_tab, lt_tab_methods TYPE enhnewmeth_tab, ls_type_line TYPE vseotype, ls_header TYPE vseomethod, ls_param TYPE vseomepara, ls_exc TYPE vseoexcep, lt_tab_eventdata TYPE enhevent_tab, ls_event_line TYPE vseoevent, ls_event_param TYPE vseoeparam. FIELD-SYMBOLS: LIKE LINE OF lt_tab_types, LIKE LINE OF lt_tab_methods, LIKE LINE OF -meth_param, LIKE LINE OF lt_tab_eventdata, LIKE LINE OF -meth_exc, LIKE LINE OF -event_param. io_xml->read( EXPORTING iv_name = 'TAB_ATTRIBUTES' CHANGING cg_data = lt_tab_attributes ). io_xml->read( EXPORTING iv_name = 'TAB_TYPES' CHANGING cg_data = lt_tab_types ). io_xml->read( EXPORTING iv_name = 'TAB_METHODS' CHANGING cg_data = lt_tab_methods ). io_xml->read( EXPORTING iv_name = 'TAB_EVENTDATA' CHANGING cg_data = lt_tab_eventdata ). LOOP AT lt_tab_types ASSIGNING . MOVE-CORRESPONDING TO ls_type_line. TRY. io_clif->add_change_enha_type( type_line = ls_type_line ). CATCH cx_enh_mod_not_allowed cx_enh_is_not_enhanceable ##NO_HANDLER. " TODO ENDTRY. ENDLOOP. io_clif->set_enhattributes( lt_tab_attributes ). * SAP standard SET_ENH_NEW_METHOS does not work LOOP AT lt_tab_methods ASSIGNING . MOVE-CORRESPONDING -meth_header TO ls_header. io_clif->add_change_new_enh_method( methkey = -methkey method_header = ls_header ). * parameters LOOP AT -meth_param ASSIGNING . MOVE-CORRESPONDING TO ls_param. io_clif->add_change_enh_methparam( methname = -methkey-cmpname param_line = ls_param ). ENDLOOP. * exceptions LOOP AT -meth_exc ASSIGNING . MOVE-CORRESPONDING TO ls_exc. io_clif->add_change_enh_methexc( methname = -methkey-cmpname except_line = ls_exc ). ENDLOOP. ENDLOOP. " events are renumbered based on LOOP AT lt_tab_eventdata ASSIGNING . MOVE-CORRESPONDING -event_header TO ls_event_line. io_clif->add_change_enha_event( event_key = -eventkey event_line = ls_event_line ). * parameters LOOP AT -event_param ASSIGNING . MOVE-CORRESPONDING TO ls_event_param. io_clif->add_change_enh_eventparam( eventname = -eventkey-cmpname event_param = ls_event_param ). ENDLOOP. ENDLOOP. ENDMETHOD. METHOD serialize. DATA: lt_tab_attributes TYPE enhclasstabattrib, lt_tab_types TYPE enhtype_tab, lt_tab_methods TYPE enhnewmeth_tab, lt_tab_eventdata TYPE enhevent_tab, lv_editorder TYPE i. FIELD-SYMBOLS: LIKE LINE OF lt_tab_attributes, LIKE LINE OF lt_tab_types, LIKE LINE OF lt_tab_methods, LIKE LINE OF -meth_param, LIKE LINE OF -meth_exc, LIKE LINE OF lt_tab_eventdata, LIKE LINE OF -event_param. io_clif->get_enhattributes( IMPORTING tab_attributes = lt_tab_attributes ). io_clif->get_enhatypes( IMPORTING tab_types = lt_tab_types ). io_clif->get_enh_new_methodes( IMPORTING tab_methodes = lt_tab_methods ). io_clif->get_enhevents( IMPORTING tab_eventdata = lt_tab_eventdata ). LOOP AT lt_tab_attributes ASSIGNING . CLEAR: -author, -createdon, -changedby, -changedon, -descript_id. ENDLOOP. LOOP AT lt_tab_types ASSIGNING . CLEAR: -author, -createdon, -changedby, -changedon, -descript_id. ENDLOOP. lv_editorder = 0. SORT lt_tab_methods BY meth_header-editorder. LOOP AT lt_tab_methods ASSIGNING . CLEAR: -meth_header-author, -meth_header-createdon, -meth_header-changedby, -meth_header-changedon, -meth_header-descript_id. lv_editorder = lv_editorder + 1. -meth_header-editorder = lv_editorder. LOOP AT -meth_param ASSIGNING . CLEAR: -author, -createdon, -changedby, -changedon, -descript_id. ENDLOOP. LOOP AT -meth_exc ASSIGNING . CLEAR: -author, -createdon, -changedby, -changedon, -descript_id. ENDLOOP. ENDLOOP. LOOP AT lt_tab_eventdata ASSIGNING . CLEAR: -event_header-author, -event_header-createdon, -event_header-changedby, -event_header-changedon, -event_header-descript_id. LOOP AT -event_param ASSIGNING . CLEAR: -author, -createdon, -changedby, -changedon, -descript_id. ENDLOOP. ENDLOOP. io_xml->add( iv_name = 'TAB_ATTRIBUTES' ig_data = lt_tab_attributes ). io_xml->add( iv_name = 'TAB_TYPES' ig_data = lt_tab_types ). io_xml->add( iv_name = 'TAB_METHODS' ig_data = lt_tab_methods ). io_xml->add( iv_name = 'TAB_EVENTDATA' ig_data = lt_tab_eventdata ). ENDMETHOD. ENDCLASS.