Создание пользовательского журнала/лога приложения
Создание пользовательского журнала/лога приложения.
В системе SAP присутствует возможность просмотра журнала/лога различных программ (объектов), используя транзакцию SLG1. При условии, что таковой лог предусмотрен в том или ином приложении (объекте).
Мало кто знает, но данный функционал можно "заточить" под себя. Под этой "заточкой" я понимаю создание собственного журнала для какого-нибудь приложения. Это может быть обычная программа, запускаемая с помощью транзакции SE38, в которой, при возникновении какой-либо ошибки (хотя и не обязательно ошибки), формируете лог; это может быть WebDynpro приложение, или заявка процесса и формы на FPM. Используя эти журналы возможно следить за жизнью ваших приложений для последующего анализа или же "разбора полетов". Зависит от того, что вы записываете в эти журналы/логи.
Создание журнала
Что нужно сделать, чтобы получить свой собственный лог? Для начала создать свой собственный объект, используя транзакцию SLG0
Затем создать для него подобъект
При необходимости вы можете создать столько подобъектов, сколько вам нужно.Сохраните внесенные изменения.
Запустите транзакцию SLG1, и в качестве объекта/подобъекта выберите вновь созданные. Сформируется информационное сообщение вида
Чтобы получить какой-нибудь лог, необходимо его сначала сформировать. Для того, чтобы его сформировать, придется написать ABAP код. Ниже я приведу пример когда, как обычно, без прикрас, только для того, чтобы продемонстрировать, как эта конструкция может работать. Также обращаю ваше внимание на то, что по данной теме можно много информации найти, к примеру, на SAP Community. Тем не менее.
Прежде чем перейти к коду, я создам сообщение, которое и будет записано в мой новый лог. Для этого можно воспользоваться транзакцией SE91
REPORT ZSLG1_DEMO.
DATA: g_s_log TYPE bal_s_log,
ls_log_handle TYPE balloghndl,
ls_msg TYPE BAL_S_MSG,
li_log_handle type BAL_T_LOGH.
g_s_log-object = 'ZDEMO'.
g_s_log-SUBOBJECT = 'ZDEMO'.
g_s_log-aluser = sy-uname.
g_s_log-alprog = sy-repid.
* open log
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = g_s_log
IMPORTING
e_log_handle = ls_log_handle
EXCEPTIONS
log_header_inconsisstent = 1
OTHERS = 2.
IF sy-subrc EQ 0.
ls_msg-msgty = 'E'.
ls_msg-MSGID = 'ZDEMO_MESSGE_CLASS'.
ls_msg-msgno = '001'.
* add
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = ls_log_handle
i_s_msg = ls_msg
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
IF sy-subrc NE 0.
ENDIF.
INSERT ls_log_handle INTO TABLE li_log_handle.
* save
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
i_client = sy-mandt
i_save_all = ' '
i_t_log_handle = li_log_handle
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
if sy-subrc eq 0.
REFRESH: li_log_handle.
ENDIF.
ENDIF.
Выполните созданную вами программу, и затем запустите транзакцию SLG1 для просмотра сформированного лога приложения по настроенным ранее объектам
Удаление логов
Все логи периодически нужно чистить. Логи приложений не исключение. Более подробно с информацией по удалению логов можно ознакомиться в SAP ноте 451706 - Deletion of logs of the application logVersion
Если вкратце, то выполнить удаление возможно, используя транзакцию SLG2 или же запустив программу SBAL_DELETE