Thursday, October 29, 2009

Report Program to find which transaction was used by which User in the past month.

REPORT YBAS_CHECK_TRANS_USE NO STANDARD PAGE HEADING LINE-SIZE 255.
*----------------------------------------------------------------------
*
* THIS CODE IS TO BE CHANGED ONLY ON DEV ECC !!
*----------------------------------------------------------------------
*
* PROGRAM INFORMATION
*----------------------------------------------------------------------
*
* DESCRIPTION   : Collect transaction usage info.
*
* NOTES         : Collects the usage of a transaction code for a period.
*
* APPLICATION   : BC
*
* RESTART       : Anytime
*
*----------------------------------------------------------------------
*
* MODIFICATION LOG
*----------------------------------------------------------------------
\
tables: usr21, adrp.

DATABEGIN OF SERVLIST OCCURS 25.
        
INCLUDE STRUCTURE MSXXLIST.
DATAEND OF SERVLIST.
DATABEGIN OF i_APPLICATION_STATISTIC OCCURS 5000.
        
INCLUDE STRUCTURE SAPWLUSTCX.
DATAEND OF i_APPLICATION_STATISTIC.

DATABEGIN OF I_trans_user OCCURS 100,
        entry_id  
like I_APPLICATION_STATISTIC-entry_id,
        account    
like usr21-bname.
DATAEND OF I_trans_user.

DATA: COLLECT_TIME LIKE SY-UZEIT.
DATA: COLLECT_DATE LIKE SY-DATUM.
DATA: CLEANUP_DATE LIKE SY-DATUM.

DATA: INSTANCE LIKE SAPWLSERV-NAME.
DATA: i_RECORD_COUNT(9).
DATA: i_RECORD_PROCESSED(9).
DATA: i_temp(80).
data: P_period(1).

PARAMETER: P_trans LIKE I_APPLICATION_STATISTIC-entry_id,
           P_sdate 
like sy-datum default SY-DATUM,
           P_day 
radiobutton group per,
           P_mon 
radiobutton group per default 'X',
           P_wk 
radiobutton group per.

START-
OF-SELECTION.

  
TRANSLATE P_trans TO UPPER CASE.
  COLLECT_DATE = SY-DATUM.
  COLLECT_TIME = SY-UZEIT.

if P_day = 'X'.
   P_period = 
'D'.
else.
   
if P_mon = 'X'.
      P_period = 
'M'.
   
else.
      P_period = 
'W'.
   
endif.
endif.

  
PERFORM GET_SERVER_LIST.
  
LOOP AT SERVLIST.
    
CLEAR INSTANCE.
    INSTANCE = SERVLIST-NAME.
    
PERFORM GET_TRANS_STATS.
    i_RECORD_COUNT = 
0.
    i_RECORD_PROCESSED = 
0.
    
LOOP AT i_APPLICATION_STATISTIC.
      
clear I_trans_user.
*      i_RECORD_COUNT = i_RECORD_COUNT + 1.
      if i_APPLICATION_STATISTIC-entry_id(20eq P_trans(20).
        I_trans_user-entry_id = i_APPLICATION_STATISTIC-entry_id(
20).
        I_trans_user-account = i_APPLICATION_STATISTIC-account.
        
append I_trans_user.
        i_RECORD_PROCESSED = i_RECORD_PROCESSED + 
1.
      
ENDIF.
    
ENDLOOP.
  
ENDLOOP.

  
write:/ 'Report YBAS_CHECK_TRANS_USE Rundate:', COLLECT_DATE, 'Runtime:',COLLECT_TIME.
  
write:/ 'Transaction: '14 P_trans, 24 'was executed by user(s):'.
  
uline.
  
loop at I_trans_user.
    
select * from usr21 where bname = I_trans_user-account.
      
if sy-subrc = 0.
        
select * from adrp where persnumber = usr21-persnumber.
          
if sy-subrc = 0.
          
clear i_temp.
          
concatenate adrp-name_first adrp-name_last into i_temp separated by ' '.
          
write:/ I_trans_user-account, ' - ', i_temp.
          
else.
            
write:/ I_trans_user-account, ' name not found.'.
          
endif.
          
endselect.
        
else.
          
write:/ I_trans_user-account, ' name not found.'.
        
endif.
        
endselect.
      
endloop.
      
uline.
      
write:/ 'Total users that executed this transaction:', i_RECORD_PROCESSED.

END-OF-SELECTION.
*
FORM GET_TRANS_STATS.

  
CALL FUNCTION 'SAPWL_WORKLOAD_GET_STATISTIC'
    EXPORTING
      PERIODTYPE                 = P_period
      HOSTID                     = 
' '
      STARTDATE                  = P_sDATE
      ONLY_APPLICATION_STATISTIC = 
'X'
      INSTANCE                   = INSTANCE
    
TABLES
      APPLICATION_STATISTIC      = i_APPLICATION_STATISTIC
    
EXCEPTIONS
      UNKNOWN_PERIODTYPE         = 1
      NO_DATA_FOUND              = 2
      NO_SERVER_GIVEN            = 3
      OTHERS                     = 4.

ENDFORM.                    "GET_TRANS_STATS

*&---------------------------------------------------------------------*
*&      Form  GET_SERVER_LIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GET_SERVER_LIST.

  
CALL FUNCTION 'TH_SERVER_LIST'
    TABLES
      LIST = SERVLIST.

ENDFORM.        .                    "GET_SERVER_LIST
 
 
 
Ankur
 
 

No comments: