Создание пользовательского журнала/лога приложения

Создание пользовательского журнала/лога приложения.

В системе SAP присутствует возможность просмотра журнала/лога различных программ (объектов), используя транзакцию SLG1. При условии, что таковой лог предусмотрен в том или ином приложении (объекте).

Рисунок 1.

Мало кто знает, но данный функционал можно "заточить" под себя. Под этой "заточкой" я понимаю создание собственного журнала для какого-нибудь приложения. Это может быть обычная программа, запускаемая с помощью транзакции SE38, в которой, при возникновении какой-либо ошибки (хотя и не обязательно ошибки), формируете лог; это может быть WebDynpro приложение, или заявка процесса и формы на FPM. Используя эти журналы возможно следить за жизнью ваших приложений для последующего анализа или же "разбора полетов". Зависит от того, что вы записываете в эти журналы/логи.

Создание журнала

Что нужно сделать, чтобы получить свой собственный лог? Для начала создать свой собственный объект, используя транзакцию SLG0

Рисунок 2.

Затем создать для него подобъект

Рисунок 3.

При необходимости вы можете создать столько подобъектов, сколько вам нужно.Сохраните внесенные изменения.

Запустите транзакцию SLG1, и в качестве объекта/подобъекта выберите вновь созданные. Сформируется информационное сообщение вида 

Чтобы получить какой-нибудь лог, необходимо его сначала сформировать. Для того, чтобы его сформировать, придется написать ABAP код. Ниже я приведу пример когда, как обычно, без прикрас, только для того, чтобы продемонстрировать, как эта конструкция может работать. Также обращаю ваше внимание на то, что по данной теме можно много информации найти, к примеру, на SAP Community. Тем не менее.

См. Create application log

Прежде чем перейти к коду, я создам сообщение, которое и будет записано в мой новый лог. Для этого можно воспользоваться транзакцией SE91

Рисунок 4.

  
  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 для просмотра сформированного лога приложения по настроенным ранее объектам

Рисунок 5.

Удаление логов

Все логи периодически нужно чистить. Логи приложений не исключение. Более подробно с информацией по удалению логов можно ознакомиться в SAP ноте 451706 - Deletion of logs of the application logVersion

Если вкратце, то выполнить удаление возможно, используя транзакцию SLG2 или же запустив программу SBAL_DELETE

Рисунок 6.

Рисунок 7.