diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index ce2d916de..97aaf4f86 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -86,8 +86,8 @@ CLASS lcl_object_fugr IMPLEMENTATION. METHOD lif_object~has_changed_since. - DATA: lt_functab TYPE ty_rs38l_incl_tt, - lt_includes TYPE rso_t_objnm. + DATA: lt_functab TYPE ty_rs38l_incl_tt, + lt_includes TYPE rso_t_objnm. FIELD-SYMBOLS: LIKE LINE OF lt_functab, LIKE LINE OF lt_includes. @@ -117,7 +117,70 @@ CLASS lcl_object_fugr IMPLEMENTATION. ENDMETHOD. "lif_object~has_changed_since METHOD lif_object~changed_by. - rv_user = c_user_unknown. " todo + + TYPES: BEGIN OF ty_stamps, + user TYPE xubname, + date TYPE d, + time TYPE t, + END OF ty_stamps. + + DATA: lt_stamps TYPE STANDARD TABLE OF ty_stamps WITH DEFAULT KEY, + lv_program TYPE program, + lt_includes TYPE rso_t_objnm. + + FIELD-SYMBOLS: LIKE LINE OF lt_stamps, + LIKE LINE OF lt_includes. + + + lv_program = main_name( ). + + CALL FUNCTION 'RS_GET_ALL_INCLUDES' + EXPORTING + program = lv_program + TABLES + includetab = lt_includes + EXCEPTIONS + not_existent = 1 + no_program = 2 + OTHERS = 3. + IF sy-subrc <> 0. + lcx_exception=>raise( 'Error from RS_GET_ALL_INCLUDES' ). + ENDIF. + + SELECT unam AS user udat AS date utime AS time FROM reposrc + APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps + WHERE progname = lv_program + AND r3state = 'A'. + + LOOP AT lt_includes ASSIGNING . + SELECT unam AS user udat AS date utime AS time FROM reposrc + APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps + WHERE progname = + AND r3state = 'A'. + ENDLOOP. + + SELECT unam AS user udat AS date utime AS time FROM repotext " Program text pool + APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps + WHERE progname = lv_program + AND r3state = 'A'. + + SELECT vautor AS user vdatum AS date vzeit AS time FROM eudb " GUI + APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps + WHERE relid = 'CU' + AND name = lv_program + AND srtf2 = 0 ##TOO_MANY_ITAB_FIELDS. + +* Screens: username not stored in D020S database table + + SORT lt_stamps BY date DESCENDING time DESCENDING. + + READ TABLE lt_stamps INDEX 1 ASSIGNING . + IF sy-subrc = 0. + rv_user = -user. + ELSE. + rv_user = c_user_unknown. + ENDIF. + ENDMETHOD. METHOD lif_object~get_metadata.