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.



DATAls_log                             TYPE bal_s_log.
DATAlv_handle                        TYPE balloghndl.
DATAgt_messages                    TYPE bapiret2_t.
DATAgs_messages                    TYPE bapiret2.
DATAls_message                      TYPE bal_s_msg.
DATAls_display                        TYPE bal_s_prof.
DATAls_return                         TYPE bal_s_excm.
DATAlt_handles                       TYPE bal_t_logh.
DATAlog_object                       TYPE balobj-object.
DATAlog_subobject                  TYPE balsub-subobject.
DATAheader                            TYPE balhdri.
DATAsingle_message                TYPE balmi,
      single_msg                            TYPE TABLE OF balmi.
DATAe_new_lognumbers          TYPE bal_t_lgnm.
DATAis_log_h                          TYPE bal_s_log,
      es_log_handle                       TYPE balloghndl.
DATAl_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'.
  APPENDgs_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'.
  APPENDgs_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'.
  APPENDgs_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'.
  APPENDgs_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