*
* This program creates a rank list of the most annoyed users (because of
* performance) of a specific day.
* A user is more annoyed if he has to wait a lot (average response time is high)
* many times (high number of dialog steps).
*
REPORT ZUSRANOY LINE-SIZE 120.
DATA: BEGIN OF APPLICATION_STATISTIC OCCURS 200.
INCLUDE STRUCTURE SAPWLUSTCX.
DATA: END OF APPLICATION_STATISTIC.
DATA: BEGIN OF INSTANCES OCCURS 10.
INCLUDE STRUCTURE RZLLIAPSRV.
DATA: END OF INSTANCES.
DATA: AVG_RESPTIM TYPE I, DEST(8), ANNOYANCE TYPE F, IANOY TYPE I, I
TYPE I.
DATA: BEGIN OF RESULT OCCURS 100,
ACCOUNT LIKE APPLICATION_STATISTIC-ACCOUNT,
ENTRY_ID LIKE APPLICATION_STATISTIC-ENTRY_ID,
DCOUNT LIKE APPLICATION_STATISTIC-DCOUNT,
RESPTI LIKE APPLICATION_STATISTIC-RESPTI,
AVG_RESPTIM TYPE I,
IANOY TYPE I,
END OF RESULT.
PARAMETERS: DATE TYPE D DEFAULT SY-DATUM.
CALL FUNCTION 'SMLG_GET_DEFINED_SERVERS'
TABLES: INSTANCES = INSTANCES.
INSTANCES = 'db_server_host_name'.
APPEND INSTANCES.
LOOP AT INSTANCES.
DEST = INSTANCES.
CALL FUNCTION 'SAPWL_WORKLOAD_GET_STATISTIC'
EXPORTING
PERIODTYPE = 'D'
HOSTID = DEST
STARTDATE = DATE
TABLES
APPLICATION_STATISTIC = APPLICATION_STATISTIC
EXCEPTIONS
NO_DATA_FOUND = 1.
LOOP AT APPLICATION_STATISTIC.
IF APPLICATION_STATISTIC-TTYPE = '01'
AND APPLICATION_STATISTIC-ACCOUNT <> 'SAP*'
AND APPLICATION_STATISTIC-ACCOUNT <> 'SAPSYS'
IF APPLICATION_STATISTIC-ENTRY_ID <> 'CPIC/RFC'
AND APPLICATION_STATISTIC-ENTRY_ID <> 'Login_Pw'
AND APPLICATION_STATISTIC-ENTRY_ID <> 'MainMenu'
AND APPLICATION_STATISTIC-ENTRY_ID <> 'Logoff'
AND APPLICATION_STATISTIC-ENTRY_ID <> 'SAPMSYST'.
AVG_RESPTIM =
APPLICATION_STATISTIC-RESPTI / APPLICATION_STATISTIC-DCOUNT.
MOVE-CORRESPONDING APPLICATION_STATISTIC TO RESULT.
IF AVG_RESPTIM < 1500. AVG_RESPTIM = 0. ENDIF.
RESULT-AVG_RESPTIM = AVG_RESPTIM.
ANNOYANCE = AVG_RESPTIM * AVG_RESPTIM *
AVG_RESPTIM * AVG_RESPTIM * APPLICATION_STATISTIC-DCOUNT *
APPLICATION_STATISTIC-DCOUNT * APPLICATION_STATISTIC-DCOUNT /
100000000000000000.
IANOY = ANNOYANCE.
RESULT-IANOY = IANOY.
APPEND RESULT.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
SORT RESULT BY IANOY DESCENDING.
WRITE: / 'USER' COLOR 4,
8 'PROGRAM/TRANSACTION' COLOR 4,
30 'DIALOG STEP #' COLOR 4,
46 'AVRG RESP TIME' COLOR 4,
64 'ANNOYANCE FACTOR' COLOR 4.
SKIP.
LOOP AT RESULT.
I = I + 1.
WRITE: / RESULT-ACCOUNT, RESULT-ENTRY_ID, 25(15) RESULT-DCOUNT,
47 RESULT-AVG_RESPTIM , 64 RESULT-IANOY.
IF I >= 30. EXIT. ENDIF.
ENDLOOP.