-
ABAP Cloud Extensibility
-
3 Types of extensibility
-
Type 1 - Key user extensions (on stack)
- 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
-
Clean ABAP
- Guidelines
- UI Adaption video
- Warren Eiserman (VMG Labs April 2024)