zoukankan      html  css  js  c++  java
  • 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的方法就是这样子,因为有数据库操作,必然会耗时,什么时候考虑加日志,根据业务要求和具体重要程度去判断吧
    http://blog.sina.com.cn/sapliumeng
  • 相关阅读:
    Callable的Future模式
    并发队列
    并发工具类
    线程池
    并发编程专题
    侧边栏:内有友链,分类等等
    脑残错误记录
    博主的OI流水账
    NOI2019游记
    NOI数论姿势瞎总结(Pi也没有)
  • 原文地址:https://www.cnblogs.com/senlinmu110/p/3802055.html
Copyright © 2011-2022 走看看