From 404a082f8004874060a5857c1cad5b587a57e53e Mon Sep 17 00:00:00 2001 From: larshp Date: Tue, 10 Jan 2017 18:49:00 +0000 Subject: [PATCH] ENHO: support for new methods --- src/zabapgit_object_enho.prog.abap | 123 ++++++++++++++++++++++++++++- 1 file changed, 121 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 343888d74..0d084029a 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -21,6 +21,117 @@ INTERFACE lif_object_enho. ENDINTERFACE. +CLASS lcl_object_enho_clif DEFINITION. + + PUBLIC SECTION. + CLASS-METHODS: + deserialize + IMPORTING io_xml TYPE REF TO lcl_xml_input + io_clif TYPE REF TO cl_enh_tool_clif + RAISING lcx_exception + cx_enh_root, + serialize + IMPORTING io_xml TYPE REF TO lcl_xml_output + io_clif TYPE REF TO cl_enh_tool_clif + RAISING lcx_exception. + +ENDCLASS. + +CLASS lcl_object_enho_clif IMPLEMENTATION. + + METHOD serialize. + + DATA: lt_tab_attributes TYPE enhclasstabattrib, + lt_tab_methods TYPE enhnewmeth_tab. + + FIELD-SYMBOLS: LIKE LINE OF lt_tab_attributes, + LIKE LINE OF lt_tab_methods. + + + io_clif->get_enhattributes( + IMPORTING + tab_attributes = lt_tab_attributes ). + + io_clif->get_enh_new_methodes( + IMPORTING + tab_methodes = lt_tab_methods ). + + LOOP AT lt_tab_attributes ASSIGNING . + CLEAR: -author, + -createdon, + -changedby, + -changedon. + ENDLOOP. + + LOOP AT lt_tab_methods ASSIGNING . + CLEAR: -meth_header-author, + -meth_header-createdon, + -meth_header-changedby, + -meth_header-changedon, + -meth_header-descript_id. + ENDLOOP. + + io_xml->add( iv_name = 'TAB_ATTRIBUTES' + ig_data = lt_tab_attributes ). + io_xml->add( iv_name = 'TAB_METHODS' + ig_data = lt_tab_methods ). + + ENDMETHOD. + + METHOD deserialize. + + DATA: lt_tab_attributes TYPE enhclasstabattrib, + lt_tab_methods TYPE enhnewmeth_tab, + ls_header TYPE vseomethod, + ls_param TYPE vseomepara, + ls_exc TYPE vseoexcep. + + FIELD-SYMBOLS: LIKE LINE OF lt_tab_methods, + LIKE LINE OF -meth_param, + LIKE LINE OF -meth_exc. + + + io_xml->read( EXPORTING iv_name = 'TAB_ATTRIBUTES' + CHANGING cg_data = lt_tab_attributes ). + io_xml->read( EXPORTING iv_name = 'TAB_METHODS' + CHANGING cg_data = lt_tab_methods ). + + io_clif->set_enhattributes( + EXPORTING + tab_attributes = 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. + + ENDMETHOD. + +ENDCLASS. + CLASS lcl_object_enho_badi DEFINITION. PUBLIC SECTION. @@ -31,8 +142,8 @@ CLASS lcl_object_enho_badi DEFINITION. INTERFACES: lif_object_enho. PRIVATE SECTION. - DATA: ms_item TYPE ty_item. - DATA: mo_files TYPE REF TO lcl_objects_files. + DATA: ms_item TYPE ty_item, + mo_files TYPE REF TO lcl_objects_files. ENDCLASS. @@ -389,6 +500,10 @@ CLASS lcl_object_enho_class IMPLEMENTATION. mo_files->add_abap( lt_source ). + lcl_object_enho_clif=>serialize( + io_xml = io_xml + io_clif = lo_enh_class ). + ENDMETHOD. METHOD lif_object_enho~deserialize. @@ -442,6 +557,10 @@ CLASS lcl_object_enho_class IMPLEMENTATION. lo_enh_class->set_eimp_include( version = 'I' eimp_source = lt_source ). + lcl_object_enho_clif=>deserialize( + io_xml = io_xml + io_clif = lo_enh_class ). + lo_enh_class->if_enh_object~save( ). lo_enh_class->if_enh_object~unlock( ). CATCH cx_enh_root.