Purpose: Get total count of all work-processes system-wide,
FUNCTION Z_GET_WP_COUNT.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(FREE) LIKE T000-CCCATEGORY OPTIONAL
*" TABLES
*" Z_ITAB STRUCTURE LISTZEILE
*" EXCEPTIONS
*" NO_AUTHORIZATION
*"----------------------------------------------------------------------
DATA: D_B TYPE I VALUE 0,U_B TYPE I VALUE 0,B_B TYPE I VALUE 0,
S_B TYPE I VALUE 0,U2_B TYPE I VALUE 0,E_B TYPE I VALUE 0.
DATA: D_T LIKE PROFPARAM-VALUE,
E_T LIKE PROFPARAM-VALUE,
U_T LIKE PROFPARAM-VALUE,
U2_T LIKE PROFPARAM-VALUE,
B_T LIKE PROFPARAM-VALUE,
S_T LIKE PROFPARAM-VALUE.
DATA: D_TOTAL TYPE I VALUE 0,
E_TOTAL TYPE I VALUE 0,
U_TOTAL TYPE I VALUE 0,
U2_TOTAL TYPE I VALUE 0,
B_TOTAL TYPE I VALUE 0,
S_TOTAL TYPE I VALUE 0.
DATA: DIA_FREE(3),UPD_FREE(3), UPD2_FREE(3),
BTC_FREE(3),SPO_FREE(3),ENQ_FREE(2).
DATA: BEGIN OF WP_STRUCT OCCURS 10,
INST LIKE WPINFO-WP_SERVER,DIA(3),UPD(3), UPD2(3),BTC(3),
SPO(3),
END OF WP_STRUCT.
DATA:INSTANCE_NAME LIKE WPINFO-WP_SERVER.
PERFORM GET_SERVER_LIST.
LOOP AT SRV_TBL.
CALL FUNCTION 'Z_READ_INSTANCE_PROFILE'
EXPORTING
APPSERVER = SRV_TBL-NAME
IMPORTING
DIA = D_T
ENQ = E_T
UPD = U_T
UPD2 = U2_T
BTC = B_T
SPO = S_T
EXCEPTIONS
OTHERS = 1.
* accumalate total wps across all apps. servers
D_TOTAL = D_TOTAL + D_T.
E_TOTAL = E_TOTAL + E_T.
U_TOTAL = U_TOTAL + U_T.
U2_TOTAL = U2_TOTAL + U2_T.
B_TOTAL = B_TOTAL + B_T.
S_TOTAL = S_TOTAL + S_T.
IF FREE = 'Y'. " Count free processes (total - used)
CALL FUNCTION 'TH_WPINFO'
EXPORTING
WITH_CPU = 00
TABLES
WPLIST = WPLIST
EXCEPTIONS
ARGUMENT_ERROR = 01
SEND_ERROR = 02.
* perform set_wp_status_texts.
LOOP AT WPLIST.
IF ( WPLIST-WP_ISTATUS = 4 OR
WPLIST-WP_ISTATUS = 8 OR
WPLIST-WP_ISTATUS = 16 ).
CASE WPLIST-WP_ITYPE.
WHEN 1.
D_B = D_B + 1.
WHEN 2.
U_B = U_B + 1.
WHEN 3.
E_B = E_B + 1.
WHEN 4.
B_B = B_B + 1.
WHEN 5.
S_B = S_B + 1.
WHEN 6.
U2_B = U2_B + 1.
ENDCASE.
ENDIF.
ENDLOOP.
DIA_FREE = D_TOTAL - D_B.
ENQ_FREE = E_TOTAL - E_B.
UPD_FREE = U_TOTAL - U_B.
UPD2_FREE = U2_TOTAL - U2_B.
BTC_FREE = B_TOTAL - B_B.
SPO_FREE = S_TOTAL - S_B.
ELSE. " Count total processes by instance
WP_STRUCT-INST = SRV_TBL-NAME.
WP_STRUCT-DIA = D_TOTAL.
WP_STRUCT-UPD = U_TOTAL.
WP_STRUCT-UPD2 = U2_TOTAL.
WP_STRUCT-BTC = B_TOTAL.
WP_STRUCT-SPO = S_TOTAL.
APPEND WP_STRUCT.
ENDIF.
ENDLOOP.
IF FREE = 'Y'.
CONCATENATE 'SAPWPC'
DIA_FREE
ENQ_FREE
UPD_FREE
UPD2_FREE
BTC_FREE
SPO_FREE
INTO Z_ITAB-ZEILE SEPARATED BY SPACE.
APPEND Z_ITAB.
ELSE.
LOOP AT WP_STRUCT.
CONCATENATE 'SAPWPC'
WP_STRUCT-INST
WP_STRUCT-DIA
WP_STRUCT-UPD
WP_STRUCT-UPD2
WP_STRUCT-BTC
WP_STRUCT-SPO
INTO Z_ITAB-ZEILE SEPARATED BY SPACE.
APPEND Z_ITAB.
ENDLOOP.
ENDIF.
ENDFUNCTION.