SAP Підручник з BAPI – Як створити BAPI в ABAP
⚡ Розумний підсумок
БАПІ в SAP ABAP — це стандартизований метод бізнес-об'єкта, що підтримує RFC, який дозволяє зовнішнім програмам отримувати доступ до процесів і даних R/3. На цій сторінці пояснюється, як створити стандартизований BAPI в SWO1, як його тестувати, випускати та як викликати BAPI з ABAP.

Що таке BAPI?
Програмний інтерфейс бізнес-додатків (BAPI) — це стандартизовані інтерфейси програмування (методи), які дозволяють зовнішнім програмам отримувати доступ до бізнес-процесів і даних у системі R/3.
Вони забезпечити стабільні та стандартизовані методи для досягнення повної інтеграції між системою R/3 і зовнішніми програмами, застарілими системами та додатковими компонентами.
BAPI визначено в BOR (сховище бізнес-об'єктів) як методи о SAP типи бізнес-об'єктів, що виконують певні бізнес-функції. Вони реалізуються як Функція з підтримкою RFC модулі та створюються в конструкторі функцій ABAP Workbench.
Деякі BAPI та методи забезпечують базові функції та можуть використовуватися для більшості SAP Бізнес-об’єкти. Вони називаються СТАНДАРТИЗОВАНІ BAPI.
Список стандартизованих BAPI:
- BAPI для читання даних – GetList() , GetDetail() , GetStatus() , ExistenceCheck()
- BAPI для створення або зміни даних - Create(), Change(), Delete() і Undelete(),
- BAPI для масової обробки -ChangeMultiple(), CreateMultiple(), DeleteMultiple().
Переваги BAPI
BAPI є кращим за методи, що базуються на екрані, оскільки це документований, опублікований інтерфейс, який SAP залишається стабільним у всіх випусках. Це має кілька практичних переваг.
- Стабільний інтерфейс: Підпис випущеного BAPI не змінюється після оновлення, тому викликаюча програма продовжує працювати.
- Повторне використання бізнес-логіки: BAPI виконує ті ж перевірки, що й транзакція, тому дані, додані через нього, залишаються узгодженими.
- Дистанційне керування ввімкнено: Оскільки BAPI є функціональним модулем з підтримкою RFC, його можна викликати з іншого SAP система, а Java або програму .NET, або веб-сервіс.
- Без залежності від екрана: На відміну від пакетного введення запису, BAPI не переривається при зміні макета екрана.
Зрозумівши концепцію та її переваги, у наступному розділі ми крок за кроком створимо BAPI.
Як створити BAPI
Крок 1) Перейдіть до транзакції swo1 (Інструменти->Business Framework -> BAPI Development ->Business Object Builder). Виберіть бізнес-об’єкт відповідно до функціональних вимог, для яких створюється BAPI.
Крок 2) Відкрийте бізнес-об'єкт у режимі зміни. Потім виберіть «Утиліти» -> «Методи API» -> «Додати метод». Потім введіть назву функціонального модуля та виберіть «Продовжити».
Крок 3) У наступному діалоговому вікні необхідно вказати наступну інформацію:
- Метод: запропонуйте відповідну назву для методу,
- Тексти: Введіть опис для BAPI,
- Перемикачі : Діалог, Synchronous, незалежний від екземпляра. BAPI зазвичай реалізуються синхронно.
Крок 4) Щоб створити метод, виберіть Так у наступному діалоговому вікні.
Крок 5) Після створення та виконання програми перевірте програму за допомогою щойно створеного методу. Таким чином створюється BAPI.
Тестування BAPI
Ви можете перевірити BAPI за допомогою Тестування індивідуальний метод Business Object у Business Object Builder. (або можна використати транзакцію "SWUD", щоб перевірити метод).
Вивільнення та заморожування BAPI
- Щоб випустити BAPI, спочатку випустіть функціональний модуль (за допомогою транзакції se37).
- Установіть статус методу на «released» у Business Object Builder (за допомогою транзакції SWo1 – Edit-> change status-> released.)
Ви також можете використовувати BAPI Explorer (код транзакції BAPI) для перегляду 360′ на BAPI
Як викликати BAPI в ABAP
BAPI викликається як будь-який функціональний модуль з підтримкою RFC. Важливим правилом є те, що BAPI ніколи не видає власний COMMIT WORK, тому викликаюча сторона повинна підтвердити зміну за допомогою BAPI_TRANSACTION_COMMIT або відхилити її за допомогою BAPI_TRANSACTION_ROLLBACK. У наведеному нижче прикладі створюється замовлення на продаж зі стандартним BAPI.
DATA: ls_header TYPE bapisdhd1, lt_items TYPE STANDARD TABLE OF bapisditm, lt_return TYPE STANDARD TABLE OF bapiret2, lv_order TYPE vbeln. * Fill the header and item structures, then call the BAPI CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header IMPORTING salesdocument = lv_order TABLES order_items_in = lt_items return = lt_return. * A BAPI does not commit on its own - decide based on the return table READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF.
⚠️ Попередження: Завжди перевіряйте таблицю RETURN на наявність повідомлення типу E або A перед фіксацією. Виклик BAPI_TRANSACTION_COMMIT після помилки зберігає неповний документ, що є однією з найпоширеніших помилок BAPI.
BAPI проти BDC проти RFC
BAPI, а резервний контролер доменуі простий RFC переміщують дані в SAP, але вони відрізняються стабільністю та тим, що вони повторно використовують. У таблиці нижче їх порівнюють.
| Критерії | БАПІ | резервний контролер домену | RFC (спеціальний) |
|---|---|---|---|
| інтерфейс | Випущений метод бізнес-об'єкта | Послідовність екрану транзакції | Будь-який модуль користувацьких функцій |
| Стабільність при оновленні | Гарантовано для випущених BAPI | Переривається, якщо екран змінюється | Залежить від розробника |
| Дистанційне керування ввімкнено | Так | Немає | Так |
| Перевірка бізнесу | Повний, такий самий, як і транзакція | Повний, запускає фактичні екрани | Тільки те, що кодує розробник |
| Найкраще для | Стабільна інтеграція та інтерфейси | Вантажі, де немає BAPI | Індивідуальні послуги "точка до точки" |
Емпіричне правило полягає в тому, щоб використовувати випущений BAPI, коли такий існує, використовувати BDC, коли його немає, та резервувати власні RFC для спеціалізованих служб.





