首先创建日志对象


slg0:


SAP日志log:SLG0,SLG1_SAP刘梦_新浪博客_java

​​

创建主对象
​​

SAP日志log:SLG0,SLG1_SAP刘梦_新浪博客_javascript_02

​​
创建子对象
​​

SAP日志log:SLG0,SLG1_SAP刘梦_新浪博客_数据库_03

调用函数添加维护日志


*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_SAP刘梦_新浪博客_js_04

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





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





欢迎关注订阅号:SAP学习记录 (SAPlearning )

PO <wbr><wbr>text <wbr><wbr>copy <wbr><wbr>rules <wbr><wbr>:copy <wbr><wbr>PR <wbr><wbr>item <wbr><wbr>text <wbr><wbr>to <wbr><wbr>PO