Що таке BADI? SAP ABAP?
⚡ Розумний підсумок
БАДІ в SAP ABAP розшифровується як Business Add-In (Бізнес-надбудова) – об'єктно-орієнтоване вдосконалення, яке підключає користувацьку логіку до стандартної SAP функціональність. На цій сторінці пояснюється, що таке BADI, його функції, класичні та нові типи, робочий процес SE18 та SE19, а також його порівнянні з вихідними кодами.

Що таке BADI?
BADI означає Bюність Add Ins. Так само, як і Customer Exits, BADI допомагає підключати користувацькі вдосконалення до SAP функціональність. Приклад BADI: У транзакцію CAT2 – Запис у табелі робочого часу відділ кадрів бажає включити інтерактивне підтвердження того, що свідоме подання неправильних даних є підставою для звільнення. Цього можна досягти за допомогою BADI
Різниця від класичного виходу є технічною. BADI побудовано на ABAP-об'єктах, тому стандартна програма викликає метод інтерфейсу, а користувацький код знаходиться в класі, який реалізує цей метод. Ось чому BADI часто описують як об'єктно-орієнтованого наступника вихід клієнта.
Функції
- BADI є об'єктно-орієнтованими
- Їх можна реалізувати кілька разів
- Це не вимагає SAP Софтвер Змінити реєстрацію
- Немає впливу на оновлення випуску на функціонування BADI
Ці чотири особливості пояснюють, чому SAP рекомендує BADI замість класичного виходу. Оскільки покращення знаходиться в окремому класі, воно переживає оновлення без змін, а оскільки BADI можна визначити як багаторазове використання, кілька команд можуть покращувати один і той самий пункт, не перезаписуючи один одного.
Типи БАДІ
SAP пропонує два покоління бізнес-надбудов. Класична BADI — це версія на основі вдосконалень, описана вище, а нова BADI, представлена з SAP NetWeaver є частиною Enhancement Framework, є швидшим та гнучкішим.
| Критерії | Класичний БАДІ | Новий (ядерний) BADI |
|---|---|---|
| Зберігається в | SE18 та SE19 | Конструктор покращень всередині місця покращення |
| Фільтри | Прості значення фільтра | Комбінації фільтрів з логічними виразами |
| Відступати | Недоступний | Резервний клас за замовчуванням виконується, коли жодна реалізація не активна |
| Моментальність | CL_EXITHANDLER=>ОТРИМАННЯ_ЕКЗЕМПЛЯРУ | Оператори GET BADI та CALL BADI |
| продуктивність | Повільніше, об'єкт створювався при кожному виклику | Швидший, керований ядром |
Обидва покоління знайдені та реалізовані подібним чином, що описано далі.
Як визначити та впровадити BADI
Це включало три кроки
Крок 1) Створення визначення BADI та його інтерфейсу: транзакція SE18.
Крок 2) Створення реалізації BADI: Транзакція SE19
Крок 3) Визначте клас, який реалізує інтерфейс: Під час створення реалізації також створюється клас для реалізації інтерфейсу покращення.
У коді стандартна програма досягає реалізації через обробник виходу. Класичний шаблон створює екземпляр посилання BADI, а потім викликає метод інтерфейсу.
* Reference typed with the BADI interface DATA: lo_badi TYPE REF TO zif_ex_badi_demo. * Get the active implementation(s) CALL METHOD cl_exithandler=>get_instance CHANGING instance = lo_badi. * Call the interface method that carries the custom logic CALL METHOD lo_badi->check_data EXPORTING is_input = ls_input.
💡 Порада: Новий BADI ядра викликається простіше за допомогою GET BADI та CALL BADI, які також автоматично обробляють значення фільтра. Використовуйте SE18, щоб перевірити, чи є точка покращення класичним чи новим BADI, перш ніж записувати виклик.
⚠️ Попередження: Транзакція SE18 містить визначення та інтерфейс, тоді як SE19 містить реалізацію. Створення реалізації в SE18 або визначення в SE19 є поширеною помилкою, яка призводить до неактивності BADI.
BADI проти виходу клієнта проти виходу користувача
Усі три методи підвищують стандарт SAP, але вони відрізняються технологією та гнучкістю. У таблиці нижче BADI розміщено поруч із двома старішими методи виходу.
| Критерії | Вихід користувача | Вихід клієнта | БАДІ |
|---|---|---|---|
| Технологія | Підпрограма (FORM) | Функціональний модуль, екран або меню | Об'єктно-орієнтований інтерфейс та клас |
| Сфера | Тільки SD-модуль | Всі модулі | Всі модулі |
| Кількість впроваджень | Один | Один | Багаторазове використання, якщо його визначають як багаторазове |
| Підтримується за допомогою | Пряме редагування включення | SMOD та CMOD | SE18 та SE19 |
| Upgrade сейф | Перевірено в SPAU | Так | Так |
Практичне правило полягає в тому, щоб використовувати BADI завжди, коли такий існує, оскільки він є об'єктно-орієнтованим, безпечним для оновлення та може бути реалізований більше одного разу.



