Code listing for: ZBCTCODE
Description: 业务系统使用情况报表
*&---------------------------------------------------------------------*
*& Report ZBCTCODE
*&---------------------------------------------------------------------*
*&事务代码使用记录报表-权俊男
*&---------------------------------------------------------------------*
REPORT zbctcode.
TABLES:tstc,usr21.
include zbctcode_top.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE TEXT-002.
PARAMETERS:p_rb4 RADIOBUTTON GROUP rg2 DEFAULT 'X' USER-COMMAND g2,
p_rb5 RADIOBUTTON GROUP rg2,
p_rb6 RADIOBUTTON GROUP rg2.
SELECTION-SCREEN: END OF BLOCK b3.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:s_tcode FOR tstc-tcode MODIF ID s1,
s_uname FOR usr21-bname NO INTERVALS MODIF ID s2 MATCHCODE OBJECT user_addr,
s_date FOR sy-datum NO-EXTENSION NO INTERVALS MODIF ID s3 OBLIGATORY,
s_bedat FOR sy-datum NO-EXTENSION MODIF ID s4 OBLIGATORY DEFAULT sy-datum TO sy-datum,
s_betim FOR sy-uzeit NO-EXTENSION MODIF ID s4 NO-DISPLAY .
PARAMETERS: p_times RADIOBUTTON GROUP rg3 DEFAULT 'X' MODIF ID s4.
PARAMETERS: p_detail RADIOBUTTON GROUP rg3 MODIF ID s4.
PARAMETERS: p_all RADIOBUTTON GROUP rg3 MODIF ID s4.
PARAMETERS: p_back RADIOBUTTON GROUP rg3 MODIF ID s4.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_rb1 RADIOBUTTON GROUP rg1 USER-COMMAND g1 MODIF ID s3.
PARAMETERS: p_rb2 RADIOBUTTON GROUP rg1 MODIF ID s3.
PARAMETERS: p_rb3 RADIOBUTTON GROUP rg1 MODIF ID s3 DEFAULT 'X'.
SELECTION-SCREEN: END OF BLOCK b1.
INITIALIZATION.
s_date[] = VALUE #( ( sign = 'I' option = 'EQ' low = sy-datum - 1 ) ).
gs_layout = VALUE #( cwidth_opt = 'X' zebra = 'X' sel_mode = 'A' box_fname = ' ' ).
AT SELECTION-SCREEN OUTPUT.
PERFORM frm_mod_screen.
AT SELECTION-SCREEN .
PERFORM frm_check_data.
START-OF-SELECTION.
IF p_rb4 IS NOT INITIAL.
LOOP AT s_tcode .
IF ( s_tcode-low IS NOT INITIAL AND s_tcode-low NS 'Z' ) OR ( s_tcode-high IS NOT INITIAL AND s_tcode-high NS 'Z' ).
MESSAGE s001(00) WITH '仅支持查询自开发的应用程序!' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDLOOP.
SELECT tstc~tcode,tstct~ttext
INTO TABLE @DATA(gt_tstc) FROM tstc
LEFT JOIN tstct
ON tstc~tcode = tstct~tcode
AND tstct~sprsl = @sy-langu
WHERE tstc~tcode IN @s_tcode AND tstc~tcode LIKE 'Z%'.
ELSEIF p_rb5 IS NOT INITIAL.
SELECT tstc~tcode,tstct~ttext
INTO TABLE @gt_tstc FROM tstc
LEFT JOIN tstct
ON tstc~tcode = tstct~tcode
AND tstct~sprsl = @sy-langu
WHERE tstc~tcode IN @s_tcode .
ELSEIF p_rb6 IS NOT INITIAL."""登录次数
PERFORM frm_get_logon.
RETURN.
ENDIF.
IF sy-subrc <> 0.
MESSAGE s001(00) WITH '此事务代码不存在!' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
DATA component TYPE swnchostname.
DATA assigndsys TYPE swncsysid.
DATA periodtype TYPE swncperitype.
DATA periodstrt TYPE swncdatum.
DATA summary_only TYPE swnc_cflag.
DATA storage_type TYPE swnch_storage_type.
DATA factor TYPE swncdivfactor.
DATA tasktype TYPE STANDARD TABLE OF swncaggtasktype.
DATA tasktimes TYPE STANDARD TABLE OF swncaggtasktimes.
DATA times TYPE STANDARD TABLE OF swncaggtimes.
DATA dbprocs TYPE STANDARD TABLE OF swncaggdbprocs.
DATA extsystem TYPE STANDARD TABLE OF swncaggextsystem.
DATA tcdet TYPE STANDARD TABLE OF swncaggtcdet.
DATA frontend TYPE STANDARD TABLE OF swncaggfrontend.
DATA memory TYPE STANDARD TABLE OF swncaggmemory.
DATA spoolact TYPE STANDARD TABLE OF swncaggspoolact.
DATA tablerec TYPE STANDARD TABLE OF swncaggtablerec.
DATA usertcode TYPE STANDARD TABLE OF swncaggusertcode.
DATA userworkload TYPE STANDARD TABLE OF swncagguserworkload.
DATA rfcclnt TYPE STANDARD TABLE OF swncaggrfcclnt.
DATA rfcclntdest TYPE STANDARD TABLE OF swncaggrfcclntdest.
DATA rfcsrvr TYPE STANDARD TABLE OF swncaggrfcsrvr.
DATA rfcsrvrdest TYPE STANDARD TABLE OF swncaggrfcsrvrdest.
DATA spool TYPE STANDARD TABLE OF swncaggspool.
DATA hitlist_database TYPE STANDARD TABLE OF swnchitlist.
DATA hitlist_resptime TYPE STANDARD TABLE OF swnchitlist.
DATA astat TYPE STANDARD TABLE OF swncaggappstat.
DATA ashitl_database TYPE STANDARD TABLE OF swnchitlistappl.
DATA ashitl_resptime TYPE STANDARD TABLE OF swnchitlistappl.
DATA comp_hierarchy TYPE STANDARD TABLE OF swncaggcomphier.
DATA org_units TYPE STANDARD TABLE OF swncaggorgunit.
DATA dbcon TYPE STANDARD TABLE OF swncaggdbc.
DATA vmc TYPE STANDARD TABLE OF swncaggvmc.
DATA websd TYPE STANDARD TABLE OF swncaggwebdest.
DATA webcd TYPE STANDARD TABLE OF swncaggwebdest.
DATA webs TYPE STANDARD TABLE OF swncaggwebclnt.
DATA webc TYPE STANDARD TABLE OF swncaggwebclnt.
DATA trex TYPE STANDARD TABLE OF swncaggtrex.
DATA fe TYPE STANDARD TABLE OF swncaggfe.
component = 'TOTAL'.
IF p_rb1 IS NOT INITIAL.
periodtype = 'M'.
periodstrt = s_date-low.
ELSEIF p_rb2 IS NOT INITIAL.
periodtype = 'W'.
CALL FUNCTION 'GET_WEEK_INFO_BASED_ON_DATE'
EXPORTING
date = s_date-low
IMPORTING
* week = week
monday = periodstrt
* sunday = sunday
.
ELSEIF p_rb3 IS NOT INITIAL.
periodtype = 'D'.
periodstrt = s_date-low.
ENDIF.
CALL FUNCTION 'SWNC_COLLECTOR_GET_AGGREGATES'
EXPORTING
component = component
* assigndsys = sy-sysid
periodtype = periodtype
periodstrt = periodstrt
* summary_only = ' '
* storage_type = ' '
factor = 1000
TABLES
tasktype = tasktype
tasktimes = tasktimes
times = times
dbprocs = dbprocs
extsystem = extsystem
tcdet = tcdet
frontend = frontend
memory = memory
spoolact = spoolact
tablerec = tablerec
usertcode = usertcode
userworkload = userworkload
rfcclnt = rfcclnt
rfcclntdest = rfcclntdest
rfcsrvr = rfcsrvr
rfcsrvrdest = rfcsrvrdest
spool = spool
hitlist_database = hitlist_database
hitlist_resptime = hitlist_resptime
astat = astat
ashitl_database = ashitl_database
ashitl_resptime = ashitl_resptime
comp_hierarchy = comp_hierarchy
org_units = org_units
dbcon = dbcon
vmc = vmc
websd = websd
webcd = webcd
webs = webs
webc = webc
trex = trex
fe = fe
EXCEPTIONS
no_data_found = 1
OTHERS = 2.
SORT usertcode BY tasktype account entry_id.
TYPES:BEGIN OF ty_code,
* account TYPE swncuname,
entry_id TYPE swncentryid,
sum TYPE int4,
END OF ty_code.
DATA:gt_tcode TYPE TABLE OF ty_code,
gs_tcode LIKE LINE OF gt_tcode.
TYPES:BEGIN OF ty_user,
account TYPE swncuname,
entry_id TYPE swncentryid,
count TYPE swnccntagg,
END OF ty_user.
DATA:gt_user TYPE TABLE OF ty_user,
gs_user LIKE LINE OF gt_user.
IF p_rb4 IS NOT INITIAL.
DELETE usertcode WHERE tasktype <> '01' .
DELETE usertcode WHERE entry_id+72(1) <> 'T'.
ELSEIF p_rb5 IS NOT INITIAL.
IF s_uname[] IS NOT INITIAL.
DELETE usertcode WHERE account NOT IN s_uname[].
ENDIF.
ENDIF.
IF usertcode[] IS NOT INITIAL.
LOOP AT usertcode INTO DATA(lw) .
CLEAR lw-entry_id+72(1).
READ TABLE gt_tstc INTO DATA(lw_tstc) WITH KEY tcode = lw-entry_id.
IF sy-subrc = 0.
gt_user = VALUE #( BASE gt_user ( CORRESPONDING #( lw ) ) ).
MOVE-CORRESPONDING lw TO gs_tcode.
gs_tcode-sum = 1.
COLLECT gs_tcode INTO gt_tcode.
CLEAR:gs_tcode.
lw-account = space.
COLLECT lw INTO datatab.
CLEAR:lw.
ENDIF.
ENDLOOP.
ENDIF.
SORT gt_tcode BY entry_id.
IF p_rb4 IS NOT INITIAL.
include zbctcode_disp1.
ELSE.
include zbctcode_disp2.
ENDIF.
include zbctcode_frm.
*GUI Texts
*----------------------------------------------------------
* T001 --> &1&2
* T001 --> &1&2
*Text elements
*----------------------------------------------------------
* 001 查询条件
* 002 查询方式
*Selection texts
*----------------------------------------------------------
* P_ALL 查看全部明细
* P_BACK 查看后台表明细
* P_DETAIL 查看登录明细
* P_RB1 月
* P_RB2 周
* P_RB3 日
* P_RB4 按日期(自开发程序)
* P_RB5 按用户(自开发和标准程序)
* P_RB6 按用户操作
* P_TIMES 查看登录次数
* S_BEDAT 日期区间
* S_DATE 日期
* S_TCODE D .
* S_UNAME D .
*Messages
*----------------------------------------------------------
*
* Message class: 00
*001 &1&2&3&4&5&6&7&8
*
* Message class: ZMM01
*002 保存成功!
Extracted by Direct Download Enterprise version 1.3 - E.G.Mellodew. 1998-2004 UK. Sap Release 752