mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
294 lines
7.8 KiB
ABAP
294 lines
7.8 KiB
ABAP
CLASS zcl_abapgit_object_oa2p DEFINITION
|
|
PUBLIC
|
|
INHERITING FROM zcl_abapgit_objects_super
|
|
FINAL
|
|
CREATE PUBLIC .
|
|
|
|
PUBLIC SECTION.
|
|
|
|
INTERFACES zif_abapgit_object .
|
|
METHODS constructor
|
|
IMPORTING
|
|
is_item TYPE zif_abapgit_definitions=>ty_item
|
|
iv_language TYPE spras.
|
|
|
|
PROTECTED SECTION.
|
|
PRIVATE SECTION.
|
|
DATA: mv_profile TYPE c LENGTH 30.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS zcl_abapgit_object_oa2p IMPLEMENTATION.
|
|
|
|
|
|
METHOD constructor.
|
|
|
|
super->constructor( is_item = is_item
|
|
iv_language = iv_language ).
|
|
|
|
mv_profile = is_item-obj_name.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~changed_by.
|
|
|
|
DATA: lo_persist TYPE REF TO object,
|
|
lr_wb TYPE REF TO data,
|
|
lo_profile TYPE REF TO object,
|
|
lv_profile_key TYPE seu_objkey.
|
|
|
|
FIELD-SYMBOLS: <lo_wb> TYPE any.
|
|
|
|
|
|
lv_profile_key = mv_profile.
|
|
CREATE OBJECT lo_persist TYPE ('CL_OA2P_OBJECT_PERSIST').
|
|
|
|
CREATE OBJECT lo_profile TYPE ('CL_OA2P_OBJECT_DATA').
|
|
CREATE DATA lr_wb TYPE REF TO ('IF_WB_OBJECT_DATA_MODEL').
|
|
ASSIGN lr_wb->* TO <lo_wb>.
|
|
<lo_wb> ?= lo_profile.
|
|
|
|
TRY.
|
|
CALL METHOD lo_persist->('IF_WB_OBJECT_PERSIST~GET')
|
|
EXPORTING
|
|
p_object_key = lv_profile_key " Object Key
|
|
p_version = 'A' " Version (Active/Inactive)
|
|
CHANGING
|
|
p_object_data = <lo_wb>. " Object Data
|
|
CATCH cx_swb_object_does_not_exist.
|
|
zcx_abapgit_exception=>raise( |OAuth2 Profile { lv_profile_key } doesn't exist.| ).
|
|
CATCH cx_swb_exception.
|
|
zcx_abapgit_exception=>raise( |Error when geting details of OAuth2 Profile { lv_profile_key }.| ).
|
|
ENDTRY.
|
|
|
|
lo_profile = <lo_wb>.
|
|
CALL METHOD lo_profile->('IF_WB_OBJECT_DATA_MODEL~GET_CHANGED_BY')
|
|
RECEIVING
|
|
p_user_name = rv_user.
|
|
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~delete.
|
|
|
|
CONSTANTS: lc_actvt TYPE c LENGTH 2 VALUE `06`.
|
|
|
|
DATA: lo_persist TYPE REF TO object,
|
|
lv_profile_key TYPE seu_objkey.
|
|
|
|
"authority check
|
|
AUTHORITY-CHECK OBJECT 'S_OA2C_ADM'
|
|
ID 'ACTVT' FIELD lc_actvt.
|
|
IF sy-subrc <> 0.
|
|
MESSAGE e463(01) WITH mv_profile INTO zcx_abapgit_exception=>null.
|
|
zcx_abapgit_exception=>raise_t100( ).
|
|
ENDIF.
|
|
|
|
"delete profile
|
|
lv_profile_key = mv_profile.
|
|
CREATE OBJECT lo_persist TYPE ('CL_OA2P_OBJECT_PERSIST').
|
|
|
|
TRY.
|
|
CALL METHOD lo_persist->('IF_WB_OBJECT_PERSIST~DELETE')
|
|
EXPORTING
|
|
p_object_key = lv_profile_key. " Object Key
|
|
CATCH cx_swb_object_does_not_exist.
|
|
CATCH cx_swb_exception.
|
|
zcx_abapgit_exception=>raise( |Error when deleting OAuth2 Profile { lv_profile_key }.| ).
|
|
ENDTRY.
|
|
|
|
corr_insert( iv_package ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~deserialize.
|
|
|
|
DATA: lo_persist TYPE REF TO object,
|
|
lo_profile TYPE REF TO object,
|
|
lr_wb TYPE REF TO data,
|
|
lr_profile_data TYPE REF TO data.
|
|
FIELD-SYMBOLS: <ls_profile_data> TYPE data,
|
|
<lo_wb> TYPE any.
|
|
|
|
CREATE DATA lr_profile_data TYPE ('OA2C_SX_OA2P_OBJECT_DATA').
|
|
ASSIGN lr_profile_data->* TO <ls_profile_data>.
|
|
|
|
io_xml->read( EXPORTING iv_name = 'PROFILE'
|
|
CHANGING cg_data = <ls_profile_data> ).
|
|
|
|
|
|
|
|
CREATE OBJECT lo_profile TYPE ('CL_OA2P_OBJECT_DATA').
|
|
CREATE DATA lr_wb TYPE REF TO ('IF_WB_OBJECT_DATA_MODEL').
|
|
ASSIGN lr_wb->* TO <lo_wb>.
|
|
<lo_wb> ?= lo_profile.
|
|
|
|
CALL METHOD lo_profile->('IF_WB_OBJECT_DATA_MODEL~SET_DATA')
|
|
EXPORTING
|
|
p_data = <ls_profile_data>.
|
|
|
|
CREATE OBJECT lo_persist TYPE ('CL_OA2P_OBJECT_PERSIST').
|
|
TRY.
|
|
CALL METHOD lo_persist->('IF_WB_OBJECT_PERSIST~SAVE')
|
|
EXPORTING
|
|
p_object_data = <lo_wb>. " Object Data
|
|
CATCH cx_swb_exception.
|
|
zcx_abapgit_exception=>raise( |Error deserialize profile { mv_profile }.| ).
|
|
ENDTRY.
|
|
|
|
tadir_insert( iv_package ).
|
|
|
|
corr_insert( iv_package ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~exists.
|
|
|
|
CALL METHOD ('CL_OA2P_OBJECT_PERSIST')=>('CHECK_EXISTS_ON_DB')
|
|
EXPORTING
|
|
i_profile = mv_profile
|
|
RECEIVING
|
|
r_exists = rv_bool.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_comparator.
|
|
RETURN.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_deserialize_order.
|
|
RETURN.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_deserialize_steps.
|
|
APPEND zif_abapgit_object=>gc_step_id-abap TO rt_steps.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~get_metadata.
|
|
rs_metadata = get_metadata( ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~is_active.
|
|
rv_active = is_active( ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~is_locked.
|
|
|
|
DATA: lv_profile_name TYPE eqegraarg,
|
|
lv_lock_number TYPE i,
|
|
lt_locks TYPE STANDARD TABLE OF seqg3.
|
|
|
|
lv_profile_name = mv_profile.
|
|
|
|
CALL FUNCTION 'ENQUEUE_READ'
|
|
EXPORTING
|
|
gclient = sy-mandt " Client
|
|
gname = 'OA2C_PROFILES' " Granularity name (-> table name)
|
|
garg = lv_profile_name " Granularity value(->values of key fields)
|
|
IMPORTING
|
|
number = lv_lock_number
|
|
TABLES
|
|
enq = lt_locks. " Number of chosen lock entries
|
|
|
|
|
|
rv_is_locked = boolc( lv_lock_number > 0 ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~jump.
|
|
" Covered by ZCL_ABAPGIT_OBJECTS=>JUMP
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~map_filename_to_object.
|
|
RETURN.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~map_object_to_filename.
|
|
RETURN.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD zif_abapgit_object~serialize.
|
|
|
|
DATA: lo_persist TYPE REF TO object,
|
|
lo_profile TYPE REF TO object,
|
|
lv_profile_key TYPE seu_objkey,
|
|
lr_profile_data TYPE REF TO data,
|
|
lr_wb TYPE REF TO data.
|
|
|
|
FIELD-SYMBOLS: <ls_profile_data> TYPE data,
|
|
<lo_specifics> TYPE any,
|
|
<lo_wb> TYPE any.
|
|
|
|
CREATE DATA lr_profile_data TYPE ('OA2C_SX_OA2P_OBJECT_DATA').
|
|
ASSIGN lr_profile_data->* TO <ls_profile_data>.
|
|
|
|
|
|
lv_profile_key = mv_profile.
|
|
CREATE OBJECT lo_persist TYPE ('CL_OA2P_OBJECT_PERSIST').
|
|
CREATE OBJECT lo_profile TYPE ('CL_OA2P_OBJECT_DATA').
|
|
CREATE DATA lr_wb TYPE REF TO ('IF_WB_OBJECT_DATA_MODEL').
|
|
ASSIGN lr_wb->* TO <lo_wb>.
|
|
<lo_wb> ?= lo_profile.
|
|
|
|
|
|
TRY.
|
|
CALL METHOD lo_persist->('IF_WB_OBJECT_PERSIST~GET')
|
|
EXPORTING
|
|
p_object_key = lv_profile_key " Object Key
|
|
p_version = 'A' " Version (Active/Inactive)
|
|
CHANGING
|
|
p_object_data = <lo_wb>. " Object Data
|
|
CATCH cx_swb_object_does_not_exist.
|
|
zcx_abapgit_exception=>raise( |OAuth2 Profile { lv_profile_key } doesn't exist.| ).
|
|
CATCH cx_swb_exception.
|
|
zcx_abapgit_exception=>raise( |Error when geting details of OAuth2 Profile { lv_profile_key }.| ).
|
|
ENDTRY.
|
|
|
|
"remove system specific information
|
|
lo_profile = <lo_wb>.
|
|
CALL METHOD lo_profile->('IF_WB_OBJECT_DATA_MODEL~SET_CHANGED_BY')
|
|
EXPORTING
|
|
p_user_name = ''.
|
|
CALL METHOD lo_profile->('IF_WB_OBJECT_DATA_MODEL~SET_CHANGED_ON')
|
|
EXPORTING
|
|
p_date = '00000000'
|
|
p_time = '000000'.
|
|
CALL METHOD lo_profile->('IF_WB_OBJECT_DATA_MODEL~SET_CREATED_BY')
|
|
EXPORTING
|
|
p_user_name = ''.
|
|
CALL METHOD lo_profile->('IF_WB_OBJECT_DATA_MODEL~SET_CREATED_ON')
|
|
EXPORTING
|
|
p_date = '00000000'
|
|
p_time = '000000'.
|
|
|
|
CALL METHOD lo_profile->('IF_WB_OBJECT_DATA_MODEL~GET_DATA')
|
|
IMPORTING
|
|
p_data = <ls_profile_data>.
|
|
|
|
"remove runtime information
|
|
ASSIGN COMPONENT 'O_SPECIFICS' OF STRUCTURE <ls_profile_data> TO <lo_specifics>.
|
|
CLEAR <lo_specifics>.
|
|
|
|
io_xml->add( iv_name = 'PROFILE'
|
|
ig_data = <ls_profile_data> ).
|
|
|
|
|
|
ENDMETHOD.
|
|
ENDCLASS.
|