Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SMOD/CMOD - Расширения => Тема начата: Uukrul от Январь 14, 2013, 01:35:17 am

Название: BTE - Business Transaction Events (Описание и реализация)
Отправлено: Uukrul от Январь 14, 2013, 01:35:17 am
BTE – Бизнес события транзакций, данный вид расширения стал доступен с версии 4.0 и и является специальной реализацией, точкой  выхода в стандартной программе, для реализации дополнительных пользовательских проверок или обновления пользовательских данных. Техника BTE, как правило, реализована в функциональности главной книги FI-GL, учете дебиторской и кредиторской задолженности (FI-AR и FI-AP) и модуле сбыта (SD).

BTE фактически состоит из предопределенных интерфейсов и позволяет вызвать дополнительную функциональность в виде реализации функциональных модулей. Для реализации бизнес расширения, вы должны создать модуль с предопределенными параметрами и именами. Фактически система SAP вызывает функциональные модули OPEN_FI_PERFORM_* или OUTBOUND_CALL_*, которые в свою очередь проверяют, есть ли активные BTE события из настройки системы.

BTE – существует двух типов:

Для определения существующих в коде стандартных программ, BTE-реализаций, можно пойти по следящим путям:


Для каждого типа 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.

В данном случае после копирования мы получим шаблон модуля с входными и выходными параметрами, где можем написать собственную реализацию, пример кода ниже:
Код: You are not allowed to view links. Register or Login
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 как в заголовке, так и позициях.
Название: BTE - Business Transaction Events (PDF-файл)
Отправлено: Uukrul от Январь 14, 2013, 01:40:25 am
Традиционно, все одним PDF-файлом, условия такие же как обычно, т.е. синхронизация данных форума и файла не обязательна.