SAP 系统响应时间监控

SAP PI系统响应时间监控, PI响应时间超出一定阈值,邮件提醒相关开发监控人员。

1. 系统响应时间监控

************************************************************************
* TRANSATION ID        :
* PROGRAM TITLE        : ZABR017
* AUTHOR               :
* SUPPLIER             :
* DATE                 :
* DEVELOPMENT ID       : ZABR017
* CHANGE REQUEST (CTS) :
* DESCRIPTION          :
*=======================================================================
* COPIED FROM         : (CLONED PROGRAM)
* TITLE               : (PROGRAM TITLE)
* OTHER RELATED OBJ   : (OBJECT NAMES)
*=======================================================================
* CHANGE HISTORY LOG
*-----------------------------------------------------------------------
* MOD. NO.|  DATE    | NAME           | CORRECTION NUMBER  | CHANGE REFE
*-----------------------------------------------------------------------
* MOD-001 |YYYY.MM.DD| XXXXXXXXXXXXXX | XXXXXXXXXX         | XXXXXXXXXX
*
* DESCRIPTION:
*-----------------------------------------------------------------------
* MOD-002 |YYYY.MM.DD| XXXXXXXXXXXXXX | XXXXXXXXXX         | XXXXXXXXXX
*
* DESCRIPTION:
************************************************************************
REPORT zabr017 MESSAGE-ID 00 NO STANDARD PAGE HEADING.

TABLES:adr6.

DATA lt_ztab014  TYPE TABLE OF ztab014.
DATA ls_ztab014  TYPE ztab014.

DATA intg_tbl TYPE TABLE OF salstintg WITH HEADER LINE.
DATA intg_tbl_pi TYPE TABLE OF salstintg WITH HEADER LINE.

DATA:intg_tbl_mail TYPE TABLE OF salstintg WITH HEADER LINE.

DATA:g_max_time TYPE int4.


*----------------------------------------------------------------------*
*                      SELECTION-SCREEN                                *
*----------------------------------------------------------------------*
PARAMETERS:
  p_time TYPE int4 DEFAULT 1000.
SELECT-OPTIONS:
  s_email FOR adr6-smtp_addr NO INTERVALS.

*----------------------------------------------------------------------*
*                      INITIALIZATION                                  *
*----------------------------------------------------------------------*
INITIALIZATION.

*--------------------------------------------------------------------- *
*                      AT SELECTION-SCREEN  OUTPUT                     *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.

*----------------------------------------------------------------------*
*                      AT SELECTION-SCREEN                             *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
*                      START-OF-SELECTION                              *
*----------------------------------------------------------------------*
START-OF-SELECTION.

  "报警响应时间
  g_max_time = p_time.

  CLEAR intg_tbl_mail[].


  "获取服务器列表
  CALL FUNCTION 'RZL_STRG_READALL_I'
    EXPORTING
      srvname  = 'MSGSERVER'
    TABLES
      intg_tbl = intg_tbl
    EXCEPTIONS
      OTHERS   = 01.


  "刷新每个服务器数据
  LOOP AT intg_tbl WHERE value1 = 7353.
    CALL FUNCTION 'RZL_STRG_DEL'
      EXPORTING
        srvname = intg_tbl-name
        name    = 'FAV_COMPUTE_LGIN'
        typ     = 'C'
      EXCEPTIONS
        OTHERS  = 01.

    CALL FUNCTION 'RZL_SUBMIT'
      DESTINATION intg_tbl-name
      EXPORTING
        repid  = 'RSRZLLG0'
      EXCEPTIONS
        OTHERS = 01.
  ENDLOOP.

  "重新获取最新的数据
  CLEAR intg_tbl[].

  CALL FUNCTION 'RZL_STRG_READALL_I'
    EXPORTING
      srvname  = 'MSGSERVER'
    TABLES
      intg_tbl = intg_tbl
    EXCEPTIONS
      OTHERS   = 01.


  LOOP AT intg_tbl WHERE value1 = 7353.   " AND VALUE5 = 3537.  "Yue

    IF intg_tbl-value2 > g_max_time.
      CLEAR intg_tbl_mail.
      intg_tbl_mail = intg_tbl.
      APPEND intg_tbl_mail.
    ENDIF.

  ENDLOOP.


  MESSAGE 'OK' TYPE 'S'.

  " 调用PI响应时间的逻辑。
  IF sy-sysid = 'EP1'.
    CALL FUNCTION 'ZGET_RES_TIME_PI0001'

     DESTINATION 'TO_PI_SYS'
      TABLES
        intg_tbl = intg_tbl_pi.
    LOOP AT intg_tbl_pi WHERE value1 = 7353.
      IF intg_tbl_pi-value2 > g_max_time.
        CLEAR intg_tbl_mail.
        intg_tbl_mail = intg_tbl_pi.
        APPEND intg_tbl_mail.
      ENDIF.
    ENDLOOP.
  ENDIF.

  IF intg_tbl_mail[] IS NOT INITIAL AND s_email[] IS NOT INITIAL.
    PERFORM frm_send_email.
  ENDIF.

