ПРОДУКТЫ И ПЕРЕХОДЫP1L3

RFC, BAPI и IDoc: контракт и результат финансовой интеграции

Как выбрать синхронный или асинхронный путь, различать технический приём и бизнес-результат, безопасно повторять обработку и ограничивать применимость интерфейсов по редакции SAP.

Ревизия 1 Применимость к указанным контекстам Частичное покрытие Контекст: CTX-GENERALКонтекст: CTX-S4-ONPREMКонтекст: CTX-S4-PUBLIC документальная опора: недостаточно данных
Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.

RFC, BAPI и IDoc: контракт и результат финансовой интеграции#

RFC, BAPI и IDoc обозначают связанные, но разные уровни интеграции. RFC описывает удалённый вызов функции; BAPI задаёт бизнес-операцию SAP и может вызываться по RFC; IDoc переносит структурированное сообщение для отдельной входящей или исходящей обработки. Совпадающее имя бизнес-объекта не означает одинаковый контракт, транзакционную границу или гарантию доставки.

Выберите режим по времени и границе транзакции#

Синхронный RFC подходит, когда вызывающей стороне нужен ответ в рамках запроса и операция укладывается в согласованный таймаут. При обрыве соединения вызывающая сторона может не знать, завершилась ли операция на сервере. Перед повтором нужно проверить бизнес-ключ и результат предыдущего запроса, иначе технический повтор способен создать вторую проводку или документ.

Асинхронный сценарий через ALE/IDoc разделяет передачу сообщения и его прикладную обработку. Наличие записи IDoc или подтверждение приёма означает, что сообщение дошло до соответствующего технического этапа, но не доказывает успешное создание бизнес-документа. Контракт должен задавать корреляционный идентификатор, наблюдаемые статусы и место, где проверяется документ-результат.

В SAP документированы разные RFC-варианты: синхронные и асинхронные вызовы, транзакционные единицы и очереди имеют разные свойства доставки и упорядочивания. Некоторые механизмы SAP используют технический идентификатор транзакции и обеспечивают повторную обработку в рамках описанного механизма. Это не общее обещание exactly once для бизнес-операции через все системы: бизнес-дубликаты, сбои на границах систем и повторная отправка требуют отдельных проверок.

Зафиксируйте финансовый контракт#

До реализации укажите точный продукт, редакцию и релиз; поддерживаемый BAPI, IDoc message type или RFC-enabled интерфейс; направление потока; систему-владельца записи; техническую идентичность; ключ документа; правила сериализации; подтверждения; таймаут; повторы; очередь ошибок; срок хранения и сверку результата. Для финансового документа ключ обычно должен включать применимые измерения вроде компании, финансового года, номера документа и источника, а не только локальный номер сообщения.

Опишите значения и правила для валюты документа и локальной валюты, знака суммы, даты документа и даты проводки, периода, ledger, дебета и кредита, корректировки и сторно. Укажите, что происходит при частичном успехе, блокировке периода, ошибке проверки, дублирующем ключе и повторной доставке. Сохраняйте исходный payload или его контрольный отпечаток, версию контракта, correlation ID, технические статусы и бизнес-результаты в соответствии с политикой защиты данных.

Разведите приём, обработку и сверку#

Для каждого сообщения нужна явная модель состояний: сформировано; отправлено; принято транспортом; передано обработчику; отклонено или ожидает исправления; бизнес-объект создан либо изменён; результат сверен. Перечень и смысл статусов зависят от выбранного механизма и конфигурации. Не называйте общий HTTP/RFC успех доказательством проводки и не выводите бизнес-успех только из статуса транспортного сообщения.

Для безопасной повторной обработки определите бизнес-ключ и способ обнаружить уже применённый запрос. Разделите временные ошибки, при которых разрешён ограниченный повтор с задержкой, и ошибки данных или конфигурации, требующие исправления. Сохраняйте порядок там, где важны зависимые обновления одного объекта; не переигрывайте более старое состояние поверх нового без проверки версии или временной последовательности. После повтора сверяйте количество, суммы по валюте, компанию, период и итоговые идентификаторы документов.

Проверьте допустимость интерфейса в целевой редакции#

В SAP S/4HANA On-Premise и Private Edition интерфейсы и настройка зависят от релиза и системы. Для Public Edition проверяйте доступные для выбранного scope публичные API и соответствующие communication scenarios. Документация Public Edition 2608 перечисляет BAPI/IDoc в ограниченном сценарии интеграции с SAP ERP On-Premise при активации SAP_COM_0574; это не делает произвольные BAPI и IDoc универсально доступными для внешнего потребителя. Для нового сценария сначала установите наличие поддерживаемого интерфейса в конкретном релизе и документированном сценарии коммуникации.

Минимальный контрольный прогон#

  1. Проверьте допустимость интерфейса, release contract и конфигурацию в тестовой среде.
  2. Отправьте валидное сообщение, дубль, повтор после таймаута, неверный ключ и ошибку закрытого периода.
  3. Сопоставьте технические подтверждения с бизнес-документом, который действительно создан или изменён.
  4. Проверьте порядок нескольких сообщений для одного бизнес-объекта и обработку старого сообщения после нового.
  5. Сверьте финансовый результат и убедитесь, что исправление, повтор и сторно имеют отдельную историю.

Материал задаёт метод проектирования, а не готовую настройку. SAP Help источники сохранены как metadata_only; конкретный BAPI, message type, partner profile, очередь, доступность в целевом релизе и SAP runtime здесь не проверялись.

Источники и документация

  1. RFC Variants ↗
  2. BAPI ↗
  3. Inbound Processing of IDocs ↗
  4. Serialization at IDoc Level ↗
  5. Integration Scenarios for Public Edition 2608 ↗

Источники нужны для самостоятельной проверки. Примеры и интерпретации на сайте могут быть учебными упрощениями.