天天看點

使用ABAP代碼列印出某個使用者某個時間段内使用過哪些SAP事務碼

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,

     ENDIF.

繼續閱讀