Matthewl 发表于 2015-9-20 10:05:46

SAP日志log:SLG0,SLG1

首先创建日志对象
slg0:
http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif

创建主对象
http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif
创建子对象
http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif


调用函数添加维护日志

*1.变量定义
*----------------------------------------------------------------------*
DATA: l_mac_bal_log    TYPEbal_s_log.    "定义log
DATA:l_tab_loghndl   TYPEbal_t_logh.   "Application Log: Log Handle Table
*----------------------------------------------------------------------*
*2.赋值
*----------------------------------------------------------------------*
l_mac_bal_log-extnumber = i_log_extnumber.   "外部编号
l_mac_bal_log-object   = i_log_object.      "主对象
l_mac_bal_log-subobject = i_log_sub_object."子对象
l_mac_bal_log-aldate   = sy-datum.          "日期
l_mac_bal_log-altime   = sy-uzeit.          "时间
l_mac_bal_log-aluser   = sy-uname.          "用户
l_mac_bal_log-alprog   = sy-repid.         "sy-repid.


*----------------------------------------------------------------------*
*2.创建日志,得到句柄
*----------------------------------------------------------------------*
CALL FUNCTION 'BAL_LOG_CREATE'
    EXPORTING
   i_s_log               = l_mac_bal_log"日志
    IMPORTING
   e_log_handle          = e_mac_handle   "句柄
    EXCEPTIONS
   log_header_inconsistent = 1
   OTHERS                = 2.
IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPEsy-msgty NUMBER sy-msgno
         WITHsy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.



*----------------------------------------------------------------------*
*2消息类型处理
*----------------------------------------------------------------------*

   l_wa_bal_msg-msgty = sy-msgty.                               "消息类型
    l_wa_bal_msg-msgno =sy-msgno.                              "消息号
    l_wa_bal_msg-msgid =sy-msgid.                              "消息类
    l_wa_bal_msg-msgv1 =sy-msgv1.                              "消息变量
    l_wa_bal_msg-msgv2 =sy-msgv2.                              "消息变量
    l_wa_bal_msg-msgv3 =sy-msgv3.                              "消息变量
    l_wa_bal_msg-msgv4 =sy-msgv4.                              "消息变量


if l_wa_bal_msg-msgty ca 'EA'.                                 "如果返回消息有错误
    l_wa_bal_msg-probclass ='1'.                                 "应用日志:邮件问题类 为1
elseif l_wa_bal_msg-msgty ca 'S'.                              "返回消息正确
    l_wa_bal_msg-probclass ='2'.                                 "应用日志:邮件问题类 为2
else .
    l_wa_bal_msg-probclass ='3'.                                 "应用日志:邮件问题类 为3
endif.


*----------------------------------------------------------------------*
*3添加日志
*----------------------------------------------------------------------*

call function'BAL_LOG_MSG_ADD'
   exporting
    i_log_handle         =l_mac_handle                  "创建日志时生成的日志句柄
   i_s_msg               = l_wa_bal_msg                     "日志返回信息
"IMPORTING
"   E_S_MSG_HANDLE          =
"   E_MSG_WAS_LOGGED      =
"   E_MSG_WAS_DISPLAYED      =
exceptions
    log_not_found         = 1
    msg_inconsistent      = 2
    log_is_full             = 3
    others               = 4
          .
if sy-subrc<> 0.
   message id sy-msgid type sy-msgty numbersy-msgno
          with sy-msgv1 sy-msgv2sy-msgv3 sy-msgv4.
endif.


……如果添加多次,多次调用add函数
*----------------------------------------------------------------------*
*4保存日志
*----------------------------------------------------------------------*
APPEND i_mac_handle TO l_tab_loghndl.      "句柄


CALL FUNCTION 'BAL_DB_SAVE'
    EXPORTING
   i_save_all      = 'X'
   i_t_log_handle   = l_tab_loghndl      "句柄内表
    EXCEPTIONS
   log_not_found    = 1
   save_not_allowed = 2
   numbering_error= 3
   OTHERS          = 4.
IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPEsy-msgty NUMBER sy-msgno
         WITHsy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.


REFRESH l_tab_loghndl.                  "清空



*-----------------------------------------------------------------------
*"调用标准关闭日志函数
*-----------------------------------------------------------------------


CALL FUNCTION 'BAL_LOG_REFRESH'
    EXPORTING
   i_log_handle= i_mac_handle      "句柄
    EXCEPTIONS
   log_not_found = 1
   OTHERS       = 2.
IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPEsy-msgty NUMBER sy-msgno
         WITHsy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

*&---------------------------------------------------------------------*
*&"显示日志: 最简单的显示方式
*&---------------------------------------------------------------------*
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
* EXPORTING
*   I_S_DISPLAY_PROFILE      =
*   I_T_LOG_HANDLE             =
*   I_T_MSG_HANDLE             =
*   I_S_LOG_FILTER             =
*   I_S_MSG_FILTER             =
*   I_T_LOG_CONTEXT_FILTER      =
*   I_T_MSG_CONTEXT_FILTER      =
*   I_AMODAL                  = ''
*   I_SRT_BY_TIMSTMP         = ' '
* IMPORTING
*   E_S_EXIT_COMMAND         =
* EXCEPTIONS
*   PROFILE_INCONSISTENT      = 1
*   INTERNAL_ERROR             = 2
*   NO_DATA_AVAILABLE          = 3
*   NO_AUTHORITY            = 4
*   OTHERS                   = 5
         .
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBERsy-msgno
         WITH sy-msgv1 sy-msgv2sy-msgv3 sy-msgv4.
ENDIF.


*&---------------------------------------------------------------------*
*&"显示日志: no_tree display方法:
*&---------------------------------------------------------------------*
DATA:
   l_s_display_profile TYPEbal_s_prof.


* get display profile
CALL FUNCTION 'BAL_DSP_PROFILE_NO_TREE_GET'
IMPORTING
    e_s_display_profile =l_s_display_profile
EXCEPTIONS
    OTHERS         = 1.
" 然后再调用
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
    i_s_display_profile =l_s_display_profile
EXCEPTIONS
    OTHERS         = 1.


*&---------------------------------------------------------------------*
*&"显示日志:  弹出窗口形式::
*&---------------------------------------------------------------------*
*DATA:
*   l_s_display_profile TYPEbal_s_prof.


* get a prepared profile
CALL FUNCTION 'BAL_DSP_PROFILE_POPUP_GET'
IMPORTING
    e_s_display_profile =l_s_display_profile
EXCEPTIONS
    OTHERS         = 1.


*"然后再调用:
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
    i_s_display_profile =l_s_display_profile
EXCEPTIONS
    OTHERS         = 1.




可以可以直接进入slg1,然后查看日志
http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif
具体参数意思,不解释了,都懂的


大概的记录log的方法就是这样子,因为有数据库操作,必然会耗时,什么时候考虑加日志,根据业务要求和具体重要程度去判断吧
页: [1]
查看完整版本: SAP日志log:SLG0,SLG1