From 5daada74804689f4015d7da54c98c0498ab130fc Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 17 Apr 2017 14:05:26 +0000 Subject: [PATCH 1/5] Issue 717 fixed - WAPA (BSP application) some page attributes are missin --- src/zabapgit_object_wapa.prog.abap | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_object_wapa.prog.abap b/src/zabapgit_object_wapa.prog.abap index 87ff46d9d..10b775434 100644 --- a/src/zabapgit_object_wapa.prog.abap +++ b/src/zabapgit_object_wapa.prog.abap @@ -375,12 +375,15 @@ CLASS lcl_object_wapa IMPLEMENTATION. iv_ext = lv_ext iv_data = lv_content ). - rs_page-attributes = is_page. + lo_page->get_attrs( + IMPORTING + p_attrs = rs_page-attributes ). CLEAR: rs_page-attributes-author, rs_page-attributes-createdon, rs_page-attributes-changedby, rs_page-attributes-changedon, + rs_page-attributes-changetime, rs_page-attributes-implclass, rs_page-attributes-gendate, rs_page-attributes-gentime. From 856da999950a28820c074db72b093fb620c2ef17 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Wed, 19 Apr 2017 20:27:20 +0000 Subject: [PATCH 2/5] devclass cleared --- src/zabapgit_object_wapa.prog.abap | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_object_wapa.prog.abap b/src/zabapgit_object_wapa.prog.abap index 10b775434..6c037947f 100644 --- a/src/zabapgit_object_wapa.prog.abap +++ b/src/zabapgit_object_wapa.prog.abap @@ -386,7 +386,8 @@ CLASS lcl_object_wapa IMPLEMENTATION. rs_page-attributes-changetime, rs_page-attributes-implclass, rs_page-attributes-gendate, - rs_page-attributes-gentime. + rs_page-attributes-gentime, + rs_page-attributes-devclass. ENDMETHOD. From c6e69e0c41818a4b68d8d195ab2c5f32cc390f3f Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Wed, 19 Apr 2017 20:36:25 +0000 Subject: [PATCH 3/5] undo some changes --- src/zabapgit_object_serializing.prog.abap | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/zabapgit_object_serializing.prog.abap b/src/zabapgit_object_serializing.prog.abap index 7c8aa5f11..c03e7ba86 100644 --- a/src/zabapgit_object_serializing.prog.abap +++ b/src/zabapgit_object_serializing.prog.abap @@ -27,8 +27,6 @@ INCLUDE zabapgit_object_nrob. INCLUDE zabapgit_object_para. INCLUDE zabapgit_object_pinf. INCLUDE zabapgit_object_prog. -INCLUDE zabapgit_object_samc. -INCLUDE zabapgit_object_sapc. INCLUDE zabapgit_object_sfbf. INCLUDE zabapgit_object_sfbs. INCLUDE zabapgit_object_sfpf. From e3a7b00fa1c0edb5e5fa862b4d6422e882d5e80b Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Wed, 19 Apr 2017 20:37:25 +0000 Subject: [PATCH 4/5] undo some changes --- src/zabapgit_object_samc.prog.abap | 333 ----------------------------- src/zabapgit_object_samc.prog.xml | 22 -- src/zabapgit_object_sapc.prog.abap | 333 ----------------------------- src/zabapgit_object_sapc.prog.xml | 22 -- 4 files changed, 710 deletions(-) delete mode 100644 src/zabapgit_object_samc.prog.abap delete mode 100644 src/zabapgit_object_samc.prog.xml delete mode 100644 src/zabapgit_object_sapc.prog.abap delete mode 100644 src/zabapgit_object_sapc.prog.xml diff --git a/src/zabapgit_object_samc.prog.abap b/src/zabapgit_object_samc.prog.abap deleted file mode 100644 index c8f8a85fa..000000000 --- a/src/zabapgit_object_samc.prog.abap +++ /dev/null @@ -1,333 +0,0 @@ -*&---------------------------------------------------------------------* -*& Include ZABAPGIT_OBJECT_SAMC -*&---------------------------------------------------------------------* - -CLASS lcl_object_samc DEFINITION INHERITING FROM lcl_objects_super FINAL. - - PUBLIC SECTION. - INTERFACES lif_object. - - PRIVATE SECTION. - DATA: mo_persistence TYPE REF TO if_wb_object_persist, - mo_amc_appl_obj_data TYPE REF TO if_wb_object_data_model. - - METHODS: - get_data_object - RETURNING - VALUE(ro_amc_appl_obj_data) TYPE REF TO if_wb_object_data_model - RAISING - lcx_exception, - - get_persistence - RETURNING - VALUE(ro_persistence) TYPE REF TO if_wb_object_persist - RAISING - lcx_exception, - - get_data - EXPORTING - p_data TYPE any - RAISING - lcx_exception, - - lock - RAISING - lcx_exception, - - unlock - RAISING - lcx_exception. - -ENDCLASS. "lcl_object_samc DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_object_samc IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_object_samc IMPLEMENTATION. - - METHOD lif_object~has_changed_since. - rv_changed = abap_true. - ENDMETHOD. "lif_object~has_changed_since - - METHOD lif_object~changed_by. - - DATA: lr_data TYPE REF TO data. - FIELD-SYMBOLS: TYPE any, - TYPE any, - TYPE any. - - TRY. - CREATE DATA lr_data TYPE ('AMC_APPLICATION_COMPLETE'). - ASSIGN lr_data->* TO . - - CATCH cx_root. - lcx_exception=>raise( 'SAMC not supported' ). - ENDTRY. - - get_data( - IMPORTING - p_data = ). - - ASSIGN COMPONENT 'HEADER' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - - rv_user = . - - ENDMETHOD. - - METHOD lif_object~get_metadata. - rs_metadata = get_metadata( ). - rs_metadata-ddic = abap_true. - rs_metadata-delete_tadir = abap_true. - ENDMETHOD. "lif_object~get_metadata. - - METHOD lif_object~exists. - - DATA: ls_tadir TYPE tadir. - - ls_tadir = lcl_tadir=>read_single( - iv_object = ms_item-obj_type - iv_obj_name = ms_item-obj_name ). - IF ls_tadir IS INITIAL. - RETURN. - ENDIF. - - TRY. - get_data_object( ). - - CATCH lcx_exception. - RETURN. - ENDTRY. - - rv_bool = abap_true. - - ENDMETHOD. "lif_object~exists - - METHOD lif_object~serialize. - - DATA: lr_data TYPE REF TO data. - - FIELD-SYMBOLS: TYPE any. - - TRY. - CREATE DATA lr_data TYPE ('AMC_APPLICATION_COMPLETE'). - ASSIGN lr_data->* TO . - - CATCH cx_root. - lcx_exception=>raise( 'SAMC not supported' ). - ENDTRY. - - get_data( - IMPORTING - p_data = ). - - io_xml->add( iv_name = 'SAMC' - ig_data = ). - - ENDMETHOD. "serialize - - METHOD lif_object~deserialize. - - DATA: error TYPE REF TO cx_swb_exception, - appl_obj_data TYPE REF TO if_wb_object_data_model, - lr_data TYPE REF TO data. - - FIELD-SYMBOLS: TYPE any. - - TRY. - CREATE DATA lr_data TYPE ('AMC_APPLICATION_COMPLETE'). - ASSIGN lr_data->* TO . - - CATCH cx_root. - lcx_exception=>raise( 'SAMC not supported' ). - ENDTRY. - - io_xml->read( - EXPORTING - iv_name = 'SAMC' - CHANGING - cg_data = ). - - IF lif_object~exists( ) = abap_true . - lif_object~delete( ). - ENDIF. - - appl_obj_data = get_data_object( ). - - TRY. - lock( ). - - CALL FUNCTION 'RS_CORR_INSERT' - EXPORTING - object = ms_item-obj_name - object_class = 'SAMC' - mode = 'I' - global_lock = abap_true - devclass = iv_package - master_language = mv_language - EXCEPTIONS - cancelled = 1 - permission_failure = 2 - unknown_objectclass = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - lcx_exception=>raise( 'Error occured while creating SAMC' ). - ENDIF. - - appl_obj_data->set_data( ). - - get_persistence( )->save( p_object_data = appl_obj_data ). - - unlock( ). - - CATCH cx_swb_exception INTO error. - lcx_exception=>raise( 'Error occured while creating SAMC' ). - ENDTRY. - - ENDMETHOD. "deserialize - - METHOD lif_object~delete. - - DATA: object_key TYPE seu_objkey, - error TYPE REF TO cx_swb_exception. - - object_key = ms_item-obj_name. - - TRY. - lock( ). - - get_persistence( )->delete( p_object_key = object_key ). - - unlock( ). - - CATCH cx_swb_exception INTO error. - lcx_exception=>raise( 'Error occured while deleting SAMC' ). - ENDTRY. - - ENDMETHOD. "delete - - METHOD lif_object~jump. - - CALL FUNCTION 'RS_TOOL_ACCESS' - EXPORTING - operation = 'SHOW' - object_name = ms_item-obj_name - object_type = ms_item-obj_type. - - ENDMETHOD. "jump - - METHOD lif_object~compare_to_remote_version. - - CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. - - ENDMETHOD. - - METHOD get_data_object. - - IF mo_amc_appl_obj_data IS NOT BOUND. - - TRY. - CREATE OBJECT mo_amc_appl_obj_data TYPE ('CL_AMC_APPLICATION_OBJ_DATA'). - - CATCH cx_root. - lcx_exception=>raise( 'SAMC not supported' ). - ENDTRY. - - ENDIF. - - ro_amc_appl_obj_data = mo_amc_appl_obj_data. - - ENDMETHOD. - - - METHOD get_persistence. - - IF mo_persistence IS NOT BOUND. - - TRY. - CREATE OBJECT mo_persistence TYPE ('CL_AMC_APPLICATION_OBJ_PERS'). - - CATCH cx_root. - lcx_exception=>raise( 'SAMC not supported' ). - ENDTRY. - - ENDIF. - - ro_persistence = mo_persistence. - - ENDMETHOD. - - - METHOD lock. - - DATA: objname TYPE trobj_name, - object_key TYPE seu_objkey, - objtype TYPE trobjtype. - - objname = ms_item-obj_name. - object_key = ms_item-obj_name. - objtype = ms_item-obj_type. - - get_persistence( )->lock( - EXPORTING - p_objname_tr = objname - p_object_key = object_key - p_objtype_tr = objtype - EXCEPTIONS - foreign_lock = 1 - error_occurred = 2 - OTHERS = 3 ). - - IF sy-subrc <> 0. - lcx_exception=>raise( `Error occured while locking SAMC ` && objname ). - ENDIF. - - ENDMETHOD. - - METHOD unlock. - - DATA: objname TYPE trobj_name, - object_key TYPE seu_objkey, - objtype TYPE trobjtype. - - objname = ms_item-obj_name. - object_key = ms_item-obj_name. - objtype = ms_item-obj_type. - - get_persistence( )->unlock( p_objname_tr = objname - p_object_key = object_key - p_objtype_tr = objtype ). - - ENDMETHOD. - - METHOD get_data. - - DATA: object_key TYPE seu_objkey. - - object_key = ms_item-obj_name. - - TRY. - get_persistence( )->get( - EXPORTING - p_object_key = object_key - p_version = 'A' - CHANGING - p_object_data = mo_amc_appl_obj_data ). - - CATCH cx_root. - lcx_exception=>raise( 'SAMC error' ). - ENDTRY. - - mo_amc_appl_obj_data->get_data( - IMPORTING - p_data = p_data ). - - ENDMETHOD. - - -ENDCLASS. "lcl_object_samc IMPLEMENTATION diff --git a/src/zabapgit_object_samc.prog.xml b/src/zabapgit_object_samc.prog.xml deleted file mode 100644 index 861bd3b6b..000000000 --- a/src/zabapgit_object_samc.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZABAPGIT_OBJECT_SAMC - A - X - I - E - X - - - - R - Include ZABAPGIT_OBJECT_SAMC - 28 - - - - - diff --git a/src/zabapgit_object_sapc.prog.abap b/src/zabapgit_object_sapc.prog.abap deleted file mode 100644 index 8082f99ef..000000000 --- a/src/zabapgit_object_sapc.prog.abap +++ /dev/null @@ -1,333 +0,0 @@ -*&---------------------------------------------------------------------* -*& Include ZABAPGIT_OBJECT_SAPC -*&---------------------------------------------------------------------* - -CLASS lcl_object_sapc DEFINITION INHERITING FROM lcl_objects_super FINAL. - - PUBLIC SECTION. - INTERFACES lif_object. - - PRIVATE SECTION. - DATA: mo_persistence TYPE REF TO if_wb_object_persist, - mo_apc_appl_obj_data TYPE REF TO if_wb_object_data_model. - - METHODS: - get_data_object - RETURNING - VALUE(ro_apc_appl_obj_data) TYPE REF TO if_wb_object_data_model - RAISING - lcx_exception, - - get_persistence - RETURNING - VALUE(ro_persistence) TYPE REF TO if_wb_object_persist - RAISING - lcx_exception, - - get_data - EXPORTING - p_data TYPE any - RAISING - lcx_exception, - - lock - RAISING - lcx_exception, - - unlock - RAISING - lcx_exception. - -ENDCLASS. "lcl_object_sAPC DEFINITION - -*----------------------------------------------------------------------* -* CLASS lcl_object_sapc IMPLEMENTATION -*----------------------------------------------------------------------* -* -*----------------------------------------------------------------------* -CLASS lcl_object_sapc IMPLEMENTATION. - - METHOD lif_object~has_changed_since. - rv_changed = abap_true. - ENDMETHOD. "lif_object~has_changed_since - - METHOD lif_object~changed_by. - - DATA: lr_data TYPE REF TO data. - FIELD-SYMBOLS: TYPE any, - TYPE any, - TYPE any. - - TRY. - CREATE DATA lr_data TYPE ('APC_APPLICATION_COMPLETE'). - ASSIGN lr_data->* TO . - - CATCH cx_root. - lcx_exception=>raise( 'SAPC not supported' ). - ENDTRY. - - get_data( - IMPORTING - p_data = ). - - ASSIGN COMPONENT 'HEADER' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . - ASSERT sy-subrc = 0. - - rv_user = . - - ENDMETHOD. - - METHOD lif_object~get_metadata. - rs_metadata = get_metadata( ). - rs_metadata-ddic = abap_true. - rs_metadata-delete_tadir = abap_true. - ENDMETHOD. "lif_object~get_metadata. - - METHOD lif_object~exists. - - DATA: ls_tadir TYPE tadir. - - ls_tadir = lcl_tadir=>read_single( - iv_object = ms_item-obj_type - iv_obj_name = ms_item-obj_name ). - IF ls_tadir IS INITIAL. - RETURN. - ENDIF. - - TRY. - get_data_object( ). - - CATCH lcx_exception. - RETURN. - ENDTRY. - - rv_bool = abap_true. - - ENDMETHOD. "lif_object~exists - - METHOD lif_object~serialize. - - DATA: lr_data TYPE REF TO data. - - FIELD-SYMBOLS: TYPE any. - - TRY. - CREATE DATA lr_data TYPE ('APC_APPLICATION_COMPLETE'). - ASSIGN lr_data->* TO . - - CATCH cx_root. - lcx_exception=>raise( 'SAPC not supported' ). - ENDTRY. - - get_data( - IMPORTING - p_data = ). - - io_xml->add( iv_name = 'SAPC' - ig_data = ). - - ENDMETHOD. "serialize - - METHOD lif_object~deserialize. - - DATA: error TYPE REF TO cx_swb_exception, - appl_obj_data TYPE REF TO if_wb_object_data_model, - lr_data TYPE REF TO data. - - FIELD-SYMBOLS: TYPE any. - - TRY. - CREATE DATA lr_data TYPE ('APC_APPLICATION_COMPLETE'). - ASSIGN lr_data->* TO . - - CATCH cx_root. - lcx_exception=>raise( 'SAPC not supported' ). - ENDTRY. - - io_xml->read( - EXPORTING - iv_name = 'SAPC' - CHANGING - cg_data = ). - - IF lif_object~exists( ) = abap_true . - lif_object~delete( ). - ENDIF. - - appl_obj_data = get_data_object( ). - - TRY. - lock( ). - - CALL FUNCTION 'RS_CORR_INSERT' - EXPORTING - object = ms_item-obj_name - object_class = 'SAPC' - mode = 'I' - global_lock = abap_true - devclass = iv_package - master_language = mv_language - EXCEPTIONS - cancelled = 1 - permission_failure = 2 - unknown_objectclass = 3 - OTHERS = 4. - - IF sy-subrc <> 0. - lcx_exception=>raise( 'Error occured while creating SAPC' ). - ENDIF. - - appl_obj_data->set_data( ). - - get_persistence( )->save( p_object_data = appl_obj_data ). - - unlock( ). - - CATCH cx_swb_exception INTO error. - lcx_exception=>raise( 'Error occured while creating SAPC' ). - ENDTRY. - - ENDMETHOD. "deserialize - - METHOD lif_object~delete. - - DATA: object_key TYPE seu_objkey, - error TYPE REF TO cx_swb_exception. - - object_key = ms_item-obj_name. - - TRY. - lock( ). - - get_persistence( )->delete( p_object_key = object_key ). - - unlock( ). - - CATCH cx_swb_exception INTO error. - lcx_exception=>raise( 'Error occured while deleting SAPC' ). - ENDTRY. - - ENDMETHOD. "delete - - METHOD lif_object~jump. - - CALL FUNCTION 'RS_TOOL_ACCESS' - EXPORTING - operation = 'SHOW' - object_name = ms_item-obj_name - object_type = ms_item-obj_type. - - ENDMETHOD. "jump - - METHOD lif_object~compare_to_remote_version. - - CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. - - ENDMETHOD. - - METHOD get_data_object. - - IF mo_apc_appl_obj_data IS NOT BOUND. - - TRY. - CREATE OBJECT mo_apc_appl_obj_data TYPE ('CL_APC_APPLICATION_OBJ_DATA'). - - CATCH cx_root. - lcx_exception=>raise( 'SAPC not supported' ). - ENDTRY. - - ENDIF. - - ro_apc_appl_obj_data = mo_apc_appl_obj_data. - - ENDMETHOD. - - - METHOD get_persistence. - - IF mo_persistence IS NOT BOUND. - - TRY. - CREATE OBJECT mo_persistence TYPE ('CL_APC_APPLICATION_OBJ_PERS'). - - CATCH cx_root. - lcx_exception=>raise( 'SAPC not supported' ). - ENDTRY. - - ENDIF. - - ro_persistence = mo_persistence. - - ENDMETHOD. - - - METHOD lock. - - DATA: objname TYPE trobj_name, - object_key TYPE seu_objkey, - objtype TYPE trobjtype. - - objname = ms_item-obj_name. - object_key = ms_item-obj_name. - objtype = ms_item-obj_type. - - get_persistence( )->lock( - EXPORTING - p_objname_tr = objname - p_object_key = object_key - p_objtype_tr = objtype - EXCEPTIONS - foreign_lock = 1 - error_occurred = 2 - OTHERS = 3 ). - - IF sy-subrc <> 0. - lcx_exception=>raise( `Error occured while locking SAPC ` && objname ). - ENDIF. - - ENDMETHOD. - - METHOD unlock. - - DATA: objname TYPE trobj_name, - object_key TYPE seu_objkey, - objtype TYPE trobjtype. - - objname = ms_item-obj_name. - object_key = ms_item-obj_name. - objtype = ms_item-obj_type. - - get_persistence( )->unlock( p_objname_tr = objname - p_object_key = object_key - p_objtype_tr = objtype ). - - ENDMETHOD. - - METHOD get_data. - - DATA: object_key TYPE seu_objkey. - - object_key = ms_item-obj_name. - - TRY. - get_persistence( )->get( - EXPORTING - p_object_key = object_key - p_version = 'A' - CHANGING - p_object_data = mo_apc_appl_obj_data ). - - CATCH cx_root. - lcx_exception=>raise( 'SAPC error' ). - ENDTRY. - - mo_apc_appl_obj_data->get_data( - IMPORTING - p_data = p_data ). - - ENDMETHOD. - - -ENDCLASS. "lcl_object_sAPC IMPLEMENTATION diff --git a/src/zabapgit_object_sapc.prog.xml b/src/zabapgit_object_sapc.prog.xml deleted file mode 100644 index 061aed07b..000000000 --- a/src/zabapgit_object_sapc.prog.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - ZABAPGIT_OBJECT_SAPC - A - X - I - E - X - - - - R - Include ZABAPGIT_OBJECT_SAPC - 28 - - - - - From f8f6eeb9a138afcebc13cb2d3da49a01d9cac06e Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 22 Apr 2017 13:07:02 +0000 Subject: [PATCH 5/5] SAMC fixed --- src/zabapgit_object_samc.prog.abap | 369 +++++++++++++++++++++++++++++ src/zabapgit_object_samc.prog.xml | 22 ++ src/zabapgit_object_sapc.prog.abap | 369 +++++++++++++++++++++++++++++ src/zabapgit_object_sapc.prog.xml | 22 ++ 4 files changed, 782 insertions(+) create mode 100644 src/zabapgit_object_samc.prog.abap create mode 100644 src/zabapgit_object_samc.prog.xml create mode 100644 src/zabapgit_object_sapc.prog.abap create mode 100644 src/zabapgit_object_sapc.prog.xml diff --git a/src/zabapgit_object_samc.prog.abap b/src/zabapgit_object_samc.prog.abap new file mode 100644 index 000000000..c48e2f96e --- /dev/null +++ b/src/zabapgit_object_samc.prog.abap @@ -0,0 +1,369 @@ +*&---------------------------------------------------------------------* +*& Include ZABAPGIT_OBJECT_SAMC +*&---------------------------------------------------------------------* + +CLASS lcl_object_samc DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + + PRIVATE SECTION. + DATA: mo_persistence TYPE REF TO if_wb_object_persist, + mo_amc_appl_obj_data TYPE REF TO if_wb_object_data_model. + + METHODS: + get_data_object + RETURNING + VALUE(ro_amc_appl_obj_data) TYPE REF TO if_wb_object_data_model + RAISING + lcx_exception, + + get_persistence + RETURNING + VALUE(ro_persistence) TYPE REF TO if_wb_object_persist + RAISING + lcx_exception, + + get_data + EXPORTING + p_data TYPE any + RAISING + lcx_exception, + + lock + RAISING + lcx_exception, + + unlock + RAISING + lcx_exception. + +ENDCLASS. "lcl_object_samc DEFINITION + +*----------------------------------------------------------------------* +* CLASS lcl_object_samc IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcl_object_samc IMPLEMENTATION. + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. "lif_object~has_changed_since + + METHOD lif_object~changed_by. + + DATA: lr_data TYPE REF TO data. + FIELD-SYMBOLS: TYPE any, + TYPE any, + TYPE any. + + TRY. + CREATE DATA lr_data TYPE ('AMC_APPLICATION_COMPLETE'). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( 'SAMC not supported' ). + ENDTRY. + + get_data( + IMPORTING + p_data = ). + + ASSIGN COMPONENT 'HEADER' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + + rv_user = . + + ENDMETHOD. + + METHOD lif_object~get_metadata. + rs_metadata = get_metadata( ). + rs_metadata-delete_tadir = abap_true. + ENDMETHOD. "lif_object~get_metadata. + + METHOD lif_object~exists. + + DATA: ls_tadir TYPE tadir. + + ls_tadir = lcl_tadir=>read_single( + iv_object = ms_item-obj_type + iv_obj_name = ms_item-obj_name ). + IF ls_tadir IS INITIAL. + RETURN. + ENDIF. + + TRY. + get_data_object( ). + + CATCH lcx_exception. + RETURN. + ENDTRY. + + rv_bool = abap_true. + + ENDMETHOD. "lif_object~exists + + METHOD lif_object~serialize. + + DATA: lr_data TYPE REF TO data. + + FIELD-SYMBOLS: TYPE any, + TYPE any, + TYPE any. + + TRY. + CREATE DATA lr_data TYPE ('AMC_APPLICATION_COMPLETE'). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( 'SAMC not supported' ). + ENDTRY. + + get_data( + IMPORTING + p_data = ). + + ASSIGN COMPONENT 'HEADER' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + + ASSIGN COMPONENT 'CHANGED_ON' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CHANGED_AT' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CHANGED_CLNT' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_ON' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_AT' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_CLNT' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + io_xml->add( iv_name = 'SAMC' + ig_data = ). + + ENDMETHOD. "serialize + + METHOD lif_object~deserialize. + + DATA: error TYPE REF TO cx_swb_exception, + appl_obj_data TYPE REF TO if_wb_object_data_model, + lr_data TYPE REF TO data. + + FIELD-SYMBOLS: TYPE any. + + TRY. + CREATE DATA lr_data TYPE ('AMC_APPLICATION_COMPLETE'). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( 'SAMC not supported' ). + ENDTRY. + + io_xml->read( + EXPORTING + iv_name = 'SAMC' + CHANGING + cg_data = ). + + IF lif_object~exists( ) = abap_true . + lif_object~delete( ). + ENDIF. + + appl_obj_data = get_data_object( ). + + TRY. + lock( ). + + CALL FUNCTION 'RS_CORR_INSERT' + EXPORTING + object = ms_item-obj_name + object_class = 'SAMC' + mode = 'I' + global_lock = abap_true + devclass = iv_package + master_language = mv_language + EXCEPTIONS + cancelled = 1 + permission_failure = 2 + unknown_objectclass = 3 + OTHERS = 4. + + IF sy-subrc <> 0. + lcx_exception=>raise( 'Error occured while creating SAMC' ). + ENDIF. + + appl_obj_data->set_data( ). + + get_persistence( )->save( p_object_data = appl_obj_data ). + + unlock( ). + + CATCH cx_swb_exception INTO error. + lcx_exception=>raise( 'Error occured while creating SAMC' ). + ENDTRY. + + ENDMETHOD. "deserialize + + METHOD lif_object~delete. + + DATA: object_key TYPE seu_objkey, + error TYPE REF TO cx_swb_exception. + + object_key = ms_item-obj_name. + + TRY. + lock( ). + + get_persistence( )->delete( p_object_key = object_key ). + + unlock( ). + + CATCH cx_swb_exception INTO error. + lcx_exception=>raise( 'Error occured while deleting SAMC' ). + ENDTRY. + + ENDMETHOD. "delete + + METHOD lif_object~jump. + + CALL FUNCTION 'RS_TOOL_ACCESS' + EXPORTING + operation = 'SHOW' + object_name = ms_item-obj_name + object_type = ms_item-obj_type. + + ENDMETHOD. "jump + + METHOD lif_object~compare_to_remote_version. + + CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. + + ENDMETHOD. + + METHOD get_data_object. + + IF mo_amc_appl_obj_data IS NOT BOUND. + + TRY. + CREATE OBJECT mo_amc_appl_obj_data TYPE ('CL_AMC_APPLICATION_OBJ_DATA'). + + CATCH cx_root. + lcx_exception=>raise( 'SAMC not supported' ). + ENDTRY. + + ENDIF. + + ro_amc_appl_obj_data = mo_amc_appl_obj_data. + + ENDMETHOD. + + + METHOD get_persistence. + + IF mo_persistence IS NOT BOUND. + + TRY. + CREATE OBJECT mo_persistence TYPE ('CL_AMC_APPLICATION_OBJ_PERS'). + + CATCH cx_root. + lcx_exception=>raise( 'SAMC not supported' ). + ENDTRY. + + ENDIF. + + ro_persistence = mo_persistence. + + ENDMETHOD. + + + METHOD lock. + + DATA: objname TYPE trobj_name, + object_key TYPE seu_objkey, + objtype TYPE trobjtype. + + objname = ms_item-obj_name. + object_key = ms_item-obj_name. + objtype = ms_item-obj_type. + + get_persistence( )->lock( + EXPORTING + p_objname_tr = objname + p_object_key = object_key + p_objtype_tr = objtype + EXCEPTIONS + foreign_lock = 1 + error_occurred = 2 + OTHERS = 3 ). + + IF sy-subrc <> 0. + lcx_exception=>raise( `Error occured while locking SAMC ` && objname ). + ENDIF. + + ENDMETHOD. + + METHOD unlock. + + DATA: objname TYPE trobj_name, + object_key TYPE seu_objkey, + objtype TYPE trobjtype. + + objname = ms_item-obj_name. + object_key = ms_item-obj_name. + objtype = ms_item-obj_type. + + get_persistence( )->unlock( p_objname_tr = objname + p_object_key = object_key + p_objtype_tr = objtype ). + + ENDMETHOD. + + METHOD get_data. + + DATA: object_key TYPE seu_objkey. + + object_key = ms_item-obj_name. + + TRY. + get_persistence( )->get( + EXPORTING + p_object_key = object_key + p_version = 'A' + CHANGING + p_object_data = mo_amc_appl_obj_data ). + + CATCH cx_root. + lcx_exception=>raise( 'SAMC error' ). + ENDTRY. + + mo_amc_appl_obj_data->get_data( + IMPORTING + p_data = p_data ). + + ENDMETHOD. + + +ENDCLASS. "lcl_object_samc IMPLEMENTATION diff --git a/src/zabapgit_object_samc.prog.xml b/src/zabapgit_object_samc.prog.xml new file mode 100644 index 000000000..861bd3b6b --- /dev/null +++ b/src/zabapgit_object_samc.prog.xml @@ -0,0 +1,22 @@ + + + + + + ZABAPGIT_OBJECT_SAMC + A + X + I + E + X + + + + R + Include ZABAPGIT_OBJECT_SAMC + 28 + + + + + diff --git a/src/zabapgit_object_sapc.prog.abap b/src/zabapgit_object_sapc.prog.abap new file mode 100644 index 000000000..925b9d99d --- /dev/null +++ b/src/zabapgit_object_sapc.prog.abap @@ -0,0 +1,369 @@ +*&---------------------------------------------------------------------* +*& Include ZABAPGIT_OBJECT_SAPC +*&---------------------------------------------------------------------* + +CLASS lcl_object_sapc DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + + PRIVATE SECTION. + DATA: mo_persistence TYPE REF TO if_wb_object_persist, + mo_apc_appl_obj_data TYPE REF TO if_wb_object_data_model. + + METHODS: + get_data_object + RETURNING + VALUE(ro_apc_appl_obj_data) TYPE REF TO if_wb_object_data_model + RAISING + lcx_exception, + + get_persistence + RETURNING + VALUE(ro_persistence) TYPE REF TO if_wb_object_persist + RAISING + lcx_exception, + + get_data + EXPORTING + p_data TYPE any + RAISING + lcx_exception, + + lock + RAISING + lcx_exception, + + unlock + RAISING + lcx_exception. + +ENDCLASS. "lcl_object_sAPC DEFINITION + +*----------------------------------------------------------------------* +* CLASS lcl_object_sapc IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcl_object_sapc IMPLEMENTATION. + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. "lif_object~has_changed_since + + METHOD lif_object~changed_by. + + DATA: lr_data TYPE REF TO data. + FIELD-SYMBOLS: TYPE any, + TYPE any, + TYPE any. + + TRY. + CREATE DATA lr_data TYPE ('APC_APPLICATION_COMPLETE'). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( 'SAPC not supported' ). + ENDTRY. + + get_data( + IMPORTING + p_data = ). + + ASSIGN COMPONENT 'HEADER' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + + rv_user = . + + ENDMETHOD. + + METHOD lif_object~get_metadata. + rs_metadata = get_metadata( ). + rs_metadata-delete_tadir = abap_true. + ENDMETHOD. "lif_object~get_metadata. + + METHOD lif_object~exists. + + DATA: ls_tadir TYPE tadir. + + ls_tadir = lcl_tadir=>read_single( + iv_object = ms_item-obj_type + iv_obj_name = ms_item-obj_name ). + IF ls_tadir IS INITIAL. + RETURN. + ENDIF. + + TRY. + get_data_object( ). + + CATCH lcx_exception. + RETURN. + ENDTRY. + + rv_bool = abap_true. + + ENDMETHOD. "lif_object~exists + + METHOD lif_object~serialize. + + DATA: lr_data TYPE REF TO data. + + FIELD-SYMBOLS: TYPE any, + TYPE any, + TYPE any. + + TRY. + CREATE DATA lr_data TYPE ('APC_APPLICATION_COMPLETE'). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( 'SAPC not supported' ). + ENDTRY. + + get_data( + IMPORTING + p_data = ). + + ASSIGN COMPONENT 'HEADER' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + + ASSIGN COMPONENT 'CHANGED_ON' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CHANGED_AT' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CHANGED_CLNT' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_ON' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_AT' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_CLNT' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + io_xml->add( iv_name = 'SAPC' + ig_data = ). + + ENDMETHOD. "serialize + + METHOD lif_object~deserialize. + + DATA: error TYPE REF TO cx_swb_exception, + appl_obj_data TYPE REF TO if_wb_object_data_model, + lr_data TYPE REF TO data. + + FIELD-SYMBOLS: TYPE any. + + TRY. + CREATE DATA lr_data TYPE ('APC_APPLICATION_COMPLETE'). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( 'SAPC not supported' ). + ENDTRY. + + io_xml->read( + EXPORTING + iv_name = 'SAPC' + CHANGING + cg_data = ). + + IF lif_object~exists( ) = abap_true . + lif_object~delete( ). + ENDIF. + + appl_obj_data = get_data_object( ). + + TRY. + lock( ). + + CALL FUNCTION 'RS_CORR_INSERT' + EXPORTING + object = ms_item-obj_name + object_class = 'SAPC' + mode = 'I' + global_lock = abap_true + devclass = iv_package + master_language = mv_language + EXCEPTIONS + cancelled = 1 + permission_failure = 2 + unknown_objectclass = 3 + OTHERS = 4. + + IF sy-subrc <> 0. + lcx_exception=>raise( 'Error occured while creating SAPC' ). + ENDIF. + + appl_obj_data->set_data( ). + + get_persistence( )->save( p_object_data = appl_obj_data ). + + unlock( ). + + CATCH cx_swb_exception INTO error. + lcx_exception=>raise( 'Error occured while creating SAPC' ). + ENDTRY. + + ENDMETHOD. "deserialize + + METHOD lif_object~delete. + + DATA: object_key TYPE seu_objkey, + error TYPE REF TO cx_swb_exception. + + object_key = ms_item-obj_name. + + TRY. + lock( ). + + get_persistence( )->delete( p_object_key = object_key ). + + unlock( ). + + CATCH cx_swb_exception INTO error. + lcx_exception=>raise( 'Error occured while deleting SAPC' ). + ENDTRY. + + ENDMETHOD. "delete + + METHOD lif_object~jump. + + CALL FUNCTION 'RS_TOOL_ACCESS' + EXPORTING + operation = 'SHOW' + object_name = ms_item-obj_name + object_type = ms_item-obj_type. + + ENDMETHOD. "jump + + METHOD lif_object~compare_to_remote_version. + + CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. + + ENDMETHOD. + + METHOD get_data_object. + + IF mo_apc_appl_obj_data IS NOT BOUND. + + TRY. + CREATE OBJECT mo_apc_appl_obj_data TYPE ('CL_APC_APPLICATION_OBJ_DATA'). + + CATCH cx_root. + lcx_exception=>raise( 'SAPC not supported' ). + ENDTRY. + + ENDIF. + + ro_apc_appl_obj_data = mo_apc_appl_obj_data. + + ENDMETHOD. + + + METHOD get_persistence. + + IF mo_persistence IS NOT BOUND. + + TRY. + CREATE OBJECT mo_persistence TYPE ('CL_APC_APPLICATION_OBJ_PERS'). + + CATCH cx_root. + lcx_exception=>raise( 'SAPC not supported' ). + ENDTRY. + + ENDIF. + + ro_persistence = mo_persistence. + + ENDMETHOD. + + + METHOD lock. + + DATA: objname TYPE trobj_name, + object_key TYPE seu_objkey, + objtype TYPE trobjtype. + + objname = ms_item-obj_name. + object_key = ms_item-obj_name. + objtype = ms_item-obj_type. + + get_persistence( )->lock( + EXPORTING + p_objname_tr = objname + p_object_key = object_key + p_objtype_tr = objtype + EXCEPTIONS + foreign_lock = 1 + error_occurred = 2 + OTHERS = 3 ). + + IF sy-subrc <> 0. + lcx_exception=>raise( `Error occured while locking SAPC ` && objname ). + ENDIF. + + ENDMETHOD. + + METHOD unlock. + + DATA: objname TYPE trobj_name, + object_key TYPE seu_objkey, + objtype TYPE trobjtype. + + objname = ms_item-obj_name. + object_key = ms_item-obj_name. + objtype = ms_item-obj_type. + + get_persistence( )->unlock( p_objname_tr = objname + p_object_key = object_key + p_objtype_tr = objtype ). + + ENDMETHOD. + + METHOD get_data. + + DATA: object_key TYPE seu_objkey. + + object_key = ms_item-obj_name. + + TRY. + get_persistence( )->get( + EXPORTING + p_object_key = object_key + p_version = 'A' + CHANGING + p_object_data = mo_apc_appl_obj_data ). + + CATCH cx_root. + lcx_exception=>raise( 'SAPC error' ). + ENDTRY. + + mo_apc_appl_obj_data->get_data( + IMPORTING + p_data = p_data ). + + ENDMETHOD. + + +ENDCLASS. "lcl_object_sAPC IMPLEMENTATION diff --git a/src/zabapgit_object_sapc.prog.xml b/src/zabapgit_object_sapc.prog.xml new file mode 100644 index 000000000..061aed07b --- /dev/null +++ b/src/zabapgit_object_sapc.prog.xml @@ -0,0 +1,22 @@ + + + + + + ZABAPGIT_OBJECT_SAPC + A + X + I + E + X + + + + R + Include ZABAPGIT_OBJECT_SAPC + 28 + + + + +