SAP MII имеет только общий журнал, в который записываются записи всех компонентов системы и данный функционал не очень удобен для ежедневного анализа работающих бизнес-процессов. К сожалению, я не нашел аналога журнала приложений SAP (транзакция SLG1). Поэтому создадим свой аналог.
Нам нужен следующий функционал:
- Место хранения записей журнала приложения (Persistent MDO).
- API для добавления записей в журнал приложений (транзакция добавления одной записи, транзакция массового добавления записей).
- Журнал приложений с возможностью выбора нужной степерью детализации (в табличном виде или в виде дашборда).
Прежде всего создадим проект, в котором будут все нужные объекты. Назовём его Log
В нем создадим объект, в котором будет хранятся записи журнала. Чтобы не зависеть от внешней базы данных, создадим свой постоянный MDO-объект (Persistent MDO). Для этого переходим на вкладку Objects и кликаем правой кнопкой мыши на папке MIIOBJ. Выбираем пункт New File — Persistent MDO
Указываем атрибуты объекта — по сути это поля новой таблицы
ID | string36 | Иденитификатор строки |
DateTime | dateTime | Дата и время записи |
Project | string40 | Проект источника |
Object | string40 | Объект источника |
Type | string1 | Тип записи (I/W/E/A) |
Message | string1000 | Сообщение |
Date | string10 | Дата записи |
Примечание: Отдельное поле Date пришлось добавить при создании отчета, так как не нашел возможности легко фильтровать записи по полю DateTime

Сразу подготовим SQL-запрос, с помощью которого можно будет добавлять запись в журнал. Я предпочитаю создавать каталог SQL, в котором будут собраны все запросы. Для этого на вкладке Catalog создаем папку в проекте Log. В ней создаем MDOQuery Log_Insert

В создаваемом MDOQuery выбираем MDO, который мы создали на предыдущем этапе, режим работы с объектом



Для корректного сохранения даты и времени dateTime указываем формат даты времени

Создадим транзакцию AddLog, которая добавит одну запись в журнал с входящими параметрами для записи в журнал

Сама транзакция пока будет состоять из одного блока, в котором вызывается MDOQuery со следующими параметрами

Таким образом создали транзакцию, которая создает одну запись в журнал приложения.
Таким образом добавление записи в журнал может выглядеть следующим образом:

В данном примере происходит вызов ФМ в системе SAP, которая возвращает справочник материалов. В случае успешной работы в журнал приложения появится соответствующая запись. Если же в процессе работы возникла ошибка, то запись будет с типом E и текстом ошибки

В следующей части добавим функционала в API и сделаем отчет для мониторинга журнала приложений.