*&---------------------------------------------------------------------*
*&      Form  FRM_SEND_EMAIL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_send_email .


  DATA: l_subject          TYPE so_obj_des,
        lr_email_body      TYPE REF TO cl_document_bcs,
        lr_email           TYPE REF TO cl_bcs,
        l_mail_address     TYPE adr6-smtp_addr,
        lr_receiver        TYPE REF TO cl_cam_address_bcs,
        l_sender           TYPE REF TO cl_sapuser_bcs,
        lo_cx_send_req_bcs TYPE REF TO cx_send_req_bcs,
        l_send_result      TYPE os_boolean.
  DATA: gt_mail_body TYPE soli_tab,
        wa_mail_body TYPE soli,
        lt_mail_body TYPE soli_tab.
  DATA: lt_pernr    TYPE zspl_pernr_t,
        ls_pernr    TYPE zspl_pernr,
        lt_pernr_cc TYPE zspl_pernr_t,
        ls_pernr_cc TYPE zspl_pernr.
  DATA: lo_mr_api      TYPE REF TO if_mr_api,
        lo_convert     TYPE REF TO cl_bcs_convert,
        lo_mime_helper TYPE REF TO cl_gbt_multirelated_service,
        lt_solix       TYPE solix_tab,
        l_len          TYPE so_obj_len,
        lv_is_folder   TYPE boole_d,
        lv_content     TYPE xstring,
        lv_loio        TYPE skwf_io.
  CONSTANTS:
    gc_tab  TYPE c VALUE cl_bcs_convert=>gc_tab,  "CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
    gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf. "CL_ABAP_CHAR_UTILITIES=>CR_LF

* 编辑邮件


  CLEAR wa_mail_body.
  wa_mail_body-line = '<html>'.
  APPEND wa_mail_body TO gt_mail_body.

  CLEAR wa_mail_body.
  wa_mail_body-line = '<head>'.
  APPEND wa_mail_body TO gt_mail_body.

  LOOP AT intg_tbl_mail.

    IF sy-tabix = 1.

      CLEAR wa_mail_body.
      wa_mail_body-line = '<meta http-equiv="Content-Type" content="text/html;charset=gb2312">'.
      APPEND wa_mail_body TO gt_mail_body.


      wa_mail_body-line = '<tr><th colspan="2">' && '应用服务器:' && intg_tbl_mail-name && ',响应时间超标(响应时间): ' && intg_tbl_mail-value2 &&   '</th></br></tr>'.
      APPEND wa_mail_body TO gt_mail_body.

      CLEAR wa_mail_body.
      wa_mail_body-line = '</head>'.
      APPEND wa_mail_body TO gt_mail_body.

      CLEAR wa_mail_body.
      wa_mail_body-line = '<body>'.
      APPEND wa_mail_body TO gt_mail_body.

      CONTINUE.
    ENDIF.


    wa_mail_body-line = '<tr><th colspan="2">' && '应用服务器:' && intg_tbl_mail-name && ',响应时间超标(响应时间): ' && intg_tbl_mail-value2 &&   '</th></br></tr>'..
    APPEND wa_mail_body TO gt_mail_body.
  ENDLOOP.

  CLEAR wa_mail_body.
  wa_mail_body-line = '</body>'.
  APPEND wa_mail_body TO gt_mail_body.

  CLEAR wa_mail_body.
  wa_mail_body-line = '</html>

远程模块,获取PI响应时间函数

2. 系统响应时间监控报表

REPORT ZABR015 MESSAGE-ID 00 NO STANDARD PAGE HEADING.

INCLUDE ZABR015_TOP.

INCLUDE ZABR015_SCR.

INCLUDE ZABR015_PBO.

INCLUDE ZABR015_PAI.

INCLUDE ZABR015_FRM.

START-OF-SELECTION.
  PERFORM FRM_GET_DATA.

  CALL SCREEN 0100. 

*&---------------------------------------------------------------------*
*&  包含                ZABR015_TOP
*&---------------------------------------------------------------------*
TABLES BKPF.

TYPES BEGIN OF TY_OUTTAB_0100.
TYPES DATUM       TYPE SY-DATUM.
TYPES ANSWTIME    TYPE I.
TYPES USERNR      TYPE I.
TYPES NUM         TYPE I.
TYPES ROWCOLOR    TYPE C LENGTH 4.
TYPES END OF TY_OUTTAB_0100.

DATA OK_CODE    TYPE SY-UCOMM.
DATA ZTABR014   TYPE TABLE OF ZTAB014.

