-
Service Consumption
- Events
- SAP Fiori UIs & Web APIs
-
Fiori App Deployment
- Developing Fiori Apps with Fiori tools
- Deploying apps with Fiori Elements
-
Business Service Exposure
-
Service Definition & Binding. Used primarily to expose a RAP Business Object as an OData service for Fiori applications. V2 vs V4
- Defines which views (interface and consumption) are to be exposed
- Acts as a projection of the data model and related behavior
-
Data Modeling & Behavior
-
Business Object (BO)
-
A business object as a digital representation of a real-world entity, like a customer or sales order. It encapsulates not only the data associated with that entity (attributes like customer name, product description, or order quantity) but also the behavior related to it.
- Attributes: Data points defining the entity, like customer name, product description, or order quantity
- Hierarchical relationships: BOs can interact with each other, forming a hierarchy (e.g., a sales order with multiple order items creates a parent-child relationship)
- Operations: These are actions we can perform on the data, encompassing the classic CRUD (Create, Read, Update, Delete) operations and potentially more complex, application-specific actions (e.g., approving a sales order).
-
Entity Manipulation Language (EML): This extension of the ABAP language empowers developers to implement the behavior of business objects, essentially defining how operations are carried out
- EML serves as a standardized, type-safe API for interacting with RAP business objects. It allows developers to:
READ and modify business object data
Execute actions defined in the business object
Manage transaction boundaries
Trigger the save sequence for persisting changes
- READ ENTITIES: Retrieves data from RAP business objects
MODIFY ENTITIES: Performs create, update, and delete operations on business object instances
EXECUTE ACTION: Invokes custom actions defined in the business object
COMMIT ENTITIES: Persists changes to the database
GET PERMISSIONS: Retrieves information about RAP business object permissions
- Key Features
- Transactional Buffer: EML operations work with a transactional buffer, allowing for consistent data handling across multiple operations.
- Type Safety: uses BDEF (Behavior Definition) derived types, ensuring type-safe operations.
- Response Handling: structured ways to handle operation results, failures, and messages through MAPPED, FAILED, and REPORTED parameters.
- Local Mode: can be executed in local mode within behavior pools, bypassing certain checks for internal operation
-
Has a root entity - The entry point of a BO: Defines the top node within the BO’s hierarchical structure.
- Identified using the ROOT keyword in CDS (Core Data Services) data definition: This keyword specifies that the entity is the root of a composition tree in SAP RAP
-
Behaviour Definition
-
What operations (CRUD) are possible for the entities defined
- Whether the operations are managed by SAP or not managed by SAP. Unmanaged operations are then required to be implemented in the associated class
- Read-only fields / Mandatory fields from the service
- Field Mapping
- Actions - Custom operations triggered by users
- Determinations - are automated logic executions
-
Behaviour Implementation (ABAP)
- Implements the logic for the defined behavior using ABAP methods
-
API Usage in RAP
-
Tier 1 - use only use approved SAP APIs; you can find these in the system using their C1 contract.
- Cloudification Repository - Current (Private Cloud / On-Premise)
- Cloudification Repository - Current (Public Cloud)
- TIER 2 - you wrap standard SAP objects that you want to use in TIER-1. In most cases there is no official API yet,
- TIER 3 - Objects that will remain stable in the future e.g. the CL_GUI_ALV_GRID class, as it will remain stable but is not ABAP Cloud capable
-
Core Data Services
-
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 (older systems)
-
Background
- 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
- Evolution of ABAP
-
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)
-
Links & Tutorials
- Get an ABAP Trial account
-
Fiori
-
New to Fiori?
- UI5 From Scratch (Discover UI5)
-
Tools you will need
- Easy ui5 generator
- UI5 tooling toolchain
- UI5 Linter
- Getting started with Fiori Tools
- Guided Answers - SAP Fiori Tools
- Github
- Git 101 - Scot Hanselman
- BestofUI5
- Build a Fiori Elements app with RAP
- Build Fiori Elements app based on RAP (eLearning)
- Fiori Elements showcase for RAP
-
ABAP RAP
- RAP Developer Guide
- RAP100 Course
-
Learning Hub - RAP Development
- All slides and code
- Start lean with RAP
-
RAP Course Playlist (old but great presenter)
- Github Link to samples
- Steampunk overview deck (old but good)
- What is the eTag field in RAP?
- BAPI is Obsolete, Use BDEF Easily in S/4HANA
- Send RAP events to external systems
- EML Cheatsheet
- ABAP Restful Application Playlist (CodeinMins)
- Intro to RAP (old) (Integrtr)
- Create and Expose CDS Views (Unmanaged Scenario)
- Working with ABAP cross trace tools
-
RAP Repository objects wizard
- Help link
- Three Tier Development Model for ABAP Cloud
-
Naming Conventions
- Interface CDS Entity: I_
- Base CDS Entity: R_
- Projection CDS Entity: C_
- Service Binding for UI Service with OData V4: UI_ (prefix) and _O4 (suffix)
- Database Tables (Persistent): A_
(Draft): D_
-
CDS Views
- CDS Views in SAP HANA
-
Finding CDS Views
-
Use ADT Tools
- Powerful search within eclipse using CTRL + H
- Use the dependency viewer in ADT
-
Interrogate the dd021 table
- Custom ABAP to lookup by fieldname
- Search in SAP Help
- Find the root package of a CDS view
-
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)
- Create business configuration - table maintenance
-
Enhancement & Adaptions
- Tutorial - Create an wrapper for unreleased APIs
- UI Adaption video
-
Clean ABAP
- ABAP Clean Code for S/4 HANA (Video)
- Guidelines
- Extend S/4HANA with ABAP based extension Guideline
- S/4HANA extensibility - Learning Journey
- Extending Fiori Elements Apps using adaption projects
- Warren Eiserman (VMG Labs March 2025)