且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用ABAP代码打印出某个用户某个时间段内使用过哪些SAP事务码

更新时间:2022-08-22 13:23:50

REPORT zusertcode.

 

 

PARAMETER: month TYPE dats DEFAULT sy-datum OBLIGATORY,

 

          user type usr02-bname OBLIGATORY DEFAULT sy-uname.

 

 

TYPES: BEGIN OF zusertcode,

 

        operation type char30,

 

        type type char10,

 

        count  TYPE swncshcnt,

 

      END OF zusertcode.

 

 

TYPES: tt_zusertcode TYPE STANDARD TABLE OF zusertcode WITH KEY operation type.

 

 

DATA: lt_usertcode  TYPE swnc_t_aggusertcode,

 

     wa_usertcode TYPE swncaggusertcode,

 

     wa           TYPE zusertcode,

 

     t_ut         TYPE tt_zusertcode,

 

     ls_result    TYPE zusertcode,

 

     lt_result     TYPE tt_zusertcode.

 

 

CONSTANTS: cv_tcode TYPE char30 VALUE 'Tcode',

 

          cv_report TYPE char30 VALUE 'Report',

 

          cv_count TYPE char5 value 'Count'.

 

 

START-OF-SELECTION.

 

* Set date to the first day of the month

 

 "month+6(2) = '01'.

 

 CALL FUNCTION 'SWNC_COLLECTOR_GET_AGGREGATES'

 

   EXPORTING

 

     component     = 'TOTAL'

 

     periodtype    = 'M'

 

     periodstrt    = month

 

   TABLES

 

     usertcode     = lt_usertcode

 

   EXCEPTIONS

 

     no_data_found = 1

 

     OTHERS        = 2.

 

 

 DELETE lt_usertcode WHERE tasktype <> '01'.

 

 

 LOOP AT lt_usertcode ASSIGNING FIELD-SYMBOL() WHERE account = user.

 

    CLEAR: ls_result.

 

    ls_result-operation = -entry_id.

 

    ls_result-type = -entry_id+72.

 

    ls_result-count = -count.

 

    COLLECT ls_result INTO lt_result.

 

 ENDLOOP.

 

 

 SORT lt_result BY count DESCENDING.

 

 

 WRITE:  10 cv_tcode, 20 cv_report, 60 cv_count COLOR COL_NEGATIVE.

 

 LOOP AT lt_result ASSIGNING FIELD-SYMBOL().

 

     IF -type = 'T'.

 

       WRITE: / -operation COLOR COL_TOTAL UNDER cv_tcode,

 

                -count COLOR COL_POSITIVE UNDER cv_count.

 

     ELSE.

 

       WRITE: / -operation COLOR COL_GROUP UNDER cv_report,

 

                -count COLOR COL_POSITIVE UNDER cv_count.

 

     ENDIF.

 

 ENDLOOP.