SAP Підручник з BAPI – Як створити BAPI в ABAP

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

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

  • 🔌 Основне визначення: Інтерфейс програмування бізнес-застосунків (Business Application Programming Interface) – це стабільний метод, який надає зовнішнім системам стандартизований доступ до SAP бізнес-процеси та дані.
  • 🗃️ Репозиторій бізнес-об'єктів: BAPI визначені в BOR як методи типів бізнес-об'єктів та реалізовані як функціональні модулі з підтримкою RFC.
  • 📚 Стандартизовані BAPI: Варіанти GetList, GetDetail, Create, Change, Delete та Multiple забезпечують методи читання, запису та масової обробки, які можна використовувати повторно.
  • 🛠️ Створення: BAPI вбудовано в транзакцію SWO1 шляхом додавання методу API, який вказує на функціональний модуль з підтримкою RFC.
  • Тестування та випуск: Метод тестується в Business Object Builder або SWUD, а потім випускається шляхом випуску функціонального модуля та встановлення статусу методу.
  • 📞 Виклик BAPI: Програма ABAP викликає функціональний модуль, а потім виконує комміт з BAPI_TRANSACTION_COMMIT, оскільки BAPI не виконує комміт самостійно.

Як створити BAPI в SAP 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.

Створіть BAPI в ABAP

Крок 2) Відкрийте бізнес-об'єкт у режимі зміни. Потім виберіть «Утиліти» -> «Методи API» -> «Додати метод». Потім введіть назву функціонального модуля та виберіть «Продовжити».

Створіть BAPI в ABAP

Крок 3) У наступному діалоговому вікні необхідно вказати наступну інформацію:

  • Метод: запропонуйте відповідну назву для методу,
  • Тексти: Введіть опис для BAPI,
  • Перемикачі : Діалог, Synchronous, незалежний від екземпляра. BAPI зазвичай реалізуються синхронно.

Створіть BAPI в ABAP

Крок 4) Щоб створити метод, виберіть Так у наступному діалоговому вікні.

Створіть BAPI в ABAP

Крок 5) Після створення та виконання програми перевірте програму за допомогою щойно створеного методу. Таким чином створюється BAPI.

Створіть BAPI в ABAP

Тестування 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 для спеціалізованих служб.

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

BAPI виконує оновлення, але залишає COMMIT WORK викликаючій особі, тому кілька BAPI можна об'єднати в одну логічну одиницю роботи. BAPI_TRANSACTION_COMMIT потім зберігає їх разом, keeping дані узгоджуються.

Таблиця RETURN типу BAPIRET2 містить повідомлення виклику. Рядок типу S відповідає успіху, E – помилці, W – попередженню, а A – перериванню. Викликаюча сторона зчитує її, щоб вирішити, чи слід завершити виклик.

Транзакційний BAPI відкриває BAPI Explorer, у якому перелічено кожен бізнес-об'єкт та його методи з документацією та інструментами тестування. SE37 також показує BAPI, оскільки кожен з них є функціональним модулем з підтримкою RFC.

Так. Помічники ШІ в інструментах розробки ABAP пропонують стандартний BAPI для бізнес-об'єкта, складають карту параметрів.ping, та додайте обробку комітів та помилок. Розробник підтверджує поля та тестує виклик.

Так. Багато сервісів OData та інтеграцій штучного інтелекту називають BAPI під своїм керівництвом, оскільки він уже містить бізнес-логіку. Новіші рівні додають REST-доступ та природну мову поверх стабільного інтерфейсу BAPI.

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