03 July 2014

Application Log

How to create application log?

This example allow you to show log with Pop-Up log, but you can also skip the Pop-Up, and see the log in SLG1/SLG2.



You must declare the Object & Subobject In transaction SLG0

ls_log-object       = 'Zxxxxx'.
ls_log-subobject = 'Zxxxxxxxxxx'.

ls_log-altcode  = 'TRANSACTION_CODE'. " Your transaction code or other
ls_log-alprog  = 'PROGRAM'. " SY-REPID
ls_log-extnumber = 'Your run ID Log date & time & use...'.

Step 01 Build the header log              ** Only start process
Step 02 Build error in App. log table  ** All time you need
Step 03 Add you App. log                  ** All time you need
Step 04 Save you App. log                 ** Only on end process

Step 05 This step is only to view your App. log

To see the App. log data, you must process transactio SLG1/2

Report: ZTEST_APPLICATION_LOG

*&---------------------------------------------------------------------*
*& Report  ZTEST_APPLICATION_LOG
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ztest_application_log MESSAGE-ID z1.



DATA: ls_log                             TYPE bal_s_log.
DATA: lv_handle                        TYPE balloghndl.
DATA: gt_messages                    TYPE bapiret2_t.
DATA: gs_messages                    TYPE bapiret2.
DATA: ls_message                      TYPE bal_s_msg.
DATA: ls_display                        TYPE bal_s_prof.
DATA: ls_return                         TYPE bal_s_excm.
DATA: lt_handles                       TYPE bal_t_logh.
DATA: log_object                       TYPE balobj-object.
DATA: log_subobject                  TYPE balsub-subobject.
DATA: header                            TYPE balhdri.
DATA: single_message                TYPE balmi,
      single_msg                            TYPE TABLE OF balmi.
DATA: e_new_lognumbers          TYPE bal_t_lgnm.
DATA: is_log_h                          TYPE bal_s_log,
      es_log_handle                       TYPE balloghndl.
DATA: l_s_msg                          TYPE bal_s_msg.

FIELD-SYMBOLS: <ls_message>          LIKE LINE OF gt_messages.


START-OF-SELECTION.

** Header data log.
** Step 01
  ls_log-object     = 'ZHR'.
  ls_log-subobject  = 'ZHR_RETALIX'.
  ls_log-aldate     = sy-datum.
  ls_log-altime     = sy-uzeit.
  ls_log-aluser     = sy-uname.
  ls_log-altcode    = 'ZHR_LOAD_EMPL'.
  ls_log-alprog     = 'ZHR_LOAD_EMPLOYEES'.
  ls_log-extnumber  = 'Station: 200 Employee: 165 Batch-Date: 23.12.2010'.

  CALL FUNCTION 'BAL_LOG_CREATE'
    EXPORTING
      i_s_log                 = ls_log
    IMPORTING
      e_log_handle            = lv_handle
    EXCEPTIONS
      log_header_inconsistent = 1
      OTHERS                  = 2.


** Line data log
** Step 02
  gs_messages-id         = 'Z1'.
  gs_messages-type       = 'E'.
  gs_messages-number     = '000'.
  gs_messages-message_v1 = 'Error found in employee'.
  gs_messages-message_v2 = 'Line 2 error employee'.
  APPEND: gs_messages TO gt_messages.

  gs_messages-id         = 'Z1'.
  gs_messages-type       = 'W'.
  gs_messages-number     = '000'.
  gs_messages-message_v1 = 'ID number is wrong'.
  gs_messages-message_v2 = 'Line 3 error employee'.
  APPEND: gs_messages TO gt_messages.

  gs_messages-id         = 'Z1'.
  gs_messages-type       = 'I'.
  gs_messages-number     = '000'.
  gs_messages-message_v1 = 'Wrond birth date'.
  gs_messages-message_v2 = 'Line 4 error employee'.
  APPEND: gs_messages TO gt_messages.

  gs_messages-id         = 'Z1'.
  gs_messages-type       = 'I'.
  gs_messages-number     = '000'.
  gs_messages-message_v1 = 'SMS - Was send: worrning in station/tank 136/1 vvvvvv'.
  gs_messages-message_v2 = 'Line 4 error employee'.
  APPEND: gs_messages TO gt_messages.

* Add the messages
** Step 03
  LOOP AT gt_messages ASSIGNING <ls_message>.

    ls_message-msgty     = <ls_message>-type.
    ls_message-msgid     = <ls_message>-id.
    ls_message-msgno     = <ls_message>-number.
    ls_message-msgv1     = <ls_message>-message_v1.
    ls_message-msgv2     = <ls_message>-message_v2.
    ls_message-msgv3     = <ls_message>-message_v3.
    ls_message-msgv4     = <ls_message>-message_v4.
    ls_message-probclass = '2'.

    CALL FUNCTION 'BAL_LOG_MSG_ADD'
      EXPORTING
        i_log_handle     = lv_handle
        i_s_msg          = ls_message
      EXCEPTIONS
        log_not_found    = 1
        msg_inconsistent = 2
        log_is_full      = 3
        OTHERS           = 4.

  ENDLOOP.

** Step 04
  APPEND lv_handle TO lt_handles.

  CALL FUNCTION 'BAL_DB_SAVE'
    EXPORTING
      i_save_all       = 'X'
      i_t_log_handle   = lt_handles
    IMPORTING
      e_new_lognumbers = e_new_lognumbers
    EXCEPTIONS
      log_not_found    = 1
      save_not_allowed = 2
      numbering_error  = 3
      error_message    = 4
      OTHERS           = 5.

** Step 05
  ls_display-title     = 'Log test Shimon'.
  ls_display-use_grid  = 'X'.
  ls_display-start_col = 1.
  ls_display-start_row = 30.
  ls_display-end_col   = 80.
  ls_display-end_row   = 120.
  ls_display-pop_adjst = 'X'.

* get a prepared profile
  CALL FUNCTION 'BAL_DSP_PROFILE_POPUP_GET'
    IMPORTING
      e_s_display_profile = ls_display
    EXCEPTIONS
      OTHERS              = 1.


* Display the Log
  CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
    EXPORTING
      i_s_display_profile  = ls_display
      i_t_log_handle       = lt_handles
    IMPORTING
      e_s_exit_command     = ls_return
    EXCEPTIONS
      profile_inconsistent = 0
      internal_error       = 0
      no_data_available    = 0
      no_authority         = 0.

Result:


No comments:

Post a Comment