abapGit/src/objects/ecatt/zcl_abapgit_ecatt_system_downl.clas.abap
Christian Günter b588daf5f7 ECATT: remove dynamic method calls #2407 (#2411)
* ECATT: remove dynamic method calls

This commit introduces two new interfaces to remove dynamic method calls.
- ZIF_ABAPGIT_ECATT_DOWNLOAD
- ZIF_ABAPGIT_ECATT_UPLOAD

* ECATT: Rename method

Rename method z_set_stream_for_upload to set_stream_for_upload
as we now use our own interface and there's no risk that SAP 
standard introduces a method with the same name
2019-02-18 01:30:14 -08:00

115 lines
2.4 KiB
ABAP

CLASS zcl_abapgit_ecatt_system_downl DEFINITION
PUBLIC
INHERITING FROM cl_apl_ecatt_systems_download
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES:
zif_abapgit_ecatt_download.
METHODS:
download REDEFINITION.
PROTECTED SECTION.
METHODS:
download_data REDEFINITION.
PRIVATE SECTION.
DATA:
mv_xml_stream TYPE xstring.
METHODS:
set_systems_data_to_template.
ENDCLASS.
CLASS zcl_abapgit_ecatt_system_downl IMPLEMENTATION.
METHOD download.
" Downport
load_help = im_load_help.
typ = im_object_type.
TRY.
cl_apl_ecatt_object=>show_object(
EXPORTING
im_obj_type = im_object_type
im_name = im_object_name
im_version = im_object_version
IMPORTING
re_object = ecatt_object ).
CATCH cx_ecatt INTO ex_ecatt.
RETURN.
ENDTRY.
set_attributes_to_template( ).
set_systems_data_to_template( ).
download_data( ).
ENDMETHOD.
METHOD download_data.
" Downport
mv_xml_stream = zcl_abapgit_ecatt_helper=>download_data( template_over_all ).
ENDMETHOD.
METHOD zif_abapgit_ecatt_download~get_xml_stream.
rv_xml_stream = mv_xml_stream.
ENDMETHOD.
METHOD set_systems_data_to_template.
DATA: lo_ecatt_systems TYPE REF TO cl_apl_ecatt_system_data,
lt_sys_data TYPE etsys_def_tabtype,
ls_sys_data TYPE etsys_def,
li_item TYPE REF TO if_ixml_element,
li_sysdata_node TYPE REF TO if_ixml_element.
lo_ecatt_systems ?= ecatt_object.
lt_sys_data = lo_ecatt_systems->get_system_data( ).
li_sysdata_node = template_over_all->create_simple_element(
name = 'SYSTEMS_DATA'
parent = root_node ).
etpar_node = template_over_all->create_simple_element(
name = 'ETSYS_DEF'
parent = li_sysdata_node ).
LOOP AT lt_sys_data INTO ls_sys_data.
CLEAR: ls_sys_data-sys_desc, ls_sys_data-instance.
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
name = 'item'
dataobject = ls_sys_data
IMPORTING
data_as_dom = li_item
CHANGING
document = template_over_all
EXCEPTIONS
illegal_name = 1
OTHERS = 2.
ASSERT sy-subrc = 0.
etpar_node->append_child( new_child = li_item ).
ENDLOOP.
ENDMETHOD.
ENDCLASS.