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