Как выбирать BAdI и другие точки расширения, отличать enhancement от модификации и соотносить ABAP Cloud с расширением side-by-side.
3 мин чтения·База знаний
Ревизия 1Применимость к указанным контекстамЧастичное покрытиеКонтекст: CTX-GENERALКонтекст: CTX-S4-PUBLICдокументальная опора: недостаточно данных
Справочный материал. Контракты данных, архитектурные решения и ограничения применения. Источники приведены в материалах, где используются внешние основания.
ABAP: Enhancement Framework и варианты расширения#
Для изменения поведения SAP-приложения сначала найдите поддерживаемую точку расширения и определите, на каком слое должна жить логика. Enhancement Framework позволяет подключать расширение к предусмотренным enhancement options без прямого изменения исходного объекта. BAdI, classic exits, customer exits, append structures и modifications относятся к разным механизмам; это не взаимозаменяемые названия одной настройки.
Запишите исходное событие, нужный результат, затрагиваемые бизнес-объекты и допустимое поведение при ошибке. Затем найдите документированный extension point для целевого продукта и релиза. Для BAdI проверьте интерфейс, доступные фильтры, условия вызова и число активных реализаций. Изучите порядок исполнения и влияние реализации на транзакцию, полномочия и производительность.
Не помещайте критическую логику в произвольный участок стандартной программы только потому, что технически найдено место для вставки кода. Расширение на низком уровне может нарушить предположения приложения. Избегайте изменения стандартного исходного объекта, если задача решается предусмотренной точкой расширения или released API.
Enhancement добавляет реализацию к предусмотренному механизму, сохраняя исходный объект отдельно. Modification меняет доставленный SAP-объект и создаёт отдельную обязанность по сравнению и повторному согласованию при обновлении. Append structure расширяет структуру в разрешённом контексте Dictionary, но не заменяет released business API и не делает допустимым произвольное изменение таблиц.
Проверяйте namespace, enhancement category, пакет, зависимости, транспорт и правила переключения расширения. Даже поддерживаемая точка расширения нуждается в регрессионной проверке: она может менять результат бизнес-процесса при смене настройки, данных или версии реализации.
В SAP S/4HANA Cloud Public Edition документированы key-user, developer и side-by-side варианты. Key-user расширение подходит для поддерживаемых настройками задач. Developer extensibility позволяет реализовать более сложную логику в разрешённой модели ABAP Cloud и в рамках доступных released объектов. Side-by-side расширение размещается на SAP BTP с отдельным runtime и жизненным циклом, что подходит для слабо связанных приложений и интеграционных сценариев.
Для on-premise и private cloud доступность классического ABAP не означает, что любое новое расширение соответствует clean-core цели. Проверьте допустимые модели разработки, released API, объектный контракт и правила обновления конкретного стека. Название «BAdI» или успешная активация не заменяют проверки статуса release API.
Выбирайте on-stack вариант, когда нужна тесная транзакционная связь и целевая редакция предоставляет нужную точку. Рассматривайте side-by-side, когда требуется независимый runtime, отдельная нагрузка, интеграция нескольких систем или независимый цикл обновления. При переносе логики через границу системы определите владельца данных, контракты, повторы, идемпотентность, журналирование и сверку результата.
Покройте стандартный путь, отсутствие подходящей реализации, каждый применимый фильтр, конфликт реализаций, ошибку расширения и rollback. Проверьте полномочия, влияние на время выполнения, объём чтения, корректность валют и единиц, а также отсутствие повторных проводок при повторе процесса. В транспорт включайте реализацию, её зависимости и настройки, необходимые для воспроизводимости.
Источники описывают разные версии Enhancement Framework и SAP S/4HANA Cloud Public Edition. Набор разрешённых вариантов отличается по редакции и релизу. В этом проекте нет SAP runtime; BAdI, enhancement implementations, transports и clean-core анализ не выполнялись.
ABAP: Enhancement Framework and Extensibility Options#
To change SAP application behavior, first find a supported extension point and determine which layer should own the logic. The Enhancement Framework connects implementations to provided enhancement options without directly modifying the source object. BAdIs, classic exits, customer exits, append structures, and modifications are different mechanisms; these are not interchangeable names for one setting.
Record the triggering event, desired result, affected business objects, and acceptable error behavior. Then find a documented extension point for the target product and release. For a BAdI, check its interface, available filters, call conditions, and number of active implementations. Review execution order and the implementation's effect on transaction, authorization, and performance.
Do not put critical logic into an arbitrary part of a standard program just because a technical insertion point was found. A low-level enhancement can violate application assumptions. Avoid changing a delivered SAP source object when the requirement can be solved through a provided extension or released API.
An enhancement adds an implementation through a provided mechanism while keeping the original object separate. A modification changes a delivered SAP object and creates a separate obligation to compare and reconcile it during upgrades. An append structure extends a structure in a supported Dictionary context, but it does not replace a released business API or permit arbitrary table changes.
Check namespace, enhancement category, package, dependencies, transport, and switch rules. Even a supported extension point needs regression checks: its result can change when settings, data, or implementation versions change.
SAP S/4HANA Cloud Public Edition documents key-user, developer, and side-by-side options. Key-user extensibility fits supported configuration tasks. Developer extensibility supports more complex logic in the permitted ABAP Cloud model and within available released objects. Side-by-side extensions run on SAP BTP with a separate runtime and lifecycle, which fits loosely coupled applications and integration scenarios.
For on-premise and private cloud, availability of classic ABAP does not mean that every new extension meets a clean-core goal. Check the permitted development models, released APIs, object contract, and upgrade rules for the specific stack. The label 'BAdI' or successful activation does not replace checking the API release status.
Choose an on-stack option when tight transactional integration is needed and the target edition provides the required extension point. Consider side-by-side when independent runtime, workload, release lifecycle, or integration across systems is required. When logic crosses a system boundary, define data ownership, contracts, retries, idempotency, logging, and result reconciliation.
Cover the standard path, the absence of an applicable implementation, each relevant filter, conflicting implementations, extension errors, and rollback. Check authorization, runtime impact, read volume, currency and unit correctness, and prevention of duplicate postings on retry. Include implementation, dependencies, and required settings in the transport so the behavior can be reproduced.
The sources describe different versions of the Enhancement Framework and SAP S/4HANA Cloud Public Edition. Permitted options vary by edition and release. This project has no SAP runtime; no BAdI, enhancement implementation, transport, or clean-core analysis was executed.