ECTD: downport (#1296)

* ECTD: Downport

* ECATT: change to package $ABAPGIT_OBJECTS_ECATT
This commit is contained in:
Christian Günter 2018-04-04 09:45:26 +02:00 committed by Lars Hvam
parent 87dfd909a2
commit f96800fa8a
8 changed files with 403 additions and 12 deletions

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_DEVC" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DEVC>
<CTEXT>$ABAPGIT_OBJECTS_ECATT</CTEXT>
</DEVC>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,124 @@
CLASS zcl_abapgit_ecatt_data_downl DEFINITION
PUBLIC
INHERITING FROM cl_apl_ecatt_data_download
CREATE PUBLIC .
PUBLIC SECTION.
METHODS:
download REDEFINITION,
set_generate_xml_no_download
IMPORTING
iv_generate_xml_no_download TYPE abap_bool,
get_xml_stream
RETURNING
VALUE(rv_xml_stream) TYPE xstring,
get_xml_stream_size
RETURNING
VALUE(rv_xml_stream_size) TYPE int4.
PROTECTED SECTION.
METHODS:
download_data REDEFINITION.
PRIVATE SECTION.
DATA:
mv_generate_xml_no_download TYPE abap_bool,
mv_xml_stream TYPE xstring,
mv_xml_stream_size TYPE int4.
ENDCLASS.
CLASS zcl_abapgit_ecatt_data_downl IMPLEMENTATION.
METHOD download.
" Downport
DATA: lv_partyp TYPE string.
load_help = im_load_help.
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.
typ = im_object_type.
lv_partyp = cl_apl_ecatt_const=>params_type_par.
ecatt_data ?= ecatt_object.
* build_schema( ).
* set_attributes_to_schema( ).
set_attributes_to_template( ).
* set_params_to_schema( ).
get_general_params_data( im_params = ecatt_data->params
im_ptyp = lv_partyp ).
LOOP AT parm INTO wa_parm.
set_general_params_data_to_dom( ).
IF NOT wa_parm-val_type IS INITIAL.
set_deep_stru_to_dom( ecatt_data->params ).
set_deep_data_to_dom( im_params = ecatt_data->params
im_pindex = wa_parm-pindex ).
ENDIF.
ENDLOOP.
* MS180406
set_var_mode_to_dom( ).
* ENDMS180406
set_variants_to_dom( im_params = ecatt_data->params ).
* download_schema( ).
download_data( ).
ENDMETHOD.
METHOD download_data.
" Downport
zcl_abapgit_ecatt_download=>z_download_data(
EXPORTING
ii_template_over_all = template_over_all
IMPORTING
ev_xml_stream = mv_xml_stream
ev_xml_stream_size = mv_xml_stream_size ).
ENDMETHOD.
METHOD get_xml_stream.
rv_xml_stream = mv_xml_stream.
ENDMETHOD.
METHOD get_xml_stream_size.
rv_xml_stream_size = mv_xml_stream_size.
ENDMETHOD.
METHOD set_generate_xml_no_download.
mv_generate_xml_no_download = iv_generate_xml_no_download.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_ECATT_DATA_DOWNL</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>zcl_abapgit_ecatt_download</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,76 @@
CLASS zcl_abapgit_ecatt_data_upload DEFINITION
PUBLIC
INHERITING FROM cl_apl_ecatt_data_upload
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS:
z_set_stream_for_upload
IMPORTING
im_xml TYPE xstring.
PROTECTED SECTION.
METHODS:
upload_data_from_stream REDEFINITION.
PRIVATE SECTION.
DATA: mv_external_xml TYPE xstring.
ENDCLASS.
CLASS zcl_abapgit_ecatt_data_upload IMPLEMENTATION.
METHOD upload_data_from_stream.
" Downport
DATA:
lt_eing TYPE etxml_xline_tabtype,
lo_xml TYPE REF TO cl_apl_ecatt_xml,
lv_xstr TYPE xstring,
lv_nc_xmlref_typ TYPE REF TO if_ixml_node_collection,
lv_n_xmlref_typ TYPE REF TO if_ixml_node,
lv_index TYPE i VALUE 0,
lv_count TYPE i.
lv_xstr = mv_external_xml.
lo_xml = cl_apl_ecatt_xml=>create( im_type = if_apl_ecatt_xml=>co_xml ).
* whitespace stripping needs a namespace
* remove white spaces only at the time of upload
lo_xml->stream_to_dom( im_xstream = lv_xstr
im_ignore_white_space = 'X'
im_uri = cl_apl_xml_const=>schema_uri ).
lo_xml->get_attributes(
IMPORTING
ex_dom = template_over_all ).
* MD: Workaround, because nodes starting with "XML" are not allowed
lv_nc_xmlref_typ = template_over_all->get_elements_by_tag_name_ns(
'XMLREF_TYP' ). "#EC NOTEXT
lv_count = lv_nc_xmlref_typ->get_length( ).
WHILE lv_index LT lv_count.
lv_n_xmlref_typ = lv_nc_xmlref_typ->get_item( lv_index ).
lv_n_xmlref_typ->set_name( 'X-MLREF_TYP' ).
lv_index = lv_index + 1.
ENDWHILE.
FREE: lt_eing.
CLEAR: lo_xml, lv_xstr.
ENDMETHOD.
METHOD z_set_stream_for_upload.
" donwnpoort from CL_ABAPGIT_ECATT_DATA_UPLOAD SET_STREAM_FOR_UPLOAD
mv_external_xml = im_xml.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_ECATT_DATA_UPLOAD</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>ZCL_APL_ECATT_DATA_UPLOAD</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,124 @@
CLASS zcl_abapgit_ecatt_download DEFINITION
PUBLIC
INHERITING FROM cl_apl_ecatt_download
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS:
z_build_xml_of_object
IMPORTING
im_object_name TYPE etobj_name
im_object_version TYPE etobj_ver
im_object_type TYPE etobj_type
EXPORTING
ex_xml_stream TYPE xstring
ex_xml_stream_size TYPE int4
RAISING
zcx_abapgit_exception,
z_download_data
IMPORTING
ii_template_over_all TYPE REF TO if_ixml_document
EXPORTING
ev_xml_stream TYPE xstring
ev_xml_stream_size TYPE i.
ENDCLASS.
CLASS zcl_abapgit_ecatt_download IMPLEMENTATION.
METHOD z_build_xml_of_object.
" Downport of CL_APL_ECATT_DOWNLOAD=>BUILD_XML_OF_OBJECT
DATA: lo_download TYPE REF TO cl_apl_ecatt_download,
lo_load_help_dummy TYPE REF TO cl_apl_ecatt_load_help,
lx_ecatt TYPE REF TO cx_ecatt_apl,
lv_text TYPE string.
CASE im_object_type.
* WHEN cl_apl_ecatt_const=>obj_type_ecatt.
* CREATE OBJECT lo_download TYPE cl_apl_ecatt_script_download.
WHEN cl_apl_ecatt_const=>obj_type_test_data.
CREATE OBJECT lo_download TYPE zcl_abapgit_ecatt_data_downl.
* WHEN cl_apl_ecatt_const=>obj_type_system_data.
* CREATE OBJECT lo_download TYPE cl_apl_ecatt_systems_download.
* WHEN cl_apl_ecatt_const=>obj_type_test_config.
* CREATE OBJECT lo_download TYPE cl_apl_ecatt_config_download.
* WHEN cl_apl_ecatt_const=>obj_type_ecatt_vo.
* CREATE OBJECT lo_download TYPE cl_apl_ecatt_vo_download.
* WHEN cl_apl_ecatt_const=>obj_type_start_profile.
* CREATE OBJECT lo_download TYPE cl_apl_ecatt_sp_download.
ENDCASE.
IF lo_download IS NOT BOUND.
zcx_abapgit_exception=>raise( |ECATT: Download not possible { im_object_type } { im_object_name }| ).
ENDIF.
CALL METHOD lo_download->('SET_GENERATE_XML_NO_DOWNLOAD')
EXPORTING
iv_generate_xml_no_download = abap_true.
"download method will create the xml stream
"note: it's the redefined download( ) of each object type specific download, which is called
TRY.
CREATE OBJECT lo_load_help_dummy
EXPORTING
im_maintain_function = ''.
lo_download->download( im_object_name = im_object_name
im_object_version = im_object_version
im_object_type = im_object_type
im_load_help = lo_load_help_dummy ).
CATCH cx_ecatt_apl INTO lx_ecatt.
lv_text = lx_ecatt->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
CATCH cx_ecatt_ui_attachment.
"will never be raised from download, when called with mv_generate_xml_no_download = 'X'.
ENDTRY.
CALL METHOD lo_download->('GET_XML_STREAM')
RECEIVING
rv_xml_stream = ex_xml_stream.
CALL METHOD lo_download->('GET_XML_STREAM_SIZE')
RECEIVING
rv_xml_stream_size = ex_xml_stream_size.
ENDMETHOD.
METHOD z_download_data.
DATA:
lv_xtab TYPE etxml_xline_tabtype,
lo_xml TYPE REF TO cl_apl_ecatt_xml,
lv_size TYPE int4,
lx_ecatt TYPE REF TO cx_ecatt_apl_xml.
CLEAR: ev_xml_stream,
ev_xml_stream_size.
TRY.
lo_xml = cl_apl_ecatt_xml=>create( im_type = if_apl_ecatt_xml=>co_xml ).
lo_xml->set_attributes( im_dom = ii_template_over_all ).
lo_xml->get_attributes(
IMPORTING
ex_xtab = lv_xtab
ex_size_xstring = lv_size
ex_xml = ev_xml_stream ).
ev_xml_stream_size = lv_size.
CATCH cx_ecatt_apl_xml INTO lx_ecatt.
RETURN.
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_ECATT_DOWNLOAD</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>zcl_abapgit_ecatt_download</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -62,7 +62,7 @@ CLASS zcl_abapgit_object_ectd DEFINITION
CHANGING
co_versions_node TYPE REF TO if_ixml_element
RAISING
cx_ecatt,
zcx_abapgit_exception,
get_changed_date
IMPORTING
@ -88,7 +88,8 @@ CLASS zcl_abapgit_object_ectd DEFINITION
RETURNING
VALUE(rs_change_information) TYPE ty_last_changed
RAISING
cx_ecatt_apl,
cx_ecatt_apl
zcx_abapgit_exception,
is_change_more_recent_than
IMPORTING
@ -101,7 +102,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_ECTD IMPLEMENTATION.
CLASS zcl_abapgit_object_ectd IMPLEMENTATION.
METHOD clear_attributes.
@ -166,7 +167,7 @@ CLASS ZCL_ABAPGIT_OBJECT_ECTD IMPLEMENTATION.
METHOD deserialize_version.
DATA: ls_object TYPE etmobjects,
lo_upload TYPE REF TO cl_apl_ecatt_data_upload,
lo_upload TYPE REF TO zcl_abapgit_ecatt_data_upload,
lv_xml TYPE xstring,
lv_text TYPE string,
li_document TYPE REF TO if_ixml_document,
@ -186,8 +187,7 @@ CLASS ZCL_ABAPGIT_OBJECT_ECTD IMPLEMENTATION.
lv_xml = cl_ixml_80_20=>render_to_xstring( li_document ).
* lo_upload->set_stream_for_upload( lv_xml ).
zcx_abapgit_exception=>raise( 'ECTD temporarily disabled' ).
lo_upload->z_set_stream_for_upload( lv_xml ).
ls_object-d_obj_name = mv_object_name.
ls_object-s_obj_type = ms_item-obj_type.
@ -264,12 +264,12 @@ CLASS ZCL_ABAPGIT_OBJECT_ECTD IMPLEMENTATION.
METHOD get_change_information.
DATA: li_document TYPE REF TO if_ixml_document,
lo_download TYPE REF TO cl_apl_ecatt_data_download,
lo_download TYPE REF TO zcl_abapgit_ecatt_data_downl,
lv_xml TYPE xstring.
CREATE OBJECT lo_download.
lo_download->build_xml_of_object(
zcl_abapgit_ecatt_download=>z_build_xml_of_object(
EXPORTING
im_object_name = mv_object_name
im_object_version = is_version_info-version
@ -318,13 +318,13 @@ CLASS ZCL_ABAPGIT_OBJECT_ECTD IMPLEMENTATION.
METHOD serialize_version.
DATA: li_document TYPE REF TO if_ixml_document,
lo_download TYPE REF TO cl_apl_ecatt_data_download,
lo_download TYPE REF TO zcl_abapgit_ecatt_data_downl,
lv_xml TYPE xstring,
lo_node TYPE REF TO if_ixml_element.
CREATE OBJECT lo_download.
lo_download->build_xml_of_object(
zcl_abapgit_ecatt_download=>z_build_xml_of_object(
EXPORTING
im_object_name = mv_object_name
im_object_version = is_version_info-version
@ -406,6 +406,8 @@ CLASS ZCL_ABAPGIT_OBJECT_ECTD IMPLEMENTATION.
METHOD zif_abapgit_object~delete.
DATA: lx_error TYPE REF TO cx_ecatt_apl.
TRY.
cl_apl_ecatt_object=>delete_object( im_obj_type = ms_item-obj_type
im_name = mv_object_name
@ -414,8 +416,8 @@ CLASS ZCL_ABAPGIT_OBJECT_ECTD IMPLEMENTATION.
im_version = co_default_version
im_delete_all_versions = abap_true ).
CATCH cx_ecatt_apl INTO DATA(error).
zcx_abapgit_exception=>raise( error->get_text( ) ).
CATCH cx_ecatt_apl INTO lx_error.
zcx_abapgit_exception=>raise( lx_error->get_text( ) ).
ENDTRY.
ENDMETHOD.