Merge pull request #1306 from christianguenter2/ECVO

ECVO: ecatt validation object serialization
This commit is contained in:
Lars Hvam 2018-04-13 14:43:25 +02:00 committed by GitHub
commit 67f43f8c83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 397 additions and 2 deletions

View File

@ -0,0 +1,246 @@
CLASS zcl_abapgit_ecatt_val_obj_down DEFINITION
PUBLIC
INHERITING FROM cl_apl_ecatt_vo_download
CREATE PUBLIC .
PUBLIC SECTION.
METHODS:
download REDEFINITION,
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_xml_stream TYPE xstring,
mv_xml_stream_size TYPE int4.
METHODS:
set_ecatt_impl_detail,
set_ecatt_flags,
set_business_msgs.
ENDCLASS.
CLASS zcl_abapgit_ecatt_val_obj_down IMPLEMENTATION.
METHOD download.
" Downport
DATA: lv_partyp TYPE string.
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.
lv_partyp = cl_apl_ecatt_const=>params_type_par.
set_attributes_to_template( ).
ecatt_vo ?= ecatt_object.
set_ecatt_impl_detail( ).
set_ecatt_flags( ).
set_business_msgs( ).
get_general_params_data( im_params = ecatt_vo->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_vo->params ).
set_deep_data_to_dom( im_params = ecatt_vo->params
im_pindex = wa_parm-pindex ).
ENDIF.
ENDLOOP.
set_variants_to_dom( im_params = ecatt_vo->params ).
download_data( ).
ENDMETHOD.
METHOD download_data.
" Downport
zcl_abapgit_ecatt_helper=>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_business_msgs.
DATA:
lt_buss_msg_ref TYPE etvo_bus_msg_tabtype,
li_element TYPE REF TO if_ixml_element,
li_insert_objects TYPE REF TO if_ixml_element.
objects_node = template_over_all->create_simple_element(
name = 'BUSINESS_MESSAGES'
parent = root_node ).
ecatt_vo->get_bussiness_msg(
IMPORTING
ex_buss_msg_ref = lt_buss_msg_ref ).
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
name = 'ETVO_MSG'
dataobject = lt_buss_msg_ref
IMPORTING
data_as_dom = li_element
CHANGING
document = template_over_all
EXCEPTIONS
illegal_name = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
li_insert_objects = template_over_all->find_from_name( 'BUSINESS_MESSAGES' ).
li_insert_objects->append_child( new_child = li_element ).
ENDMETHOD.
METHOD set_ecatt_flags.
DATA:
lv_invert_validation TYPE etvo_invert_validation,
lv_error_prio TYPE etvo_error_prio,
li_element TYPE REF TO if_ixml_element,
li_insert_objects TYPE REF TO if_ixml_element.
objects_node = template_over_all->create_simple_element(
name = 'VO_FLAGS'
parent = root_node ).
lv_invert_validation = ecatt_vo->get_invert_validation_flag( ).
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
name = 'INVERT_VALIDATION'
dataobject = lv_invert_validation
IMPORTING
data_as_dom = li_element
CHANGING
document = template_over_all
EXCEPTIONS
illegal_name = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
li_insert_objects = template_over_all->find_from_name( 'VO_FLAGS' ).
li_insert_objects->append_child( new_child = li_element ).
lv_error_prio = ecatt_vo->get_error_priority( ).
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
name = 'ERROR_PRIORITY'
dataobject = lv_error_prio
IMPORTING
data_as_dom = li_element
CHANGING
document = template_over_all
EXCEPTIONS
illegal_name = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
li_insert_objects = template_over_all->find_from_name( 'VO_FLAGS' ).
li_insert_objects->append_child( new_child = li_element ).
ENDMETHOD.
METHOD set_ecatt_impl_detail.
DATA:
ls_impl_details TYPE etvoimpl_det,
li_element TYPE REF TO if_ixml_element,
li_insert_objects TYPE REF TO if_ixml_element.
objects_node = template_over_all->create_simple_element(
name = 'IMPL_DETAILS'
parent = root_node ).
ls_impl_details = ecatt_vo->get_impl_details( ).
CALL FUNCTION 'SDIXML_DATA_TO_DOM'
EXPORTING
name = 'IMPL_DET'
dataobject = ls_impl_details
IMPORTING
data_as_dom = li_element
CHANGING
document = template_over_all
EXCEPTIONS
illegal_name = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
li_insert_objects = template_over_all->find_from_name( 'IMPL_DETAILS' ).
li_insert_objects->append_child( new_child = li_element ).
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_VAL_OBJ_DOWN</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,41 @@
CLASS zcl_abapgit_ecatt_val_obj_upl DEFINITION
PUBLIC
INHERITING FROM cl_apl_ecatt_vo_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_val_obj_upl IMPLEMENTATION.
METHOD upload_data_from_stream.
" Downport
template_over_all = zcl_abapgit_ecatt_helper=>upload_data_from_stream( mv_external_xml ).
ENDMETHOD.
METHOD z_set_stream_for_upload.
" downport 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_VAL_OBJ_UPL</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

@ -217,8 +217,7 @@ CLASS zcl_abapgit_object_ecatt_super IMPLEMENTATION.
lv_text TYPE string, lv_text TYPE string,
li_document TYPE REF TO if_ixml_document, li_document TYPE REF TO if_ixml_document,
lv_version TYPE string, lv_version TYPE string,
lx_error TYPE REF TO cx_ecatt, lx_error TYPE REF TO cx_ecatt.
lv_object_type TYPE etobj_type.
lv_version = get_version_from_node( ii_version_node ). lv_version = get_version_from_node( ii_version_node ).

View File

@ -0,0 +1,54 @@
CLASS zcl_abapgit_object_ecvo DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_object_ecatt_super
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS:
constructor
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
!iv_language TYPE spras.
PROTECTED SECTION.
METHODS:
get_object_type REDEFINITION,
get_upload REDEFINITION,
get_download REDEFINITION.
ENDCLASS.
CLASS zcl_abapgit_object_ecvo IMPLEMENTATION.
METHOD constructor.
super->constructor( is_item = is_item
iv_language = iv_language ).
ENDMETHOD.
METHOD get_object_type.
rv_object_type = cl_apl_ecatt_const=>obj_type_ecatt_vo.
ENDMETHOD.
METHOD get_upload.
CREATE OBJECT ro_upload TYPE zcl_abapgit_ecatt_val_obj_upl.
ENDMETHOD.
METHOD get_download.
CREATE OBJECT ro_download TYPE zcl_abapgit_ecatt_val_obj_down.
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_OBJECT_ECVO</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSFINAL>X</CLSFINAL>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>