From 8afbe9530ec77b45131c8457955b5524a4a2ade4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Wed, 11 Apr 2018 17:01:01 +0200 Subject: [PATCH] ECVO serialization --- .../zcl_abapgit_ecatt_val_obj_down.clas.abap | 246 ++++++++++++++++++ .../zcl_abapgit_ecatt_val_obj_down.clas.xml | 18 ++ .../zcl_abapgit_ecatt_val_obj_upl.clas.abap | 41 +++ .../zcl_abapgit_ecatt_val_obj_upl.clas.xml | 19 ++ .../zcl_abapgit_object_ecatt_super.clas.abap | 3 +- src/objects/zcl_abapgit_object_ecvo.clas.abap | 54 ++++ src/objects/zcl_abapgit_object_ecvo.clas.xml | 18 ++ 7 files changed, 397 insertions(+), 2 deletions(-) create mode 100644 src/objects/ecatt/zcl_abapgit_ecatt_val_obj_down.clas.abap create mode 100644 src/objects/ecatt/zcl_abapgit_ecatt_val_obj_down.clas.xml create mode 100644 src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.abap create mode 100644 src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.xml create mode 100644 src/objects/zcl_abapgit_object_ecvo.clas.abap create mode 100644 src/objects/zcl_abapgit_object_ecvo.clas.xml diff --git a/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_down.clas.abap b/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_down.clas.abap new file mode 100644 index 000000000..665dc84e6 --- /dev/null +++ b/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_down.clas.abap @@ -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. diff --git a/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_down.clas.xml b/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_down.clas.xml new file mode 100644 index 000000000..9c8098394 --- /dev/null +++ b/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_down.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_ECATT_VAL_OBJ_DOWN + 1 + E + zcl_abapgit_ecatt_download + 2 + 1 + X + X + X + + + + diff --git a/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.abap b/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.abap new file mode 100644 index 000000000..c3cbb47a7 --- /dev/null +++ b/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.abap @@ -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. diff --git a/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.xml b/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.xml new file mode 100644 index 000000000..bbaf72339 --- /dev/null +++ b/src/objects/ecatt/zcl_abapgit_ecatt_val_obj_upl.clas.xml @@ -0,0 +1,19 @@ + + + + + + ZCL_ABAPGIT_ECATT_VAL_OBJ_UPL + 1 + E + ZCL_APL_ECATT_DATA_UPLOAD + 2 + 1 + X + X + X + X + + + + diff --git a/src/objects/zcl_abapgit_object_ecatt_super.clas.abap b/src/objects/zcl_abapgit_object_ecatt_super.clas.abap index 818cc6e01..e78f3c93a 100644 --- a/src/objects/zcl_abapgit_object_ecatt_super.clas.abap +++ b/src/objects/zcl_abapgit_object_ecatt_super.clas.abap @@ -217,8 +217,7 @@ CLASS zcl_abapgit_object_ecatt_super IMPLEMENTATION. lv_text TYPE string, li_document TYPE REF TO if_ixml_document, lv_version TYPE string, - lx_error TYPE REF TO cx_ecatt, - lv_object_type TYPE etobj_type. + lx_error TYPE REF TO cx_ecatt. lv_version = get_version_from_node( ii_version_node ). diff --git a/src/objects/zcl_abapgit_object_ecvo.clas.abap b/src/objects/zcl_abapgit_object_ecvo.clas.abap new file mode 100644 index 000000000..73518f355 --- /dev/null +++ b/src/objects/zcl_abapgit_object_ecvo.clas.abap @@ -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. diff --git a/src/objects/zcl_abapgit_object_ecvo.clas.xml b/src/objects/zcl_abapgit_object_ecvo.clas.xml new file mode 100644 index 000000000..85f4e1377 --- /dev/null +++ b/src/objects/zcl_abapgit_object_ecvo.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_OBJECT_ECVO + 1 + E + 2 + 1 + X + X + X + X + + + +