From 83e43dfc0459b6a0cd7672318dbff673fa040a53 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Wed, 16 Aug 2023 09:01:16 -0400 Subject: [PATCH] IWOM/IWPR/TRAN: Implement `changed_by` (#6411) --- src/objects/zcl_abapgit_object_aqbg.clas.abap | 2 +- src/objects/zcl_abapgit_object_aqqu.clas.abap | 2 +- src/objects/zcl_abapgit_object_aqsg.clas.abap | 2 +- src/objects/zcl_abapgit_object_asfc.clas.abap | 2 +- src/objects/zcl_abapgit_object_iwom.clas.abap | 8 +++++++- src/objects/zcl_abapgit_object_iwpr.clas.abap | 8 +++++++- src/objects/zcl_abapgit_object_iwsg.clas.abap | 2 +- src/objects/zcl_abapgit_object_sppf.clas.abap | 2 +- src/objects/zcl_abapgit_object_sucu.clas.abap | 2 +- src/objects/zcl_abapgit_object_tran.clas.abap | 16 ++++++++++++++-- 10 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/objects/zcl_abapgit_object_aqbg.clas.abap b/src/objects/zcl_abapgit_object_aqbg.clas.abap index a410ea504..965e86a17 100644 --- a/src/objects/zcl_abapgit_object_aqbg.clas.abap +++ b/src/objects/zcl_abapgit_object_aqbg.clas.abap @@ -69,7 +69,7 @@ CLASS zcl_abapgit_object_aqbg IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. SELECT SINGLE bgunam FROM aqgdbbg INTO rv_user WHERE num = ms_item-obj_name. IF sy-subrc <> 0. - rv_user = zcl_abapgit_objects_super=>c_user_unknown. + rv_user = c_user_unknown. ENDIF. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_aqqu.clas.abap b/src/objects/zcl_abapgit_object_aqqu.clas.abap index 635adad3d..e34b5b3f6 100644 --- a/src/objects/zcl_abapgit_object_aqqu.clas.abap +++ b/src/objects/zcl_abapgit_object_aqqu.clas.abap @@ -46,7 +46,7 @@ CLASS zcl_abapgit_object_aqqu IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = zcl_abapgit_objects_super=>c_user_unknown. + rv_user = c_user_unknown. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_aqsg.clas.abap b/src/objects/zcl_abapgit_object_aqsg.clas.abap index 66a416021..3ae816885 100644 --- a/src/objects/zcl_abapgit_object_aqsg.clas.abap +++ b/src/objects/zcl_abapgit_object_aqsg.clas.abap @@ -46,7 +46,7 @@ CLASS zcl_abapgit_object_aqsg IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = zcl_abapgit_objects_super=>c_user_unknown. + rv_user = c_user_unknown. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_asfc.clas.abap b/src/objects/zcl_abapgit_object_asfc.clas.abap index 785c7d911..3aa1822db 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 = zcl_abapgit_objects_super=>c_user_unknown. + rv_user = c_user_unknown. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iwom.clas.abap b/src/objects/zcl_abapgit_object_iwom.clas.abap index d87cff0b1..bdabf98ed 100644 --- a/src/objects/zcl_abapgit_object_iwom.clas.abap +++ b/src/objects/zcl_abapgit_object_iwom.clas.abap @@ -57,7 +57,13 @@ CLASS zcl_abapgit_object_iwom IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = zcl_abapgit_objects_super=>c_user_unknown. + + SELECT SINGLE changed_by FROM ('/IWFND/I_MED_OHD') INTO rv_user + WHERE model_identifier = ms_item-obj_name. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iwpr.clas.abap b/src/objects/zcl_abapgit_object_iwpr.clas.abap index f427f8d84..1701dc6ec 100644 --- a/src/objects/zcl_abapgit_object_iwpr.clas.abap +++ b/src/objects/zcl_abapgit_object_iwpr.clas.abap @@ -57,7 +57,13 @@ CLASS zcl_abapgit_object_iwpr IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. - rv_user = zcl_abapgit_objects_super=>c_user_unknown. + + SELECT SINGLE last_chg_user_id FROM ('/IWBEP/I_SBD_PR') INTO rv_user + WHERE project = ms_item-obj_name. + IF sy-subrc <> 0. + rv_user = c_user_unknown. + ENDIF. + ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_iwsg.clas.abap b/src/objects/zcl_abapgit_object_iwsg.clas.abap index fe3f1f176..9f2646964 100644 --- a/src/objects/zcl_abapgit_object_iwsg.clas.abap +++ b/src/objects/zcl_abapgit_object_iwsg.clas.abap @@ -63,7 +63,7 @@ CLASS zcl_abapgit_object_iwsg IMPLEMENTATION. SELECT SINGLE changed_by FROM ('/IWFND/I_MED_SRH') INTO rv_user WHERE srv_identifier = ms_item-obj_name. IF sy-subrc <> 0. - rv_user = zcl_abapgit_objects_super=>c_user_unknown. + rv_user = c_user_unknown. ENDIF. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_sppf.clas.abap b/src/objects/zcl_abapgit_object_sppf.clas.abap index 8448c470b..d79030f0c 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 = zcl_abapgit_objects_super=>c_user_unknown. + rv_user = c_user_unknown. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_sucu.clas.abap b/src/objects/zcl_abapgit_object_sucu.clas.abap index c4b18bd81..e4d774a7f 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 = zcl_abapgit_objects_super=>c_user_unknown. + rv_user = c_user_unknown. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_tran.clas.abap b/src/objects/zcl_abapgit_object_tran.clas.abap index 7451ced2c..2807ae8d6 100644 --- a/src/objects/zcl_abapgit_object_tran.clas.abap +++ b/src/objects/zcl_abapgit_object_tran.clas.abap @@ -634,8 +634,20 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION. METHOD zif_abapgit_object~changed_by. -* looks like "changed by user" is not stored in the database - rv_user = c_user_unknown. + " Changed-by-user is not stored in transaction metadata + " Instead, use owner of last transport or object directory + + DATA lv_transport TYPE trkorr. + + lv_transport = zcl_abapgit_factory=>get_cts_api( )->get_transport_for_object( ms_item ). + + IF lv_transport IS NOT INITIAL. + SELECT SINGLE as4user FROM e070 INTO rv_user WHERE trkorr = lv_transport. + ELSE. + SELECT SINGLE author FROM tadir INTO rv_user + WHERE pgmid = 'R3TR' AND object = ms_item-obj_type AND obj_name = ms_item-obj_name. + ENDIF. + ENDMETHOD.