博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SAP日志log:SLG0,SLG1
阅读量:2035 次
发布时间:2019-04-28

本文共 4954 字,大约阅读时间需要 16 分钟。

首先创建日志对象
slg0:
创建主对象
创建子对象
调用函数添加维护日志
*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的方法就是这样子,因为有数据库操作,必然会耗时,什么时候考虑加日志,根据业务要求和具体重要程度去判断吧
你可能感兴趣的文章
Linux中yum、rpm、configure使用介绍
查看>>
实现Data类
查看>>
计算机网络技术复习题 第十章 下一代因特网
查看>>
数据重生:让神经机器翻译中的不活跃样本“复活”
查看>>
高效能人士的七个习惯——由内而外全面造就自己
查看>>
按物品类别整理的心动收纳法(笔记)
查看>>
番茄工作图解——序(笔记)
查看>>
每天最重要的2小时——序(笔记)
查看>>
01.创新与企业家精神——创新实践
查看>>
17.创新与企业家精神——攻其软肋
查看>>
14.openssl编程——错误处理
查看>>
29.openssl编程——PKCS7
查看>>
openssl passwd
查看>>
openssl pkeyutl
查看>>
02.规划过程组表格-责任分配矩阵
查看>>
02.规划过程组表格-质量管理计划
查看>>
02.openssl-密钥的格式转换
查看>>
07.openssl编程——抽象IO
查看>>
14.openssl编程——错误处理
查看>>
08.openssl非对称加密算法指令
查看>>