From 7e4695b4baf0f0e1c3c02900bcb52bd12ec794f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Thu, 11 Jan 2018 17:28:00 +0100 Subject: [PATCH] #1114 implement CUS0,CUS1 and CUS2 serialization --- src/zabapgit_object_cus0.prog.abap | 153 ++++++++++++++++++++ src/zabapgit_object_cus0.prog.xml | 25 ++++ src/zabapgit_object_cus1.prog.abap | 165 ++++++++++++++++++++++ src/zabapgit_object_cus1.prog.xml | 25 ++++ src/zabapgit_object_cus2.prog.abap | 160 +++++++++++++++++++++ src/zabapgit_object_cus2.prog.xml | 25 ++++ src/zabapgit_object_serializing.prog.abap | 3 + src/zabapgit_object_shi3.prog.abap | 21 ++- 8 files changed, 575 insertions(+), 2 deletions(-) create mode 100644 src/zabapgit_object_cus0.prog.abap create mode 100644 src/zabapgit_object_cus0.prog.xml create mode 100644 src/zabapgit_object_cus1.prog.abap create mode 100644 src/zabapgit_object_cus1.prog.xml create mode 100644 src/zabapgit_object_cus2.prog.abap create mode 100644 src/zabapgit_object_cus2.prog.xml diff --git a/src/zabapgit_object_cus0.prog.abap b/src/zabapgit_object_cus0.prog.abap new file mode 100644 index 000000000..1d2db6065 --- /dev/null +++ b/src/zabapgit_object_cus0.prog.abap @@ -0,0 +1,153 @@ +*&---------------------------------------------------------------------* +*& Include zabapgit_object_cus0 +*&---------------------------------------------------------------------* + +*----------------------------------------------------------------------* +* CLASS lcl_object_cus0 DEFINITION +*----------------------------------------------------------------------* +CLASS lcl_object_cus0 DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + ALIASES mo_files FOR lif_object~mo_files. + + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras. + + PRIVATE SECTION. + TYPES: tty_img_activity_texts TYPE STANDARD TABLE OF cus_imgact + WITH NON-UNIQUE DEFAULT KEY, + BEGIN OF ty_img_activity, + header TYPE cus_imgach, + texts TYPE tty_img_activity_texts, + END OF ty_img_activity. + DATA: mv_img_activity TYPE cus_img_ac. + +ENDCLASS. "lcl_object_cus0 DEFINITION + +*----------------------------------------------------------------------* +* CLASS lcl_object_cus0 IMPLEMENTATION +*----------------------------------------------------------------------* +CLASS lcl_object_cus0 IMPLEMENTATION. + + METHOD constructor. + + super->constructor( is_item = is_item + iv_language = iv_language ). + + mv_img_activity = ms_item-obj_name. + + ENDMETHOD. "constructor + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. "lif_object~has_changed_since + + METHOD lif_object~changed_by. + rv_user = c_user_unknown. + ENDMETHOD. + + METHOD lif_object~get_metadata. + rs_metadata = get_metadata( ). + ENDMETHOD. "lif_object~get_metadata + + METHOD lif_object~jump. + + zcx_abapgit_exception=>raise( |TODO: Jump| ). + +* doesn't work... +* CALL FUNCTION 'S_CUS_IMG_ACTIVITY_MAINTAIN' +* EXPORTING +* i_display = 'X' +* i_no_replacement = 'X' +* CHANGING +* img_activity = mv_img_activity. + + ENDMETHOD. "jump + + METHOD lif_object~exists. + + DATA: ls_message TYPE hier_mess. + + CALL FUNCTION 'S_CUS_IMG_ACTIVITY_EXISTS' + EXPORTING + img_activity = mv_img_activity + IMPORTING + message = ls_message. + + rv_bool = boolc( ls_message IS INITIAL ). + + ENDMETHOD. "lif_object~exists + + METHOD lif_object~delete. + + DATA: ls_message TYPE hier_mess. + + CALL FUNCTION 'S_CUS_IMG_ACTIVITY_DELETE' + EXPORTING + img_activity = mv_img_activity + IMPORTING + message = ls_message. + + IF ls_message-msgty <> 'S'. + zcx_abapgit_exception=>raise( |error from delete CUS0 { mv_img_activity } S_CUS_IMG_ACTIVITY_DELETE| ). + ENDIF. + + ENDMETHOD. "delete + + METHOD lif_object~serialize. + + DATA: ls_img_activity TYPE ty_img_activity. + + CALL FUNCTION 'S_CUS_IMG_ACTIVITY_READ' + EXPORTING + img_activity = mv_img_activity + IMPORTING + img_activity_header = ls_img_activity-header + TABLES + img_activity_texts = ls_img_activity-texts. + + CLEAR: ls_img_activity-header-fuser, + ls_img_activity-header-fdate, + ls_img_activity-header-ftime, + ls_img_activity-header-luser, + ls_img_activity-header-ldate, + ls_img_activity-header-ltime. + + io_xml->add( iv_name = 'CUS0' + ig_data = ls_img_activity ). + + ENDMETHOD. "serialize + + METHOD lif_object~deserialize. + + DATA: ls_img_activity TYPE ty_img_activity, + ls_text LIKE LINE OF ls_img_activity-texts. + + io_xml->read( + EXPORTING + iv_name = 'CUS0' + CHANGING + cg_data = ls_img_activity ). + + READ TABLE ls_img_activity-texts INTO ls_text + WITH KEY spras = sy-langu. + + CALL FUNCTION 'S_CUS_IMG_ACTIVITY_SAVE' + EXPORTING + img_activity = ls_img_activity-header-activity + i_docu = ls_img_activity-header-docu_id + i_attributes = ls_img_activity-header-attributes + i_activity = ls_img_activity-header-c_activity + i_description = ls_text + i_tcode = ls_img_activity-header-tcode. + + ENDMETHOD. "deserialize + + METHOD lif_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. + ENDMETHOD. + +ENDCLASS. "lcl_object_cus0 IMPLEMENTATION diff --git a/src/zabapgit_object_cus0.prog.xml b/src/zabapgit_object_cus0.prog.xml new file mode 100644 index 000000000..04b552487 --- /dev/null +++ b/src/zabapgit_object_cus0.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZABAPGIT_OBJECT_CUS0 + A + X + S + D$ + I + X + D$S + X + + + + R + ZABAPGIT_OBJECT_CUS0 + 20 + + + + + diff --git a/src/zabapgit_object_cus1.prog.abap b/src/zabapgit_object_cus1.prog.abap new file mode 100644 index 000000000..c3dbcdf1d --- /dev/null +++ b/src/zabapgit_object_cus1.prog.abap @@ -0,0 +1,165 @@ +*&---------------------------------------------------------------------* +*& Include zabapgit_object_cus1 +*&---------------------------------------------------------------------* + +*----------------------------------------------------------------------* +* CLASS lcl_object_cus1 DEFINITION +*----------------------------------------------------------------------* +CLASS lcl_object_cus1 DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + ALIASES mo_files FOR lif_object~mo_files. + + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras. + + PRIVATE SECTION. + TYPES: tty_activity_titles TYPE STANDARD TABLE OF cus_actt + WITH NON-UNIQUE DEFAULT KEY, + + tty_objects TYPE STANDARD TABLE OF cus_actobj + WITH NON-UNIQUE DEFAULT KEY, + + tty_objects_title TYPE STANDARD TABLE OF cus_actobt + WITH NON-UNIQUE DEFAULT KEY, + + BEGIN OF ty_customzing_activity, + activity_header TYPE cus_acth, + activity_customer_exit TYPE cus_actext, + activity_title TYPE tty_activity_titles, + objects TYPE tty_objects, + objects_title TYPE tty_objects_title, + END OF ty_customzing_activity. + + DATA: mv_customizing_activity TYPE cus_img_ac. + +ENDCLASS. "lcl_object_cus1 DEFINITION + +*----------------------------------------------------------------------* +* CLASS lcl_object_cus1 IMPLEMENTATION +*----------------------------------------------------------------------* +CLASS lcl_object_cus1 IMPLEMENTATION. + + METHOD constructor. + + super->constructor( is_item = is_item + iv_language = iv_language ). + + mv_customizing_activity = ms_item-obj_name. + + ENDMETHOD. "constructor + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. "lif_object~has_changed_since + + METHOD lif_object~changed_by. + rv_user = c_user_unknown. + ENDMETHOD. + + METHOD lif_object~get_metadata. + rs_metadata = get_metadata( ). + ENDMETHOD. "lif_object~get_metadata + + METHOD lif_object~jump. + + zcx_abapgit_exception=>raise( |TODO: Jump| ). + + ENDMETHOD. "jump + + METHOD lif_object~exists. + + CALL FUNCTION 'S_CUS_ACTIVITY_EXIST' + EXPORTING + activity = mv_customizing_activity + EXCEPTIONS + activity_exists_not = 1 + OTHERS = 2. + + rv_bool = boolc( sy-subrc = 0 ). + + ENDMETHOD. "lif_object~exists + + METHOD lif_object~delete. + + DATA: ls_message TYPE hier_mess. + + CALL FUNCTION 'S_CUS_ACTIVITY_DELETE' + EXPORTING + activity = mv_customizing_activity + IMPORTING + message = ls_message. + + IF ls_message-msgty <> 'S'. + zcx_abapgit_exception=>raise( |error from delete CUS1 { mv_customizing_activity } S_CUS_ACTIVITY_DELETE| ). + ENDIF. + + ENDMETHOD. "delete + + METHOD lif_object~serialize. + + + + DATA: ls_customzing_activity TYPE ty_customzing_activity. + + CALL FUNCTION 'S_CUS_ACTIVITY_READ' + EXPORTING + activity = mv_customizing_activity + IMPORTING + activity_header = ls_customzing_activity-activity_header + activity_customer_exit = ls_customzing_activity-activity_customer_exit + TABLES + activity_title = ls_customzing_activity-activity_title + objects = ls_customzing_activity-objects + objects_title = ls_customzing_activity-objects_title. + + CLEAR: ls_customzing_activity-activity_header-fdatetime, + ls_customzing_activity-activity_header-fuser, + ls_customzing_activity-activity_header-ldatetime, + ls_customzing_activity-activity_header-luser. + + io_xml->add( iv_name = 'CUS1' + ig_data = ls_customzing_activity ). + + ENDMETHOD. "serialize + + METHOD lif_object~deserialize. + + DATA: ls_customzing_activity TYPE ty_customzing_activity, + ls_message TYPE hier_mess. + + io_xml->read( + EXPORTING + iv_name = 'CUS1' + CHANGING + cg_data = ls_customzing_activity ). + + CALL FUNCTION 'S_CUS_ACTIVITY_SAVE' + EXPORTING + activity = ls_customzing_activity-activity_header-act_id + activity_type = ls_customzing_activity-activity_header-act_type + tcode = ls_customzing_activity-activity_header-tcode + customer_exit = ls_customzing_activity-activity_customer_exit-exit_name + customer_exit_enhancement = ls_customzing_activity-activity_customer_exit-enhancement + customer_exit_implementation = ls_customzing_activity-activity_customer_exit-impl_name + IMPORTING + message = ls_message + TABLES + activity_title = ls_customzing_activity-activity_title + objects = ls_customzing_activity-objects + objects_texts = ls_customzing_activity-objects_title. + + IF ls_message-msgty <> 'S'. + zcx_abapgit_exception=>raise( |error from deserialize CUS1 { mv_customizing_activity } S_CUS_ACTIVITY_SAVE| ). + ENDIF. + + ENDMETHOD. "deserialize + + METHOD lif_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. + ENDMETHOD. + +ENDCLASS. "lcl_object_cus1 IMPLEMENTATION diff --git a/src/zabapgit_object_cus1.prog.xml b/src/zabapgit_object_cus1.prog.xml new file mode 100644 index 000000000..98c9d25ae --- /dev/null +++ b/src/zabapgit_object_cus1.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZABAPGIT_OBJECT_CUS1 + A + X + S + D$ + I + X + D$S + X + + + + R + ZABAPGIT_OBJECT_CUS1 + 20 + + + + + diff --git a/src/zabapgit_object_cus2.prog.abap b/src/zabapgit_object_cus2.prog.abap new file mode 100644 index 000000000..d246fced1 --- /dev/null +++ b/src/zabapgit_object_cus2.prog.abap @@ -0,0 +1,160 @@ +*&---------------------------------------------------------------------* +*& Include zabapgit_object_cus2 +*&---------------------------------------------------------------------* + +*----------------------------------------------------------------------* +* CLASS lcl_object_cus2 DEFINITION +*----------------------------------------------------------------------* +CLASS lcl_object_cus2 DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + ALIASES mo_files FOR lif_object~mo_files. + + METHODS constructor + IMPORTING + is_item TYPE zif_abapgit_definitions=>ty_item + iv_language TYPE spras. + + PRIVATE SECTION. + TYPES: tty_attribute_titles TYPE STANDARD TABLE OF cus_atrt + WITH NON-UNIQUE DEFAULT KEY, + tty_attribute_countries TYPE STANDARD TABLE OF cus_atrcou + WITH NON-UNIQUE DEFAULT KEY, + tty_attribute_components TYPE STANDARD TABLE OF tfm18 + WITH NON-UNIQUE DEFAULT KEY, + tty_attribute_comp_variants TYPE STANDARD TABLE OF cus_atrvco + WITH NON-UNIQUE DEFAULT KEY. + + TYPES: BEGIN OF ty_customizing_attribute, + header TYPE cus_atrh, + titles TYPE tty_attribute_titles, + countries TYPE tty_attribute_countries, + components TYPE tty_attribute_components, + components_variants TYPE tty_attribute_comp_variants, + END OF ty_customizing_attribute. + + DATA: mv_img_attribute TYPE cus_atr. + +ENDCLASS. "lcl_object_cus2 DEFINITION + +*----------------------------------------------------------------------* +* CLASS lcl_object_cus2 IMPLEMENTATION +*----------------------------------------------------------------------* +CLASS lcl_object_cus2 IMPLEMENTATION. + + METHOD constructor. + + super->constructor( is_item = is_item + iv_language = iv_language ). + + mv_img_attribute = ms_item-obj_name. + + ENDMETHOD. "constructor + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. "lif_object~has_changed_since + + METHOD lif_object~changed_by. + rv_user = c_user_unknown. + ENDMETHOD. + + METHOD lif_object~get_metadata. + rs_metadata = get_metadata( ). + ENDMETHOD. "lif_object~get_metadata + + METHOD lif_object~jump. + + zcx_abapgit_exception=>raise( |TODO: Jump| ). + + ENDMETHOD. "jump + + METHOD lif_object~exists. + + DATA: ls_message TYPE hier_mess. + + CALL FUNCTION 'S_CUS_ATTRIBUTES_EXIST' + EXPORTING + img_attribute = mv_img_attribute + EXCEPTIONS + attributes_exists_not = 1 + OTHERS = 2. + + rv_bool = boolc( sy-subrc = 0 ). + + ENDMETHOD. "lif_object~exists + + METHOD lif_object~delete. + + DATA: ls_message TYPE hier_mess. + + CALL FUNCTION 'S_CUS_ATTRIBUTES_DELETE' + EXPORTING + img_attribute = mv_img_attribute + IMPORTING + message = ls_message. + + IF ls_message-msgty <> 'S'. + zcx_abapgit_exception=>raise( |error from delete CUS2 { mv_img_attribute } S_CUS_ATTRIBUTES_DELETE| ). + ENDIF. + + ENDMETHOD. "delete + + METHOD lif_object~serialize. + + DATA: ls_customizing_attribute TYPE ty_customizing_attribute. + + CALL FUNCTION 'S_CUS_ATTRIBUTES_READ' + EXPORTING + img_attribute = mv_img_attribute + IMPORTING + attribute_header = ls_customizing_attribute-header + TABLES + attribute_title = ls_customizing_attribute-titles + attribute_countries = ls_customizing_attribute-countries + attribute_components = ls_customizing_attribute-components + attribute_components_variants = ls_customizing_attribute-components_variants. + + CLEAR: ls_customizing_attribute-header-fdatetime, + ls_customizing_attribute-header-fuser, + ls_customizing_attribute-header-ldatetime, + ls_customizing_attribute-header-luser. + + io_xml->add( iv_name = 'CUS2' + ig_data = ls_customizing_attribute ). + + ENDMETHOD. "serialize + + METHOD lif_object~deserialize. + + DATA: ls_customizing_attribute TYPE ty_customizing_attribute, + ls_message TYPE hier_mess. + + io_xml->read( + EXPORTING + iv_name = 'CUS2' + CHANGING + cg_data = ls_customizing_attribute ). + + CALL FUNCTION 'S_CUS_ATTRIBUTES_SAVE' + EXPORTING + img_attribute = ls_customizing_attribute-header + IMPORTING + message = ls_message + TABLES + attributes_title = ls_customizing_attribute-titles + attributes_countries = ls_customizing_attribute-countries + attributes_components = ls_customizing_attribute-components. + + IF ls_message-msgty <> 'S'. + zcx_abapgit_exception=>raise( |error from deserialize CUS2 { mv_img_attribute } S_CUS_ATTRIBUTES_SAVE| ). + ENDIF. + + ENDMETHOD. "deserialize + + METHOD lif_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. + ENDMETHOD. + +ENDCLASS. "lcl_object_cus2 IMPLEMENTATION diff --git a/src/zabapgit_object_cus2.prog.xml b/src/zabapgit_object_cus2.prog.xml new file mode 100644 index 000000000..271e69250 --- /dev/null +++ b/src/zabapgit_object_cus2.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZABAPGIT_OBJECT_CUS2 + A + X + S + D$ + I + X + D$S + X + + + + R + ZABAPGIT_OBJECT_CUS2 + 20 + + + + + diff --git a/src/zabapgit_object_serializing.prog.abap b/src/zabapgit_object_serializing.prog.abap index 30eaedab9..8ee22ce67 100644 --- a/src/zabapgit_object_serializing.prog.abap +++ b/src/zabapgit_object_serializing.prog.abap @@ -10,6 +10,9 @@ INCLUDE zabapgit_object_oo_functions. INCLUDE zabapgit_object_clas. INCLUDE zabapgit_object_clas_new. INCLUDE zabapgit_object_cmpt. +INCLUDE zabapgit_object_cus0. +INCLUDE zabapgit_object_cus1. +INCLUDE zabapgit_object_cus2. INCLUDE zabapgit_object_dcls. INCLUDE zabapgit_object_ddls. INCLUDE zabapgit_object_ddlx. diff --git a/src/zabapgit_object_shi3.prog.abap b/src/zabapgit_object_shi3.prog.abap index 85c1951ee..7565a2ef8 100644 --- a/src/zabapgit_object_shi3.prog.abap +++ b/src/zabapgit_object_shi3.prog.abap @@ -23,6 +23,8 @@ CLASS lcl_object_shi3 DEFINITION INHERITING FROM lcl_objects_super FINAL. METHODS jump_se43 RAISING zcx_abapgit_exception. + + METHODS clear_fields CHANGING cs_head TYPE ttree ct_nodes TYPE hier_iface_t. @@ -100,7 +102,22 @@ CLASS lcl_object_shi3 IMPLEMENTATION. ENDMETHOD. "jump_se43 METHOD lif_object~jump. - jump_se43( ). + + DATA: ls_head TYPE ttree. + + CALL FUNCTION 'STREE_STRUCTURE_READ' + EXPORTING + structure_id = mv_tree_id + IMPORTING + structure_header = ls_head. + + CASE ls_head-type. + WHEN 'BMENU'. + jump_se43( ). + WHEN OTHERS. + zcx_abapgit_exception=>raise( |Jump for type { ls_head-type } not implemented| ). + ENDCASE. + ENDMETHOD. "jump METHOD lif_object~exists. @@ -229,7 +246,7 @@ CLASS lcl_object_shi3 IMPLEMENTATION. CALL FUNCTION 'STREE_HIERARCHY_SAVE' EXPORTING structure_id = mv_tree_id - structure_type = 'BMENU' + structure_type = ls_head-type structure_description = space structure_masterlanguage = mv_language structure_responsible = sy-uname