Overview and Walkthrough of the Application Programming Model with SAP Cloud Platform

SAP Cloud Platform
SAP Cloud PlatformPlatform as a Service
SAP Cloud Platform
Application Programming Model
Daniel Hutzel
CNA221
2PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Take the session survey.
We want to hear from you!
Be sure to complete the session evaluation
on the SAPTechEd mobile app.
Download the app from
iPhone App Store or Google Play.
CNA221
CNA221
✓
✓
Please complete your
feedback for session 
CNA221
Access replays at:
http://sapteched.com/online
Continue your discussions in:
sap.com/community
See all…
SAPTechEd blog posts
SAP TechEd
2018
6PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Introduction
SAP
Web IDE
CDS
Service
SDKs
REST
OData
FioriHANA
Java EE,
Spring
Node.js
express
Eclipse
VSCode
CLI
The “Application Programming Model for SAP Cloud Platform” is a
framework of tools, languages and libraries by SAP and OSS to
efficiently and rapidly build enterprise services and applications in a
full-stack development approach.
It guides developers along a golden path of best practices, allowing
them to focus on their domain while relieving them from tedious
technical tasks.
7PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Overview
We complement cloud-native technologies with…
 a CDS-based Services framework
with 1st-class support by and for…
 SAP Web IDE w/ tailored tools
 SAP Fiori
 SAP HANA
 S/4 Extension scenarios
Resulting in…
 A consistent end-to-end programming model for
enterprise services & applications
 Guidance and best practices leveraging proven
SAP technologies + Open Source software
WebIDE
Infrastructure
App UIs?
Domain Logic?
Domain Model?
localWebIDE+local
SAP Fiori + other
SAP HANA + other
Service SDKsCDS
CDS
planned:
CDS
PlatformServices
8PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Setup
Develop TestRun
CI/CD
Operate
Data
Services
Consumers
Context and our focus
Databases
SAP HANA
API Management
Monitoring
Scaling
Profiling
Connectivity
Big Data
Identities
Authentication
CI/CD
Destinations
Provisioning
Caching
Frontends / UIs
Your Services
and Apps
by S/4 HANA Cloud SDK, …
Getting Started…
10PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Fictional task given
Extension on
Cloud PlatformAdd Reviews
Manage
Orders
Maintain
Catalog
Admins
Browse Books
anybody
Order Books
registered
includes…
login…
includes…
T/5 backend system
In cloud first… T/5 later
Reuse
Service
11PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
using { Country, managed }
from '@sap/cds/common‘;
service ProductService {
entity Products : managed {
key ID : UUID;
title : localized String;
descr : localized String;
country : Country;
}
}
» What, not How. «
12PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Minimizing Boilerplate
service ProductService {
entity Products {
key ID : UUID;
title : localized String;
descr : localized String;
country : Country;
createdAt : DateTime @cds.on.insert: $now;
createdBy : User @cds.on.insert: $user;
modifiedBy : User @cds.on.update: $user;
modifiedAt : DateTime @cds.on.update: $now;
localized : Association to Products_texts
on localized.lang = $user.locale
and localized.ID = ID;
texts : Association to many Products_texts
on texts.ID=ID;
}
entity Products_texts {
key lang : Language;
key ID : UUID;
title : String;
descr : String;
}
type User : String(111);
type CountryCode : String(3);
type Locale : String(5);
//...
type Country : Association to Countries;
type Language : Association to Languages;
entity Countries : CodeList{
key code: CountryCode;
}
entity Languages : CodeList{
key code: Locale;
}
abstract entity CodeList {
name : localized String;
descr : localized String;
}
annotate Country with @(
title:'{i18n>Country}',
Common.ValueList.entity: 'Languages'
);
annotate Language with @(
title:'{i18n>Language}',
Common.ValueList.entity: 'Countries'
);
annotate CodeList with @(
UI.Identification: [{
$Type: 'UI.DataField', Value: name
}],
);
}
using { Country, managed }
from '@sap/cds/common‘;
service ProductService {
entity Products : managed {
key ID : UUID;
title : localized String;
descr : localized String;
country : Country;
}
}
» What, not How. «
13PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
» What, not How. «
It’s not just about less to type…
It’s much more about:
 Conciseness and comprehensiveness
 Detecting flaws early
 Single points to fix
 Single points to optimize
 Refocusing on your domain
i.e. about improving overall quality,
robustness and adaptability.
14PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
Accelerate your Projects
» Run early «
» Grow as you go «
Getting Started
—————————————
o Setup your env (once)
o Start a Project
o Define Services  Run
Add UIs / Frontends
——————————————
o Switch to Web IDE, and…
o Add a Fiori app  Run
o Add Fiori markup  Run
Provide Services
——————————————
o Derive Data Models  Run
o Deploy to DBs  Run
o Add Initial Data  Run
o … 2b continued…
Close Feedback Loop
• Start with services top-down
• Spin-off parallel workstreams (→ frontend / backend)
• Using the Service Definitions as their contracts
15PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
Accelerate your Projects
Leverage proven Methods
» We eat your dog food «
… originate close
to use cases
… are pushed down
to data sources
for execution
Database
CDS-based
Runtimes
Data
Models
Service
Defs.
Fiori UIs
Fiori
Markup
OData
CQLas views on
Queries
• OData = REST + Querying
• SAP Fiori = flexible generic UIs
• CDS += View Building
16PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
RESTful ABAP
Common Programming Model
SAP Fiori / UI5
SAP HANA
SQL
OData, REST
ABAP
Frameworks
ABAP
Toolset
Core Data
Services
SAP Gateway
Extension
Services
Events
Models
Replication
Interoperability
Reuse of Skills
Cloud App Prog Model
SAP Fiori / UI5
SAP HANA / other
SQL
OData, REST
Java / Node
Frameworks
S/4 HANA
Cloud SDK
Core Data
Services
REST + OData libraries
» Our dog food @ SAP «
17PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
Accelerate your Projects
Leverage proven Methods
Openness & Flexibility
Cloud Foundry
Kubernetes
XSA
local
SAP Fiori Angular React Vue • • •
SAP HANA PostgreSQL sqlite • • •
SAP Web IDE
Eclipse
VSCode
• • •
Core
Node.js Java
Core Data Services
• We focus on the Core of Data-oriented Services
• We integrate recommended choices from periphery …
• But without lock-in!  still you decide what you use
18PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
Accelerate your Projects
Leverage proven Methods
Openness & Flexibility
Web IDE provides tailored tools for the
application programming model.
You can use Web IDE and/or local tools of
your choice and switch between both.
Common Project Layout & Build
• app
• srv
• db
Local Development
• Command-line Tools
• known IDEs / Editors
• w/ CDS Editors
• Local test runs
• Maven/npm-based
automation
• • •
SAP Web IDE Full-Stack
• Project Storyboard
• Project Explorer
• Database Explorer
• Graphical Modeling
• Service Discovery
• Fiori Dev Tools
• CDS Editors
• Drag & Drop
19PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
SAPWeb IDE Full-Stack tailored tools
 Project Storyboard
 Project Explorer
 Database Explorer
 CDS Editors
 Outline
 Drag & Drop
 Problems View
 Graphical Editors
 Service Discovery and
