该ABAP代码实现了创建应用程序日志的功能,并将日志消息添加到日志中。最后,通过调用BAL_DSP_LOG_DISPLAY函数模块来显示日志。
Tcode: SLG0\SLG1 详细代码如下:
*&---------------------------------------------------------------------*
*& Form APPLICATION_LOG_GENERATE
*&---------------------------------------------------------------------*
* create application log
*----------------------------------------------------------------------*
FORM APPLICATION_LOG_GENERATE
USING
IT_MESSAGE TYPE BAPIRET2_TTY.
DATA:
LS_LOG TYPE BAL_S_LOG,
LS_MDEF TYPE BAL_S_MDEF,
LV_LOG_HANDLE TYPE BALLOGHNDL,
LS_MSG TYPE BAL_S_MSG,
LS_DISPLAY_PROFILE TYPE BAL_S_PROF,
LS_EXIT_COMMAND TYPE BAL_S_EXCM.
FIELD-SYMBOLS:
<FS_MESSAGE> TYPE BAPIRET2.
IF IT_MESSAGE[] IS INITIAL.
RETURN.
ENDIF.
LS_LOG-OBJECT = '/MERCK/LOG'.
LS_LOG-SUBOBJECT = 'AON-HEWITT'.
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
I_S_LOG = LS_LOG
IMPORTING
E_LOG_HANDLE = LV_LOG_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.
LS_MDEF-LOG_HANDLE = LV_LOG_HANDLE.
CALL FUNCTION 'BAL_GLB_MSG_DEFAULTS_SET'
EXPORTING
I_S_MSG_DEFAULTS = LS_MDEF
EXCEPTIONS
NOT_AUTHORIZED = 1
DEFAULTS_INCONSISTENT = 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.
LOOP AT IT_MESSAGE ASSIGNING <FS_MESSAGE>.
CLEAR LS_MSG.
LS_MSG-MSGTY = <FS_MESSAGE>-TYPE.
LS_MSG-MSGID = '00'."<FS_MESSAGE>-ID.
LS_MSG-MSGNO = '001'."<FS_MESSAGE>-NUMBER.
LS_MSG-MSGV1 = <FS_MESSAGE>-MESSAGE_V1.
LS_MSG-MSGV2 = <FS_MESSAGE>-MESSAGE_V2.
LS_MSG-MSGV3 = <FS_MESSAGE>-MESSAGE_V3.
LS_MSG-MSGV4 = <FS_MESSAGE>-MESSAGE_V4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
I_S_MSG = LS_MSG
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.
ENDLOOP.
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.
CALL FUNCTION 'BAL_GLB_MSG_DEFAULTS_GET'
IMPORTING
E_S_MSG_DEFAULTS = LS_MDEF.
IF LS_MDEF-LOG_HANDLE IS NOT INITIAL.
LV_LOG_HANDLE = LS_MDEF-LOG_HANDLE.
ELSE.
LV_LOG_HANDLE = 'LOG'.
ENDIF.
CALL FUNCTION 'BAL_DSP_PROFILE_SINGLE_LOG_GET'
IMPORTING
E_S_DISPLAY_PROFILE = LS_DISPLAY_PROFILE.
LS_DISPLAY_PROFILE-USE_GRID = 'X'.
LS_DISPLAY_PROFILE-DISVARIANT-REPORT = SY-REPID.
LS_DISPLAY_PROFILE-DISVARIANT-HANDLE = LV_LOG_HANDLE.
* call display function module
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
I_S_DISPLAY_PROFILE = LS_DISPLAY_PROFILE
IMPORTING
E_S_EXIT_COMMAND = LS_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.
IF ( LS_EXIT_COMMAND-BACK = 'X') OR
( LS_EXIT_COMMAND-EXIT = 'X') OR
( LS_EXIT_COMMAND-CANCEL = 'X').
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM. "application_log_generate
这段ABAP代码演示了如何生成应用程序日志,将消息添加到日志中,并使用BAL_DSP_LOG_DISPLAY函数模块显示日志。代码首先创建日志头,然后添加消息,最后展示日志内容。
1103

被折叠的 条评论
为什么被折叠?



