Adapt UI and add custom fields and add custom business objects
Move fields and field groups, hide fields, change labels for esp. Fiori Applications
Copy and adapt email and print templates
Embed external content
Changes are added to transport requests for propagation across environments
Type 2 - On Stack Developer extensions
Extends public available / released APIs by building wrappers
Retire wrapper once API is available
Use when you need proximity to or coupling to S/4HANA data, transactions or apps.
Frequent read access to SAP data or roundtrips
Reading of data using complex SQL joins with high data volume
Transactional consistency in logical unit of work (LUW)
Extending SAP fuctionality through extension points or complex extension of UI
Building a tailored remote service for a side-by-side extension
Developed using the new ABAP Cloud Development model (RAP)
No SAP object is modified
Local public APIs and public extension points are used
Build UI5 Apps / Fiori elements using Fiori tools
Extend SAP Delivered Fiori elements app using ABAP CDS annotations
Extend SAP delivered app using developer adaptions
Not available in S/4HANA Cloud
Type 3 - Side-by-Side Extensions (BTP)
SAP BTP ABAP Environment provides the ABAP Platform as a service on SAP BTP. Cloud applications and extensions run side-by-side to S/4.
This is the SAP recommended option for scenarios which are loosely-coupled to SAP S/4HANA data, transactions, or apps
Use ADT tools for development
Accessing business objects of SAP S/4HANA Cloud is only possible using remote APIs
Why?
Smoother SAP upgrades
"Future safe" extensions for your next cloud transformation steps (pave the way to get to a "pure" cloud version for legacy ECC SAP customers)
Use ABAP cloud development paradigm in your private cloud or on-premise systems. Use ABAP cloud to build customized solutions
What?
Steampunk and embedded Steampunk are the SAP internal project names for ABAP environment on SAP BTP and in SAP S/4HANA Cloud
Available from S/4HANA 2022 release
How?
Development tools
ABAP Development Tool (ADT) in Eclipse (On-stack)
SAP Business Application Studio (Side-by-side)
SAP provided Low-Code / No-Code Tools
SAP Build Apps
SAP Build Process Automation
3rd Party Tools
Neptune Software
Mendix
...
When to use which model?
Building a SaaS or consumer Grade app?
Side by Side Extension
Simple "last mile" extension for changing how apps look or adding additional fields?
Key User Extensibility
Need coupling and proximity to SAP S/4HANA Cloud data, transactions, or apps?
On Stack development extension
Other considerations
Knowledge & skills of your development team
Number of systems in your landscape e.g. if you have subsidiaries and want to have central applications across multiple environments (making side-by-side) the most likely.
Costs
BTP costs need to considered
Embedded steampunk likely the most elegant
API enablements and other components in your landscape (API management or Cloud Platform Integration).
ABAP Cloud Development
ABAP Cloud - the cloud-optimised ABAP Language Version
Build modern, cloud-ready, and upgrade-stable ABAP applications and extensions
Only public SAP APIs and SAP extension points can be used
No SAP modifications allowed
Use Eclipse based, ABAP Development Tools (ADT) for development
Build ABAP Restful application model (RAP) based Fiori apps and services
Rules
Rules are enforced by
ABAP compiler and runtime checks
Check that you use only released APIs and suggest CDS entities as replacements
ABAP authorizations
RAP programming model is core of extension projects, the main building blocks are:
Core Data Services
Modernized and extended ABAP language
OData protocol for stateless communication
Business Object (BO) is used for building transactional applications
Business Service (BS) used to define services
OData based services for building role-based SAP Fiori Apps
OData services for exposure as Web APIs
Business Events
RAP vs traditional ABAP development
Identity and Access Management
No direct access to the classical transaction for role maintenance (PFCG). Instead, a new cloud Identity and Access Management (IAM) which consists of:
Fiori apps for user and role maintenance on top of IAM catalogs and role templates
The IAM app, IAM business catalog, and IAM business role templates, for creating IAM content for their own applications and SAP applications
Connectivity
Cloud Communication Management
Fiori apps for inbound and outbound communication
Communication scenarios for CDS views can be created released views
SAP S/4HANA Business APIs
Relased apis can be determined in the api acceleration hub documentation (per release)
Extending a S/4HANA Private Cloud
Three extensibility tiers (as defined by SAP)
Tier 1 - Cloud Development
Default choice for all new extensions following the SAP S/4HANA Cloud extensibility model
Cloud read and upgrade stable development of new application and tiers
Developers use role SAP_BC_ABAP_DEVELOPER_5
Tier 2 - Cloud API Enablement
Mitigation of missing local public APIs or extension points. Here, custom wrappers for non-released SAP objects are built and released for cloud development so that they can be used in tier 1
Develop custom wrapper objects for not released SAP objects. Retire the wrapper once a released API is available.
Developer role authorization S_ABPLNGVS & role SAP_BC_ABAP_DEVELOPER_5
Tier 3 - Legacy Development
Classic extensibility based on classic ABAP custom code that is not supported in the ABAP Cloud development model. Avoid developments in this tier and follow the ABAP Cloud development model as much as possible (governed via ATC) to minimize the risk
of upgrade issues
Used when options 1 & 2 above are not available.
Use the ABAP test cockpit (ATC) to enforce the ABAP cloud rules as much as possible. Via ATC exemptions, controlled violations of ABAP cloud rules are possible.
SAP recommends that ABAP developers use ADT instead of SAP Gui for developments.
Building wrappers in Tier 2 for non-released SAP objects
Classical vs ABAP cloud development model
Interplay between the 3 tiers (not you can use authorizations to prevent ABAPers from using Tier3 development)
Use cases
Build wrapper around SAP objects that have not been released (e.g BAPI)
No copies of non-released data types (data elements, structures, table types) used in the signature of the object will be created. Instead, those data types will be wrapped as well, using TYPES declarations in the public section of the wrapper class. In this way, only the wrapper
class itself needs to be released for cloud development.
Create a wrapper for SAP table or CDS view that have not been released for core S/4HANA cloud scope.
Push classic ABAP developments towards ABAP cloud using ATC check variant (transformation towards ABAP cloud)
ABAP Test Cockpit (ATC)
ABAP_CLOUD_DEVELOPMENT_DEFAULT
Cloud development rules are covered
ABAP_CLOUD_READINESS contains the checks of category Cloud Readiness
ABAP Language version for individual development objects can be changed so that they are relevant for cloud development
Used to transform code step-by-step to prepare it for a move to a software component based on ABAP cloud.
Custom Code in S/4
Before S/4 HANA upgrade
Enable use of the custom code migration app
Analyze the classic ABAP custom code with the Custom Code Migration App to estimate the impact.
Detect unused classic ABAP custom code based on usage analysis and remove it during the conversion
Set up a remote ATC infrastructure
Custom Extension in S/4HANA
Adapt the classic ABAP custom code by using ABAP Test Cockpit (ATC) and automate the adaptation with quick fixes.
After S/4 Upgrade
Replace usage of not-released SAP objects with released APIs, e.g., CDS views instead of DB tables.
Make your custom code compliant with the ABAP Cloud development model
ABAP CDS
Finding CDS Views
Use ADT Tools in Eclipse
Powerful search within eclipse using CTRL + H
Use the dependency viewer in ADT
Use dependency tree viewer with a specific "released" tag
Interrogate the dd021 table
Custom ABAP to lookup by fieldname
Search in SAP Help
Query Browser in SAP Fiori Launchpad
Make suer this role is assigned to your user SAP_BR_EMPLOYEE
Create an ABAP Query
Use transaction SDDLAR (HANA Analysis and Repair tool)
Where used in SE11 (DDL Source)
Syntax check in ADT for "older" tables, it will propose CDS views to use but000 -> I_business_partner
Github Cloudification Repository - check for released objects
Main purpose
CDS views are primarily for reading data and to do code push down using some of the in built sql functions and expressions.
Modelling CDS
Using CDS models you capture the data retrieval logic of your application in such a way that it can be executed directly in the database system
CDS Annotations
Exposing CDS Views
Add Annotation to CDS view to publish as OData
Use SEGW to expose as OData
Monitoring
STATS
Articles and references
CDS Views
CDS Views in SAP HANA
Find the root package of a CDS view
Consuming CDS View in Neptune Software (older article)
ABAP RAP
Working with ABAP cross trace tools
RAP Developer Guide
ABAP Cloud
ABAP Clean Code for S/4 HANA (Video)
How to mitigate missing SAP released APIs - ABAP Cloud API enablement guide
Github with latest versions for use in ATC check ABAP_CLOUD_READINESS
Extend S/4HANA with ABAP based extension Guideline
Fiori tools overview
BTP Costs
Detailed ABAP cost analysis for BTP
FinOps for BTP (another one of my mind maps)
ABAP Test Cockpit
Set up ATC to control the usage of ABAP Cloud
Remote code analysis in ATC
Tutorials
Tutorial - Create an wrapper for unreleased APIs
Open SAP course - Developing and extending Fiori Apps (available till July 2024)
S/4HANA extensibility - Learning Journey
Extending Fiori Elements Apps using adaption projects