diff --git a/docs/advanced/use_cases.md b/docs/advanced/use_cases.md index 265cc29a..171d983a 100644 --- a/docs/advanced/use_cases.md +++ b/docs/advanced/use_cases.md @@ -5,35 +5,51 @@ outline: [2, 4] abap2UI5 fits many contexts, whether you work in a cloud-ready environment or with classic ABAP. -The sections below follow SAP's standard extensibility model. **On-stack** means the app runs inside your SAP system; **side-by-side** means it runs on a separate system (for example the BTP ABAP Environment) and calls your SAP system remotely. Within each approach, SAP defines three tiers by how "clean core" the extension is: **Tier 1** uses only released, upgrade-stable APIs; **Tier 2** wraps not-yet-released APIs behind your own released interface; **Tier 3** uses classic, unreleased APIs — maximum freedom, but less upgrade stability. +The sections below follow SAP's extensibility model. **On-stack** means the app runs inside your SAP system; **side-by-side** means it runs on a separate system (for example the SAP BTP ABAP Environment) and calls your SAP system remotely. Within each approach, SAP grades an extension by how "clean core" it is. Until 2025 that grade was the three-tier model; the [Clean Core Extensibility white paper](https://community.sap.com/t5/technology-blog-posts-by-sap/why-clean-core-matters-get-some-insights-into-our-brand-new-extensibility/ba-p/14163750) of August 2025 replaced the tiers with four **clean core levels**, and SAP S/4HANA 2025 ships with them: + +| Level | Language version | What the extension uses | Clean core | +| --- | --- | --- | --- | +| **A** | ABAP for Cloud Development | released APIs only — on-stack, side-by-side or both | yes, and upgrade-stable | +| **B** | Standard ABAP | classic APIs and the frameworks SAP recommends for them: BAdIs, user exits, ALV, SAP GUI | yes, with less upgrade stability | +| **C** | Standard ABAP | SAP-internal objects that are neither released nor classified | conditionally — re-check before every upgrade | +| **D** | Standard ABAP | modifications, implicit enhancements, objects SAP marks as no API | no | + +The framework itself is Level A: it is written in ABAP for Cloud Development and uses released APIs only. Which level an *app* reaches depends on what the app calls, not on abap2UI5. + +::: tip Coming from the three-tier model +Tier 1 is Level A. Tier 2 was never a layer of its own — its wrappers still exist, written in Standard ABAP and released for ABAP Cloud, and an app that calls one stays Level A. Tier 3 is now split into Levels B, C and D by what it touches. Code written under the tier model does not need to be migrated; the ABAP Test Cockpit and the Cloudification Repository Viewer tell you which level an object lands on. +::: ## On-Stack Extension -### Tier 1 Extension -Build apps using only released APIs. They stay clean-core compliant, cloud-ready, and upgrade-stable: -![Tier 1 on-stack extension architecture diagram](/get_started/image-11.png){ width=60% } +### Level A +Build apps in ABAP for Cloud Development, using released APIs only. They are clean core, cloud-ready and upgrade-stable, and they run unchanged on S/4HANA Public Cloud, Private Cloud and on-premise: +![Level A on-stack extension: abap2UI5 and the apps run inside S/4HANA and use released APIs only](/advanced/use_cases/on_stack_level_a.svg){ width=60% } -### Tier 2 Extension -If certain APIs you need aren't yet released, you can still build a cloud-ready abap2UI5 app by accessing them via a separate Tier 2 wrapper: -![Tier 2 on-stack extension with wrapper for unreleased APIs](/get_started/image-21.png){ width=60% } +### Level A with a Wrapper +If an API you need is not released, wrap it: a class in Standard ABAP that calls the classic API and is released for ABAP for Cloud Development. The wrapper is graded on its own — Level B as long as it sticks to classic APIs — and the abap2UI5 app that calls it stays Level A: +![Level A on-stack extension with a wrapper: the apps stay in ABAP for Cloud Development and reach a classic API through a wrapper written in Standard ABAP](/advanced/use_cases/on_stack_wrapper.svg){ width=60% } -### Tier 3 Extension -For a classic extension approach, use unreleased APIs for more freedom to customize and extend your system: -![Tier 3 on-stack extension with unreleased API access](/get_started/image-10.png){ width=60% } +### Levels B to D +On S/4HANA Private Cloud and on-premise you can also write the app itself in Standard ABAP, and on releases that do not know ABAP for Cloud Development yet it is the only option. Level B uses classic APIs and frameworks; Level C reaches SAP-internal objects and has to be re-checked before every upgrade; Level D — modifications and implicit enhancements — is not clean core. The framework stays Level A either way, so moving an app up a level later means changing what it calls, not how it renders: +![On-stack extension on Levels B to D: apps written in Standard ABAP call classic APIs or SAP-internal objects, while abap2UI5 itself stays Level A](/advanced/use_cases/on_stack_level_b.svg){ width=60% } ## Side-by-Side Extension -### Tier 1 Extension -Build apps separately from your S/4 system's lifecycle with remote API calls only. Stick to released APIs, and your apps will work with S/4HANA Public Cloud too: -![Tier 1 side-by-side extension with remote API calls](/get_started/image-22.png){ width=60% } +### Level A +Build apps on the SAP BTP ABAP Environment, separate from your S/4 system's lifecycle, with remote calls to released APIs only — OData, released RFC or SOAP services. Everything on the BTP side is Level A by construction, and it works with S/4HANA Public Cloud too: +![Level A side-by-side extension: abap2UI5 and the apps run on the SAP BTP ABAP Environment and call released remote APIs of S/4HANA](/advanced/use_cases/side_by_side_level_a.svg){ width=60% } -### Tier 3 Extension -For more flexibility, build apps whose lifecycle is independent of your S/4 system, with remote API calls: -![Tier 3 side-by-side extension with remote API calls](/get_started/image-23.png){ width=60% } +### With a Custom Service +When the released remote APIs do not cover what you need, expose your own service on the S/4 system. The BTP side stays Level A; the service on the S/4 side is graded by what it uses — Level B if it stays with classic APIs: +![Side-by-side extension with a custom service: the apps on SAP BTP stay Level A and call a service on S/4HANA that wraps classic APIs in Standard ABAP](/advanced/use_cases/side_by_side_custom_service.svg){ width=60% } ## Software as a Service (SaaS) -With a Tier 1 side-by-side extension, you can connect a single abap2UI5 app to multiple S/4 systems. Use the same abap2UI5 code across customer tenants and remote systems for a real SaaS setup: -![SaaS architecture connecting one abap2UI5 app to multiple S/4 tenants](/get_started/image-9.png){ width=60% } +With a Level A side-by-side extension, you can connect a single abap2UI5 app to multiple S/4 systems. Use the same abap2UI5 code across customer tenants and remote systems for a real SaaS setup: +![SaaS architecture: one abap2UI5 app on the SAP BTP ABAP Environment serves several S/4HANA systems through their released APIs](/advanced/use_cases/saas.svg){ width=60% } ## Further Reading -Background article with additional scenarios: [Use Cases of abap2UI5 — an Overview](https://www.linkedin.com/pulse/use-cases-abap2ui5-overview-abap2ui5-udbde/). +- [Why Clean Core matters — the Clean Core Extensibility white paper](https://community.sap.com/t5/technology-blog-posts-by-sap/why-clean-core-matters-get-some-insights-into-our-brand-new-extensibility/ba-p/14163750), where SAP introduces the four levels +- [ABAP Extensibility Guide — Clean Core for SAP S/4HANA Cloud, August 2025 update](https://community.sap.com/t5/technology-blog-posts-by-sap/abap-extensibility-guide-clean-core-for-sap-s-4hana-cloud-august-2025/ba-p/14175399), the technical rules behind each level +- [Clean Core maturity and the new extensibility levels](https://community.sap.com/t5/technology-blog-posts-by-sap/clean-core-maturity-and-the-new-extensibility-levels/ba-p/14293974), on grading existing custom code +- [Use Cases of abap2UI5 — an Overview](https://www.linkedin.com/pulse/use-cases-abap2ui5-overview-abap2ui5-udbde/), the background article with additional scenarios, still in the vocabulary of the tier model diff --git a/docs/public/advanced/use_cases/on_stack_level_a.svg b/docs/public/advanced/use_cases/on_stack_level_a.svg new file mode 100644 index 00000000..47b4515d --- /dev/null +++ b/docs/public/advanced/use_cases/on_stack_level_a.svg @@ -0,0 +1,6 @@ + +On-stack extension, Level A: abap2UI5 and the apps run inside S/4HANA and use released APIs only + + +SAP S/4HANAPublic Cloud · Private Cloud · on-premiseabap2UI5frameworkZCL_MY_APP_01ABAP for Cloud DevelopmentZCL_MY_APP_02ABAP for Cloud DevelopmentZCL_MY_APP_03ABAP for Cloud DevelopmentReleasedAPIsCDS · classes · RAPabap2UI5Level A · released APIs + diff --git a/docs/public/advanced/use_cases/on_stack_level_b.svg b/docs/public/advanced/use_cases/on_stack_level_b.svg new file mode 100644 index 00000000..31023141 --- /dev/null +++ b/docs/public/advanced/use_cases/on_stack_level_b.svg @@ -0,0 +1,6 @@ + +On-stack extension, Levels B to D: apps written in Standard ABAP that call classic APIs or SAP-internal objects, while abap2UI5 itself stays Level A + + +SAP S/4HANAPrivate Cloud · on-premise · older releasesabap2UI5frameworkZCL_MY_APP_01ABAP for Cloud DevelopmentZCL_MY_APP_02Standard ABAPZCL_MY_APP_03Standard ABAPReleased APIsClassic APIsBAdIs · user exits · ALV · SAP GUISAP-internal objectsre-check before every upgradeabap2UI5Level A · released APIsLevel B · classic APIsLevel C · SAP-internal + diff --git a/docs/public/advanced/use_cases/on_stack_wrapper.svg b/docs/public/advanced/use_cases/on_stack_wrapper.svg new file mode 100644 index 00000000..e3b8bfb6 --- /dev/null +++ b/docs/public/advanced/use_cases/on_stack_wrapper.svg @@ -0,0 +1,6 @@ + +On-stack extension, Level A with a wrapper: the apps stay in ABAP for Cloud Development and reach a classic API through a wrapper written in Standard ABAP + + +SAP S/4HANAPrivate Cloud · on-premiseabap2UI5frameworkZCL_MY_APP_01ABAP for Cloud DevelopmentZCL_MY_APP_02ABAP for Cloud DevelopmentZCL_MY_APP_03ABAP for Cloud DevelopmentReleased APIsWrapperreleased for CloudClassicAPIsabap2UI5Level A · released APIsLevel B · classic APIs + diff --git a/docs/public/advanced/use_cases/saas.svg b/docs/public/advanced/use_cases/saas.svg new file mode 100644 index 00000000..0c2ffb03 --- /dev/null +++ b/docs/public/advanced/use_cases/saas.svg @@ -0,0 +1,6 @@ + +Software as a Service: one abap2UI5 app on the SAP BTP ABAP Environment serves several S/4HANA systems through their released APIs + + +SAP BTP ABAP Environmentone code line, many customersabap2UI5frameworkZCL_MY_APP_01ABAP for Cloud DevelopmentZCL_MY_APP_02ABAP for Cloud DevelopmentZCL_MY_APP_03ABAP for Cloud DevelopmentSAP S/4HANACustomer 1Released APIsSAP S/4HANACustomer 2Released APIsSAP S/4HANACustomer 3Released APIsabap2UI5Level A · released APIs + diff --git a/docs/public/advanced/use_cases/side_by_side_custom_service.svg b/docs/public/advanced/use_cases/side_by_side_custom_service.svg new file mode 100644 index 00000000..0f1b3cb6 --- /dev/null +++ b/docs/public/advanced/use_cases/side_by_side_custom_service.svg @@ -0,0 +1,6 @@ + +Side-by-side extension with a custom service: the apps on SAP BTP stay Level A and call a service on S/4HANA that wraps classic APIs in Standard ABAP + + +SAP BTP ABAP Environmentside-by-sideabap2UI5frameworkZCL_MY_APP_01ABAP for Cloud DevelopmentZCL_MY_APP_02ABAP for Cloud DevelopmentZCL_MY_APP_03ABAP for Cloud DevelopmentSAP S/4HANAPrivate Cloud · on-premiseCustom serviceOData · RFC, Standard ABAPClassic APIsBAPIs · function modulesremoteabap2UI5Level A · released APIsLevel B · classic APIs + diff --git a/docs/public/advanced/use_cases/side_by_side_level_a.svg b/docs/public/advanced/use_cases/side_by_side_level_a.svg new file mode 100644 index 00000000..09c8550a --- /dev/null +++ b/docs/public/advanced/use_cases/side_by_side_level_a.svg @@ -0,0 +1,6 @@ + +Side-by-side extension, Level A: abap2UI5 and the apps run on the SAP BTP ABAP Environment and call released remote APIs of S/4HANA + + +SAP BTP ABAP Environmentside-by-sideabap2UI5frameworkZCL_MY_APP_01ABAP for Cloud DevelopmentZCL_MY_APP_02ABAP for Cloud DevelopmentZCL_MY_APP_03ABAP for Cloud DevelopmentSAP S/4HANAPublic Cloud · Private CloudReleasedAPIsOData · RFC · SOAPremoteabap2UI5Level A · released APIs + diff --git a/docs/public/get_started/image-10.png b/docs/public/get_started/image-10.png deleted file mode 100644 index 9e0225a5..00000000 Binary files a/docs/public/get_started/image-10.png and /dev/null differ diff --git a/docs/public/get_started/image-11.png b/docs/public/get_started/image-11.png deleted file mode 100644 index 1e0bc183..00000000 Binary files a/docs/public/get_started/image-11.png and /dev/null differ diff --git a/docs/public/get_started/image-21.png b/docs/public/get_started/image-21.png deleted file mode 100644 index c045b77b..00000000 Binary files a/docs/public/get_started/image-21.png and /dev/null differ diff --git a/docs/public/get_started/image-22.png b/docs/public/get_started/image-22.png deleted file mode 100644 index 96321475..00000000 Binary files a/docs/public/get_started/image-22.png and /dev/null differ diff --git a/docs/public/get_started/image-23.png b/docs/public/get_started/image-23.png deleted file mode 100644 index 1976b49b..00000000 Binary files a/docs/public/get_started/image-23.png and /dev/null differ diff --git a/docs/public/get_started/image-9.png b/docs/public/get_started/image-9.png deleted file mode 100644 index 27180681..00000000 Binary files a/docs/public/get_started/image-9.png and /dev/null differ