**Расширенное логирование в разрезе идентификатора документа** ============================================================== Объекты по расширенному логированию хранятся в пакете ``/TRL/XDE_LOGGING``. Для расширенного логирования создан класс ``/TRL/XDE_CL_EXTENDED_LOGGER``. Данный класс наследует интерфейс ``/TRL/XDE_IF_LOGGER``. Методы класса /TRL/XDE_CL_EXTENDED_LOGGER ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: Методы класса /TRL/XDE_CL_EXTENDED_LOGGER :widths: auto :header-rows: 1 * - Имя метода - Вид - Видимость - Описание * - /TRL/XDE_IF_LOGGER~GET_INSTANCE - Static Method - Public - Получить экземпляр класса * - /TRL/XDE_IF_LOGGER~APPL_LOG_RETURN - Instance Method - Public - Сохранить структуру /TRL/XDE_return в журнал приложения * - /TRL/XDE_IF_LOGGER~APPL_LOG_TEXT - Instance Method - Public - Сохранить информацию в журнал приложения * - ADD_MSG - Static Method - Public - Добавить сообщение в лог * - SHOW_LOG - Static Method - Public - Вывести лог * - SET_NO_ADDITION - Static Method - Public - Установить флаг добавления сообщений в лог * - GET_SUBOBJECT - Instance Method - Protected - Получить имя SLG подобъекта * - GET_OBJECT - Static Method - Protected - Получить ссылку на объект * - DB_SAVE - Instance Method - Private - Сохранить в журнал приложений SAP * - CHECK_LOG_OPERATION - Static Method - Private - Проверить логирование для операции Описание методов класса ~~~~~~~~~~~~~~~~~~~~~~~ **Получить экземпляр класса** Метод ``/TRL/XDE_IF_LOGGER~GET_INSTANCE`` не реализован в классе. **Сохранить структуру с данными об ошибке в журнал приложения** Метод ``/TRL/XDE_IF_LOGGER~APPL_LOG_RETURN`` не реализован в классе. **Сохранить информацию в журнал приложения** Метод ``/TRL/XDE_IF_LOGGER~APPL_LOG_TEXT`` реализован в классе. Данный метод добавляет сообщение в лог по идентификатору журнала. Кроме того, длинный текст разбивается на части и сохраняется как таблица текстов. В качестве обработки длинного сообщения задается функциональный модуль ``/TRL/XDE_LOG_CALLBACK_SHOW_DETAIL``. .. list-table:: Параметры метода /TRL/XDE_IF_LOGGER~APPL_LOG_TEXT :widths: auto :header-rows: 1 * - Имя параметра - Вид - Обязателен - Тип - Описание * - IV_RECORD_ID - Importing - - ANY - Идентификатор документа * - IV_PRM_NAME - Importing - - ANY - Имя параметра * - IV_PRM_VALUE - Importing - - ANY - Значение параметра * - IT_LOG_PARAM - Importing - - /TRL/XDE_T_LOG_PARAM - Таблица параметров * - IV_STEXT - Importing - X - ANY - Короткий текст сообщения * - IV_LTEXT - Importing - - ANY - Длинный текст сообщения * - IV_MSGTY - Importing - - ANY - Тип сообщения (по умолчанию "E") * - IV_PROB_CLASS - Importing - - BALPROBCL - Класс проблем сообщения **Добавить сообщение в лог** Данный метод полностью выполняет операцию добавления сообщения в лог: создание объекта логирования, выполнение проверок и сохранение сообщения. Если до вызова данного метода сделать вызов метода ``SET_NO_ADDITION`` с параметром ``IV_NO_ADDITION`` = "X", то метод добавления сообщения не будет отрабатывать. В остальных случаях делается вызов метода ``CHECK_LOG_OPERATION`` и в случае его удачного завершения (возвращен объект класса) с помощью ``/TRL/XDE_IF_LOGGER~APPL_LOG_TEXT`` вызывается метод добавления сообщения в лог. .. list-table:: Параметры метода ADD_MSG :widths: auto :header-rows: 1 * - Имя параметра - Вид - Обязателен - Тип - Описание * - IV_OPER - Importing - X - CLIKE - Имя операции * - IS_HEADER - Importing - - /TRL/XDE_HEADER - Заголовок документа * - IV_STEXT - Importing - X - CLIKE - Короткий текст сообщения * - IV_LTEXT - Importing - - CLIKE - Длинный текст сообщения * - IV_MSGTY - Importing - - CLIKE - Тип сообщения (по умолчанию "E") **Вывести лог** Данный метод считывает все журналы по идентификатору документа, который передается как внешний идентификатор журналов. Кроме того, поиск по журналам выполняется с учетом объекта логирования ``/TRL/XDE_LOG``. .. list-table:: Параметры метода SHOW_LOG :widths: auto :header-rows: 1 * - Имя параметра - Вид - Обязателен - Тип - Описание * - IS_DATA - Importing - X - ANY - Данные, содержащие идентификатор документа **Установить флаг добавления сообщений в лог** Данный метод устанавливает флаг (атрибут ``MV_NO_ADD``) равным значению параметра ``IV_NO_ADDITION``. Если атрибут равен "X", то метод добавления сообщения не будет выполняться. .. list-table:: Параметры метода SET_NO_ADDITION :widths: auto :header-rows: 1 * - Имя параметра - Вид - Обязателен - Тип - Описание * - IV_NO_ADDITION - Importing - - XFELD - Флаг, запрещающий добавлять сообщения (по умолчанию "X" ) **Получить имя SLG подобъекта** Данный метод возвращает значение подобъекта логирования в зависимости от используемой операции. .. list-table:: Параметры метода GET_SUBOBJECT :widths: auto :header-rows: 1 * - Имя параметра - Вид - Обязателен - Тип - Описание * - RV_SUBOBJ - Returning - X - BALSUBOBJ - Подобъект логирования **Получить ссылку на объект** Данный метод возвращает объект класса. Прежде всего выполняется поиск по уже созданным объектам, если по идентификатору документа и имени операции такой объект находится, то работа метода завершается. В противном случае создается новый объект. .. list-table:: Параметры метода GET_OBJECT :widths: auto :header-rows: 1 * - Имя параметра - Вид - Обязателен - Тип - Описание * - IV_OPER - Importing - X - CLIKE - Имя операции * - IV_RECORD_ID - Importing - X - /TRL/XDE_ED_RECORD_ID_EXT - Идентификатор документа * - RO_OBJ - Returning - X - /TRL/XDE_CL_EXTENDED_LOGGER - Объект класса расширенного логирования **Сохранение в журнал приложений SAP** Данный метод сохраняет добавленные сообщения в журнал приложения. Метод не имеет параметров. **Проверить логирование для операции** В первую очередь проверяется наличие уже созданного объекта логирования по идентификатору документа и имени операции. Если такой объект создан, то работа метода завершается. В противном случае метод выполняет проверку по настроечной таблице ``/TRL/XDE_LOG_SET``. В качестве критериев для проверки используются все ключевые поля таблицы: - ``DIRECTION`` (направление документооборота) - ``ID_OED`` (идентификатор оператора) - ``SAP_DOC_TYP`` (тип документа SAP) - ``OED_DOC_TYP`` (тип документа оператора) Если в таблице находится строка, удовлетворяющая условиям выборки, и имеющая значение = "X" в поле, соответствующем операции, то проверка считается выполненной. В таком случае делается вызов метода ``GET_OBJECT``. .. list-table:: Параметры метода CHECK_LOG_OPERATION :widths: auto :header-rows: 1 * - Имя параметра - Вид - Обязателен - Тип - Описание * - IV_DIRECTION - Importing - X - /TRL/XDE_ED_DIRECTION - Направление документооборота * - IV_ID_OED - Importing - X - /TRL/XDE_ED_ID_OED - Идентификатор оператора * - IV_SAP_DOC_TYP - Importing - X - /TRL/XDE_ED_OBJECT_ART - Вид документа SAP * - IV_OED_DOC_TYP - Importing - X - /TRL/XDE_ED_DOC_TYPE - Вид документа оператора * - IV_OPER - Importing - - CLIKE - Имя операции * - IV_RECORD_ID - Importing - - /TRL/XDE_ED_RECORD_ID_EXT - Идентификатор документа * - RO_LOG - Returning - - /TRL/XDE_CL_EXTENDED_LOGGER - Объект класса расширенного логирования Описание атрибутов класса ~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: Атрибуты класса /TRL/XDE_CL_EXTENDED_LOGGER :widths: auto :header-rows: 1 * - Имя атрибута - Вид - Видимость - Тип - Описание * - MS_OPER - Constant - Public - Внутренний тип - Структура, содержащая имена операций * - MC_MSGTY_I - Static Attribute - Public - MSGTY - Вид сообщения. Значение "I" * - MC_MSGTY_W - Static Attribute - Public - MSGTY - Вид сообщения. Значение "W" * - MC_MSGTY_E - Static Attribute - Public - MSGTY - Вид сообщения. Значение "E" * - MC_MSGTY_S - Static Attribute - Public - MSGTY - Вид сообщения. Значение "S" * - MC_TEXTPAR1 - Static Attribute - Public - CHAR2 - Параметр для замены. Значение "&1" * - MC_TEXTPAR2 - Static Attribute - Public - CHAR2 - Параметр для замены. Значение "&2" * - MC_REC_ID - Static Attribute - Public - TPDA_ITAB_COL_VAL - Имя компонента. Значение "RECORD_ID" * - MS_SUBOBJ - Constant - Protected - Внутренний тип - Структура, содержащая имена подобъектов * - MV_HANDLE - Instance Attribute - Protected - BALLOGHNDL - Идентификатор журнала * - MV_OPER - Instance Attribute - Protected - CHAR15 - Имя операции * - MV_NO_ADD - Static Attribute - Private - XFELD - Флаг "Не добавлять сообщения" * - MT_OBJ - Static Attribute - Private - Внутренний тип - Набор созданных объектов логирования * - MC_LOG_OBJECT - Static Attribute - Private - BALOBJ_D - Объект логирования. Значение "/TRL/XDE_LOG" .. _ext_log_settings: Настройка расширенного логирования ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для настройки расширенного логирования в разрезе документа существует настроечная таблица ``/TRL/XDE_LOG_SET``. .. list-table:: Поля таблицы /TRL/XDE_LOG_SET :widths: auto :header-rows: 1 * - Имя поля - Ключ - Тип - Описание * - MANDT - X - MANDT - Мандант * - DIRECTION - - /TRL/XDE_ED_DIRECTION - Направление документооборота * - ID_OED - X - /TRL/XDE_ED_ID_OED - Идентификатор оператора * - SAP_DOC_TYP - X - /TRL/XDE_ED_OBJECT_ART - Вид документа SAP * - OED_DOC_TYP - X - /TRL/XDE_ED_DOC_TYPE - Вид документа ОЭД * - GET_NEW_DOC - - XFELD - Получение нового документа * - SEQ_OUT_DOC - - XFELD - Постановка в очередь отправки * - SIGN_OUT_DOC - - XFELD - Подпись исходящего документа * - SEND_OUT_DOC - - XFELD - Отправка исходящего документа * - GET_NEW_STATUS - - XFELD - Получение нового статуса * - DEL_OUT_DOC - - XFELD - Удаление документа * - WITH_OUT_DOC - - XFELD - Отзыв исходящего документа * - REV_OUT_DOC - - XFELD - Аннулирование исходящего документа * - ACP_REV_DOC - - XFELD - Согласование аннулирования * - REJ_REV_DOC - - XFELD - Отклонение аннулирования * - ACP_IN_DOC - - XFELD - Согласование входящего документа * - REJ_IN_DOC - - XFELD - Отклонение входящего документа * - GET_PRINTFORM - - XFELD - Получение печатной формы * - GET_ZIP - - XFELD - Получение ZIP архива * - GET_FNS - - XFELD - Получение ЮЗ документов * - AUTOINV - - XFELD - Автофактурирование * - MIGO_MIRO - - XFELD - Предзаполнение MIGO/MIRO * - NOTIF - - XFELD - Уведомления Для ведения таблицы создан кластер ракурсов ``/TRL/XDE_LOG_SETTINGS``, который также может быть вызыван с помощью транзакции ``/TRL/XDE_LOGGING``. Кластер делит таблицу на две части, в одной из которых можно заполнить данные для входящих документов, в другой части - данные для исходящих документов. .. image:: media/image1.png :scale: 61 :align: center .. note:: В принципе заполнение нужно выполнять с учетом всех полей. Однако, если необходимо включить логирование по определенным операциям без учета некоторых критериев, поле можно оставить пустым. Например, если нужно включить логирование по операции для всех документов по оператору "XXX", то следует заполнить только поле ``ID_OED`` = "XXX" для входящих и/или исходящих документов и оставить поля ``SAP_DOC_TYP`` и ``OED_DOC_TYP`` пустыми. .. image:: media/image2.png :scale: 59 :align: center .. _ext_logging_show: Просмотр сообщений расширенного логирования ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Сообщения, попавшие в логи, можно посмотреть двумя способами. #. С помощью транзакции ``SLG1``. В транзакции нужно указать в качестве объекта ``/TRL/XDE_LOG``. Для ограничения выборки можно изменить подобъект логирования, даты и/или указать внешний идентификатор (идентификатор документа). .. image:: media/image5.png :scale: 90 :align: center #. С помощью кнопки ``История операций``. Предварительно необходимо выбрать только одну запись на ALV. .. image:: media/image6.png :scale: 45 :align: center Если данные имеются, то будут выведены все журналы для выбранного документа, в которых можно посмотреть сообщения по каждой операции отдельно. .. image:: media/image7.png :scale: 55 :align: center Навигация и поиск ошибок ~~~~~~~~~~~~~~~~~~~~~~~~~ Для поиска ошибок, возникших во время логирования, можно воспользоваться классом сообщений ``/TRL/XDE_LOG`` (транзакция ``SE91``), который создан специально для этой задачи. Данный класс содержит все сообщения, которые затем можно увидеть в журналах. Для навигации по классу сообщения можно воспользоваться функцией поиска по классу сообщений и журналу использования. * Поиск сообщений в классе сообщений по тексту .. image:: media/image3.png :scale: 90 :align: center * Поиск использования сообщения .. image:: media/image4.png :scale: 65 :align: center