BTE – Бизнес события транзакций, данный вид расширения стал доступен с версии 4.0 и и является специальной реализацией, точкой выхода в стандартной программе, для реализации дополнительных пользовательских проверок или обновления пользовательских данных. Техника BTE, как правило, реализована в функциональности главной книги FI-GL, учете дебиторской и кредиторской задолженности (FI-AR и FI-AP) и модуле сбыта (SD).
BTE фактически состоит из предопределенных интерфейсов и позволяет вызвать дополнительную функциональность в виде реализации функциональных модулей. Для реализации бизнес расширения, вы должны создать модуль с предопределенными параметрами и именами. Фактически система SAP вызывает функциональные модули
OPEN_FI_PERFORM_* или
OUTBOUND_CALL_*, которые в свою очередь проверяют, есть ли активные BTE события из настройки системы.
BTE – существует двух типов:
- Publish & Subscribe interfaces (P/S Modules) – в данном типе BTE нельзя обновлять данные в БД, так же может существовать несколько активных инстанций, вызываемых последовательно.
- Process interfaces (Process Modules) – данный тип BTE позволяет выполнять обновление данных в БД. Ограничением является то, что активной может быть одна инстанция данного типа.
Для определения существующих в коде стандартных программ, BTE-реализаций, можно пойти по следящим путям:
- Поиск в коде текстов: "OPEN_FI_PERFORM" для первого типа BTE или "OUTBOUND_CALL_", для поиска второго типа BTE.
- Использовать транзакцию FIBF и далее по меню: «Параметры настройки» – «P/S Модули» или «Модули процессов», для соответствующих типов BTE. Рисунок 1: BTE-1.png.
Для каждого типа BTE существует три вариант, это стандартные события системы SAP-приложения, изменять которые не рекомендуется, так как это сфера ответственности разработчиков компании SAP. Далее идут события партнеров, аналогично среднестатистический разработчик вряд ли является партнером, так что для обычных клиентов и пользователей системы остается только последний пункт «..клиента», ввыбрав который, мы можем приступить к реализации собственных BTE-расширений. Для получения информации по существующим событиями в данной транзакции перейдите по меню «Среда» – «Инфо-система P/S» или «Инфо-система (процессы)». После чего получите список всех доступных событий каждого типа, рисунок 2: BTE-2.png
Для получения шаблона реализации функционального модуля, можно скопировать его из окна справки или же нажать кнопку там же на панели инструментов кнопку
"Функц. модуль-образец" , по нажатию которой будет вызвана транзакция SE37 – создание функционального модуля, а в поле ввода имени функции будет сразу подставлен шаблон функции для реализации, рисунок 3: BTE-4.png. Данное событие позволяет активировать проверку заполнения поля BSEG-XREF3.
Вы должны скопировать данный шаблон в собственный функциональный модуль начинающийся с Z_ или Y_, например модуль SAMPLE_INTERFACE_00001012 можно скопировать в модуль Z_SAMPLE_INTERFACE_00001012, рисунок 4: BTE-5.png, в собственной группе функцій, например Z_BFFMSMPL2.
В данном случае после копирования мы получим шаблон модуля с входными и выходными параметрами, где можем написать собственную реализацию, пример кода ниже:
FUNCTION z_sample_interface_00001012.
*"--------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(I_BSEG) LIKE BSEG STRUCTURE BSEG
*" VALUE(I_BKPF) LIKE BKPF STRUCTURE BKPF
*" VALUE(I_AKTYP) LIKE T020-AKTYP
*" VALUE(I_OKCODE) LIKE OFIWA-OKCOD
*" EXPORTING
*" REFERENCE(E_XCHNG) LIKE OFIWA-XCHNG
*"--------------------------------------------------------------------
BREAK-POINT.
ENDFUNCTION.
Пока реализацию разрабатывать не будем, а поставим только команду остановки, и перейдем к активации вызова нашей функции. Для этого в транзакции FIBF переедем по меню: «Параметры настройки» – «Продукты» – «…клиента», рисунок 5: BTE-6.png.
Вполне возможно, что в таблице уже будут активные продукты. Если не знаем что это за продукты, то не трогаем, просто создаем новый собственный тип продукта и ставим галку активации. Для этого нажимаем кнопку «Новые записи», рисунок 6: BTE-7.png
После чего сохраняем собственный продукт и переходим к связыванию продукта с функциональным модулем созданным ранее. Так как это был модуль обновления данных, то идем по пути: «Параметры настройки» – «P/S Модули» – «…клиента», где добавляем модуль, созданный ранее с нашим типом продукта, рисунок 7: BTE-8.png, после чего, сохраняем данные ввода.
Теперь наш модуль будет вызываться системой для проверки значения находящегося в поле BSEG-XREF3.
Примечание: Особенно часто используемый тип событий это событие:
00001120 – ПРОВОДКА ДОКУМЕНТА: замещение полей в загол./строк (инфо-система процессов), где можно изменять поля документа FI как в заголовке, так и позициях.