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