SAP Учебное пособие по BAPI – Как создать BAPI в ABAP

⚡ Умное резюме

БАПИ в SAP ABAP — это стандартизированный, поддерживающий RFC метод создания бизнес-объектов, позволяющий внешним приложениям взаимодействовать с процессами и данными R/3. На этой странице рассматриваются стандартизированные BAPI, как создать BAPI в SWO1, тестирование, выпуск и как вызывать BAPI из ABAP.

  • ???? Основное определение: Интерфейс прикладного программирования (АП) — это стабильный метод, обеспечивающий стандартизированный доступ внешних систем к приложениям. 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) — это стандартизированные программные интерфейсы (методы), позволяющие внешним приложениям получать доступ к бизнес-процессам и данным в системе R/3.

Oни обеспечить стабильные и стандартизированные методы для достижения плавной интеграции между системой 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.

Как создать БАПИ

Шаг 1) Перейдите к транзакции swo1 (Инструменты->Business Framework -> Разработка BAPI -> Построитель бизнес-объектов). Выберите бизнес-объект в соответствии с функциональным требованием, для которого создается BAPI.

Создайте BAPI в ABAP

Шаг 2) Откройте бизнес-объект в режиме изменения. Затем выберите «Утилиты» -> «Методы API» -> «Добавить метод». Затем введите имя функционального модуля и нажмите «Продолжить».

Создайте BAPI в ABAP

Шаг 3) В следующем диалоговом окне необходимо указать следующую информацию:

  • Метод: предложите подходящее имя для метода.
  • Тексты: введите описание BAPI,
  • Радиокнопки: Диалог, Syncхронический, независимый от экземпляра. BAPI обычно реализуются синхронно.

Создайте BAPI в ABAP

Шаг 4) Чтобы создать метод, выберите Да в следующем диалоговом окне.

Создайте BAPI в ABAP

Шаг 5) После того, как программа была сгенерирована и выполнена, проверьте программу в только что созданном методе. Таким образом, создается BAPI.

Создайте BAPI в ABAP

Тестирование БАПИ

Вы можете протестировать BAPI, Тестирование отдельный метод бизнес-объекта в построителе бизнес-объектов. (или можно использовать транзакцию SWUD для проверки метода).

Освобождение и заморозка BAPI

  • Чтобы освободить BAPI, сначала освободите функциональный модуль (с помощью транзакции se37).
  • Установите статус метода на «выпущен» в Business Object Builder (используя транзакцию SWo1 – Редактировать-> изменить статус-> выпущен.)

Вы также можете использовать 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

БАПИ, а BDCи простой RFC — все они перемещают данные в SAPОднако они различаются по стабильности и по тому, что используют повторно. В таблице ниже приведено их сравнение.

Критерии BAPI BDC RFC (пользовательский)
Интерфейс Выпущенный метод бизнес-объекта Последовательность экранов транзакции Любой пользовательский функциональный модуль
Стабильность при обновлении Гарантировано для выпущенных BAPI. Перерыв в работе при изменении экрана. Зависит от разработчика.
Дистанционное управление включено Да Нет Да
Проверка бизнеса Полный, как и в случае транзакции. Полная версия, отображает сами экраны. Только то, что написал разработчик.
лучше всего для Стабильная интеграция и интерфейсы. Загрузки, для которых отсутствует BAPI. Индивидуальные услуги "точка-точка"

Общее правило таково: используйте выпущенный BAPI, если он существует, переключайтесь на BDC, если его нет, и оставляйте пользовательские RFC для специализированных сервисов.

Часто задаваемые вопросы (FAQ)

BAPI выполняет обновление, но оставляет фиксацию транзакции вызывающей стороне, поэтому несколько BAPI можно объединить в одну логическую единицу работы. Затем BAPI_TRANSACTION_COMMIT сохраняет их вместе, сохраняяping Данные согласуются.

Таблица RETURN типа BAPIRET2 содержит сообщения о вызове. Строка типа S означает успех, E — ошибку, W — предупреждение, а A — прерывание. Вызывающая сторона считывает её, чтобы решить, следует ли выполнить операцию commit.

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

Да. Искусственный интеллект в инструментах разработки ABAP предлагает стандартный BAPI для бизнес-объекта и составляет карту параметров.pingи добавить обработку изменений и ошибок. Разработчик подтверждает поля и тестирует вызов.

Да. Многие OData-сервисы и интеграции с ИИ используют BAPI, поскольку он уже содержит бизнес-логику. Более новые уровни добавляют REST-доступ и поддержку обработки естественного языка поверх стабильного интерфейса BAPI.

Подведем итог этой публикации следующим образом: