文档库 最新最全的文档下载
当前位置:文档库 › ABAP--如何在ABAP中使用日志管理

ABAP--如何在ABAP中使用日志管理

ABAP--如何在ABAP中使用日志管理
ABAP--如何在ABAP中使用日志管理

*" 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查看应用日志。

相关文档