SAP日志log:SLG0,SLG1

首先创建日志对象

slg0:

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,然后查看日志


具体参数意思,不解释了,都懂的

 

大概的记录log的方法就是这样子,因为有数据库操作,必然会耗时,什么时候考虑加日志,根据业务要求和具体重要程度去判断吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值