integration wizards (e.g. S/4)
 Fiori Development Toolset
20PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
Accelerate your Projects
Leverage proven Methods
Openness & Flexibility
Enterprise Qualities
Intrinsic Enterprise Features & Qualities
 Localized Metadata  e.g. labels
 Localized Data  text tables
o Temporal Data  valid from/to, time travel
 Authorization
 Audit Logging
 Project-level Extensibility ( providers)
o Tenant-level Extensibility ( clients)
o GDPR support
o Validation Framework
o Declarative Constraints
o TypeScript for implementors
o …
21PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
Accelerate your Projects
Leverage proven Methods
Openness & Flexibility
Enterprise Qualities
Cloud Qualities
Intrinsic Cloud Integration & Qualities
 Authentication / UAA
 JWT token handling
 Configuration (via VCAP services, …)
 Health checks
 Logging & Monitoring
 Tenant on/off boarding
 Tenant isolation
o Rate limiting
o Caching (via Hystrix, …)
o Messaging (via RapidMQ, …)
o Resilience (in S/4H CloudSDK)
o …
by S/4 HANA Cloud SDK
Deep dive on CDS
Who knows CDS?
You don’t know CDS! :)
25PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Entities & Views (from SQL)
Associations
Annotations
Aspects
Concise Queries
entity Books @(title:‘Bücher‘) {
key ID : UUID;
title : localized String;
author : Association to Authors;
}
entity Authors {
key ID : UUID;
name : String;
books : Composition of many Books;
}
entity BooksList as select from Books {
ID, title, author.name as author
}
 Entity-Relationship Modeling
 Reflexive View Building  borrowed from SQL
CDS is about…
26PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Entities & Views (from SQL)
Associations
Annotations
Aspects
Concise Queries
// Pure, unpolluted Structure
define entity Foo { bar : String; }
// Fiori UI Markup
annotate Foo with @UI.Label:'Foo‘;
// Authorization Model
annotate Foo with @requires:‘admin‘;
// Customer-specific Extensions
extend entity Foo with {
car:{ wheels: Integer; }
}
 separate concerns into partial definitions
 avoids polluting your structure
 allows using different tools on same effective models
 in same or different files up to different projects
CDS is about…
27PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
SELECT from Employees {
name, addresses [kind='business’] .city.{
name, country.name
}
}
 Path Expressions w/ optional Infix Filters
 (Nested) Postfix Projections
 Permeable for native database features
SELECT e.name, city.name, country.name from Employees e
LEFT JOIN Addresses a on a.id = e.address_id and a.kind='business'
LEFT JOIN Cities city on city.id = addresses.city_id
LEFT JOIN Countries country on country.id = city.country_id
Entities & Views (from SQL)
Associations
Annotations
Aspects
Concise Queries
CDS is about…
28PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Entities & Views (from SQL)
Associations
Annotations
Aspects
Concise Queries
service CatalogService {
entity Books as projection on my.Books;
entity Authors as projection on my.Authors;
entity Orders as projection on my.Orders {
*, book.title, book.author.name as author
} where createdBy = $user;
action cancel(order:UUID);
}
 data-centric: entities with intrinsic CRUD ops
 entities as views on underlying ones
 with seamless mapping to REST + OData
CDS is about…
Service Definitions
29PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Entities & Views (from SQL)
Associations
Annotations
Aspects
Concise Queries
 Core Schema Notation (CSN) as the core of all:
models are plain JavaScript/JSON objects
 minimal footprint, dynamic, no repositories
 fast innovation and delivery cycles
 zero lock-in to any database or stack
{ CSN }
CDS
YAML
OData
JSON, YAML
JPA
process
Open API
Code
SQL DDL
HANA DDL
JSON
CDS is about…
Litew8 reincarnation in Node.js
Service Definitions
let model = {Foo:{kind:'entity'}}
Adding Custom Logic…
cds.services
cds.ql
31PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Implementing Services
Place a <service>.js file next to your <service>.cds file1 Add a Service Implementation Function2
Register your Event Handlers
.before → before generic ones
.on → instead of generic ones
.after → before results go out
3
+
Only for your real, domain-specific custom
logic, leaving the rest to the built-in generic
handlers
Note:
• all non-blocking, running in parallel
• all connection handling, transaction mgmt.,
etc. is taken care of by the fwk
32PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Consuming Services
API Hub
cds importImport Service Definition
in case of external ones
1
Data Source
Database Data Model
Local Service
Service
Definition
External Service
Service
Definition
// query-style
SELECT.from (Foo) .where ({ID:111}) .then (foo => … )
let foo = await SELECT.from (Foo) .where ({ID:111})
// method call-style
ds.read(Foo) .where ({ID:111}) .then (foo => … )
// using declared custom operations
ds.getFoo (111) .then (foo => … )
Data Sources can be Databases, external Services or
local Services and are all consumed in the same way.
OData and cds.services support querying by default.
Connect to Data Source2
Read/Write Data3
const ds = await cds.connect.to ('SomeDataSource‘)
const { Foo } = ds.entities()
33PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Service-level Mashups
CDS allows to easily mashup imported
definitions with local ones.
Views define which subset of data we are
interested in.
Imported
Service
Definition
API Hub
cds import
Import the Service Definition1
Local Service
Definitions
using ExternalService as ext from ‚./imported/service‘;
service CatalogService {
// served from local database
entity Books as projection on bookshop.Books;
entity Authors as projection on bookshop.Authors;
// served from external service
entity Orders as SELECT from ext.Orders {
*, book.title, book.author.name as author
} where createdBy = $user;
}
const ext = await cds.connect.to ('ExternalService')
const { Orders } = ext.entities()
cds.serve ('CatalogService').with (function(){
this.on ('READ', 'Orders', ()=> SELECT.from (Orders) … )
})
Mashup into Local Service Definition:2
Call out to the external service in a custom handler:3
34PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Service-level Replication
using ExternalService as ext from '@imported/service‘;
entity Books {…}
entity Authors {…}
// local replica entity filled from external service
entity Orders as SELECT from ext.Orders {
*, book.title, book.author.name as author
} where createdBy = $user;
const { Orders } = cds.entities // local
cds.subscribe.to ('ExternalService‘) .with (ext => {
ext.on (['CREATED', 'UPDATED'], 'Orders‘, ({data:{IDs}}) => {
ext.read ('Orders') .where ('ID in', IDs) .foreach (
each => UPSERT(each).into (Orders)
)
})
})
Local Data
Model
Imported
Service
Definition
API Hub
cds import
Import the Service Definition1
Mashup into Local Data Model:2
Replicate actual data upon change events from the source:3
Cache data locally which is required in
frequent and close access.
Create tables with the views’ signature.
35PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Open, Non-intrusive Design — you stay in control
We use established OSS de-facto standards
We add components focused on enterprise features
You stay in control, you choose what to use and when!
… e.g. in a custom server.js:
Node.js
express.js, …
cds.services
cds.ql, …
Java
Servlets, Spring
Service SDK
JDBC, JPA, cds.ql
36PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
Accelerate your Projects
Leverage proven Methods
Openness & Flexibility
Enterprise Qualities
Cloud Qualities
Services, not BObjects
Data Model
Service A Service B
Services are stateless API facades.
They contain all logic and validations and
frequently expose views on data.
Data Models define passive
objects, mostly normalized and
managed in databases
37PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Single-purposed Services
Manage
Orders
Maintain
Catalog
Admins
service CatalogService {
expose entity Books @readonly;
expose entity Authors @readonly;
action order (book) @requires:$user;
}
service CustomersService @(requires:$user) {
expose entity Orders @(restrict:[
{grant:'READ,DELETE', where:'buyer=$user‘}
]);
}
service AdminService @(requires:‘admin‘) {
expose entity Books
expose entity Authors;
expose entity Orders;
}
 fosters focused and efficient implementations
 enables ‘late-cut µ services’
Browse Books
anybody
Order Books
registered
login
includes…
38PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Capture Intent on Conceptual Level
Best Practices & Benefits…
Accelerate your Projects
Leverage proven Methods
Openness & Flexibility
Enterprise Qualities
Cloud Qualities
Services, not BObjects
Querying, not ORM
ORMs provide…?
• Active objects manipulating internal state
• Abstraction, shielding me from SQL
• Portability across databases
• Eager/Lazy Loading
• Object Caches
• …?
39PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Data Access with cds.ql
Managed Data Sources w/ CDS-based Reflection
Queries as 1st class objects
SQL-style usage
Object-style usage
Reflexive Querying w/ Late Materialization
Asynchronous, non-blocking execution
Managed Units of Work
Conclusion
41PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Data
Services
Data
Models
Service
Defs.
Custom
Handlers
Fiori UIs
Fiori
Markup
OData
Stored
Procs
Breakouts
Summary — Core Programming Model
CDS
cds.services
cds.ql
We promote…
• Best Practices, not Anarchy!
• Openness, not Blackbox!
• Services, not Objects!
• Querying, not ORM!
• Capturing Intent
• Enterprise & Cloud Qualities
42PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Cookbook — there’s more…
Getting Started
—————————————
o Setup your env (once)
o Start a Project
o Define Services  Run
Add UIs / Frontends
——————————————
o Switch to Web IDE, and…
o Add a Fiori app  Run
o Add Fiori markup  Run
Provide Services
——————————————
o Derive Data Models  Run
o Deploy to DBs  Run
o Add Initial Data  Run
o Add Custom Logic  Run
o Reading / Writing Data
o Add Authorization, I18n, …
Reuse & Modularize
—————————————
o Reuse @sap/cds/common
o Reuse other packages
o Modularize your app
Consume Services
—————————————
o Import ext. Service APIs
o Consume Services
o Service-level Mashups
o Service-level Replication
o Serve required Interfaces
Deploy
——————————
o Deploy to Cloud
o Serverless
o … for own use
o … as SaaS solution
Customize
——————————
o Verticalization
o Tenant-level
Customization✓
✓
✓
✓
✓
43PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ
Status Quo / Outlook
o SAP Analytics Cloud integration
o Analytical List Page by Fiori
o Serverless deployment
o Reactive Java
o Enhanced GDPR support
o Validation Framework
o Declarative Constraints
o TypeScript for implementors
o …
 CDS-based Service and Data Model
 Service Providers in Node.js / Java
 1st class support for HANA DBaaS
 1st class support for Fiori Uis
 1st class support in Web IDE
 Local dev in VSCode, Eclipse, …
 Fastrack dev with node + sqlite db
 Intrinsic Enterprise Qualities, e.g…
 Localized Data + I18n
 Authorization
 Audit Logging
 GDPR support (basic)
 Service Consumption via S/4H SDK
 Service-level Mashups & Replication
 Project-level Extensibility
 Deployment to Cloud Foundry
o Basis for Serverless eBaaS
o 1st class support for PostgreSQL, …
o Fiori Draft support +
o OData v4
o Advanced support for Spring
o SaaS Tenant-level Extensibility
o More Tailored Tools Web IDE
o Temporal Data
o Events Consumption & Emitting
o Generic Service Consumption
o Generic support for Messaging
o Deploy to Kubernetes
 available o in progress o planned
Overview and Walkthrough of the Application Programming Model with SAP Cloud Platform
Thank you!
Keren Rotenberg
Lead Product Manager
keren.rotenberg@sap.com
Daniel Hutzel
Chief Product Owner
daniel.hutzel@sap.com
✓
✓
Please complete your
feedback for session 
CNA221
Access replays at:
http://sapteched.com/online
Continue your discussions in:
sap.com/community
See all…
SAPTechEd blog posts
SAP TechEd
2018
1 of 44

Recommended

Sap basics (SAP Modules) by
Sap basics (SAP Modules)Sap basics (SAP Modules)
Sap basics (SAP Modules)Kamal Joshi
751 views31 slides
SAP's Business Technology Platform: A Game-Changer for Intelligent Enterprises by
SAP's Business Technology Platform: A Game-Changer for Intelligent EnterprisesSAP's Business Technology Platform: A Game-Changer for Intelligent Enterprises
SAP's Business Technology Platform: A Game-Changer for Intelligent EnterprisesExtentia Information Technology
2.9K views10 slides
Sap modules-overview by
Sap modules-overviewSap modules-overview
Sap modules-overviewKrishna Praveen
4K views4 slides
SAP S_4HANA Migration Cockpit - Migrate your Data to SAP S_4HANA.pdf by
SAP S_4HANA Migration Cockpit - Migrate your Data to SAP S_4HANA.pdfSAP S_4HANA Migration Cockpit - Migrate your Data to SAP S_4HANA.pdf
SAP S_4HANA Migration Cockpit - Migrate your Data to SAP S_4HANA.pdfsubbulokam
1K views156 slides
SAP S4HANA : Learn From Our Implementation Journey by
SAP S4HANA : Learn From Our Implementation JourneySAP S4HANA : Learn From Our Implementation Journey
SAP S4HANA : Learn From Our Implementation JourneyAnup Lakra
1.3K views27 slides
SAP S/4HANA: Everything you need to know for a successul implementation by
SAP S/4HANA: Everything you need to know for a successul implementationSAP S/4HANA: Everything you need to know for a successul implementation
SAP S/4HANA: Everything you need to know for a successul implementationBluefin Solutions
12.1K views64 slides

More Related Content

What's hot

SAP Cloud Platform API Management Technical Brief by
SAP Cloud Platform API Management Technical BriefSAP Cloud Platform API Management Technical Brief
SAP Cloud Platform API Management Technical BriefSAP Cloud Platform
3.9K views37 slides
SAP Cloud Strategy by
SAP Cloud StrategySAP Cloud Strategy
SAP Cloud StrategyOpen Data Center Alliance
2.4K views26 slides
SAP S/4HANA Migration Cockpit by
SAP S/4HANA Migration CockpitSAP S/4HANA Migration Cockpit
SAP S/4HANA Migration CockpitEdwin Weijers
12.3K views30 slides
Decoding SAP S/4HANA System Conversion by
Decoding SAP S/4HANA System ConversionDecoding SAP S/4HANA System Conversion
Decoding SAP S/4HANA System ConversionAkilesh Kumaran
503 views42 slides
Sap for beginners by
Sap for beginnersSap for beginners
Sap for beginnersRohit Verma
881 views17 slides
SAP NetWeaver BW Powered by SAP HANA by
SAP NetWeaver BW Powered by SAP HANASAP NetWeaver BW Powered by SAP HANA
SAP NetWeaver BW Powered by SAP HANASAP Technology
4.8K views30 slides

What's hot(20)

SAP Cloud Platform API Management Technical Brief by SAP Cloud Platform
SAP Cloud Platform API Management Technical BriefSAP Cloud Platform API Management Technical Brief
SAP Cloud Platform API Management Technical Brief
SAP Cloud Platform3.9K views
SAP S/4HANA Migration Cockpit by Edwin Weijers
SAP S/4HANA Migration CockpitSAP S/4HANA Migration Cockpit
SAP S/4HANA Migration Cockpit
Edwin Weijers12.3K views
Decoding SAP S/4HANA System Conversion by Akilesh Kumaran
Decoding SAP S/4HANA System ConversionDecoding SAP S/4HANA System Conversion
Decoding SAP S/4HANA System Conversion
Akilesh Kumaran503 views
Sap for beginners by Rohit Verma
Sap for beginnersSap for beginners
Sap for beginners
Rohit Verma881 views
SAP NetWeaver BW Powered by SAP HANA by SAP Technology
SAP NetWeaver BW Powered by SAP HANASAP NetWeaver BW Powered by SAP HANA
SAP NetWeaver BW Powered by SAP HANA
SAP Technology4.8K views
Sap s4 hana (2) by babloo6
Sap s4 hana (2)Sap s4 hana (2)
Sap s4 hana (2)
babloo6807 views
CIDEON SAP Engineering Control Center by Thuc Nguyen
CIDEON SAP Engineering Control CenterCIDEON SAP Engineering Control Center
CIDEON SAP Engineering Control Center
Thuc Nguyen804 views
SAP HANA Migration Deck.pptx by SingbBablu
SAP HANA Migration Deck.pptxSAP HANA Migration Deck.pptx
SAP HANA Migration Deck.pptx
SingbBablu650 views
Presales sap business process - aditi & sameer rawat by Aditi Tarafdar
Presales   sap business process - aditi & sameer rawatPresales   sap business process - aditi & sameer rawat
Presales sap business process - aditi & sameer rawat
Aditi Tarafdar6.6K views
Architecture overview by npss2011
Architecture  overviewArchitecture  overview
Architecture overview
npss20111.9K views
S/4 HANA conversion functional value proposition by Vignesh Bhatt
S/4 HANA conversion functional value propositionS/4 HANA conversion functional value proposition
S/4 HANA conversion functional value proposition
Vignesh Bhatt3K views
Take the Next Step to S/4HANA with "RISE with SAP" by panayaofficial
Take the Next Step to S/4HANA with "RISE with SAP"Take the Next Step to S/4HANA with "RISE with SAP"
Take the Next Step to S/4HANA with "RISE with SAP"
panayaofficial1K views

Similar to Overview and Walkthrough of the Application Programming Model with SAP Cloud Platform

2017 sitNL Cloud Foundry Masterclass by
2017 sitNL Cloud Foundry Masterclass2017 sitNL Cloud Foundry Masterclass
2017 sitNL Cloud Foundry MasterclassTed Castelijns
446 views28 slides
Google Technical Webinar - Building Mashups with Google Apps and SAP, using S... by
Google Technical Webinar - Building Mashups with Google Apps and SAP, using S...Google Technical Webinar - Building Mashups with Google Apps and SAP, using S...
Google Technical Webinar - Building Mashups with Google Apps and SAP, using S...SAP PartnerEdge program for Application Development
2K views33 slides
The Decoupled CMS in Financial Services by
The Decoupled CMS in Financial ServicesThe Decoupled CMS in Financial Services
The Decoupled CMS in Financial ServicesOpen Source Strategy Forum
159 views62 slides
SAP BTP Enablement by
SAP BTP EnablementSAP BTP Enablement
SAP BTP EnablementLuis Carrasco
382 views43 slides
Introduction to NEW SAP - Accenture Technology Meetup by
Introduction to NEW SAP - Accenture Technology MeetupIntroduction to NEW SAP - Accenture Technology Meetup
Introduction to NEW SAP - Accenture Technology MeetupAccenture Hungary
341 views37 slides

Similar to Overview and Walkthrough of the Application Programming Model with SAP Cloud Platform(20)

2017 sitNL Cloud Foundry Masterclass by Ted Castelijns
2017 sitNL Cloud Foundry Masterclass2017 sitNL Cloud Foundry Masterclass
2017 sitNL Cloud Foundry Masterclass
Ted Castelijns446 views
Introduction to NEW SAP - Accenture Technology Meetup by Accenture Hungary
Introduction to NEW SAP - Accenture Technology MeetupIntroduction to NEW SAP - Accenture Technology Meetup
Introduction to NEW SAP - Accenture Technology Meetup
Accenture Hungary341 views
SAP TechEd 2013: CD105: Extending SuccessFactors EmployeeCentral with apps on... by SAP HANA Cloud Platform
SAP TechEd 2013: CD105: Extending SuccessFactors EmployeeCentral with apps on...SAP TechEd 2013: CD105: Extending SuccessFactors EmployeeCentral with apps on...
SAP TechEd 2013: CD105: Extending SuccessFactors EmployeeCentral with apps on...
Learn about Cloud and Scalability in SAP Hybris Commerce Technology Strategy by SAP Customer Experience
Learn about Cloud and Scalability in SAP Hybris Commerce Technology StrategyLearn about Cloud and Scalability in SAP Hybris Commerce Technology Strategy
Learn about Cloud and Scalability in SAP Hybris Commerce Technology Strategy
S4H_399 2 SL _Onboarding Presentation (2).pptx by chandramohan431817
S4H_399 2  SL _Onboarding Presentation (2).pptxS4H_399 2  SL _Onboarding Presentation (2).pptx
S4H_399 2 SL _Onboarding Presentation (2).pptx
chandramohan431817296 views
SAP HANA Cloud Portal - Overview Presentation by SAP Portal
SAP HANA Cloud Portal - Overview PresentationSAP HANA Cloud Portal - Overview Presentation
SAP HANA Cloud Portal - Overview Presentation
SAP Portal6.8K views
SAP HANA Cloud Portal by Amir Blich
SAP HANA Cloud PortalSAP HANA Cloud Portal
SAP HANA Cloud Portal
Amir Blich1.3K views
SAP HANA Cloud: From Your Datacenter to the Cloud and Back by SAP HANA Cloud Platform
SAP HANA Cloud: From Your Datacenter to the Cloud and Back  SAP HANA Cloud: From Your Datacenter to the Cloud and Back
SAP HANA Cloud: From Your Datacenter to the Cloud and Back
SQL Data Warehousing in SAP HANA (Sefan Linders) by Twan van den Broek
SQL Data Warehousing in SAP HANA (Sefan Linders)SQL Data Warehousing in SAP HANA (Sefan Linders)
SQL Data Warehousing in SAP HANA (Sefan Linders)
Twan van den Broek551 views
Unlock the Full Potential of SAP Hybris Solutions Using SAP Cloud Platform by SAP Customer Experience
Unlock the Full Potential of SAP Hybris Solutions Using SAP Cloud PlatformUnlock the Full Potential of SAP Hybris Solutions Using SAP Cloud Platform
Unlock the Full Potential of SAP Hybris Solutions Using SAP Cloud Platform
SAP Leonardo / Machine Learning (Iver van de Zand) by Twan van den Broek
SAP Leonardo / Machine Learning (Iver van de Zand)SAP Leonardo / Machine Learning (Iver van de Zand)
SAP Leonardo / Machine Learning (Iver van de Zand)
Twan van den Broek982 views

More from SAP Cloud Platform

SAP Cloud Platform CPEA Roadmap Services (07.2020) by
SAP Cloud Platform CPEA Roadmap Services (07.2020)SAP Cloud Platform CPEA Roadmap Services (07.2020)
SAP Cloud Platform CPEA Roadmap Services (07.2020)SAP Cloud Platform
669 views5 slides
SAP Cloud Platform CPEA Roadmap Services June 2020 by
SAP Cloud Platform CPEA Roadmap Services June 2020SAP Cloud Platform CPEA Roadmap Services June 2020
SAP Cloud Platform CPEA Roadmap Services June 2020SAP Cloud Platform
401 views6 slides
SAP Cloud Platform Extension Suite Overview by
SAP Cloud Platform Extension Suite OverviewSAP Cloud Platform Extension Suite Overview
SAP Cloud Platform Extension Suite OverviewSAP Cloud Platform
531 views21 slides
SAP Cloud Platform Product Overview – Drive Agility During Rapid Change by
SAP Cloud Platform Product Overview – Drive Agility During Rapid ChangeSAP Cloud Platform Product Overview – Drive Agility During Rapid Change
SAP Cloud Platform Product Overview – Drive Agility During Rapid ChangeSAP Cloud Platform
562 views25 slides
SAP Cloud Platform CPEA Roadmap Services (03.2020) by
SAP Cloud Platform CPEA Roadmap Services (03.2020)SAP Cloud Platform CPEA Roadmap Services (03.2020)
SAP Cloud Platform CPEA Roadmap Services (03.2020)SAP Cloud Platform
289 views6 slides
SAP Cloud Platform CPEA Roadmap Services (05.2020) by
SAP Cloud Platform CPEA  Roadmap Services (05.2020)SAP Cloud Platform CPEA  Roadmap Services (05.2020)
SAP Cloud Platform CPEA Roadmap Services (05.2020)SAP Cloud Platform
391 views6 slides

More from SAP Cloud Platform(20)

SAP Cloud Platform CPEA Roadmap Services (07.2020) by SAP Cloud Platform
SAP Cloud Platform CPEA Roadmap Services (07.2020)SAP Cloud Platform CPEA Roadmap Services (07.2020)
SAP Cloud Platform CPEA Roadmap Services (07.2020)
SAP Cloud Platform669 views
SAP Cloud Platform CPEA Roadmap Services June 2020 by SAP Cloud Platform
SAP Cloud Platform CPEA Roadmap Services June 2020SAP Cloud Platform CPEA Roadmap Services June 2020
SAP Cloud Platform CPEA Roadmap Services June 2020
SAP Cloud Platform401 views
SAP Cloud Platform Product Overview – Drive Agility During Rapid Change by SAP Cloud Platform
SAP Cloud Platform Product Overview – Drive Agility During Rapid ChangeSAP Cloud Platform Product Overview – Drive Agility During Rapid Change
SAP Cloud Platform Product Overview – Drive Agility During Rapid Change
SAP Cloud Platform562 views
SAP Cloud Platform CPEA Roadmap Services (03.2020) by SAP Cloud Platform
SAP Cloud Platform CPEA Roadmap Services (03.2020)SAP Cloud Platform CPEA Roadmap Services (03.2020)
SAP Cloud Platform CPEA Roadmap Services (03.2020)
SAP Cloud Platform289 views
SAP Cloud Platform CPEA Roadmap Services (05.2020) by SAP Cloud Platform
SAP Cloud Platform CPEA  Roadmap Services (05.2020)SAP Cloud Platform CPEA  Roadmap Services (05.2020)
SAP Cloud Platform CPEA Roadmap Services (05.2020)
SAP Cloud Platform391 views
2020 central sapcp_requirementschannel_1slider by SAP Cloud Platform
2020 central sapcp_requirementschannel_1slider2020 central sapcp_requirementschannel_1slider
2020 central sapcp_requirementschannel_1slider
SAP Cloud Platform160 views
SAP Cloud Platform CPEA Roadmap Services (04.2020) by SAP Cloud Platform
SAP Cloud Platform CPEA  Roadmap Services (04.2020)SAP Cloud Platform CPEA  Roadmap Services (04.2020)
SAP Cloud Platform CPEA Roadmap Services (04.2020)
SAP Cloud Platform365 views
SAP Cloud Platform CPEA Services Roadmap (03.2020) by SAP Cloud Platform
SAP Cloud Platform CPEA Services Roadmap (03.2020)SAP Cloud Platform CPEA Services Roadmap (03.2020)
SAP Cloud Platform CPEA Services Roadmap (03.2020)
SAP Cloud Platform425 views
SAP Cloud Platform CPEA Services Roadmap (01.2020) by SAP Cloud Platform
SAP Cloud Platform CPEA Services Roadmap (01.2020)SAP Cloud Platform CPEA Services Roadmap (01.2020)
SAP Cloud Platform CPEA Services Roadmap (01.2020)
SAP Cloud Platform218 views
SAP Cloud Platform CPEA Services Roadmap (12.2019) by SAP Cloud Platform
SAP Cloud Platform CPEA Services Roadmap (12.2019)SAP Cloud Platform CPEA Services Roadmap (12.2019)
SAP Cloud Platform CPEA Services Roadmap (12.2019)
SAP Cloud Platform297 views
SAP Cloud Platform CPEA Services Roadmap (Nov,19,2019) by SAP Cloud Platform
SAP Cloud Platform CPEA Services Roadmap (Nov,19,2019)SAP Cloud Platform CPEA Services Roadmap (Nov,19,2019)
SAP Cloud Platform CPEA Services Roadmap (Nov,19,2019)
SAP Cloud Platform674 views
SAP Cloud Platform CPEA Services Roadmap (11.2019) by SAP Cloud Platform
SAP Cloud Platform CPEA Services Roadmap (11.2019)SAP Cloud Platform CPEA Services Roadmap (11.2019)
SAP Cloud Platform CPEA Services Roadmap (11.2019)
SAP Cloud Platform401 views
SAP Cloud Platform CPEA Services Roadmap (10.2019) by SAP Cloud Platform
SAP Cloud Platform CPEA Services Roadmap (10.2019)SAP Cloud Platform CPEA Services Roadmap (10.2019)
SAP Cloud Platform CPEA Services Roadmap (10.2019)
SAP Cloud Platform822 views
SAP TechEd 2019 CAA217 – Efficient Continuous Delivery in the SAP Ecosystem by SAP Cloud Platform
SAP TechEd 2019 CAA217 – Efficient Continuous Delivery in the SAP EcosystemSAP TechEd 2019 CAA217 – Efficient Continuous Delivery in the SAP Ecosystem
SAP TechEd 2019 CAA217 – Efficient Continuous Delivery in the SAP Ecosystem
Process Excellence with SAP Cloud Platform Process Visibility by SAP Cloud Platform
Process Excellence with SAP Cloud Platform Process VisibilityProcess Excellence with SAP Cloud Platform Process Visibility
Process Excellence with SAP Cloud Platform Process Visibility
SAP Cloud Platform1.6K views
Overview on What’s New in SAP Cloud Platform Business Rules by SAP Cloud Platform
Overview on What’s New in SAP Cloud Platform Business RulesOverview on What’s New in SAP Cloud Platform Business Rules
Overview on What’s New in SAP Cloud Platform Business Rules
SAP Cloud Platform894 views
Cloud Platform Enterprise Agreement (CPEA) in Detail by SAP Cloud Platform
Cloud Platform Enterprise Agreement (CPEA) in DetailCloud Platform Enterprise Agreement (CPEA) in Detail
Cloud Platform Enterprise Agreement (CPEA) in Detail
SAP Cloud Platform6.5K views
What’s new in SAP Cloud Platform Workflow – summer edition 2019 by SAP Cloud Platform
What’s new in SAP Cloud Platform Workflow – summer edition 2019What’s new in SAP Cloud Platform Workflow – summer edition 2019
What’s new in SAP Cloud Platform Workflow – summer edition 2019

Recently uploaded

Kyo - Functional Scala 2023.pdf by
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfFlavio W. Brasil
400 views92 slides
Serverless computing with Google Cloud (2023-24) by
Serverless computing with Google Cloud (2023-24)Serverless computing with Google Cloud (2023-24)
Serverless computing with Google Cloud (2023-24)wesley chun
11 views33 slides
6g - REPORT.pdf by
6g - REPORT.pdf6g - REPORT.pdf
6g - REPORT.pdfLiveplex
10 views23 slides
SAP Automation Using Bar Code and FIORI.pdf by
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdfVirendra Rai, PMP
23 views38 slides
Voice Logger - Telephony Integration Solution at Aegis by
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at AegisNirmal Sharma
39 views1 slide
Evolving the Network Automation Journey from Python to Platforms by
Evolving the Network Automation Journey from Python to PlatformsEvolving the Network Automation Journey from Python to Platforms
Evolving the Network Automation Journey from Python to PlatformsNetwork Automation Forum
13 views21 slides

Recently uploaded(20)

Serverless computing with Google Cloud (2023-24) by wesley chun
Serverless computing with Google Cloud (2023-24)Serverless computing with Google Cloud (2023-24)
Serverless computing with Google Cloud (2023-24)
wesley chun11 views
6g - REPORT.pdf by Liveplex
6g - REPORT.pdf6g - REPORT.pdf
6g - REPORT.pdf
Liveplex10 views
SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
Voice Logger - Telephony Integration Solution at Aegis by Nirmal Sharma
Voice Logger - Telephony Integration Solution at AegisVoice Logger - Telephony Integration Solution at Aegis
Voice Logger - Telephony Integration Solution at Aegis
Nirmal Sharma39 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi132 views
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays17 views
STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb14 views
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... by Jasper Oosterveld
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
Data Integrity for Banking and Financial Services by Precisely
Data Integrity for Banking and Financial ServicesData Integrity for Banking and Financial Services
Data Integrity for Banking and Financial Services
Precisely25 views
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors by sugiuralab
TouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective SensorsTouchLog: Finger Micro Gesture Recognition  Using Photo-Reflective Sensors
TouchLog: Finger Micro Gesture Recognition Using Photo-Reflective Sensors
sugiuralab21 views

Overview and Walkthrough of the Application Programming Model with SAP Cloud Platform

  • 1. SAP Cloud Platform Application Programming Model Daniel Hutzel CNA221
  • 2. 2PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Take the session survey. We want to hear from you! Be sure to complete the session evaluation on the SAPTechEd mobile app. Download the app from iPhone App Store or Google Play. CNA221 CNA221
  • 3. ✓ ✓ Please complete your feedback for session  CNA221 Access replays at: http://sapteched.com/online Continue your discussions in: sap.com/community See all… SAPTechEd blog posts SAP TechEd 2018
  • 4. 6PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Introduction SAP Web IDE CDS Service SDKs REST OData FioriHANA Java EE, Spring Node.js express Eclipse VSCode CLI The “Application Programming Model for SAP Cloud Platform” is a framework of tools, languages and libraries by SAP and OSS to efficiently and rapidly build enterprise services and applications in a full-stack development approach. It guides developers along a golden path of best practices, allowing them to focus on their domain while relieving them from tedious technical tasks.
  • 5. 7PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Overview We complement cloud-native technologies with…  a CDS-based Services framework with 1st-class support by and for…  SAP Web IDE w/ tailored tools  SAP Fiori  SAP HANA  S/4 Extension scenarios Resulting in…  A consistent end-to-end programming model for enterprise services & applications  Guidance and best practices leveraging proven SAP technologies + Open Source software WebIDE Infrastructure App UIs? Domain Logic? Domain Model? localWebIDE+local SAP Fiori + other SAP HANA + other Service SDKsCDS CDS planned: CDS PlatformServices
  • 6. 8PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Setup Develop TestRun CI/CD Operate Data Services Consumers Context and our focus Databases SAP HANA API Management Monitoring Scaling Profiling Connectivity Big Data Identities Authentication CI/CD Destinations Provisioning Caching Frontends / UIs Your Services and Apps by S/4 HANA Cloud SDK, …
  • 8. 10PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Fictional task given Extension on Cloud PlatformAdd Reviews Manage Orders Maintain Catalog Admins Browse Books anybody Order Books registered includes… login… includes… T/5 backend system In cloud first… T/5 later Reuse Service
  • 9. 11PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… using { Country, managed } from '@sap/cds/common‘; service ProductService { entity Products : managed { key ID : UUID; title : localized String; descr : localized String; country : Country; } } » What, not How. «
  • 10. 12PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Minimizing Boilerplate service ProductService { entity Products { key ID : UUID; title : localized String; descr : localized String; country : Country; createdAt : DateTime @cds.on.insert: $now; createdBy : User @cds.on.insert: $user; modifiedBy : User @cds.on.update: $user; modifiedAt : DateTime @cds.on.update: $now; localized : Association to Products_texts on localized.lang = $user.locale and localized.ID = ID; texts : Association to many Products_texts on texts.ID=ID; } entity Products_texts { key lang : Language; key ID : UUID; title : String; descr : String; } type User : String(111); type CountryCode : String(3); type Locale : String(5); //... type Country : Association to Countries; type Language : Association to Languages; entity Countries : CodeList{ key code: CountryCode; } entity Languages : CodeList{ key code: Locale; } abstract entity CodeList { name : localized String; descr : localized String; } annotate Country with @( title:'{i18n>Country}', Common.ValueList.entity: 'Languages' ); annotate Language with @( title:'{i18n>Language}', Common.ValueList.entity: 'Countries' ); annotate CodeList with @( UI.Identification: [{ $Type: 'UI.DataField', Value: name }], ); } using { Country, managed } from '@sap/cds/common‘; service ProductService { entity Products : managed { key ID : UUID; title : localized String; descr : localized String; country : Country; } } » What, not How. «
  • 11. 13PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… » What, not How. « It’s not just about less to type… It’s much more about:  Conciseness and comprehensiveness  Detecting flaws early  Single points to fix  Single points to optimize  Refocusing on your domain i.e. about improving overall quality, robustness and adaptability.
  • 12. 14PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… Accelerate your Projects » Run early « » Grow as you go « Getting Started ————————————— o Setup your env (once) o Start a Project o Define Services  Run Add UIs / Frontends —————————————— o Switch to Web IDE, and… o Add a Fiori app  Run o Add Fiori markup  Run Provide Services —————————————— o Derive Data Models  Run o Deploy to DBs  Run o Add Initial Data  Run o … 2b continued… Close Feedback Loop • Start with services top-down • Spin-off parallel workstreams (→ frontend / backend) • Using the Service Definitions as their contracts
  • 13. 15PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… Accelerate your Projects Leverage proven Methods » We eat your dog food « … originate close to use cases … are pushed down to data sources for execution Database CDS-based Runtimes Data Models Service Defs. Fiori UIs Fiori Markup OData CQLas views on Queries • OData = REST + Querying • SAP Fiori = flexible generic UIs • CDS += View Building
  • 14. 16PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ RESTful ABAP Common Programming Model SAP Fiori / UI5 SAP HANA SQL OData, REST ABAP Frameworks ABAP Toolset Core Data Services SAP Gateway Extension Services Events Models Replication Interoperability Reuse of Skills Cloud App Prog Model SAP Fiori / UI5 SAP HANA / other SQL OData, REST Java / Node Frameworks S/4 HANA Cloud SDK Core Data Services REST + OData libraries » Our dog food @ SAP «
  • 15. 17PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… Accelerate your Projects Leverage proven Methods Openness & Flexibility Cloud Foundry Kubernetes XSA local SAP Fiori Angular React Vue • • • SAP HANA PostgreSQL sqlite • • • SAP Web IDE Eclipse VSCode • • • Core Node.js Java Core Data Services • We focus on the Core of Data-oriented Services • We integrate recommended choices from periphery … • But without lock-in!  still you decide what you use
  • 16. 18PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… Accelerate your Projects Leverage proven Methods Openness & Flexibility Web IDE provides tailored tools for the application programming model. You can use Web IDE and/or local tools of your choice and switch between both. Common Project Layout & Build • app • srv • db Local Development • Command-line Tools • known IDEs / Editors • w/ CDS Editors • Local test runs • Maven/npm-based automation • • • SAP Web IDE Full-Stack • Project Storyboard • Project Explorer • Database Explorer • Graphical Modeling • Service Discovery • Fiori Dev Tools • CDS Editors • Drag & Drop
  • 17. 19PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ SAPWeb IDE Full-Stack tailored tools  Project Storyboard  Project Explorer  Database Explorer  CDS Editors  Outline  Drag & Drop  Problems View  Graphical Editors  Service Discovery and integration wizards (e.g. S/4)  Fiori Development Toolset
  • 18. 20PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… Accelerate your Projects Leverage proven Methods Openness & Flexibility Enterprise Qualities Intrinsic Enterprise Features & Qualities  Localized Metadata  e.g. labels  Localized Data  text tables o Temporal Data  valid from/to, time travel  Authorization  Audit Logging  Project-level Extensibility ( providers) o Tenant-level Extensibility ( clients) o GDPR support o Validation Framework o Declarative Constraints o TypeScript for implementors o …
  • 19. 21PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… Accelerate your Projects Leverage proven Methods Openness & Flexibility Enterprise Qualities Cloud Qualities Intrinsic Cloud Integration & Qualities  Authentication / UAA  JWT token handling  Configuration (via VCAP services, …)  Health checks  Logging & Monitoring  Tenant on/off boarding  Tenant isolation o Rate limiting o Caching (via Hystrix, …) o Messaging (via RapidMQ, …) o Resilience (in S/4H CloudSDK) o … by S/4 HANA Cloud SDK
  • 22. You don’t know CDS! :)
  • 23. 25PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Entities & Views (from SQL) Associations Annotations Aspects Concise Queries entity Books @(title:‘Bücher‘) { key ID : UUID; title : localized String; author : Association to Authors; } entity Authors { key ID : UUID; name : String; books : Composition of many Books; } entity BooksList as select from Books { ID, title, author.name as author }  Entity-Relationship Modeling  Reflexive View Building  borrowed from SQL CDS is about…
  • 24. 26PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Entities & Views (from SQL) Associations Annotations Aspects Concise Queries // Pure, unpolluted Structure define entity Foo { bar : String; } // Fiori UI Markup annotate Foo with @UI.Label:'Foo‘; // Authorization Model annotate Foo with @requires:‘admin‘; // Customer-specific Extensions extend entity Foo with { car:{ wheels: Integer; } }  separate concerns into partial definitions  avoids polluting your structure  allows using different tools on same effective models  in same or different files up to different projects CDS is about…
  • 25. 27PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ SELECT from Employees { name, addresses [kind='business’] .city.{ name, country.name } }  Path Expressions w/ optional Infix Filters  (Nested) Postfix Projections  Permeable for native database features SELECT e.name, city.name, country.name from Employees e LEFT JOIN Addresses a on a.id = e.address_id and a.kind='business' LEFT JOIN Cities city on city.id = addresses.city_id LEFT JOIN Countries country on country.id = city.country_id Entities & Views (from SQL) Associations Annotations Aspects Concise Queries CDS is about…
  • 26. 28PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Entities & Views (from SQL) Associations Annotations Aspects Concise Queries service CatalogService { entity Books as projection on my.Books; entity Authors as projection on my.Authors; entity Orders as projection on my.Orders { *, book.title, book.author.name as author } where createdBy = $user; action cancel(order:UUID); }  data-centric: entities with intrinsic CRUD ops  entities as views on underlying ones  with seamless mapping to REST + OData CDS is about… Service Definitions
  • 27. 29PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Entities & Views (from SQL) Associations Annotations Aspects Concise Queries  Core Schema Notation (CSN) as the core of all: models are plain JavaScript/JSON objects  minimal footprint, dynamic, no repositories  fast innovation and delivery cycles  zero lock-in to any database or stack { CSN } CDS YAML OData JSON, YAML JPA process Open API Code SQL DDL HANA DDL JSON CDS is about… Litew8 reincarnation in Node.js Service Definitions let model = {Foo:{kind:'entity'}}
  • 29. 31PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Implementing Services Place a <service>.js file next to your <service>.cds file1 Add a Service Implementation Function2 Register your Event Handlers .before → before generic ones .on → instead of generic ones .after → before results go out 3 + Only for your real, domain-specific custom logic, leaving the rest to the built-in generic handlers Note: • all non-blocking, running in parallel • all connection handling, transaction mgmt., etc. is taken care of by the fwk
  • 30. 32PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Consuming Services API Hub cds importImport Service Definition in case of external ones 1 Data Source Database Data Model Local Service Service Definition External Service Service Definition // query-style SELECT.from (Foo) .where ({ID:111}) .then (foo => … ) let foo = await SELECT.from (Foo) .where ({ID:111}) // method call-style ds.read(Foo) .where ({ID:111}) .then (foo => … ) // using declared custom operations ds.getFoo (111) .then (foo => … ) Data Sources can be Databases, external Services or local Services and are all consumed in the same way. OData and cds.services support querying by default. Connect to Data Source2 Read/Write Data3 const ds = await cds.connect.to ('SomeDataSource‘) const { Foo } = ds.entities()
  • 31. 33PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Service-level Mashups CDS allows to easily mashup imported definitions with local ones. Views define which subset of data we are interested in. Imported Service Definition API Hub cds import Import the Service Definition1 Local Service Definitions using ExternalService as ext from ‚./imported/service‘; service CatalogService { // served from local database entity Books as projection on bookshop.Books; entity Authors as projection on bookshop.Authors; // served from external service entity Orders as SELECT from ext.Orders { *, book.title, book.author.name as author } where createdBy = $user; } const ext = await cds.connect.to ('ExternalService') const { Orders } = ext.entities() cds.serve ('CatalogService').with (function(){ this.on ('READ', 'Orders', ()=> SELECT.from (Orders) … ) }) Mashup into Local Service Definition:2 Call out to the external service in a custom handler:3
  • 32. 34PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Service-level Replication using ExternalService as ext from '@imported/service‘; entity Books {…} entity Authors {…} // local replica entity filled from external service entity Orders as SELECT from ext.Orders { *, book.title, book.author.name as author } where createdBy = $user; const { Orders } = cds.entities // local cds.subscribe.to ('ExternalService‘) .with (ext => { ext.on (['CREATED', 'UPDATED'], 'Orders‘, ({data:{IDs}}) => { ext.read ('Orders') .where ('ID in', IDs) .foreach ( each => UPSERT(each).into (Orders) ) }) }) Local Data Model Imported Service Definition API Hub cds import Import the Service Definition1 Mashup into Local Data Model:2 Replicate actual data upon change events from the source:3 Cache data locally which is required in frequent and close access. Create tables with the views’ signature.
  • 33. 35PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Open, Non-intrusive Design — you stay in control We use established OSS de-facto standards We add components focused on enterprise features You stay in control, you choose what to use and when! … e.g. in a custom server.js: Node.js express.js, … cds.services cds.ql, … Java Servlets, Spring Service SDK JDBC, JPA, cds.ql
  • 34. 36PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… Accelerate your Projects Leverage proven Methods Openness & Flexibility Enterprise Qualities Cloud Qualities Services, not BObjects Data Model Service A Service B Services are stateless API facades. They contain all logic and validations and frequently expose views on data. Data Models define passive objects, mostly normalized and managed in databases
  • 35. 37PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Single-purposed Services Manage Orders Maintain Catalog Admins service CatalogService { expose entity Books @readonly; expose entity Authors @readonly; action order (book) @requires:$user; } service CustomersService @(requires:$user) { expose entity Orders @(restrict:[ {grant:'READ,DELETE', where:'buyer=$user‘} ]); } service AdminService @(requires:‘admin‘) { expose entity Books expose entity Authors; expose entity Orders; }  fosters focused and efficient implementations  enables ‘late-cut µ services’ Browse Books anybody Order Books registered login includes…
  • 36. 38PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Capture Intent on Conceptual Level Best Practices & Benefits… Accelerate your Projects Leverage proven Methods Openness & Flexibility Enterprise Qualities Cloud Qualities Services, not BObjects Querying, not ORM ORMs provide…? • Active objects manipulating internal state • Abstraction, shielding me from SQL • Portability across databases • Eager/Lazy Loading • Object Caches • …?
  • 37. 39PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Data Access with cds.ql Managed Data Sources w/ CDS-based Reflection Queries as 1st class objects SQL-style usage Object-style usage Reflexive Querying w/ Late Materialization Asynchronous, non-blocking execution Managed Units of Work
  • 39. 41PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Data Services Data Models Service Defs. Custom Handlers Fiori UIs Fiori Markup OData Stored Procs Breakouts Summary — Core Programming Model CDS cds.services cds.ql We promote… • Best Practices, not Anarchy! • Openness, not Blackbox! • Services, not Objects! • Querying, not ORM! • Capturing Intent • Enterprise & Cloud Qualities
  • 40. 42PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Cookbook — there’s more… Getting Started ————————————— o Setup your env (once) o Start a Project o Define Services  Run Add UIs / Frontends —————————————— o Switch to Web IDE, and… o Add a Fiori app  Run o Add Fiori markup  Run Provide Services —————————————— o Derive Data Models  Run o Deploy to DBs  Run o Add Initial Data  Run o Add Custom Logic  Run o Reading / Writing Data o Add Authorization, I18n, … Reuse & Modularize ————————————— o Reuse @sap/cds/common o Reuse other packages o Modularize your app Consume Services ————————————— o Import ext. Service APIs o Consume Services o Service-level Mashups o Service-level Replication o Serve required Interfaces Deploy —————————— o Deploy to Cloud o Serverless o … for own use o … as SaaS solution Customize —————————— o Verticalization o Tenant-level Customization✓ ✓ ✓ ✓ ✓
  • 41. 43PUBLIC© 2018 SAP SE or an SAP affiliate company. All rights reserved. ǀ Status Quo / Outlook o SAP Analytics Cloud integration o Analytical List Page by Fiori o Serverless deployment o Reactive Java o Enhanced GDPR support o Validation Framework o Declarative Constraints o TypeScript for implementors o …  CDS-based Service and Data Model  Service Providers in Node.js / Java  1st class support for HANA DBaaS  1st class support for Fiori Uis  1st class support in Web IDE  Local dev in VSCode, Eclipse, …  Fastrack dev with node + sqlite db  Intrinsic Enterprise Qualities, e.g…  Localized Data + I18n  Authorization  Audit Logging  GDPR support (basic)  Service Consumption via S/4H SDK  Service-level Mashups & Replication  Project-level Extensibility  Deployment to Cloud Foundry o Basis for Serverless eBaaS o 1st class support for PostgreSQL, … o Fiori Draft support + o OData v4 o Advanced support for Spring o SaaS Tenant-level Extensibility o More Tailored Tools Web IDE o Temporal Data o Events Consumption & Emitting o Generic Service Consumption o Generic support for Messaging o Deploy to Kubernetes  available o in progress o planned
  • 43. Thank you! Keren Rotenberg Lead Product Manager keren.rotenberg@sap.com Daniel Hutzel Chief Product Owner daniel.hutzel@sap.com
  • 44. ✓ ✓ Please complete your feedback for session  CNA221 Access replays at: http://sapteched.com/online Continue your discussions in: sap.com/community See all… SAPTechEd blog posts SAP TechEd 2018