ODATA SERVICE
DEVELOPMENT OPTIONS
Be prepared for the
ABAP RESTful Programming Model
Andre Fischer
July, 2019
PUBLIC
Agenda
ODATA V2 DEVELOPMENT OPTIONS
ABAP RESTFUL PROGRAMMING MODEL
ODATA V4
WHERE IT IS SAFE TO INVEST NOW?
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 2
OData
development
options
OData V2 service development options
Code based
Referenced / Referenced OData.publish:
implementation Mapped Datasource Datasource true
OData V2
Service Builder Service Builder Service Builder
(SEGW) (SEGW) (SEGW)
New programming model New programming model
SADL SADL
CDS views BOPF CDS views
Classic Classic Classic Classic Classic
business logic DDIC tables business logic DDIC tables DDIC tables
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC = code based implementation (ABAP, BOPF or CDS)4
SAP Gateway
Code-based service development
CODE-BASED IMPLEMENTATION OF CRUD METHODS
Create → <Entity_Set>_CREATE_ENTITY
Read → <Entity_Set>_GET_ENTITY
Query → <Entity_Set>_GET_ENTITYSET
Update → <Entity_Set>_UPDATE_ENTITY
Delete → <Entity_Set>_DELETE_ENTITY
CODE BASED IMPLEMENTATION OF ADVANCED ODATA FEATURES
Offline scenarios ($deltatoken, $skiptoken)
Complex transactional behavior
(SoftState, DeepInsert, ChangeSets in $batch)
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 5
OData V2 service development options
Code based
Referenced OData.publish:
Referenced / Mapped
implementation Datasource Datasource true
OData V2
Service Builder Service Builder Service Builder
(SEGW) (SEGW) (SEGW)
New programming model
Query Engine SADL
CDS views BOPF CDS views
Classic Classic Classic Classic Classic
business logic DDIC tables business logic DDIC tables DDIC tables
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC = code based implementation (ABAP, BOPF or CDS)6
Mapped Data Source
OData Model has to be modelled in New fields are not automatically included
SEGW
Code based implementation of CREATE,
Manual mapping of READ and QUERY
methods UPDATE, and DELETE methods
Available as of 7.40
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 7
Referenced Data Source
OData Model references selected CDS views and associations
Available as of 7.50
New fields are automatically included
Code based implementation of CREATE, UPDATE, and DELETE methods
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 8
OData V2 service development options
Code based Referenced / Mapped Referenced OData.publish:
implementation Datasource Datasource true
OData V2
Service Builder Service Builder Service Builder
(SEGW) (SEGW) (SEGW)
ABAP Programming Model
for SAP Fiori
Query Engine Query Engine
CDS views BOPF CDS views
Classic Classic Classic Classic Classic
business logic DDIC tables business logic DDIC tables DDIC tables
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC = code based implementation (ABAP, BOPF or CDS)9
ABAP Programming Model for SAP Fiori – CDS based BOPF Objects
OData Model definition via CDS views
Available as of 7.50 (Draft as of 7.51)
Code based implementation of Determinations, Validations and Actions
Managed scenario: Query engine (SADL) orchestrates all CRUD-Q calls to the SAP Gateway (OData) framework
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 10
ABAP
RESTful
Programming
Model
ABAP RESTful Programming Model - big picture
SERVICE
SAP Fiori UI Web API
CONSUMPTION
SERVICE BINDING
BUSINESS Bind the service to OData protocol
SERVICES
PROVISIONING SERVICE DEFINITION
Define scope to be exposed
BUSINESS OBJECTS QUERIES
Data modeling with CDS
DATA MODELING & Data modeling with CDS
Behavior definition
BEHAVIOR
Behaviour implementation
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 12
CDS views are used to define business objects
define root view /DMO/I_Travel_U
as select from /dmo/travel as Travel
-- the travel table is the data source for this view
root Value Help
composition [0..*] of /DMO/I_Booking_U as _Booking
association [0..1] to /DMO/I_Agency as _Agency
on $projection.AgencyID = _Agency.AgencyID
association [0..1] to /DMO/I_Customer as _Customer
on $projection.CustomerID = _Customer.CustomerID
child1
association [0..1] to I_Currency as _Currency
on $projection.CurrencyCode = _Currency.Currency
child 2 Value Help
define view /DMO/I_Booking_U
as select from /dmo/booking as Booking
association to parent /DMO/I_Travel_U as _Travel
on $projection.TravelID = _Travel.TravelID
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 13
Behaviour definition language
implementation unmanaged;
// behavior defintion for the TRAVEL root entity
define behavior for /DMO/I_Travel_U alias travel
implementation in class /DMO/BP_TRAVEL_U unique
etag LastChangedAt
{
field (read only) TravelID;
field (mandatory) AgencyID, CustomerID,
BeginDate, EndDate;
create;
update;
delete;
action set_status_booked result [1] $self;
association _Booking { create; }
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 14
Service Definition
@EndUserText.label: 'Service Definition for Managing Travels'
define service /DMO/TRAVEL_U {
expose /DMO/I_Travel_U as Travel;
expose /DMO/I_Booking_U as Booking;
expose /DMO/I_BookingSupplement_U as BookingSupplement;
expose /DMO/I_Supplement as Supplement;
expose /DMO/I_SupplementText as SupplementText;
expose /DMO/I_Customer as Passenger;
expose /DMO/I_Agency as TravelAgency;
expose I_Currency as Currency;
expose I_Country as Country;
expose /DMO/I_Carrier as Airline;
expose /DMO/I_Connection as FlightConnection;
expose /DMO/I_Flight as Flight;
}
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 15
Service Binding
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 16
MANAGED VERSUS
UN-MANAGED SCENARIOS
Managed vs. Un-Managed Scenarios
ABAP
ABAP RESTFUL
SCENARIO USE-CASE PROGRAMMING MODEL
PROGRAMMING MODEL
FOR SAP FIORI
Brownfield
un-managed
implementation ➖* ✔
Greenfield
managed
implementation ✔ (planned)
managed with Brownfield
self-implemented save implementation ➖ (planned)
MANAGED SCENARIO
Query engine (SADL) orchestrates all CRUD-Q calls to the SAP Gateway (OData) framework
➖ = not supported
✔ = supported
➖* = not supported via BOPF but via SEGW (RDS + DPC_EXT)
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 18
The ABAP Programming Model for SAP Fiori
ABAP RESTful Programming Model – Implementation types
INTERACTION SAVE
PHASE SEQUENCE
finalize UNMANAGED
Brownfield development with application coding fully available:
check_before_save Interaction phase + Transactional buffer + Save sequence
MODIFY
adjust_numbers
READ
LOCK
MANAGED
save
Greenfield development with standard implementation
(opt. appl. components: DB tables, lock objects, PFCG objects, update task FM)
Transactional
buffer
SAP HANA
BO RUNTIME IMPLEMENTATION
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 19
Business objects - unmanaged
INTERACTION SAVE
PHASE SEQUENCE
finalize
Application coding
checkBeforeSave already available
for interaction phase, transactional buffer and save sequence
MODIFY
adjustNumbers
READ
LOCK
decoupled from UI technology
save
APPLICATION CODE
Examples
TX Buffer
Sales Order, Purchase Order
Wrapper Code
Business Logic via
custom application
code SAP HANA
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 20
Business objects - managed
INTERACTION SAVE
SEQUENCE PLANNED
PHASE
finalize Application coding
checkBeforeSave not yet available or fine granular reusable code available
technical implementation tasks taken over by BO infrastructure
MODIFY
adjustNumbers
READ
LOCK
developer focus on business logic, implemented via code exits:
save
determinations, validation, actions,…
MANAGED RUNTIME Examples
TX Buffer New applications in SAP Cloud Platform ABAP Environment
Business Logic via
determinations,
validations
SAP HANA
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 21
Business objects – managed (with self-implemented save)
INTERACTION SAVE PLANNED
PHASE SEQUENCE
Application coding
finalize
“update-task function module” available
checkBeforeSave
coding for interaction phase not available
(e.g. highly coupled in older UI technology: DYNP - PBO / PAI)
MODIFY
adjustNumbers
READ
LOCK
technical implementation aspects to be taken over by BO infrastructure
save
Examples
MANAGED RUNTIME
Function module Business Partner, Product
for UPDATE
TX Buffer TASK
SAP HANA
Application code in
determinations /
validations / … SAP HANA
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 22
OData V4
OData V4 service development options
V4-API Code based implementation
OData V4
ADT Tools
Available as of 7.50, but not recommended
Classic Classic
business logic DDIC tables
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC
= code based implementation (ABAP, BO or CDS) 24
OData V4 service development options
PLANNED
V4-API Code based implementation ABAP RESTful Programming Model
OData V4
ADT Tools
Unmanaged scenario Managed scenario
Query Engine Query Engine
Available as of 7.50, but not recommended
BO CDS views BO CDS views
Custom
implementation
Classic Classic Classic Classic Classic
business logic DDIC tables business logic DDIC tables DDIC tables
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC
= code based implementation (ABAP, BO or CDS) 25
Where it is safe to
invest now ?
Evolution of OData Service Development
ABAP Platform 7.4 & 7.5 ABAP Platform ≥ 7.50 SAP Cloud Platform ABAP Environment ≥ 1808 *
CLASSIC ABAP ABAP PROGRAMMING MODEL ABAP RESTful
PROGRAMMING FOR SAP FIORI PROGRAMMING MODEL
SEGW
Modelled Data Source &
SEGW / @OData Business Service
Referenced Data Source Reference Data Source
Core Data Classic API’s Core Data CDS-based Core Data Behavior
Services (BAPI’s, classes, …) Services BOPF Services Definition
Dos and Don’ts Current best practice in SAP S/4HANA Future direction
Recommendations Getting Started Documentation
Safe investments! Integration planned for 2020
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC * On-premise planned upcoming SAP S/4HANA 27
Where to invest now to be prepared for the ABAP RESTful Programming Model?
YOU SHOULD DO NOT
Follow the programming model and best practices and use…
Implement things already solved
Core Data Services (CDS) for database artefacts *
(≥ 7.40, Documentation) Manual implementation of read-only calls to DB
CDS Metadata Extensions for UI Annotations * Business logic mixed with technical aspects
(≥ 7.51 SP2, Documentation) (e.g. locks, authority-check, LUW handling, persistency)
DCL for read/query instance-based authority checks * Business logic mixed with protocol specific APIs
( ≥ 7.50, Documentation) (e.g. PBO/PAI, Gateway classes: DPC_EXT)
BOPF stand-alone
(≤ 7.40, Documentation, newer releases: CDS/BOPF integration)
BOPF and CDS integration including draft *
(≥ 7.51 SP2, Documentation)
Gateway integration of CDS or BOPF
(= 7.40, Documentation, newer releases: OData Exposure) BENEFITS
OData Exposure of CDS / BOPF for Reuse / prepare your skillset and coding for the future
SAP Fiori and future development *
(≥ 7.50 SP5, Documentation) Reuse CDS and DCL in SAP S/4HANA
Floorplan-Manager integration of CDS and BOPF Lower TCD for the future: Minimal investment on
(≥ 7.40, Documentation) technical protocol level
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC * Best practice Fiori apps, E2E documentation 28
Key Take Aways
Where to safely invest now? …
USE CDS AS THE ONE AND ONLY DATA MODELLING LANGUAGE
Use CDS / BOPF integration and get familiar with BOPF concepts like determinations, validations and actions
Use OData exposure: @OData.publish:true or SEGW / Referenced Data Source for OData V2
Avoid DPC / MPC specific coding
MAKE USE OF THE ABAP PROGRAMMING MODEL FOR SAP FIORI
The ABAP Programming Model for SAP Fiori is available as of AS ABAP 7.5 and is the current best practice in SAP
S/4HANA
BE PREPARED FOR THE ABAP RESTFUL PROGRAMMING MODEL
The ABAP RESTful Programming Model is already available in the SAP Cloud Platform ABAP Environment and is
planned to be released on premise with upcoming SAP S/4HANA releases
AVOID ODATA V4 IF NOT MANDATORY FOR YOUR BUSINESS SCENARIO
Odata V4 is planned to be supported with the ABAP RESTful programming model soon
Code based implementation of Odata V4 API’s cannot easily be reused.
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 29
Q&A
Further information
SAP DEVELOPER NETWORK - COMMUNITIES
https://www.sap.com/community/topic/gateway.html
SAP DEVELOPER NETWORK – BLOG POSTS
https://blogs.sap.com/2017/12/12/odata-service-development-options/
https://blogs.sap.com/2019/02/08/evolution-of-the-abap-programming-model/
SAP SOURCES
https://cloudplatform.sap.com/business-platform/abap.html
BOOKS AND COURSES
SAP Press Book - SAP Gateway and OData (English)
https://www.sap-press.com/sap-gateway-and-odata_4724/
GW100 - SAP Gateway - Building OData Services
https://training.sap.com/course/gw100-sap-gateway---building-odata-services-classroom-016-us-en/
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 31
Thank you.
Contact information:
Andre Fischer
[email protected]Engage the community.sap.com
You are invited to network, collaborate and learn while enjoying these community offerings:
Questions and answers Blogging Recognition Program Personalization
Direct Messaging Coffee Corner Events Expert Pages
© 2019 SAP SE or an SAP affiliate company. All rights reserved. ǀ PUBLIC 33