DATA GO_GRID_0100       TYPE REF TO CL_GUI_ALV_GRID.
DATA GO_CONTAINER_0100  TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA GS_LAYOUT_0100     TYPE LVC_S_LAYO.
DATA GT_FIELDCAT_0100   TYPE LVC_T_FCAT.
DATA GT_EXCLUBAR_0100   TYPE UI_FUNCTIONS.
DATA GT_HYPERLINK_0100  TYPE LVC_T_HYPE.
DATA GT_SORT_0100       TYPE LVC_T_SORT.
DATA GT_OUTTAB_0100     TYPE TABLE OF TY_OUTTAB_0100.
 

*&---------------------------------------------------------------------*
*&  包含                ZABR015_SCR
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF SCREEN 0101 AS SUBSCREEN.
SELECT-OPTIONS S_BUDAT FOR BKPF-BUDAT.
SELECTION-SCREEN END OF SCREEN 0101.
 

*&---------------------------------------------------------------------*
*&  包含                ZABR015_PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
  SET PF-STATUS '0100'.
*  SET TITLEBAR 'xxx'.
ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  DATA_DISPLAY_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE DATA_DISPLAY_0100 OUTPUT.
  PERFORM FRM_ALV_DISPLAY_0100.
ENDMODULE.
 

*&---------------------------------------------------------------------*
*&  包含                ZABR015_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
  CASE OK_CODE.
    WHEN 'BACK' OR 'EXIT' OR 'CANL'.
      CLEAR OK_CODE. LEAVE TO SCREEN 0.
    WHEN 'SEARCH'.
      PERFORM FRM_GET_DATA.
  ENDCASE.

  CLEAR OK_CODE.
ENDMODULE.
 

*&---------------------------------------------------------------------*
*&  包含                ZABR015_FRM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*

FORM FRM_GET_DATA .
  DATA LS_OUTTAB_0100    TYPE TY_OUTTAB_0100.

  CLEAR GT_OUTTAB_0100.

  SELECT * INTO TABLE @DATA(LT_ZTABR014) FROM ZTAB014 WHERE DATUM IN @S_BUDAT.

  SORT LT_ZTABR014 BY DATUM.


  LOOP AT LT_ZTABR014 INTO DATA(LS_ZTABR014) .
    LS_OUTTAB_0100-DATUM    = LS_ZTABR014-DATUM.
    LS_OUTTAB_0100-ANSWTIME = LS_ZTABR014-ANSWTIME.
    LS_OUTTAB_0100-USERNR   = LS_ZTABR014-USERNR.
    LS_OUTTAB_0100-NUM      = 1.
    COLLECT LS_OUTTAB_0100 INTO GT_OUTTAB_0100.

    LS_OUTTAB_0100-DATUM    = ''.
    LS_OUTTAB_0100-ANSWTIME = LS_ZTABR014-ANSWTIME.
    LS_OUTTAB_0100-USERNR   = LS_ZTABR014-USERNR.
    LS_OUTTAB_0100-NUM      = 1.
    COLLECT LS_OUTTAB_0100 INTO GT_OUTTAB_0100.
  ENDLOOP.

  LOOP AT GT_OUTTAB_0100 ASSIGNING FIELD-SYMBOL(<FS>).
    <FS>-ANSWTIME = <FS>-ANSWTIME / <FS>-NUM.
    <FS>-USERNR   = <FS>-USERNR / <FS>-NUM  * 9.

    IF <FS>-DATUM = ''.
      <FS>-ROWCOLOR = 'C310'.
    ENDIF.
  ENDLOOP.

  SORT GT_OUTTAB_0100 BY DATUM ASCENDING.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_DISPLAY_0100
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_ALV_DISPLAY_0100 .
  DATA   LS_STBL TYPE LVC_S_STBL VALUE 'XX'.

  IF GO_CONTAINER_0100 IS INITIAL.
    CREATE OBJECT GO_CONTAINER_0100
      EXPORTING
        CONTAINER_NAME = 'CONTAINER_0100'.

    CREATE OBJECT GO_GRID_0100
      EXPORTING
        I_PARENT = GO_CONTAINER_0100.

    "格式设置
    PERFORM FRM_ALV_SET_LAYOUT_0100.

    "注册事件
