mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
215 lines
7.0 KiB
ABAP
215 lines
7.0 KiB
ABAP
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: <ls_type> LIKE LINE OF lt_tab_types,
|
|
<ls_method> LIKE LINE OF lt_tab_methods,
|
|
<ls_param> LIKE LINE OF <ls_method>-meth_param,
|
|
<ls_event> LIKE LINE OF lt_tab_eventdata,
|
|
<ls_exc> LIKE LINE OF <ls_method>-meth_exc,
|
|
<ls_event_param> LIKE LINE OF <ls_event>-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 <ls_type>.
|
|
MOVE-CORRESPONDING <ls_type> 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 <ls_method>.
|
|
|
|
MOVE-CORRESPONDING <ls_method>-meth_header TO ls_header.
|
|
|
|
io_clif->add_change_new_enh_method(
|
|
methkey = <ls_method>-methkey
|
|
method_header = ls_header ).
|
|
|
|
* parameters
|
|
LOOP AT <ls_method>-meth_param ASSIGNING <ls_param>.
|
|
MOVE-CORRESPONDING <ls_param> TO ls_param.
|
|
io_clif->add_change_enh_methparam(
|
|
methname = <ls_method>-methkey-cmpname
|
|
param_line = ls_param ).
|
|
ENDLOOP.
|
|
|
|
* exceptions
|
|
LOOP AT <ls_method>-meth_exc ASSIGNING <ls_exc>.
|
|
MOVE-CORRESPONDING <ls_exc> TO ls_exc.
|
|
io_clif->add_change_enh_methexc(
|
|
methname = <ls_method>-methkey-cmpname
|
|
except_line = ls_exc ).
|
|
ENDLOOP.
|
|
|
|
ENDLOOP.
|
|
|
|
" events are renumbered based on
|
|
LOOP AT lt_tab_eventdata ASSIGNING <ls_event>.
|
|
|
|
MOVE-CORRESPONDING <ls_event>-event_header TO ls_event_line.
|
|
|
|
io_clif->add_change_enha_event(
|
|
event_key = <ls_event>-eventkey
|
|
event_line = ls_event_line ).
|
|
|
|
* parameters
|
|
LOOP AT <ls_event>-event_param ASSIGNING <ls_event_param>.
|
|
MOVE-CORRESPONDING <ls_event_param> TO ls_event_param.
|
|
io_clif->add_change_enh_eventparam(
|
|
eventname = <ls_event>-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: <ls_attr> LIKE LINE OF lt_tab_attributes,
|
|
<ls_type> LIKE LINE OF lt_tab_types,
|
|
<ls_meth> LIKE LINE OF lt_tab_methods,
|
|
<ls_param> LIKE LINE OF <ls_meth>-meth_param,
|
|
<ls_exc> LIKE LINE OF <ls_meth>-meth_exc,
|
|
<ls_event> LIKE LINE OF lt_tab_eventdata,
|
|
<ls_event_param> LIKE LINE OF <ls_event>-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 <ls_attr>.
|
|
CLEAR: <ls_attr>-author,
|
|
<ls_attr>-createdon,
|
|
<ls_attr>-changedby,
|
|
<ls_attr>-changedon,
|
|
<ls_attr>-descript_id.
|
|
ENDLOOP.
|
|
|
|
LOOP AT lt_tab_types ASSIGNING <ls_type>.
|
|
CLEAR: <ls_type>-author,
|
|
<ls_type>-createdon,
|
|
<ls_type>-changedby,
|
|
<ls_type>-changedon,
|
|
<ls_type>-descript_id.
|
|
ENDLOOP.
|
|
|
|
lv_editorder = 0.
|
|
SORT lt_tab_methods BY meth_header-editorder.
|
|
LOOP AT lt_tab_methods ASSIGNING <ls_meth>.
|
|
CLEAR: <ls_meth>-meth_header-author,
|
|
<ls_meth>-meth_header-createdon,
|
|
<ls_meth>-meth_header-changedby,
|
|
<ls_meth>-meth_header-changedon,
|
|
<ls_meth>-meth_header-descript_id.
|
|
lv_editorder = lv_editorder + 1.
|
|
<ls_meth>-meth_header-editorder = lv_editorder.
|
|
LOOP AT <ls_meth>-meth_param ASSIGNING <ls_param>.
|
|
CLEAR: <ls_param>-author,
|
|
<ls_param>-createdon,
|
|
<ls_param>-changedby,
|
|
<ls_param>-changedon,
|
|
<ls_param>-descript_id.
|
|
ENDLOOP.
|
|
LOOP AT <ls_meth>-meth_exc ASSIGNING <ls_exc>.
|
|
CLEAR: <ls_exc>-author,
|
|
<ls_exc>-createdon,
|
|
<ls_exc>-changedby,
|
|
<ls_exc>-changedon,
|
|
<ls_exc>-descript_id.
|
|
ENDLOOP.
|
|
ENDLOOP.
|
|
|
|
LOOP AT lt_tab_eventdata ASSIGNING <ls_event>.
|
|
CLEAR: <ls_event>-event_header-author,
|
|
<ls_event>-event_header-createdon,
|
|
<ls_event>-event_header-changedby,
|
|
<ls_event>-event_header-changedon,
|
|
<ls_event>-event_header-descript_id.
|
|
LOOP AT <ls_event>-event_param ASSIGNING <ls_event_param>.
|
|
CLEAR: <ls_event_param>-author,
|
|
<ls_event_param>-createdon,
|
|
<ls_event_param>-changedby,
|
|
<ls_event_param>-changedon,
|
|
<ls_event_param>-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.
|