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

Контракты интеграционных интерфейсов и изменение версий

Как зафиксировать контракт SAP-интерфейса, оценить совместимость изменений, проверить потребителей и безопасно вывести старую версию из эксплуатации.

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

Контракты интеграционных интерфейсов и изменение версий#

Интерфейс - это обещание потребителю о структуре данных, смысле полей, фильтрах, порядке, ошибках и сроке поддержки. OpenAPI-файл или имя API описывает только часть этого обещания. В финансовой интеграции контракт дополнительно задаёт ключи, валюты, даты, семантику удалений, повторную доставку и сверки. Пример извлечения SAP-журнала и передачи в хранилище приведён в статье SAP Journal в Financial DWH.

Запишите контракт до реализации#

Для каждого интерфейса фиксируйте владельца и потребителей; продукт, редакцию и релиз; путь доступа; схему; семантику каждой даты и суммы; ключ записи; правила фильтрации; поведение при повторах; порядок и маркер версии; удаления и исправления; коды ошибок; лимиты; аутентификацию и авторизацию; период совместной поддержки версий. Сохраняйте отдельно версию самого источника и версию потребительского контракта: смена версии SAP не означает автоматически, что изменился payload, а одинаковый путь API не гарантирует прежнее поведение при иных фильтрах или правах.

Контракт должен быть проверяемым: приложите репрезентативные примеры сообщений, ожидаемые результаты и перечень известных исключений. Для финансовых данных примеры должны включать отрицательную сумму, нулевое значение, несколько валютных оценок, позднее исправление, отмену и пустой результат. Пример не заменяет документацию схемы или проверку на целевом релизе.

Классифицируйте изменения по их эффекту#

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

Перед выпуском оцените как минимум:

  • наличие и тип каждого поля, обязательность, null и значение по умолчанию;
  • точность и единицы денег, валюту, знак, дату и часовой пояс;
  • уровень детализации строки, состав ключа, уникальность и порядок строк;
  • фильтры, полноту, поведение пагинации и коды ошибок;
  • повторы, поздние события, удаления и способ восстановления checkpoint;
  • авторизацию, лимиты и срок параллельной поддержки.

Сравнивайте схему автоматически, но не принимайте результат сравнения за доказательство семантической совместимости. Сгенерируйте для потребителей примеры старого и нового ответа и проверьте бизнес-инварианты на обоих. Молчаливое изменение значения поля при неизменном типе часто опаснее явного изменения схемы.

Планируйте миграцию и вывод из эксплуатации#

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

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

Не смешивайте механизмы SAP#

Документация SAP различает версии API, показываемые в SAP Business Accelerator Hub, версии и ревизии прокси в SAP API Management и release contract опубликованных ABAP API. В описании версии SAP Business Accelerator Hub используются major/minor/patch и разные категории изменений; API Management описывает revision для совместимых изменений одного прокси и version для несовместимого перехода. Для опубликованных ABAP API стабильность зависит от release contract; API snapshots и проверка совместимости применяются в соответствующем контексте ABAP Environment. Эти механизмы относятся к разным объектам и продуктам: не переносите их правила на любой SAP endpoint или CDS view.

В API Management статусы прокси, включая deprecated и decommissioned, являются состояниями прокси. Наличие статуса само по себе не подтверждает, что все потребители мигрировали, что задана одинаковая политика поддержки в целевом SAP-продукте или что выключение безопасно. Проверяйте версию, статус, документацию и сроки именно у выбранного интерфейса и в целевом продукте и релизе.

Минимальный набор проверок#

  1. Проверьте обязательные поля, типы, диапазоны, пустые значения и неизвестные значения перечислений.
  2. Прогоните старые и новые контрактные примеры через каждого известного потребителя.
  3. Проверьте ключ, повторы, перестановку событий, исправление задним числом, отмену и сверку сумм по валюте и периоду.
  4. Сверьте схему, документацию, версию SAP, авторизацию, фильтры и лимиты с фактическим интерфейсом целевого релиза.
  5. Выполните переключение и откат в тестовом окружении, включая восстановление checkpoint и повторную поставку.

Эта статья описывает методику проектирования и контроля контрактов. В проекте нет SAP runtime, живых API-потребителей или проверок совместимости конкретного интерфейса. Приведённые ссылки относятся к названным механизмам SAP и не подтверждают доступность одного и того же API во всех редакциях и релизах.

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

  1. API versions on SAP Business Accelerator Hub ↗
  2. API revisions in SAP API Management ↗
  3. Software component dependencies and API compatibility ↗
  4. API proxy states ↗

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