Комментарии по теме

«Авто­ма­ти­за­ция те­сти­ро­ва­ния SAPUI5 при­ло­же­ний»
Виталий Поцелуев:
Кирилл, здравствуйте.   Спасибо за вопрос. Лично я не работал с CBTA, но судя по документации, он уже научился работать с SAP UI5, как вы верно заметили. Правда с ограничениями. Документации...
«Авто­ма­ти­за­ция те­сти­ро­ва­ния SAPUI5 при­ло­же­ний»
Кирилл Сатарин:
Виталий, объясните пожалуйста почему в качестве инструмента тестирования вы не рассматриваете CBTA (component based test automation), который с версии SAP SolMan 7.1 SP12 (вышла в июле 2014 года)...
«Зна­ко­мство с SAPUI5»
Роман Бекетов:
Добрый вечер.   Спасибо за обзор, но(!) из этой статьи можно сделать настоящую статью, полезную, если дополнить её описанием пунктов: 1. IDE где разрабатывается проект SAPUI5 с установкой...

BTE - Business Transaction Events

4277
2

BTE – Работа с бизнес событиями транзакций – это техника расширения, позволяющая выполнить дополнительную проверку значений данных в момент ввода документа в систему или выполнить обновление данных в собственных таблицах при выполнении определённых операций (транзакций). Появление этой техники должно было сгладить проблемы использования одной точки расширения разными разработчиками. В некотором роде, для событий проверки значений данных это удалось сделать, однако реализация события обновления является единственной. Техника бизнес событий используется как разработчиками SAP, партнерами SAP, так и клиентами, хотя для клиентов, часть событий ограничена к использованию.

Использование техники BTE стало возможным, начиная с версии SAP ERP 4.0 . Эта техника обеспечивает интерфейс (точку выхода) в стандартной программе с пользовательским расширением (приложением), выполняющим дополнительные пользовательские проверки или обновление пользовательских данных. Технику BTE используют, как правило, для функциональностей:

  • главная книги FI-GL,
  • бухгалтерия поставщиков FI-AP,
  • бухгалтерия клиентов  FI-AR,
  • модуля сбыта SD.

Техника BTE реализуется с помощью предопределенных интерфейсов между стандартной программой и расширением, позволяющих вызвать «дополнительную» (пользовательскую) функциональность. Для реализации бизнес расширения вы должны создать модуль с предопределенными параметрами и именами, для каждого бизнес-события это будет отдельная реализация со своим набором параметров. Система SAP вызывает функциональные модули OPEN_FI_PERFORM_* или OUTBOUND_CALL_*, которые в свою очередь проверяют, есть ли «активные» BTE события из указанных в настройках системы.

Существует два типа интерфейсов (в технике BTE):

  • Publish & Subscribe interfaces (P/S Modules) – в этом типе интерфейса нельзя обновлять данные в БД, но возможно существование нескольких (очередь) активных «инстанций», вызываемых последовательно.
  • Process interfaces (Process Modules) – этот тип интерфейса позволяет выполнять обновление данных в БД, но ограничением его использования является то, что активной может быть одна «инстанция» данного типа.

Для нахождения существующих в коде стандартных программ «триггерных точек» BTE можно пойти следующими путями:

  • Поиск в тексте стандартной программы вызовов:
    •  "OPEN_FI_PERFORM" для нахождения «точки вызова» с интерфейсом P/S Modules;
    • "OUTBOUND_CALL" для нахождения «точки вызова» с интерфейсом Process Modules .
  • Использовать транзакцию FIBF и далее по меню: «Параметры настройки» – «P/S Модули» или «Модули процессов», для соответствующих типов интерфейсов. Рисунок 1: BTE-1.png.
  • Использование отладчики системы, для этого необходимо установить точку останова в функциональном модуле BF_FUNCTIONS_FIND.

Рисунок 1: BTE-1.png

Для каждого типа интерфейса существует три варианта использования:

  1. Вариант для стандартных событий системы SAP-приложения, изменять которые не рекомендуется, так как это сфера ответственности разработчиков компании SAP.
  2. Вариант для событий партнеров (прим. автора. Среднестатистический разработчик вряд ли является партнером)
  3. Вариант для событий «обычных клиентов».