*    PERFORM FRM_ALV_EVENT_REG_0100.

    "设置列属性
    PERFORM FRM_ALV_SET_FIELDCAT_0100.

    "去掉不需要的功能
    PERFORM FRM_ALV_EXCLUDE_FUNC_0100 USING GT_EXCLUBAR_0100.

    "ALV显示
    PERFORM FRM_ALV_FIRST_DISPLAY_0100 USING GO_GRID_0100.
  ELSE.
    GO_GRID_0100->REFRESH_TABLE_DISPLAY( IS_STABLE = LS_STBL ).
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_SET_LAYOUT_0100
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_ALV_SET_LAYOUT_0100 .
  GS_LAYOUT_0100-CWIDTH_OPT = SPACE.          "自动适用宽度
  GS_LAYOUT_0100-COL_OPT    = 'X'.
  GS_LAYOUT_0100-LANGUAGE   = '1'.            "语言
  GS_LAYOUT_0100-ZEBRA      = 'X'.            "斑马线显示
  GS_LAYOUT_0100-SEL_MODE   = SPACE.          "选择方式
  GS_LAYOUT_0100-INFO_FNAME = 'ROWCOLOR'.     "设置行颜色
  GS_LAYOUT_0100-CTAB_FNAME = 'CELLCOLORS'.   "设置单元格颜色
  GS_LAYOUT_0100-STYLEFNAME = 'CELLSTYLE'.    "设置单元格格式
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_SET_FIELDCAT_0100
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_ALV_SET_FIELDCAT_0100 .
  DATA LS_FIELDCAT_0100   TYPE LVC_S_FCAT.

  CLEAR: GT_FIELDCAT_0100.

  CLEAR LS_FIELDCAT_0100.
  LS_FIELDCAT_0100-FIELDNAME = 'DATUM'.
  LS_FIELDCAT_0100-REPTEXT   = '日期'.
  APPEND LS_FIELDCAT_0100 TO GT_FIELDCAT_0100.

  CLEAR LS_FIELDCAT_0100.
  LS_FIELDCAT_0100-FIELDNAME = 'ANSWTIME'.
  LS_FIELDCAT_0100-REPTEXT   = '平均响应时间'.
  APPEND LS_FIELDCAT_0100 TO GT_FIELDCAT_0100.

  CLEAR LS_FIELDCAT_0100.
  LS_FIELDCAT_0100-FIELDNAME = 'USERNR'.
  LS_FIELDCAT_0100-REPTEXT   = '平均用户数'.
  APPEND LS_FIELDCAT_0100 TO GT_FIELDCAT_0100.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_EXCLUDE_FUNC_0100
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GT_EXCLUBAR_0100  text
*----------------------------------------------------------------------*
FORM FRM_ALV_EXCLUDE_FUNC_0100  USING    IT_EXCLUBAR TYPE UI_FUNCTIONS.
  DATA LS_EXCLUDE TYPE UI_FUNC.

*  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW .
*  APPEND LS_EXCLUDE TO IT_EXCLUBAR.
*
*  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW .
*  APPEND LS_EXCLUDE TO IT_EXCLUBAR.
*
*  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW .
*  APPEND LS_EXCLUDE TO IT_EXCLUBAR.

  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW .
  APPEND LS_EXCLUDE TO IT_EXCLUBAR.

  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT .
  APPEND LS_EXCLUDE TO IT_EXCLUBAR.

  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY .
  APPEND LS_EXCLUDE TO IT_EXCLUBAR.

  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO .
  APPEND LS_EXCLUDE TO IT_EXCLUBAR.

  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_REFRESH .
  APPEND LS_EXCLUDE TO IT_EXCLUBAR.

  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_PRINT .
  APPEND LS_EXCLUDE TO IT_EXCLUBAR.

  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE .
  APPEND LS_EXCLUDE TO IT_EXCLUBAR.

  LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW .
  APPEND LS_EXCLUDE TO IT_EXCLUBAR.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_ALV_FIRST_DISPLAY_0100
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GO_GRID_0100  text
*----------------------------------------------------------------------*
FORM FRM_ALV_FIRST_DISPLAY_0100  USING   LCL_GRID TYPE REF TO CL_GUI_ALV_GRID.
  DATA LV_VARIANT TYPE  DISVARIANT.
  DATA LS_STBL    TYPE LVC_S_STBL VALUE 'XX'.

  LV_VARIANT-REPORT = SY-REPID.
  LV_VARIANT-USERNAME = SY-UNAME.

  CALL METHOD LCL_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      IS_LAYOUT            = GS_LAYOUT_0100            "显示格式
      IS_VARIANT           = LV_VARIANT                "变式布局
      IT_TOOLBAR_EXCLUDING = GT_EXCLUBAR_0100          "排除按钮
      IT_HYPERLINK         = GT_HYPERLINK_0100
      I_SAVE               = 'A'
    CHANGING
      IT_SORT              = GT_SORT_0100              "排序
      IT_FIELDCATALOG      = GT_FIELDCAT_0100          "显示列
      IT_OUTTAB            = GT_OUTTAB_0100.           "数据

  LCL_GRID->REFRESH_TABLE_DISPLAY( IS_STABLE = LS_STBL ).
ENDFORM.
 

TIPS: 设置ALV单元格颜色背景:ALV绑定内表data Type定义rowcolor颜色字段,layout设置行颜色,绑定内表时赋值颜色代码

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值