zoukankan      html  css  js  c++  java
  • ABAP如何在abap中使用日志管理

    sap提供标准函数来操作应用日志,这篇文章将详细介绍如何使用应用日志。

    1、相关TCODE
    •SLG0 -> Used to maintain the log object
    •SLG1 -> Used to view the log 

    2、配置步骤
    1)运行SLG0,系统将弹出一个提示窗口,点击"OK"按钮;
    2)点击"新增"按钮,在对象名中输入"ZTESTLOG",在描述中"Test Log",并点击"保存"按钮;

    3、开发步骤
    1)用SE11创建一个结构Z_LOG_MESSAGE,结构的字段如下:

    Component Component Type
    MSGTY SYMSGTY
    MSG_TEXT_1 SYMSGV
    MSG_TEXT_2 SYMSGV
    MSG_TEXT_3 SYMSGV
    MSG_TEXT_4 SYMSGV

    2)用SE91创建消息类ZMESSAGE,并在999输入四个占位符(&)
    3)用SE37创建函数族"ZLOG"
    4)在创建函数组后创建函数"ZIU_MESSAGE_LOGGING"
    IMPORT PARAMETERS:
    I_LOG_OBJECT type BALOBJ_D -> Application log: Object name (Application code)
    I_EXTNUMBER type String -> Application Log: External ID
    Export parameters: None
    Changing parameters: None
    Tables parameters:
    T_LOG_MESSAGE type Z_LOG_MESSAGE
    Exceptions:
    LOG_HEADER_INCONSISTENT
    LOGGING ERROR
    代码如下:
    FUNCTION ZIU_MESSAGE_LOGGING.
    *"----------------------------------------------------------------------
    *"*"Local interface:
    *" IMPORTING
    *" REFERENCE(I_LOG_OBJECT) TYPE BALOBJ_D
    *" REFERENCE(I_EXTNUMBER) TYPE STRING
    *" TABLES
    *" T_LOG_MESSAGE STRUCTURE Z_LOG_MESSAGE
    *" EXCEPTIONS
    *" LOG_HEADER_INCONSISTENT
    *" LOGGING_ERROR
    *"----------------------------------------------------------------------
    * Author :Ashim Chowdhury
    * DESCRIPTION: This function module is used insert messages in the
    * application log
    CONSTANTS: c_message TYPE syst-msgid VALUE 'ZMESSAGE',
    c_999 TYPE syst-msgno VALUE '999'.
    DATA:
    l_log_handle TYPE balloghndl,
    l_s_log TYPE bal_s_log,
    l_dummy type string,
    l_ext_no type bal_s_log-extnumber,
    l_s_mdef TYPE bal_s_mdef.
    if T_LOG_MESSAGE[] is not initial.
    l_s_log-object = I_LOG_OBJECT.
    l_ext_no = I_EXTNUMBER.
    l_s_log-extnumber = l_ext_no.
    * Create the log with header data
    CALL FUNCTION 'BAL_LOG_CREATE'
    EXPORTING
    i_s_log = l_s_log
    IMPORTING
    E_LOG_HANDLE = l_log_handle
    EXCEPTIONS
    LOG_HEADER_INCONSISTENT = 1
    OTHERS = 2.
    IF sy-subrc <> 0.
    case sy-subrc.
    when 1.
    raise LOG_HEADER_INCONSISTENT.
    when others.
    raise LOGGING_ERROR.
    endcase.
    ENDIF.
    l_s_mdef-log_handle = l_log_handle.
    * Set the default value
    CALL FUNCTION 'BAL_GLB_MSG_DEFAULTS_SET'
    EXPORTING
    i_s_msg_defaults = l_s_mdef
    EXCEPTIONS
    OTHERS = 0.
    * Loop the message table and write the messages into the log
    loop at T_LOG_MESSAGE.
    * Use the message type ZMESSAGE and msg no 999
    * Issue the message in a dummy variable
    message ID C_message type t_log_message-MSGTY number C_999
    with t_log_message-MSG_TEXT_1 t_log_message-MSG_TEXT_2
    t_log_message-MSG_TEXT_3 t_log_message-MSG_TEXT_4
    into l_dummy.
    * The parameters set by message statement will be used
    * Add the message in the log
    PERFORM msg_add.
    endloop.
    * save logs in the database
    CALL FUNCTION 'BAL_DB_SAVE'
    EXPORTING
    I_SAVE_ALL = 'X'
    EXCEPTIONS
    LOG_NOT_FOUND = 1
    SAVE_NOT_ALLOWED = 2
    NUMBERING_ERROR = 3
    OTHERS = 4
    .
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    endif.
    ENDFUNCTION.
    *--------------------------------------------------------------------
    * FORM MSG_ADD
    *--------------------------------------------------------------------
    * Add the message to the log
    *-------------------------------------------------------------------*
    FORM msg_add.
    DATA:
    l_s_msg TYPE bal_s_msg.
    * define data of message for Application Log
    l_s_msg-msgty = sy-msgty.
    l_s_msg-msgid = sy-msgid.
    l_s_msg-msgno = sy-msgno.
    l_s_msg-msgv1 = sy-msgv1.
    l_s_msg-msgv2 = sy-msgv2.
    l_s_msg-msgv3 = sy-msgv3.
    l_s_msg-msgv4 = sy-msgv4.
    * add this message to log file
    * (I_LOG_HANDLE is not specified, we want to add to the default log.
    * If it does not exist we do not care =>EXCEPTIONS log_not_found = 0)
    CALL FUNCTION 'BAL_LOG_MSG_ADD'
    EXPORTING
    * I_LOG_HANDLE =
    i_s_msg = l_s_msg
    EXCEPTIONS
    log_not_found = 0
    OTHERS = 1.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    ENDFORM.
    5)在程序中使用ZIU_MESSAGE_LOGGING函数来维护应用日志,代码如下
    Data declaration->
    * Internal table for message logging
    DATA: it_log_message TYPE STANDARD TABLE OF z_log_message,
    wa_log_message TYPE z_log_message,
    l_ext_number TYPE string.
    Constants:
    c_obj_zxiproxy TYPE balobj_d VALUE 'ZTESTLOG'.
    * Now populate the internal table with the log messages as shown below. wa_log_message-
    * msgty is the type of the message.
    * E -> Error, W -> Warning, S -> Success
    * Logging code for insert message into log
    CLEAR wa_log_message.
    wa_log_message-msgty = 'E'. “ Can use W or S
    wa_log_message-msg_text_1 = < Message text 1>.
    wa_log_message-msg_text_2 = < Message text 2>
    wa_log_message-msg_text_3 = < Message text 3>
    wa_log_message-msg_text_4 = < Message text 4>
    * Append the message into the internal table
    APPEND wa_log_message TO it_log_message.
    At the end transfer the log message to the system log by calling function module ZIU_MESSAGE_LOGGING. L_EXT_NUMBER will bt any string of your choice.
    * Function module ZIU_MESSAGE_LOGGING will do the logging
    * i_log_object is the object type (to be configrd using txn SLG0
    CALL FUNCTION 'ZIU_MESSAGE_LOGGING'
    EXPORTING
    i_log_object = c_obj_zxiproxy
    i_extnumber = l_ext_number
    TABLES
    t_log_message = it_log_message
    EXCEPTIONS
    log_header_inconsistent = 1
    logging_error = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDIF.

    4、使用TCODE:SLG1查看应用日志。

  • 相关阅读:
    改造vue-quill-editor: 结合element-ui上传图片到服务器
    webpack2.X、Vue学习以及将两者相结合
    Vuex-一个专为 Vue.js 应用程序开发的状态管理模式
    vue深究第一弹:computed与watch的异同
    管理系统列表和详情配置
    Vue和vue-template-compiler版本之间的问题
    vuex 闲置状态重置方案
    mac install brew
    Android——推断Service是否已经启动
    【android】uses-permission和permission具体解释
  • 原文地址:https://www.cnblogs.com/xiaomaohai/p/6157164.html
Copyright © 2011-2022 走看看