Как мы видим для практического применения на проекте внедрения или при поддержке остаётся только последний пункт, выбрав который, мы можем приступить к реализации собственных BTE-расширений. Для получения информации по существующим событиями в конкретной транзакции перейдите по меню «Среда» – «Инфо-система P/S» или «Инфо-система (процессы)». После чего получите список всех доступных событий каждого типа, рисунок 2: BTE-2.png

Рисунок 2: BTE-2.png

Примечание

Наиболее «любимый» тип интерфейса для BTE, это событие с номером 1120 – замещение полей в заголовке и позициях документа. Фактически разрешено выполнять изменение полей заголовка и позиций документа, когда он полностью сформирован, это - аналог замещения с типом события «0003 – документ полностью», но в отличии от указанного замещения, событие 1120 имеет место для всех создаваемых FI-документов.

 

Для получения шаблона реализации функционального модуля, можно скопировать его из окна справки, или же нажать на панели инструментов кнопку , после нажатия которой будет вызвана транзакция SE37 – создание функционального модуля. В поле ввода имени функции будет подставлен шаблон реализации выбранного интерфейса рисунок 3: BTE-4.png. Если требуется только просмотреть параметры функции, то можно выбрать кнопку , при нажатии на которую, рисунок 5: BTE-41.png, будут выведены параметры функционального модуля.

Рисунок 3: BTE-4.png

Рисунок 4: BTE-41.png

Следует скопировать этот шаблон в собственный функциональный модуль начинающийся с Z_ или Y_. Например, модуль SAMPLE_INTERFACE_00001120 можно скопировать в модуль Z_SAMPLE_PROCESS_00001120, рисунок 5: BTE-5.png, в собственной группе функций, например  Z_BFFMSMPL2.

Рисунок 5: BTE-5.png

В таком случае после копирования мы получим шаблон модуля с входными и выходными параметрами, где можем написать собственную реализацию, пример кода ниже:

Пока собственную реализацию разрабатывать не будем, а поставим только команду остановки, и перейдем к активации вызова нашей функции.

Для начала, требуется создать, так называемую, запись кода продукта. Фактически это признак объединения для группы событий, например, если для реализации какого-то процесса вам нужно задействовать несколько бизнес-событий, то таким образом вы можете сгруппировать используемые бизнес функции и проводить активацию разработки одним нажатием мыши, включая или отключая разработку. Для этого в транзакции FIBF переедем по меню: «Параметры настройки» – «Продукты» – «…клиента», рисунок 6: BTE-6.png.

Ограниченный доступ

Для прочтения полной версии статьи необходимо зайти как зарегистрированный пользователь.

Комментарии:

Николай Кронский (Рейтинг: 345) 16:02, 27 января 2014

Несколько незначительных дополнений:
1) Для поиска через точку останова модулей процесса - ФМ PC_FUNCTION_FIND, для P/S модулей - ФМ BF_FUNCTIONS_FIND, как и указано;
2) следовало бы упомянуть мандантозависимость настройки активности замещений этого типа;
3) Транзакция BERP никак нам не поможет увязать модуль с конкретной транзакцией, так что фраза "Для получения информации по существующим событиями в конкретной транзакции перейдите ..." может ввести в заблуждение :)
 
В целом, написано практично и добротно.
 
Еще одно интересное, на мой взгляд, практическое применение модулей событий бизнес-операций - генерация события бизнес-объекта, которое можно в дальнейшем обработать.
Простой пример из жизни - реализация записи номера создаваемого документа FI в формате "номер/год" в поле, например, текста его же заголовка.
Событие 1120 не подойдет, поскольку в нем номер еще не известен, а в P/S модулях 1030 и/или 1050 изменение собственного заголовка уже невозможно.
16:26, 27 января 2014

Олег Точенюк (Рейтинг: 10169)

Спасибо... подправим

Любое воспроизведение запрещено.
Копирайт © «Издательство ООО «Эксперт РП»