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.
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