Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Writing custom program errors to SLOG

Former Member
0 Likes
803

I am looking for a way to put errors from custom program ( which would run as job) to system log, which should be visible via SM21. Can any of you help me with a function module with which I can achieve it ?

1 ACCEPTED SOLUTION
Read only

manuel_bassani
Contributor
0 Likes
623

Hi Indrade,

Is it your first post in SDN ? Welcome!

for your problem try the following procedure:

1. Refresh memory


  CALL FUNCTION 'BAL_GLB_MEMORY_REFRESH'
    EXPORTING
*   I_AUTHORIZATION                =
      i_refresh_all                  = 'X'
*   I_T_LOGS_TO_BE_REFRESHED       =
    EXCEPTIONS
      not_authorized                 = 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.

2. Create a Log


* define some header data of this log
  l_s_log-extnumber    = pu_ext_number.
  l_s_log-aluser       = sy-uname.
  l_s_log-alprog       = sy-repid.
  l_s_log-object       = pu_object.
  l_s_log-subobject    = pu_subobject.

* create a log
  CALL FUNCTION 'BAL_LOG_CREATE'
       EXPORTING
            i_s_log                 = l_s_log
       IMPORTING
            e_log_handle            = pc_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.

3. Add a message to the Log


  DATA:
    l_s_msg      TYPE bal_s_msg,
    l_log_handle TYPE balloghndl.

* define data of message for Application Log
  l_s_msg-msgty         = pu_msgty.
  l_s_msg-msgid         = pu_msgid.
  l_s_msg-msgno         = pu_msgno.
  l_s_msg-msgv1         = pu_msgv1.
  l_s_msg-msgv2         = pu_msgv2.
  l_s_msg-msgv3         = pu_msgv3.
  l_s_msg-msgv4         = pu_msgv4.
  l_s_msg-probclass     = pu_probclass.
  l_s_msg-context-value = pu_context.
  GET TIME STAMP FIELD l_s_msg-time_stmp.
* 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  = l_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.

4. Save Log


  CALL FUNCTION 'BAL_DB_SAVE'
       EXPORTING
            i_t_log_handle   = p_t_log_handle
       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.

I hope it will helps.

Please remember to reward points if the answer is useful, and to close the post when your problem is solved

Regards, Manuel

3 REPLIES 3
Read only

manuel_bassani
Contributor
0 Likes
624

Hi Indrade,

Is it your first post in SDN ? Welcome!

for your problem try the following procedure:

1. Refresh memory


  CALL FUNCTION 'BAL_GLB_MEMORY_REFRESH'
    EXPORTING
*   I_AUTHORIZATION                =
      i_refresh_all                  = 'X'
*   I_T_LOGS_TO_BE_REFRESHED       =
    EXCEPTIONS
      not_authorized                 = 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.

2. Create a Log


* define some header data of this log
  l_s_log-extnumber    = pu_ext_number.
  l_s_log-aluser       = sy-uname.
  l_s_log-alprog       = sy-repid.
  l_s_log-object       = pu_object.
  l_s_log-subobject    = pu_subobject.

* create a log
  CALL FUNCTION 'BAL_LOG_CREATE'
       EXPORTING
            i_s_log                 = l_s_log
       IMPORTING
            e_log_handle            = pc_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.

3. Add a message to the Log


  DATA:
    l_s_msg      TYPE bal_s_msg,
    l_log_handle TYPE balloghndl.

* define data of message for Application Log
  l_s_msg-msgty         = pu_msgty.
  l_s_msg-msgid         = pu_msgid.
  l_s_msg-msgno         = pu_msgno.
  l_s_msg-msgv1         = pu_msgv1.
  l_s_msg-msgv2         = pu_msgv2.
  l_s_msg-msgv3         = pu_msgv3.
  l_s_msg-msgv4         = pu_msgv4.
  l_s_msg-probclass     = pu_probclass.
  l_s_msg-context-value = pu_context.
  GET TIME STAMP FIELD l_s_msg-time_stmp.
* 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  = l_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.

4. Save Log


  CALL FUNCTION 'BAL_DB_SAVE'
       EXPORTING
            i_t_log_handle   = p_t_log_handle
       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.

I hope it will helps.

Please remember to reward points if the answer is useful, and to close the post when your problem is solved

Regards, Manuel

Read only

Former Member
0 Likes
623

using this FM RSLG_READ_FILE you can read the log.

Read only

0 Likes
623

We have found the function module RSLG_WRITE_SYSLOG_ENTRY with which we can write SYSLOG entries. Thanks for your help