首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在abap中使用日志管理

如何在abap中使用日志管理

作者头像
matinal
发布2020-11-27 17:10:32
5550
发布2020-11-27 17:10:32
举报
文章被收录于专栏:SAP TechnicalSAP Technical

sap提供标准函数来操作应用日志,这篇文章将详细介绍如何使用应用日志。

1、相关TCODE •SLG0 -> Used to maintain the log object •SLG1 -> Used to view the log

2、配置步骤 1)运行SLG0,系统将弹出一个提示窗口,点击"OK"按钮; 2)点击"新增"按钮,在对象名中输入"ZTESTLOG",在描述中"Test Log",并点击"保存"按钮;

3、开发步骤 1)用SE11创建一个结构Z_LOG_MESSAGE,结构的字段如下:

Component

Component Type

MSGTY

SYMSGTY

MSG_TEXT_1

SYMSGV

MSG_TEXT_2

SYMSGV

MSG_TEXT_3

SYMSGV

MSG_TEXT_4

SYMSGV

2)用SE91创建消息类ZMESSAGE,并在999输入四个占位符(&) 3)用SE37创建函数族"ZLOG" 4)在创建函数组后创建函数"ZIU_MESSAGE_LOGGING"

IMPORT PARAMETERS:
I_LOG_OBJECT type BALOBJ_D -> Application log: Object name (Application code)
I_EXTNUMBER type String -> Application Log: External ID
Export parameters: None
Changing parameters: None
Tables parameters:
T_LOG_MESSAGE type Z_LOG_MESSAGE
Exceptions:
LOG_HEADER_INCONSISTENT
LOGGING ERROR
代码如下:
FUNCTION ZIU_MESSAGE_LOGGING.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(I_LOG_OBJECT) TYPE BALOBJ_D
*" REFERENCE(I_EXTNUMBER) TYPE STRING
*" TABLES
*" T_LOG_MESSAGE STRUCTURE Z_LOG_MESSAGE
*" EXCEPTIONS
*" LOG_HEADER_INCONSISTENT
*" LOGGING_ERROR
*"----------------------------------------------------------------------
* Author :Ashim Chowdhury
* DESCRIPTION: This function module is used insert messages in the
* application log
CONSTANTS: c_message TYPE syst-msgid VALUE 'ZMESSAGE',
c_999 TYPE syst-msgno VALUE '999'.
DATA:
l_log_handle TYPE balloghndl,
l_s_log TYPE bal_s_log,
l_dummy type string,
l_ext_no type bal_s_log-extnumber,
l_s_mdef TYPE bal_s_mdef.
if T_LOG_MESSAGE[] is not initial.
l_s_log-object = I_LOG_OBJECT.
l_ext_no = I_EXTNUMBER.
l_s_log-extnumber = l_ext_no.
* Create the log with header data
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = l_s_log
IMPORTING
E_LOG_HANDLE = l_log_handle
EXCEPTIONS
LOG_HEADER_INCONSISTENT = 1
OTHERS = 2.
IF sy-subrc <> 0.
case sy-subrc.
when 1.
raise LOG_HEADER_INCONSISTENT.
when others.
raise LOGGING_ERROR.
endcase.
ENDIF.
l_s_mdef-log_handle = l_log_handle.
* Set the default value
CALL FUNCTION 'BAL_GLB_MSG_DEFAULTS_SET'
EXPORTING
i_s_msg_defaults = l_s_mdef
EXCEPTIONS
OTHERS = 0.
* Loop the message table and write the messages into the log
loop at T_LOG_MESSAGE.
* Use the message type ZMESSAGE and msg no 999
* Issue the message in a dummy variable
message ID C_message type t_log_message-MSGTY number C_999
with t_log_message-MSG_TEXT_1 t_log_message-MSG_TEXT_2
t_log_message-MSG_TEXT_3 t_log_message-MSG_TEXT_4
into l_dummy.
* The parameters set by message statement will be used
* Add the message in the log
PERFORM msg_add.
endloop.
* save logs in the database
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
I_SAVE_ALL = 'X'
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.
endif.
ENDFUNCTION.
*--------------------------------------------------------------------
* FORM MSG_ADD
*--------------------------------------------------------------------
* Add the message to the log
*-------------------------------------------------------------------*
FORM msg_add.
DATA:
l_s_msg TYPE bal_s_msg.
* define data of message for Application Log
l_s_msg-msgty = sy-msgty.
l_s_msg-msgid = sy-msgid.
l_s_msg-msgno = sy-msgno.
l_s_msg-msgv1 = sy-msgv1.
l_s_msg-msgv2 = sy-msgv2.
l_s_msg-msgv3 = sy-msgv3.
l_s_msg-msgv4 = sy-msgv4.
* add this message to log file
* (I_LOG_HANDLE is not specified, we want to add to the default log.
* If it does not exist we do not care =>EXCEPTIONS log_not_found = 0)
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
* I_LOG_HANDLE =
i_s_msg = l_s_msg
EXCEPTIONS
log_not_found = 0
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
5)在程序中使用ZIU_MESSAGE_LOGGING函数来维护应用日志,代码如下
Data declaration->
* Internal table for message logging
DATA: it_log_message TYPE STANDARD TABLE OF z_log_message,
wa_log_message TYPE z_log_message,
l_ext_number TYPE string.
Constants:
c_obj_zxiproxy TYPE balobj_d VALUE 'ZTESTLOG'.
* Now populate the internal table with the log messages as shown below. wa_log_message-
* msgty is the type of the message.
* E -> Error, W -> Warning, S -> Success
* Logging code for insert message into log
CLEAR wa_log_message.
wa_log_message-msgty = 'E'. “ Can use W or S
wa_log_message-msg_text_1 = < Message text 1>.
wa_log_message-msg_text_2 = < Message text 2>
wa_log_message-msg_text_3 = < Message text 3>
wa_log_message-msg_text_4 = < Message text 4>
* Append the message into the internal table
APPEND wa_log_message TO it_log_message.
At the end transfer the log message to the system log by calling function module ZIU_MESSAGE_LOGGING. L_EXT_NUMBER will bt any string of your choice.
* Function module ZIU_MESSAGE_LOGGING will do the logging
* i_log_object is the object type (to be configrd using txn SLG0
CALL FUNCTION 'ZIU_MESSAGE_LOGGING'
EXPORTING
i_log_object = c_obj_zxiproxy
i_extnumber = l_ext_number
TABLES
t_log_message = it_log_message
EXCEPTIONS
log_header_inconsistent = 1
logging_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.

4、使用TCODE:SLG1查看应用日志。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-02-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档