RAP
by
Muthu
Behavior Definition
What is Behavior Definition?
Behavior Definition - Overview
● Helps to enable transactional capabilities of the BO entities
● New ABAP repository objects called Behavior Definition Language
● Looks like CDS Data Definition Language
● Can have one or more entity behaviour definition
● Root entities must be specified (Child entities are optional)
● Behavior implementation class can be defined for all BO Entity
● Formed by
○ Behaviour Characteristics
○ Behaviour Body
Behavior Characteristics - Overview
● Persistent table - dB table name should be specified
● Draft table - Draft dB table name should be specified
● Saving options - With additional save, With Unmanaged save
● Etag - Optimistic concurrency control
● Locking - Pessimistic concurrency control
● Authorization - Protects your data from unauthorized access
● Early numbering - Assign primary key fields values at Buffer update
● Late numbering - Assign primary key fields values before dB update
Behavior Body - Overview
● Field characteristics - Additional capability for fields
● Field numbering - Managed way of primary key assignment
● RAP BO operations - CRUD, CBA, RBA, Actions, Function etc.,
● Validations - checks consistency of BO instance data
● Determinations - Calculate or determine new values at runtime
● Type mapping - field mapping b/w dB table & CDS views
● Implementation grouping - Different implementation classes
Projection Behavior
Definition
What is Projection Behavior Definition ?
Projection Behavior Definition
Behavior Characteristics:
Behavior Body:
● Persistent table
● Draft table ● Field characteristics
● Use
● Saving options
● Actions and functions
● Locking ● Augment
● Etag ● Type mapping
● Early numbering
● Late numbering
Service Definition & Binding
Business Services
Task Application Service Binding
Technical objects
Service Definition
Projection
Task item C Projection
Behavior Task C view
view Views
definition
Behavior Task item I Basic/Interface
Task I view
definition view Views
Task Task Item
Managed BO
Managed Business Objects
BO Operations - Standard (CRUD)
● CRUD - Create, Read, Update, Delete called as Standard operations
● Read operation - Default operation for BDEF (not required to define)
● Managed - No implementation needed ( Implementation needed for unmanaged)
● Projection BDEF - can reuse with the help of “use” keyword
● Create - new instance of BO entity
● Update - updates instance of BO entity
● Delete - deletes instance of BO entity
● Create by Association - creation of child entity instance should be via association
EML (Entity Manipulation
Language)
What is EML?
EML - Entity Manipulation Language
● Standard API to access Business Objects Behaviours
● Direct way to consume BO (without Odata)
● READ Entities
○ READ
○ READ BY ASSOCIATION
● MODIFY Entities
○ CREATE
Interaction Phase
○ UPDATE
○ DELETE
○ CREATE BY ASSOCIATION
○ ACTION
● COMMIT Entities
● ROLLBACK Entities Save phase
Read EML
What is Read EML ?
READ EML
READ ENTITIES OF BDEF
ENTITY EntityName
FIELDS ( field1, field2,.. ) | ALL FIELDS
WITH CORRESPONDING #( keys )
RESULT DATA(result) Returns requested instances data
FAILED DATA(failed) Returns failed instances
REPORTED DATA(reported). Returns error details about failed
instances
READ BY ASSOCIATION EML
READ ENTITIES OF BDEF
ENTITY EntityName BY \_AssociationName
FIELDS ( Field1, Field2.. ) | ALL FIELDS
WITH CORRESPONDING #( keys )
RESULT DATA(travels)
LINK DATA(link) Returns Primary key values of source &
target entity instance
FAILED DATA(failed)
REPORTED DATA(reported).
Create EML
Create & Create By EML
CREATE & BY ASSOCIATION syntax
MODIFY ENTITIES OF BDEF
ENTITY Header
CREATE FROM itab_header
CREATE BY \_Item FROM itab_item
MAPPED DATA(mapped)
FAILED DATA(failed) Returns Created Primary keys info
mapped with Content id (CID)
REPORTED DATA(reported).
CREATE & BY ASSOCIATION Preparation
Header:
Preparation of header content to be created
%CID - Content Id refers unique id before primary key creation
%DATA - Column values should be populated
%CONTROL - Set which column values are going to create
Item:
Preparation of item target to be created ( %CID, %DATA, %CONTROL )
Preparation of item content to be created with
%CID_REF - Content Id reference helps for mapping header content
%TARGET - Associated item data to be created
Update EML
Update EML
UPDATE EML
MODIFY ENTITIES OF MODIFY ENTITIES OF BDEF
BDEF ENTITY Item
ENTITY Header UPDATE FROM lt_item
FAILED DATA(failed)
UPDATE FROM lt_header
REPORTED
FAILED DATA(failed)
DATA(reported).
REPORTED
DATA(reported).
UPDATE EML - Combined
MODIFY ENTITIES OF BDEF
ENTITY Header
UPDATE FROM lt_header
ENTITY Item
UPDATE FROM lt_item
FAILED DATA(failed)
REPORTED DATA(reported).
Delete EML
Delete EML
DELETE EML
MODIFY ENTITIES OF BDEF MODIFY ENTITIES OF BDEF
ENTITY Header ENTITY Item
DELETE FROM VALUE DELETE FROM VALUE
#( keys ) #( keys )
FAILED DATA(failed) FAILED DATA(failed)
REPORTED REPORTED
DATA(reported). DATA(reported).
DELETE EML - Combined
MODIFY ENTITIES OF BDEF
ENTITY Header
DELETE FROM VALUE #( keys )
ENTITY Item
DELETE FROM VALUE #( keys )
FAILED DATA(failed)
REPORTED
DATA(reported).
Validations
Validation Part1
Validation Part2
Validations
Syntax:
Validation ValName on save { create; update; delete; field field1, field2 etc., }
● Check consistency of the BO instance data based on trigger conditions
● Trigger conditions are
○ Modify operation (create, update, delete)
○ Modify fields (any BO columns)
● Validations are called at the CheckBeforeSave method by framework
● Validations order cannot be determined when more than 1
● EML modify statement should not be used in the implementation
Determinations
What is Determinations ?
Determination
Syntax:
Determination DetName on save | modify { create; update; delete; field field1,
field2 etc., }
● Modifies the BO instance data based on trigger conditions
● Trigger conditions are
○ Modify operation (create, update, delete)
○ Modify fields (any BO columns)
● Determination on Save - executes at the save sequence phase
● Determination on Modify - executes at the Interaction phase
● Determinations order cannot be determined when more than 1
● Determinations results should be always same if executed multiple times
Actions
What is Action in RAP ?
Action with Parameters
Actions
● Non Standard - Predefined set of operations - Class/Method
● Where we can consume
○ UI via services (OData)
○ From another actions via EML
● Internal - Consumed within BO
● Static - Related to the complete entity
● Repeatable - Can execute multiple time for same instance
● Factory - Used to create on entity by defaulting the values
Actions (Cont..)
Input Parameters
Output Parameters
Behaviour Characteristics
Numbering
Feature Control
Authorization
ETag
Draft handling
Feature Controls
Instance Feature Control
Static Feature Control
Global Feature Control
Numbering in RAP
Numbering
● External - What is External Early Numbering ?
● Internal
○ Early
■ Managed - What is Managed Internal Early Numbering ?
■ Unmanaged - What is Unmanaged Internal Early Numbering ?
○ Late
■ Unmanaged - What is Late Numbering ?
● Uniqueness Check for Primary keys
Concurrency Control
What is Concurrency Control in RAP ?
How to Define Etag in RAP ?
How to Define Locking ?
Concurrency Control
● Controls simultaneous access to the DB of different users on same resource
● If multiple simultaneous requests comes, then it should update only one and
rejects other requests
USER 2
USER 1
UPDATE EMP
WHERE ID = 2
USER 3
UPDATE EMP
WHERE ID = 2
EMP UPDATE EMP
TABLE WHERE ID = 2
Optimistic
Concurrency
Control
Pessimistic
Concurrency
Control
Draft Handling
Overview of Draft Handling
What is Draft Design time & Runtime ?
How to Implement Draft handling in RAP ?
Problem Statement
Create
/Edit Before
save
USER 1
USER 2
Thinking about Solution
Server
Stateful session store
communication details of the
each request
USER 1
Server
Dependency
Solution - Stateless communication with Stateful
capability
Stores data in the
Draft DB table as
temporary state
How Draft works?
Stateless communication - No fixed backend session
Stateful communication - Fixed backend session
Due to scalability & elasticity requirements in the Cloud model, we have to use
stateless communication
Side Effects in RAP
What is Side Effects ?
RAP Generator
What is RAP Generator ?
How to Deploy RAP
Application ?
Step by Step guide
Thanks for your support!
Email - muthumuthaiah@gmail.com
My Channel - Youtube Channel
LinkedIn - Muthu - Linkedin