Иерархическое логирование в SAP
Лог — одно из лучших изобретений человечества, способное подружить пользователя с программой.
Лог — must have, особенно, если ваша программа выполняет множество действий над множеством объектов.
Лог — одно из лучших изобретений человечества, способное подружить пользователя с программой.
Лог — must have, особенно, если ваша программа выполняет множество действий над множеством объектов. Что-то пошло не так на 586 объекте из трех тысяч обрабатываемых в продуктиве, а программа молча пошла дальше или сделала себе харакири выпала в дамп. Печалька… С логом все намного спокойнее. Его можно будет прочитать, проанализировать и , возможно, даже отладку запускать не придется, чтобы понять, что произошло.
Так как в SAP есть все и даже больше, то ничего программисту особо и не нужно изобретать. Тут можно почитать Code Snippets.
Для ленивых ниже готовый пример кода, демонстрирующий иерархический журнал такого вида.
REPORT zys_log_test.
DATA: gv_log_handle TYPE balloghndl.
END-OF-SELECTION .
PERFORM add_test_messages_to_log.
PERFORM msg_view.
PERFORM msg_save.
FORM add_test_messages_to_log.
DATA: ls_log_msg TYPE bal_s_msg,
lt_msg TYPE hap_t_msg.
ls_log_msg-msgid = ‘HRPADUN_AAP’.»любой класс сообщений
ls_log_msg-msgno = ‘000’.»&1 &2 &3 &4
ls_log_msg-msgty = ‘I’.
ls_log_msg-detlevel = ‘1’.
ls_log_msg-msgv1 = ‘Демонстрация иерархического логирования’.
PERFORM msg_add USING ls_log_msg.
DO 3 TIMES.
ls_log_msg-detlevel = ‘2’.
ls_log_msg-msgv1 = |Объект { sy-index } |.
PERFORM msg_add USING ls_log_msg.
ls_log_msg-detlevel = ‘3’.
ls_log_msg-msgv1 = ‘Операция 1 выполнена успешно’.
PERFORM msg_add USING ls_log_msg.
ls_log_msg-msgv1 = ‘Операция 2 выполнена успешно’.
PERFORM msg_add USING ls_log_msg.
ENDDO.
ENDFORM.
FORM msg_log_handle_create.
DATA ls_log TYPE bal_s_log.
CONCATENATE sy-datum sy-uzeit INTO ls_log-extnumber.
ls_log-object = ‘HRESS’.»любой лог из тр. SLG0
CALL FUNCTION ‘BAL_LOG_CREATE’
EXPORTING
i_s_log = ls_log
IMPORTING
e_log_handle = gv_log_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDFORM.
FORM msg_add USING p_msg TYPE bal_s_msg.
IF gv_log_handle IS INITIAL.
PERFORM msg_log_handle_create.
ENDIF.
CALL FUNCTION ‘BAL_LOG_MSG_ADD’
EXPORTING
i_log_handle = gv_log_handle
i_s_msg = p_msg
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDFORM. «add_msg
FORM msg_view.
DATA
Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland
ЗарегистрироватьсяУ вас уже есть учетная запись?
Войти