ABAP接口日志查询程序.docx
《ABAP接口日志查询程序.docx》由会员分享,可在线阅读,更多相关《ABAP接口日志查询程序.docx(14页珍藏版)》请在冰豆网上搜索。
ABAP接口日志查询程序
*&---------------------------------------------------------------------*
*& Report ZMME_LOG
*&
*&---------------------------------------------------------------------*
*&
*&说明:
配置表ZTMM_LOG_CONF中的主键字段名和消息字段名以“,”隔开
*&---------------------------------------------------------------------*
REPORT zmme_log.
TABLES:
syst,zsmm_log.
*&---------------------------------------------------------------------*
* TYPES
*&---------------------------------------------------------------------*
TYPE-POOLS:
slis."ALV
TYPE-POOLS:
icon."图标
TYPE-POOLS:
bkkdc."域文本
TYPE-POOLS:
abap.
TYPES BEGIN OF ty_itab.
TYPES status(4) TYPE c. "状态(红绿灯)
INCLUDE TYPE zsmm_log.
TYPES:
stext TYPE functext.
TYPES END OF ty_itab.
TYPES:
BEGIN OF ty_fname,
value TYPE fdname,
END OF ty_fname.
TYPES:
BEGIN OF ty_fvalue,
value TYPE char20,
END OF ty_fvalue.
*&---------------------------------------------------------------------*
* CONSTANTS
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* GLOBAL DATA
*&---------------------------------------------------------------------*
DATA:
gv_repid TYPE sy-repid.
*&---------------------------------------------------------------------*
* GLOBAL INTERNAL TABLES
*&---------------------------------------------------------------------*
DATA:
gwa_log_conf TYPE ztmm_log_conf,
gt_log_conf TYPE TABLE OF ztmm_log_conf.
DATA:
gt_itab TYPE TABLE OF ty_itab,
gwa_itab TYPE ty_itab.
"ALV相关变量
DATA:
gt_fieldcat TYPE lvc_t_fcat,
gwa_layout TYPE lvc_s_layo,
gt_event_exit TYPE slis_t_event_exit.
DATA:
gt_component_tab TYPE abap_component_tab,
gs_component_desc TYPE LINE OF abap_component_tab,
gr_struc_type TYPE REF TO cl_abap_structdescr,
gr_tab_type TYPE REF TO cl_abap_tabledescr,
gr_struc TYPE REF TO data,
gr_tab TYPE REF TO data,
ld_comp(40) TYPE c.
FIELD-SYMBOLS:
TYPE any,
TYPE table.
*&---------------------------------------------------------------------*
* GLOBAL RANGES
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* SELECTION-SCREEN
*&---------------------------------------------------------------------*
SELECT-OPTIONS:
s_zfname FOR zsmm_log-zfname MATCHCODE OBJECT zmm_sh_interface,"接口名称
s_datum FOR syst-datum, "日期
s_uzeit FOR syst-uzeit, "时间
s_zitype FOR zsmm_log-zitype, "接口类型
s_rtype FOR zsmm_log-rtype. "状态
**&---------------------------------------------------------------------*
** GLOBAL MACROS
**&---------------------------------------------------------------------*
*
**&---------------------------------------------------------------------*
** EVENTS BEFORE MAIN PROGRAM
**&---------------------------------------------------------------------*
*INITIALIZATION.
* PERFORM frm_initprogm. "程序初始化
*
**AT SELECTION-SCREEN OUTPUT.
*
**AT SELECTION-SCREEN ON VALUE-REQUEST FOR.
*
**AT SELECTION-SCREEN.
*
**TOP-OF-PAGE.
*
*&---------------------------------------------------------------------*
*
* MAIN PROGRAM
*
*----------------------------------------------------------------------*
START-OF-SELECTION.
* INITIALIZE DATA
PERFORM frm_initialize_data.
** PROCESS INPUT DATA (FOR INBOUND INTERFACES)
* PERFORM FRM_PROCESS_INPUT_DATA.
*
* SELECT DATA FROM DATABASE
PERFORM frm_select_data.
** PROCESS SELECTED DATA
* PERFORM FRM_PROCESS_DATA.
*
END-OF-SELECTION.
** COMBINE RESULTS FROM THE PROCESSING (MAY NOT BE NECESSARY)
* PERFORM FRM_COMBINE_DATA.
* OUTPUT RESULT TO FILE OR SPOOL/SCREEN
PERFORM frm_output_data.
*&---------------------------------------------------------------------*
*& FORM FRM_INITIALIZE_DATA
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM frm_initialize_data .
SELECT * FROM ztmm_log_conf
INTO CORRESPONDING FIELDS OF TABLE gt_log_conf
WHERE zfname IN s_zfname"接口名称
AND zitype IN s_zitype."接口类型
ENDFORM.
*&---------------------------------------------------------------------*
*& FORM FRM_SELECT_DATA
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
* --> P1 TEXT
* <-- P2 TEXT
*----------------------------------------------------------------------*
FORM frm_select_data .
DATA:
lv_tabname TYPE objectname.
DATA:
lv_str_where TYPE string.
DATA:
lwa_fname TYPE ty_fname.
DATA:
lt_kname TYPE TABLE OF ty_fname."主键字段
DATA:
lt_mname TYPE TABLE OF ty_fname."消息字段
FIELD-SYMBOLS:
TYPE any.
DATA:
lv_value TYPE string.
DATA:
lv_lenth TYPE i.
DATA:
lv_stext TYPE functext.
LOOP AT gt_log_conf INTO gwa_log_conf.
"接口描述
CLEAR:
lv_stext.
SELECT SINGLE stext INTO lv_stext
FROM tftit
WHERE funcname = gwa_log_conf-zfname.
"查询条件:
传输日期
IF gwa_log_conf-zdname IS NOT INITIAL.
CONCATENATE gwa_log_conf-zdname ' IN S_DATUM' INTO lv_str_where RESPECTING BLANKS.
ENDIF.
"查询条件:
传输时间
IF lv_str_where IS INITIAL.
IF gwa_log_conf-ztname IS NOT INITIAL.
CONCATENATE gwa_log_conf-ztname ' IN S_UZEIT' INTO lv_str_where RESPECTING BLANKS.
ENDIF.
ELSE.
IF gwa_log_conf-ztname IS NOT INITIAL.
CONCATENATE lv_str_where ' AND ' gwa_log_conf-ztname ' IN S_UZEIT'
INTO lv_str_where RESPECTING BLANKS.
ENDIF.
ENDIF.
"查询条件:
传输状态
IF lv_str_where IS INITIAL.
IF gwa_log_conf-zsname IS NOT INITIAL.
CONCATENATE gwa_log_conf-zsname ' IN S_RTYPE' INTO lv_str_where RESPECTING BLANKS.
ENDIF.
ELSE.
IF gwa_log_conf-zsname IS NOT INITIAL.
CONCATENATE lv_str_where ' AND ' gwa_log_conf-zsname ' IN S_RTYPE'
INTO lv_str_where RESPECTING BLANKS.
ENDIF.
ENDIF.
"动态获取日志信息
lv_tabname = gwa_log_conf-ztable.
PERFORM create_dynamic_tables
USING
lv_tabname
'DOCS'.
IF IS ASSIGNED.
SELECT * FROM (lv_tabname)
INTO CORRESPONDING FIELDS OF TABLE
WHERE (lv_str_where).
IF sy-subrc = 0 AND IS ASSIGNED.
SPLIT gwa_log_conf-zkey AT ',' INTO TABLE lt_kname.
SPLIT gwa_log_conf-zmname AT ',' INTO TABLE lt_mname.
LOOP AT INTO .
"功能模块的名称
gwa_itab-zfname = gwa_log_conf-zfname.
"功能模块的描述
gwa_itab-stext = lv_stext.
"传输日期
ASSIGN COMPONENT gwa_log_conf-zdname OF STRUCTURE TO .
IF sy-subrc = 0.
gwa_itab-sydat = .
ENDIF.
"传输日期
ASSIGN COMPONENT gwa_log_conf-ztname OF STRUCTURE TO .
IF sy-subrc = 0.
gwa_itab-sytim = .
ENDIF.
"接口类型
gwa_itab-zitype = gwa_log_conf-zitype.
"主键值
CLEAR:
lwa_fname.
LOOP AT lt_kname INTO lwa_fname.
ASSIGN COMPONENT lwa_fname-value OF STRUCTURE TO .
* IF sy-subrc = 0 AND IS NOT INITIAL.
IF IS ASSIGNED.
lv_value = .
ELSE.
lv_value = ''.
ENDIF.
CONDENSE lv_value NO-GAPS.
IF gwa_itab-zkvalue IS INITIAL.
CONCATENATE lv_value ',' INTO gwa_itab-zkvalue.
ELSE.
CONCATENATE gwa_itab-zkvalue lv_value ',' INTO gwa_itab-zkvalue.
ENDIF.
* ENDIF.
AT LAST.
* IF gwa_itab-zkvalue IS NOT INITIAL.
"去除最后一位的逗号
CONDENSE gwa_itab-zkvalue NO-GAPS.
lv_lenth = strlen( gwa_itab-zkvalue ).
lv_lenth = lv_lenth - 1.
IF lv_lenth > 0.
gwa_itab-zkvalue = gwa_itab-zkvalue+0(lv_lenth).
ENDIF.
* ENDIF.
ENDAT.
CLEAR:
lwa_fname.
ENDLOOP.
"传输状态
ASSIGN COMPONENT gwa_log_conf-zsname OF STRUCTURE TO .
IF sy-subrc = 0.
gwa_itab-rtype = .
IF gwa_itab-rtype = 'E'.
gwa_itab-status = '@5C@'.
ELSE.
gwa_itab-status = '@5B@'.
ENDIF.
ENDIF.
"消息
CLEAR:
lwa_fname.
LOOP AT lt_mname INTO lwa_fname.
ASSIGN COMPONENT lwa_fname-value OF STRUCTURE TO .
IF sy-subrc = 0 AND IS NOT INITIAL.
lv_value = .
CONDENSE lv_value NO-GAPS.
IF gwa_itab-rtmsg IS INITIAL.
CONCATENATE lv_value ',' INTO gwa_itab-rtmsg.
ELSE.
CONCATENATE gwa_itab-rtmsg lv_value ',' INTO gwa_itab-rtmsg.
ENDIF.
ENDIF.
AT LAST.
IF gwa_itab-rtmsg IS NOT INITIAL.
"去除最后一位的逗号
CONDENSE gwa_itab-rtmsg NO-GAPS.
lv_lenth = strlen( gwa_itab-rtmsg ).
lv_lenth = lv_lenth - 1.
gwa_itab-rtmsg = gwa_itab-rtmsg+0(lv_lenth).
ENDIF.
ENDAT.