Що таке BADI? SAP ABAP?

⚡ Розумний підсумок

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

  • 🧩 Основне визначення: Бізнес-надбудова — це гачок удосконалення, подібний до виходу клієнта, який додає користувацьку функціональність до стандартної SAP без його модифікації.
  • 🧱 Об'єктно-орієнтований: BADI визначає інтерфейс, а покращення знаходиться в класі, який його реалізує, а не в зарезервованому включенні.
  • 🔁 Кілька реалізацій: На відміну від клієнтського виходу, BADI можна впроваджувати кілька разів, що підходить для галузевих рішень та версій для різних країн.
  • 🔓 Upgrade Безпечний: BADI не потребує SAP Реєстрація змін програмного забезпечення та не залежить від оновлення випуску.
  • 🛠️ Визначення та впровадження: Визначення та інтерфейс створені в SE18, а реалізація з його класом створена в SE19.
  • 🆕 Класичне та нове: Класичний BADI базується на вдосконаленнях, а новий BADI ядра, представлений у NetWeaver, додає фільтри, резервні класи та покращену продуктивність.

Що таке BADI? SAP ABAP

Що таке BADI?

BADI означає Bюність Add Ins. Так само, як і Customer Exits, BADI допомагає підключати користувацькі вдосконалення до SAP функціональність. Приклад BADI: У транзакцію CAT2 – Запис у табелі робочого часу відділ кадрів бажає включити інтерактивне підтвердження того, що свідоме подання неправильних даних є підставою для звільнення. Цього можна досягти за допомогою BADI

Приклад 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.

Визначте та запровадьте BADI

Крок 2) Створення реалізації BADI: Транзакція SE19

Визначте та запровадьте BADI

Крок 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 завжди, коли такий існує, оскільки він є об'єктно-орієнтованим, безпечним для оновлення та може бути реалізований більше одного разу.

Поширені запитання

SE18 — це конструктор BADI, де створюються визначення та його інтерфейс. SE19 — це конструктор реалізацій, де до цього визначення приєднується клас реалізації. Один визначає хук, інший його заповнює.

Багаторазовий BADI дозволяє більше однієї активної реалізації одночасно, і всі вони запускаються під час виклику методу. Одноразовий BADI дозволяє лише одну активну реалізацію.

Встановіть точку зупинки на CL_EXITHANDLER=>GET_INSTANCE, запустіть транзакцію та зчитайте назву BADI з параметра EXIT_NAME. Для нових BADI знайдіть місця покращення програми в інформаційній системі репозиторію.

Так. Помічники ШІ в інструментах розробки ABAP створюють клас реалізації, тіло методу та логіку фільтра на основі опису вимоги. Розробник все одно активує реалізацію в SE19 та тестує її.

Консультанти зі штучного інтелекту вивчають стандартну програму та повідомляють про наявні варіанти покращення, а потім рекомендують новий BADI в межах області покращення для нової роботи, зберігаючи...ping класичний BADI, де пропонується лише ця опція.

Підсумуйте цей пост за допомогою: