From e86c514cb3014b3db25dfa463f1d8d4b5d1b8d09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Tue, 17 Apr 2018 07:01:06 +0000 Subject: [PATCH] ECSP: eCATT Start Profile serialization --- .../zcl_abapgit_ecatt_sp_download.clas.abap | 132 +++++++++++++ .../zcl_abapgit_ecatt_sp_download.clas.xml | 18 ++ .../zcl_abapgit_ecatt_sp_upload.clas.abap | 182 ++++++++++++++++++ .../zcl_abapgit_ecatt_sp_upload.clas.xml | 19 ++ src/objects/zcl_abapgit_object_ecsp.clas.abap | 54 ++++++ src/objects/zcl_abapgit_object_ecsp.clas.xml | 18 ++ 6 files changed, 423 insertions(+) create mode 100644 src/objects/ecatt/zcl_abapgit_ecatt_sp_download.clas.abap create mode 100644 src/objects/ecatt/zcl_abapgit_ecatt_sp_download.clas.xml create mode 100644 src/objects/ecatt/zcl_abapgit_ecatt_sp_upload.clas.abap create mode 100644 src/objects/ecatt/zcl_abapgit_ecatt_sp_upload.clas.xml create mode 100644 src/objects/zcl_abapgit_object_ecsp.clas.abap create mode 100644 src/objects/zcl_abapgit_object_ecsp.clas.xml diff --git a/src/objects/ecatt/zcl_abapgit_ecatt_sp_download.clas.abap b/src/objects/ecatt/zcl_abapgit_ecatt_sp_download.clas.abap new file mode 100644 index 000000000..4ec938413 --- /dev/null +++ b/src/objects/ecatt/zcl_abapgit_ecatt_sp_download.clas.abap @@ -0,0 +1,132 @@ +CLASS zcl_abapgit_ecatt_sp_download DEFINITION + PUBLIC + INHERITING FROM cl_apl_ecatt_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_sp_data_to_template. + +ENDCLASS. + + + +CLASS zcl_abapgit_ecatt_sp_download IMPLEMENTATION. + + + METHOD download. + + " We inherit from CL_APL_ECATT_DOWNLOAD because CL_APL_ECATT_SP_DOWNLOAD + " doesn't exist in 702 + + " 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_sp ?= ecatt_object. + + set_sp_data_to_template( ). + + 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_sp_data_to_template. + + " downport + + DATA: li_dom TYPE REF TO if_ixml_document, + li_start_profile_data_node TYPE REF TO if_ixml_element, + li_element TYPE REF TO if_ixml_element, + lv_sp_xml TYPE etxml_line_str. + + li_start_profile_data_node = template_over_all->create_simple_element( + name = 'START_PROFILE' + parent = root_node ). + + TRY. + ecatt_sp->get_sp_attributes( + IMPORTING + e_sp_xml = lv_sp_xml ). + CATCH cx_ecatt_apl . + ENDTRY. + + CALL FUNCTION 'SDIXML_XML_TO_DOM' + EXPORTING + xml = lv_sp_xml + IMPORTING + document = li_dom. + + li_element = li_dom->get_root_element( ). + li_start_profile_data_node->append_child( new_child = li_element ). + + ENDMETHOD. + +ENDCLASS. diff --git a/src/objects/ecatt/zcl_abapgit_ecatt_sp_download.clas.xml b/src/objects/ecatt/zcl_abapgit_ecatt_sp_download.clas.xml new file mode 100644 index 000000000..e92bbe4da --- /dev/null +++ b/src/objects/ecatt/zcl_abapgit_ecatt_sp_download.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_ECATT_SP_DOWNLOAD + 1 + E + zcl_abapgit_ecatt_download + 2 + 1 + X + X + X + + + + diff --git a/src/objects/ecatt/zcl_abapgit_ecatt_sp_upload.clas.abap b/src/objects/ecatt/zcl_abapgit_ecatt_sp_upload.clas.abap new file mode 100644 index 000000000..c1a99d73e --- /dev/null +++ b/src/objects/ecatt/zcl_abapgit_ecatt_sp_upload.clas.abap @@ -0,0 +1,182 @@ +CLASS zcl_abapgit_ecatt_sp_upload DEFINITION + PUBLIC + INHERITING FROM cl_apl_ecatt_upload + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + METHODS: + z_set_stream_for_upload + IMPORTING + im_xml TYPE xstring, + + upload + REDEFINITION. + + PROTECTED SECTION. + METHODS: + upload_data_from_stream REDEFINITION, + + get_ecatt_sp + RAISING + cx_ecatt_apl . + + PRIVATE SECTION. + DATA: mv_external_xml TYPE xstring. + +ENDCLASS. + + + +CLASS zcl_abapgit_ecatt_sp_upload IMPLEMENTATION. + + + METHOD get_ecatt_sp. + + " downport + + DATA: li_ixml TYPE REF TO if_ixml, + li_section TYPE REF TO if_ixml_element, + li_dom TYPE REF TO if_ixml_document, + li_root TYPE REF TO if_ixml_node, + lv_start_profile TYPE etxml_line_str, + lv_exception_occurred TYPE etonoff. + + TRY. + li_section = template_over_all->find_from_name_ns( + name = 'START_PROFILE' ). + + IF NOT li_section IS INITIAL. + CLASS cl_ixml DEFINITION LOAD . + li_ixml = cl_ixml=>create( ). + li_dom = li_ixml->create_document( ). + li_root ?= li_section->clone( ). + li_dom->append_child( new_child = li_root ). + CALL FUNCTION 'SDIXML_DOM_TO_XML' + EXPORTING + document = li_dom + IMPORTING + xml_as_string = lv_start_profile. + + ecatt_sp->set_sp_attributes( i_sp_xml = lv_start_profile ). + ENDIF. + CATCH cx_ecatt_apl . + lv_exception_occurred = 'X'. + ENDTRY. + + IF lv_exception_occurred = 'X'. + raise_upload_exception( previous = exception_to_raise ). + ENDIF. + ENDMETHOD. + + + METHOD upload. + + " We inherit from CL_APL_ECATT_UPLOAD because CL_APL_ECATT_SP_UPLOAD + " doesn't exist in 702 + + " Downport + + "26.03.2013 + + DATA: lx_ecatt TYPE REF TO cx_ecatt_apl, + lv_exists TYPE etonoff, + lv_exc_occ TYPE etonoff, + ls_tadir TYPE tadir, + lv_exception_occurred TYPE etonoff. + + TRY. + ch_object-i_devclass = ch_object-d_devclass. + ch_object-i_akh = ch_object-d_akh. + + super->upload( + EXPORTING + i_use_cts_api_2 = i_use_cts_api_2 + CHANGING + ch_object = ch_object ). + + upload_data_from_stream( im_xml_file = ch_object-filename ). + + CATCH cx_ecatt_apl INTO lx_ecatt. + IF template_over_all IS INITIAL. + RAISE EXCEPTION lx_ecatt. + ELSE. + lv_exc_occ = 'X'. + ENDIF. + ENDTRY. + + TRY. + get_attributes_from_dom_new( CHANGING ch_object = ch_object ). + CATCH cx_ecatt_apl INTO lx_ecatt. + lv_exc_occ = 'X'. + ENDTRY. + + ecatt_sp ?= ecatt_object. + + TRY. + get_ecatt_sp( ). + CATCH cx_ecatt_apl INTO lx_ecatt. + lv_exc_occ = 'X'. + ENDTRY. + + TRY. + lv_exists = cl_apl_ecatt_object=>existence_check_object( + im_name = ch_object-d_obj_name + im_version = ch_object-d_obj_ver + im_obj_type = ch_object-s_obj_type + im_exists_any_version = 'X' ). + + IF lv_exists EQ space. + ecatt_sp->set_tadir_for_new_object( im_tadir_for_new_object = tadir_preset ). + ENDIF. + CATCH cx_ecatt. + CLEAR lv_exists. + ENDTRY. + + TRY. + ecatt_sp->save( im_do_commit = 'X' ). + CATCH cx_ecatt_apl INTO lx_ecatt. + lv_exc_occ = 'X'. + ENDTRY. +* Devesh,C5129871 18.07.2011 Releasing enqueu after uploading +*begin + TRY. + ecatt_object->close_object( im_suppress_events ='X' ). + CATCH cx_ecatt_apl INTO lx_ecatt. + lv_exception_occurred = 'X'. + ENDTRY. +*end +* get devclass from existing object + TRY. + cl_apl_ecatt_object=>get_tadir_entry( + EXPORTING im_obj_name = ch_object-d_obj_name + im_obj_type = ch_object-s_obj_type + IMPORTING ex_tadir = ls_tadir ). + + ch_object-d_devclass = ls_tadir-devclass. + + CATCH cx_ecatt. + CLEAR ls_tadir. + ENDTRY. + IF lv_exc_occ = 'X'. + raise_upload_exception( previous = lx_ecatt ). + ENDIF. + + ENDMETHOD. + + + 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_APL_ECATT_START_PROFIL SET_STREAM_FOR_UPLOAD + mv_external_xml = im_xml. + + ENDMETHOD. +ENDCLASS. diff --git a/src/objects/ecatt/zcl_abapgit_ecatt_sp_upload.clas.xml b/src/objects/ecatt/zcl_abapgit_ecatt_sp_upload.clas.xml new file mode 100644 index 000000000..3879a7401 --- /dev/null +++ b/src/objects/ecatt/zcl_abapgit_ecatt_sp_upload.clas.xml @@ -0,0 +1,19 @@ + + + + + + ZCL_ABAPGIT_ECATT_SP_UPLOAD + 1 + E + ZCL_APL_ECATT_DATA_UPLOAD + 2 + 1 + X + X + X + X + + + + diff --git a/src/objects/zcl_abapgit_object_ecsp.clas.abap b/src/objects/zcl_abapgit_object_ecsp.clas.abap new file mode 100644 index 000000000..b54faa495 --- /dev/null +++ b/src/objects/zcl_abapgit_object_ecsp.clas.abap @@ -0,0 +1,54 @@ +CLASS zcl_abapgit_object_ecsp 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_ecsp 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_start_profile. + + ENDMETHOD. + + METHOD get_upload. + + CREATE OBJECT ro_upload TYPE zcl_abapgit_ecatt_sp_upload. + + ENDMETHOD. + + METHOD get_download. + + CREATE OBJECT ro_download TYPE zcl_abapgit_ecatt_sp_download. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/objects/zcl_abapgit_object_ecsp.clas.xml b/src/objects/zcl_abapgit_object_ecsp.clas.xml new file mode 100644 index 000000000..be209fb5c --- /dev/null +++ b/src/objects/zcl_abapgit_object_ecsp.clas.xml @@ -0,0 +1,18 @@ + + + + + + ZCL_ABAPGIT_OBJECT_ECSP + 1 + E + 2 + 1 + X + X + X + X + + + +