РАЗРАБОТКА ABAPP1L3

Released APIs и OData: контракты финансовых сервисов

Как различать внутренний и внешний release contract, спроектировать OData-сервис вокруг финансового бизнес-объекта и проверять версию, доступ, совместимость и конкурентные изменения.

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

Released APIs и OData: контракты финансовых сервисов#

В SAP слово API может обозначать тип ABAP-объекта, разрешение на его использование или опубликованный сетевой сервис. Это разные контракты. Для финансового обмена важно знать, кто вправе вызывать объект, каким способом, с какой семантикой данных и какое изменение совместимо с уже работающим потребителем.

Не смешивайте release state и release contract#

Статус Released, Deprecated или Decommissioned сообщает состояние жизненного цикла объекта. Release contract задаёт цель разрешённого использования и требования стабильности. В документации ABAP Cloud перечислены, среди прочего, C0 для расширения, C1 для внутреннего использования в разработке и C2 для удалённого API; назначение и доступность зависят от типа объекта, языка ABAP и продуктового контекста. Не выводите пригодность внешнего потребителя из одного слова Released.

Для каждого используемого SAP-объекта проверьте в целевой системе:

  1. существует ли он в установленном выпуске и компоненте;
  2. какой у него API state, release contract и видимость;
  3. разрешён ли контракту именно ваш способ вызова: ABAP-код, расширение или удалённый клиент;
  4. проходят ли проверки ATC и актуальные правила совместимости;
  5. какой преемник и план обновления указаны для устаревающего объекта.

Классификация release относится к объекту в определённом software component и пакете. Она не доказывает, что такой же объект доступен во всех редакциях S/4HANA или во всех релизах. Проверьте опубликованный API в каталоге и системе проекта, а не только по совпадению имени в статье или примере.

Слои RAP-сервиса и OData#

В RAP разделены бизнес-модель и протокол публикации. CDS-модель задаёт данные и связи; service definition выбирает, что входит в бизнес-сервис; service binding связывает это определение с протоколом и способом предоставления, например OData V2 или V4 и UI-service либо Web API. Одна service definition может участвовать в разных bindings. Поэтому UI-представление не следует автоматически считать стабильным внешним API для интеграционного клиента.

В редакторе binding сервис активируют и публикуют для текущей ABAP-системы. Такая локальная публикация сама по себе не создаёт доступ из другого ландшафта и не настраивает маршрутизацию, TLS, доверие, аутентификацию, роли или сетевой доступ. Внешний потребитель требует отдельной конфигурации транспортного и защитного контура.

Для OData фиксируйте в контракте:

  • публичные entity sets, ключи, associations и доступные операции;
  • типы сумм и валют, количеств и единиц, даты и часовые пояса;
  • фильтрацию, сортировку, пагинацию и ожидаемый объём ответа;
  • кто видит и меняет каждую финансовую запись;
  • форму бизнес-ошибок и условия повторного запроса;
  • поведение конкурентных обновлений и правила идемпотентности команд.

Не полагайтесь на случайные поля внутренней CDS-модели как на внешний контракт. Устойчивый сервис открывает только нужную бизнес-поверхность и сохраняет понятный смысл её ключей и показателей.

Версия и совместимость#

Сервисная версия должна позволять старому клиенту продолжить работу, пока потребитель отдельно не согласовал переход. SAP описывает версионирование в service binding через service definitions и сервисные версии; детали именования, API state и семантической версии зависят от типа binding и релиза. Перед добавлением или удалением версии проверьте, как её адресуют клиенты и что происходит с прежней.

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

Доступ, конкуренция и повторная доставка#

Авторизация проверяется в фактическом пути потребления: роль приложения, DCL и полномочия бизнес-объекта должны ограничивать именно тот набор данных, который получает клиент. Для изменяющих запросов определите правила повторов после тайм-аута, чтобы повторная команда не создала второй финансовый эффект. Не всякая операция безопасна к повтору; идемпотентный ключ или бизнес-проверка должны быть частью явно выбранного контракта.

RAP ETag обеспечивает optimistic concurrency: клиент присылает версию прочитанного экземпляра, а система принимает изменение только при совпадении с актуальным состоянием. Это помогает обнаружить конкурирующее изменение, но не задаёт бизнес-правила повтора, дедупликации или сверки. Проверяйте ETag на чтении и записи, включая устаревший клиентский токен, а draft-сценарий оценивайте отдельно.

Проверка финансового сервиса#

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

Записывайте систему, редакцию и выпуск, binding type, service definition, версию, пользователя или роль, параметры запроса, тестовые данные и точные ожидаемый и фактический результаты. Успешная проверка metadata подтверждает описание сервиса, но не полномочия, корректность финансового расчёта или поведение интеграции под нагрузкой.

Область источников и проверки#

Документация по контрактам API и service definition относится к ABAP Cloud / ABAP Cross-Product; описание Service Binding ограничено ABAP Platform 2025 FPS01. Перед применением перепроверьте функции и типы binding в целевой редакции и выпуске. Записи источников имеют статус metadata_only, сохранённые снимки отсутствуют. Сервис, роли, клиентский контракт, финансовые операции и SAP runtime в этом проекте не запускались.

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

  1. Released APIs, ABAP Keyword Documentation ↗
  2. Release states and contracts, SAP ADT User Guide ↗
  3. Service Binding, ABAP Platform 2025 FPS01 ↗
  4. Service Definition, ABAP RESTful Application Programming Model ↗
  5. RAP ETag, ABAP Keyword Documentation ↗

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