From cb08c70741ead5aaead7a2a6a0e45165ba7b41da Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Tue, 24 Oct 2023 00:48:26 -0400 Subject: [PATCH] Implement `changed_by` for several objects (#6554) Co-authored-by: Lars Hvam --- src/objects/zcl_abapgit_object_asfc.clas.abap | 2 +- src/objects/zcl_abapgit_object_cus0.clas.abap | 14 ++++++- src/objects/zcl_abapgit_object_cus1.clas.abap | 12 +++++- src/objects/zcl_abapgit_object_cus2.clas.abap | 12 +++++- src/objects/zcl_abapgit_object_dial.clas.abap | 4 +- src/objects/zcl_abapgit_object_ftgl.clas.abap | 10 ++++- src/objects/zcl_abapgit_object_iamu.clas.abap | 4 +- src/objects/zcl_abapgit_object_iarp.clas.abap | 8 +++- src/objects/zcl_abapgit_object_iatu.clas.abap | 8 +++- src/objects/zcl_abapgit_object_iaxu.clas.abap | 2 +- src/objects/zcl_abapgit_object_jobd.clas.abap | 33 ++++++++++++++++- src/objects/zcl_abapgit_object_pers.clas.abap | 8 +++- src/objects/zcl_abapgit_object_prag.clas.abap | 4 +- src/objects/zcl_abapgit_object_shi5.clas.abap | 2 +- src/objects/zcl_abapgit_object_shi8.clas.abap | 2 +- src/objects/zcl_abapgit_object_sppf.clas.abap | 2 +- src/objects/zcl_abapgit_object_sqsc.clas.abap | 15 +++++++- src/objects/zcl_abapgit_object_sucu.clas.abap | 2 +- src/objects/zcl_abapgit_object_susc.clas.abap | 2 +- src/objects/zcl_abapgit_object_suso.clas.abap | 6 ++- src/objects/zcl_abapgit_object_ucsa.clas.abap | 37 +++++++++++++++++-- 21 files changed, 157 insertions(+), 32 deletions(-) diff --git a/src/objects/zcl_abapgit_object_asfc.clas.abap b/src/objects/zcl_abapgit_object_asfc.clas.abap index 3aa1822db..692297b9a 100644 --- a/src/objects/zcl_abapgit_object_asfc.clas.abap +++ b/src/objects/zcl_abapgit_object_asfc.clas.abap @@ -32,7 +32,7 @@ CLASS zcl_abapgit_object_asfc IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + rv_user = c_user_unknown. " not stored by SAP ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_cus0.clas.abap b/src/objects/zcl_abapgit_object_cus0.clas.abap index 9edf0c6ce..55551124a 100644 --- a/src/objects/zcl_abapgit_object_cus0.clas.abap +++ b/src/objects/zcl_abapgit_object_cus0.clas.abap @@ -21,7 +21,7 @@ ENDCLASS. -CLASS ZCL_ABAPGIT_OBJECT_CUS0 IMPLEMENTATION. +CLASS zcl_abapgit_object_cus0 IMPLEMENTATION. METHOD constructor. @@ -35,7 +35,17 @@ CLASS ZCL_ABAPGIT_OBJECT_CUS0 IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + + DATA ls_header TYPE ty_img_activity-header. + + CALL FUNCTION 'S_CUS_IMG_ACTIVITY_READ' + EXPORTING + img_activity = mv_img_activity + IMPORTING + img_activity_header = ls_header. + + rv_user = ls_header-luser. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_cus1.clas.abap b/src/objects/zcl_abapgit_object_cus1.clas.abap index 4a9205d77..47b618570 100644 --- a/src/objects/zcl_abapgit_object_cus1.clas.abap +++ b/src/objects/zcl_abapgit_object_cus1.clas.abap @@ -46,7 +46,17 @@ CLASS zcl_abapgit_object_cus1 IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + + DATA ls_header TYPE ty_customzing_activity-activity_header. + + CALL FUNCTION 'S_CUS_ACTIVITY_READ' + EXPORTING + activity = mv_customizing_activity + IMPORTING + activity_header = ls_header. + + rv_user = ls_header-luser. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_cus2.clas.abap b/src/objects/zcl_abapgit_object_cus2.clas.abap index 44ef8c48e..724008107 100644 --- a/src/objects/zcl_abapgit_object_cus2.clas.abap +++ b/src/objects/zcl_abapgit_object_cus2.clas.abap @@ -46,7 +46,17 @@ CLASS zcl_abapgit_object_cus2 IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + + DATA ls_header TYPE ty_customizing_attribute-header. + + CALL FUNCTION 'S_CUS_ATTRIBUTES_READ' + EXPORTING + img_attribute = mv_img_attribute + IMPORTING + attribute_header = ls_header. + + rv_user = ls_header-luser. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_dial.clas.abap b/src/objects/zcl_abapgit_object_dial.clas.abap index 76d79a33f..ab04b97e8 100644 --- a/src/objects/zcl_abapgit_object_dial.clas.abap +++ b/src/objects/zcl_abapgit_object_dial.clas.abap @@ -24,9 +24,7 @@ CLASS zcl_abapgit_object_dial IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - - rv_user = c_user_unknown. - + rv_user = c_user_unknown. " not stored by SAP ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_ftgl.clas.abap b/src/objects/zcl_abapgit_object_ftgl.clas.abap index 25abbd157..7e0fc4177 100644 --- a/src/objects/zcl_abapgit_object_ftgl.clas.abap +++ b/src/objects/zcl_abapgit_object_ftgl.clas.abap @@ -63,7 +63,13 @@ CLASS zcl_abapgit_object_ftgl IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + + SELECT SINGLE changedby FROM ftgl_id INTO rv_user + WHERE feature_id = ms_item-obj_name AND version = 'A'. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. + ENDMETHOD. @@ -80,7 +86,7 @@ CLASS zcl_abapgit_object_ftgl IMPLEMENTATION. IF lv_return_code <> 0. zcx_abapgit_exception=>raise( |Cannot delete feature toggle { mv_toggle_id }. | - && |Error { sy-subrc } from cl_feature_toggle_object=>delete| ). + && |Error { sy-subrc } from cl_feature_toggle_object=>delete| ). ENDIF. corr_insert( iv_package ). diff --git a/src/objects/zcl_abapgit_object_iamu.clas.abap b/src/objects/zcl_abapgit_object_iamu.clas.abap index 1ccc5c865..4ce979b5c 100644 --- a/src/objects/zcl_abapgit_object_iamu.clas.abap +++ b/src/objects/zcl_abapgit_object_iamu.clas.abap @@ -259,9 +259,7 @@ CLASS zcl_abapgit_object_iamu IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - - rv_user = c_user_unknown. - + rv_user = read( )-attributes-chname. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iarp.clas.abap b/src/objects/zcl_abapgit_object_iarp.clas.abap index 2d4a68586..fb763b0c3 100644 --- a/src/objects/zcl_abapgit_object_iarp.clas.abap +++ b/src/objects/zcl_abapgit_object_iarp.clas.abap @@ -301,7 +301,13 @@ CLASS zcl_abapgit_object_iarp IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. " todo + + DATA ls_attributes TYPE w3resoattr. + + read( IMPORTING es_attributes = ls_attributes ). + + rv_user = ls_attributes-chname. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iatu.clas.abap b/src/objects/zcl_abapgit_object_iatu.clas.abap index b58719937..d5a3915c4 100644 --- a/src/objects/zcl_abapgit_object_iatu.clas.abap +++ b/src/objects/zcl_abapgit_object_iatu.clas.abap @@ -302,7 +302,13 @@ CLASS zcl_abapgit_object_iatu IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. " todo + + DATA ls_attributes TYPE w3tempattr. + + read( IMPORTING es_attr = ls_attributes ). + + rv_user = ls_attributes-chname. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iaxu.clas.abap b/src/objects/zcl_abapgit_object_iaxu.clas.abap index 6fc193a72..c64757858 100644 --- a/src/objects/zcl_abapgit_object_iaxu.clas.abap +++ b/src/objects/zcl_abapgit_object_iaxu.clas.abap @@ -205,7 +205,7 @@ CLASS zcl_abapgit_object_iaxu IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. " todo + rv_user = read( )-chname. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_jobd.clas.abap b/src/objects/zcl_abapgit_object_jobd.clas.abap index 97ad5c7e9..c4208b2a7 100644 --- a/src/objects/zcl_abapgit_object_jobd.clas.abap +++ b/src/objects/zcl_abapgit_object_jobd.clas.abap @@ -16,7 +16,35 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + DATA: lr_job_definition TYPE REF TO data, + lo_job_definition TYPE REF TO object, + lv_name TYPE ty_jd_name. + + FIELD-SYMBOLS: TYPE any, + TYPE any. + + lv_name = ms_item-obj_name. + + TRY. + CREATE DATA lr_job_definition TYPE ('CL_JR_JOB_DEFINITION=>TY_JOB_DEFINITION'). + ASSIGN lr_job_definition->* TO . + ASSERT sy-subrc = 0. + + CREATE OBJECT lo_job_definition TYPE ('CL_JR_JOB_DEFINITION') + EXPORTING + im_jd_name = lv_name. + + CALL METHOD lo_job_definition->('GET_JD_ATTRIBUTES') + IMPORTING + ex_jd_attributes = . + + ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . + IF sy-subrc = 0. + rv_user = . + ENDIF. + + CATCH cx_root ##NO_HANDLER. + ENDTRY. ENDMETHOD. @@ -212,6 +240,9 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION. ASSIGN COMPONENT 'CREATED_TIME' OF STRUCTURE TO . CLEAR . + ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE TO . + CLEAR . + ASSIGN COMPONENT 'CHANGED_DATE' OF STRUCTURE TO . CLEAR . diff --git a/src/objects/zcl_abapgit_object_pers.clas.abap b/src/objects/zcl_abapgit_object_pers.clas.abap index 0435491a0..3f09423f8 100644 --- a/src/objects/zcl_abapgit_object_pers.clas.abap +++ b/src/objects/zcl_abapgit_object_pers.clas.abap @@ -69,7 +69,13 @@ CLASS zcl_abapgit_object_pers IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + + SELECT SINGLE author FROM spers_reg INTO rv_user + WHERE pers_key = ms_item-obj_name. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_prag.clas.abap b/src/objects/zcl_abapgit_object_prag.clas.abap index 275b5d5cd..4a7038a80 100644 --- a/src/objects/zcl_abapgit_object_prag.clas.abap +++ b/src/objects/zcl_abapgit_object_prag.clas.abap @@ -20,9 +20,7 @@ CLASS zcl_abapgit_object_prag IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - - rv_user = c_user_unknown. - + rv_user = c_user_unknown. " not stored by SAP ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_shi5.clas.abap b/src/objects/zcl_abapgit_object_shi5.clas.abap index 62c26b954..0993cd5e2 100644 --- a/src/objects/zcl_abapgit_object_shi5.clas.abap +++ b/src/objects/zcl_abapgit_object_shi5.clas.abap @@ -37,7 +37,7 @@ CLASS zcl_abapgit_object_shi5 IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + rv_user = c_user_unknown. " not stored by SAP ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_shi8.clas.abap b/src/objects/zcl_abapgit_object_shi8.clas.abap index af15b987a..48de50dd9 100644 --- a/src/objects/zcl_abapgit_object_shi8.clas.abap +++ b/src/objects/zcl_abapgit_object_shi8.clas.abap @@ -29,7 +29,7 @@ CLASS zcl_abapgit_object_shi8 IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + rv_user = c_user_unknown. " not stored by SAP ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_sppf.clas.abap b/src/objects/zcl_abapgit_object_sppf.clas.abap index d79030f0c..4f3001c34 100644 --- a/src/objects/zcl_abapgit_object_sppf.clas.abap +++ b/src/objects/zcl_abapgit_object_sppf.clas.abap @@ -32,7 +32,7 @@ CLASS zcl_abapgit_object_sppf IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + rv_user = c_user_unknown. " not stored by SAP ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_sqsc.clas.abap b/src/objects/zcl_abapgit_object_sqsc.clas.abap index 41ab93822..b8d5f2f89 100644 --- a/src/objects/zcl_abapgit_object_sqsc.clas.abap +++ b/src/objects/zcl_abapgit_object_sqsc.clas.abap @@ -166,7 +166,20 @@ CLASS zcl_abapgit_object_sqsc IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + + DATA lx_error TYPE REF TO cx_root. + + TRY. + CALL METHOD mo_proxy->('IF_DBPROC_PROXY_UI~READ_FROM_SOURCE') + EXPORTING + if_version = 'A' + IMPORTING + ef_change_user = rv_user. + + CATCH cx_root INTO lx_error. + zcx_abapgit_exception=>raise_with_text( lx_error ). + ENDTRY. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_sucu.clas.abap b/src/objects/zcl_abapgit_object_sucu.clas.abap index e4d774a7f..723496091 100644 --- a/src/objects/zcl_abapgit_object_sucu.clas.abap +++ b/src/objects/zcl_abapgit_object_sucu.clas.abap @@ -32,7 +32,7 @@ CLASS zcl_abapgit_object_sucu IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + rv_user = c_user_unknown. " not stored by SAP ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_susc.clas.abap b/src/objects/zcl_abapgit_object_susc.clas.abap index 11dca2d40..5ce42a8c3 100644 --- a/src/objects/zcl_abapgit_object_susc.clas.abap +++ b/src/objects/zcl_abapgit_object_susc.clas.abap @@ -121,7 +121,7 @@ CLASS zcl_abapgit_object_susc IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. " todo + rv_user = c_user_unknown. " not stored by SAP ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_suso.clas.abap b/src/objects/zcl_abapgit_object_suso.clas.abap index 40bff434a..ae8b2b511 100644 --- a/src/objects/zcl_abapgit_object_suso.clas.abap +++ b/src/objects/zcl_abapgit_object_suso.clas.abap @@ -178,7 +178,11 @@ CLASS zcl_abapgit_object_suso IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. " todo + SELECT SINGLE modifier FROM tobjvor INTO rv_user + WHERE objct = mv_objectname. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_ucsa.clas.abap b/src/objects/zcl_abapgit_object_ucsa.clas.abap index 5e334dd61..0d995871f 100644 --- a/src/objects/zcl_abapgit_object_ucsa.clas.abap +++ b/src/objects/zcl_abapgit_object_ucsa.clas.abap @@ -99,7 +99,38 @@ CLASS zcl_abapgit_object_ucsa IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = c_user_unknown. + DATA: lv_id TYPE ty_id, + lx_root TYPE REF TO cx_root, + lo_persistence TYPE REF TO object, + lr_complete_comm_assembly TYPE REF TO data. + + FIELD-SYMBOLS: TYPE any, + TYPE any. + + lv_id = ms_item-obj_name. + + TRY. + CREATE DATA lr_complete_comm_assembly TYPE ('UCONSERVASCOMPLETE'). + ASSIGN lr_complete_comm_assembly->* TO . + ASSERT sy-subrc = 0. + + lo_persistence = get_persistence( lv_id ). + + CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~LOAD') + EXPORTING + version = c_version-active + language = mv_language + IMPORTING + sa = . + + ASSIGN COMPONENT 'CHANGEDBY' OF STRUCTURE TO . + IF sy-subrc = 0. + rv_user = . + ENDIF. + + CATCH cx_root INTO lx_root. + zcx_abapgit_exception=>raise_with_text( lx_root ). + ENDTRY. ENDMETHOD. @@ -250,7 +281,6 @@ CLASS zcl_abapgit_object_ucsa IMPLEMENTATION. DATA: lv_id TYPE ty_id, lx_root TYPE REF TO cx_root, - lv_text TYPE string, lo_persistence TYPE REF TO object, lr_complete_comm_assembly TYPE REF TO data. @@ -279,8 +309,7 @@ CLASS zcl_abapgit_object_ucsa IMPLEMENTATION. ig_data = ). CATCH cx_root INTO lx_root. - lv_text = lx_root->get_text( ). - zcx_abapgit_exception=>raise( lv_text ). + zcx_abapgit_exception=>raise_with_text( lx_root ). ENDTRY. ENDMETHOD.