ABAP实现创建应用程序日志

这段ABAP代码演示了如何生成应用程序日志,将消息添加到日志中,并使用BAL_DSP_LOG_DISPLAY函数模块显示日志。代码首先创建日志头,然后添加消息,最后展示日志内容。

该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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值