SAP日志log:SLG0,SLG1

首先创建日志对象
slg0:
SAP日志log:SLG0,SLG1

创建主对象
SAP日志log:SLG0,SLG1
创建子对象
SAP日志log:SLG0,SLG1

调用函数添加维护日志
*1.变量定义
*----------------------------------------------------------------------*
  DATA: l_mac_bal_log     TYPE  bal_s_log.      "定义log
  DATA: l_tab_loghndl   TYPE  bal_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 TYPE sy-msgty NUMBER sy-msgno
            WITH sy-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 number sy-msgno
            with sy-msgv1 sy-msgv2 sy-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 TYPE sy-msgty NUMBER sy-msgno
            WITH sy-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 TYPE sy-msgty NUMBER sy-msgno
            WITH sy-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 NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

*&---------------------------------------------------------------------*
*&"显示日志:   no_tree display方法:
*&---------------------------------------------------------------------*
DATA:
   l_s_display_profile TYPE bal_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 TYPE bal_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,然后查看日志
SAP日志log:SLG0,SLG1
具体参数意思,不解释了,都懂的

大概的记录log的方法就是这样子,因为有数据库操作,必然会耗时,什么时候考虑加日志,根据业务要求和具体重要程度去判断吧
posted @ 2014-06-17 14:53  胡来  阅读(1337)  评论(0编辑  收藏  举报