diff --git a/src/zabapgit_object_samc.prog.abap b/src/zabapgit_object_samc.prog.abap index c575e3578..ebbe36021 100644 --- a/src/zabapgit_object_samc.prog.abap +++ b/src/zabapgit_object_samc.prog.abap @@ -2,41 +2,16 @@ *& Include ZABAPGIT_OBJECT_SAMC *&---------------------------------------------------------------------* -CLASS lcl_object_samc DEFINITION INHERITING FROM lcl_objects_super FINAL. +CLASS lcl_object_samc DEFINITION INHERITING FROM lcl_objects_channel_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: lif_object~exists REDEFINITION. + PROTECTED SECTION. 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. + get_persistence_cls_name REDEFINITION, + get_appl_obj_cls_name REDEFINITION, + get_data_structure_name REDEFINITION. ENDCLASS. "lcl_object_samc DEFINITION @@ -47,43 +22,6 @@ ENDCLASS. "lcl_object_samc DEFINITION *----------------------------------------------------------------------* 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. "lif_object~changed_by - - 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. @@ -95,276 +33,26 @@ CLASS lcl_object_samc IMPLEMENTATION. RETURN. ENDIF. - TRY. - get_data_object( ). - - CATCH lcx_exception. - RETURN. - ENDTRY. - rv_bool = abap_true. ENDMETHOD. "lif_object~exists - METHOD lif_object~serialize. + METHOD get_appl_obj_cls_name. - DATA: lr_data TYPE REF TO data. + r_data_class_name = 'CL_AMC_APPLICATION_OBJ_DATA'. - FIELD-SYMBOLS: TYPE any, - TYPE any, - TYPE any. + ENDMETHOD. - TRY. - CREATE DATA lr_data TYPE ('AMC_APPLICATION_COMPLETE'). - ASSIGN lr_data->* TO . + METHOD get_data_structure_name. - CATCH cx_root. - lcx_exception=>raise( 'SAMC not supported' ). - ENDTRY. + r_data_structure_name = 'AMC_APPLICATION_COMPLETE'. - get_data( - IMPORTING - p_data = ). + ENDMETHOD. - ASSIGN COMPONENT 'HEADER' OF STRUCTURE TO . - ASSERT sy-subrc = 0. + METHOD get_persistence_cls_name. - 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: li_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. - - li_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. - - li_appl_obj_data->set_data( ). - - get_persistence( )->save( p_object_data = li_appl_obj_data ). - - unlock( ). - - CATCH cx_swb_exception. - lcx_exception=>raise( 'Error occured while creating SAMC' ). - ENDTRY. - - ENDMETHOD. "deserialize - - METHOD lif_object~delete. - - DATA: object_key TYPE seu_objkey. - - object_key = ms_item-obj_name. - - TRY. - lock( ). - - get_persistence( )->delete( p_object_key = object_key ). - - unlock( ). - - CATCH cx_swb_exception. - 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_comparison_null. - ENDMETHOD. "lif_object~compare_to_remote_version - - 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. "get_data_object - - - 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. "get_persistence - - - 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( ). - - mo_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. "lock - - 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. "unlock - - METHOD get_data. - - DATA: object_key TYPE seu_objkey. - - object_key = ms_item-obj_name. - - TRY. - get_persistence( ). - - mo_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. "get_data + r_persistence_class_name = 'CL_AMC_APPLICATION_OBJ_PERS'. + ENDMETHOD. ENDCLASS. "lcl_object_samc IMPLEMENTATION diff --git a/src/zabapgit_object_sapc.prog.abap b/src/zabapgit_object_sapc.prog.abap index 47a1bbb88..1d69d495c 100644 --- a/src/zabapgit_object_sapc.prog.abap +++ b/src/zabapgit_object_sapc.prog.abap @@ -2,34 +2,16 @@ *& Include ZABAPGIT_OBJECT_SAPC *&---------------------------------------------------------------------* -CLASS lcl_object_sapc DEFINITION INHERITING FROM lcl_objects_super FINAL. +CLASS lcl_object_sapc DEFINITION INHERITING FROM lcl_objects_channel_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: lif_object~exists REDEFINITION. + PROTECTED SECTION. METHODS: - create_apc_objects - RAISING - lcx_exception, - - get_data - EXPORTING - p_data TYPE any - RAISING - lcx_exception, - - lock - RAISING - lcx_exception, - - unlock - RAISING - lcx_exception. + get_persistence_cls_name REDEFINITION, + get_appl_obj_cls_name REDEFINITION, + get_data_structure_name REDEFINITION. ENDCLASS. "lcl_object_sAPC DEFINITION @@ -40,45 +22,6 @@ ENDCLASS. "lcl_object_sAPC DEFINITION *----------------------------------------------------------------------* 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. - - create_apc_objects( ). - - 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. "lif_object~changed_by - - 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. @@ -94,243 +37,22 @@ CLASS lcl_object_sapc IMPLEMENTATION. ENDMETHOD. "lif_object~exists - METHOD lif_object~serialize. + METHOD get_appl_obj_cls_name. - DATA: lr_data TYPE REF TO data. - - FIELD-SYMBOLS: TYPE any, - TYPE any, - TYPE any. - - create_apc_objects( ). - - 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: lr_data TYPE REF TO data. - - FIELD-SYMBOLS: TYPE any. - - create_apc_objects( ). - - 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. - - 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. - - mo_apc_appl_obj_data->set_data( ). - - mo_persistence->save( p_object_data = mo_apc_appl_obj_data ). - - unlock( ). - - CATCH cx_swb_exception. - lcx_exception=>raise( 'Error occured while creating SAPC' ). - ENDTRY. - - ENDMETHOD. "deserialize - - METHOD lif_object~delete. - - DATA: object_key TYPE seu_objkey. - - create_apc_objects( ). - - object_key = ms_item-obj_name. - - TRY. - lock( ). - - mo_persistence->delete( p_object_key = object_key ). - - unlock( ). - - CATCH cx_swb_exception. - 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_comparison_null. - ENDMETHOD. "lif_object~compare_to_remote_version - - METHOD create_apc_objects. - - TRY. - IF mo_apc_appl_obj_data IS NOT BOUND. - CREATE OBJECT mo_apc_appl_obj_data TYPE ('CL_APC_APPLICATION_OBJ_DATA'). - ENDIF. - - IF mo_persistence IS NOT BOUND. - CREATE OBJECT mo_persistence TYPE ('CL_APC_APPLICATION_OBJ_PERS'). - ENDIF. - - CATCH cx_root. - lcx_exception=>raise( 'SAPC not supported' ). - ENDTRY. + r_data_class_name = 'CL_APC_APPLICATION_OBJ_DATA'. ENDMETHOD. - METHOD lock. + METHOD get_data_structure_name. - DATA: objname TYPE trobj_name, - object_key TYPE seu_objkey, - objtype TYPE trobjtype. + r_data_structure_name = 'APC_APPLICATION_COMPLETE'. - objname = ms_item-obj_name. - object_key = ms_item-obj_name. - objtype = ms_item-obj_type. + ENDMETHOD. - mo_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 ). + METHOD get_persistence_cls_name. - IF sy-subrc <> 0. - lcx_exception=>raise( `Error occured while locking SAPC ` && objname ). - ENDIF. + r_persistence_class_name = 'CL_APC_APPLICATION_OBJ_PERS'. - ENDMETHOD. "lock - - 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. - - mo_persistence->unlock( p_objname_tr = objname - p_object_key = object_key - p_objtype_tr = objtype ). - - ENDMETHOD. "unlock - - METHOD get_data. - - DATA: object_key TYPE seu_objkey. - - object_key = ms_item-obj_name. - - TRY. - mo_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. "get_data + ENDMETHOD. ENDCLASS. "lcl_object_sAPC IMPLEMENTATION diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 8b2907a56..36b404db1 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -1852,6 +1852,363 @@ CLASS lcl_objects_super IMPLEMENTATION. ENDCLASS. "lcl_objects_super IMPLEMENTATION +CLASS lcl_objects_channel_super DEFINITION ABSTRACT + INHERITING FROM lcl_objects_super . + + PUBLIC SECTION. + INTERFACES: + lif_object + ABSTRACT METHODS exists. + + PROTECTED SECTION. + METHODS: + get_persistence_cls_name ABSTRACT + RETURNING + VALUE(r_persistence_class_name) TYPE seoclsname, + + get_appl_obj_cls_name ABSTRACT + RETURNING + VALUE(r_data_class_name) TYPE seoclsname, + + get_data_structure_name ABSTRACT + RETURNING + VALUE(r_data_structure_name) TYPE string. + + PRIVATE SECTION. + DATA: mo_persistence TYPE REF TO if_wb_object_persist, + mo_appl_obj_data TYPE REF TO if_wb_object_data_model. + + METHODS: + create_channel_objects + RAISING + lcx_exception, + + get_data + EXPORTING + p_data TYPE any + RAISING + lcx_exception, + + lock + RAISING + lcx_exception, + + unlock + RAISING + lcx_exception. + +ENDCLASS. + +CLASS lcl_objects_channel_super IMPLEMENTATION. + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. + + METHOD lif_object~changed_by. + + DATA: lr_data TYPE REF TO data, + data_structure_name TYPE string. + + FIELD-SYMBOLS: TYPE any, + TYPE any, + TYPE any. + + create_channel_objects( ). + + TRY. + data_structure_name = get_data_structure_name( ). + CREATE DATA lr_data TYPE (data_structure_name). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( |{ ms_item-obj_name } 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. + +* 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. +* +* rv_bool = abap_true. +* +* ENDMETHOD. + + METHOD lif_object~serialize. + + DATA: lr_data TYPE REF TO data, + data_structure_name TYPE string. + + FIELD-SYMBOLS: TYPE any, + TYPE any, + TYPE any. + + create_channel_objects( ). + + TRY. + data_structure_name = get_data_structure_name( ). + CREATE DATA lr_data TYPE (data_structure_name). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( |{ ms_item-obj_type } 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 = ms_item-obj_type + ig_data = ). + + ENDMETHOD. + + METHOD lif_object~deserialize. + + DATA: lr_data TYPE REF TO data, + data_structure_name TYPE string. + + FIELD-SYMBOLS: TYPE any. + + create_channel_objects( ). + + TRY. + data_structure_name = get_data_structure_name( ). + CREATE DATA lr_data TYPE (data_structure_name). + ASSIGN lr_data->* TO . + + CATCH cx_root. + lcx_exception=>raise( |{ ms_item-obj_type } not supported| ). + ENDTRY. + + io_xml->read( + EXPORTING + iv_name = ms_item-obj_type + CHANGING + cg_data = ). + + IF lif_object~exists( ) = abap_true. + lif_object~delete( ). + ENDIF. + + TRY. + lock( ). + + CALL FUNCTION 'RS_CORR_INSERT' + EXPORTING + object = ms_item-obj_name + object_class = ms_item-obj_type + 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 { ms_item-obj_type }| ). + ENDIF. + + mo_appl_obj_data->set_data( ). + + mo_persistence->save( p_object_data = mo_appl_obj_data ). + + unlock( ). + + CATCH cx_swb_exception. + lcx_exception=>raise( |Error occured while creating { ms_item-obj_type }| ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~delete. + + DATA: object_key TYPE seu_objkey. + + create_channel_objects( ). + + object_key = ms_item-obj_name. + + TRY. + lock( ). + + mo_persistence->delete( p_object_key = object_key ). + + unlock( ). + + CATCH cx_swb_exception. + lcx_exception=>raise( |Error occured while deleting { ms_item-obj_type }| ). + ENDTRY. + + ENDMETHOD. + + 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. + + METHOD lif_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. + ENDMETHOD. + + METHOD create_channel_objects. + + DATA: appl_obj_cls_name TYPE seoclsname, + persistence_cls_name TYPE seoclsname. + + TRY. + IF mo_appl_obj_data IS NOT BOUND. + appl_obj_cls_name = get_appl_obj_cls_name( ). + CREATE OBJECT mo_appl_obj_data TYPE (appl_obj_cls_name). + ENDIF. + + IF mo_persistence IS NOT BOUND. + persistence_cls_name = get_persistence_cls_name( ). + CREATE OBJECT mo_persistence TYPE (persistence_cls_name). + ENDIF. + + CATCH cx_root. + lcx_exception=>raise( |{ ms_item-obj_type } not supported| ). + ENDTRY. + + ENDMETHOD. + + METHOD get_data. + + DATA: object_key TYPE seu_objkey. + + object_key = ms_item-obj_name. + + TRY. + mo_persistence->get( + EXPORTING + p_object_key = object_key + p_version = 'A' + CHANGING + p_object_data = mo_appl_obj_data ). + + CATCH cx_root. + lcx_exception=>raise( |{ ms_item-obj_type } not supported| ). + ENDTRY. + + mo_appl_obj_data->get_data( + IMPORTING + p_data = p_data ). + + 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. + + mo_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 { ms_item-obj_type } | && objname ). + ENDIF. + + ENDMETHOD. "lock + + 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. + + mo_persistence->unlock( p_objname_tr = objname + p_object_key = object_key + p_objtype_tr = objtype ). + + ENDMETHOD. "unlock + + +ENDCLASS. + *----------------------------------------------------------------------* * CLASS lcl_object DEFINITION *----------------------------------------------------------------------*