Features Overview
Following is an index of the features currently covered by CAP, with status and availability information. In addition, we also list features, which are planned or already in development, but not yet generally available, to give you an idea about our roadmap.
Legend
Tag | Explanation |
---|---|
✔ | generally and publicly available today |
n/a | not applicable for this combination |
in prog. | in progress; likely to become available near-term |
planned | we might pick that up for development soon |
contrib? | not scheduled for development by us so far |
contrib | already active contribution |
CLI & Tools Support
CLI commands | |
---|---|
Jump-start cds-based projects | cds init <project> |
Add a feature to an existing project | cds add <facets> |
Add models from external sources | cds import <api> |
Compile cds models to different outputs | cds compile <models> |
Run your services in local server | cds serve <services> |
Run and restart on file changes | cds watch |
Read-eval-event loop | cds repl |
Inspect effective configuration | cds env |
Prepare for deployment | cds build |
Deploy to databases or cloud | cds deploy |
Create an extension project | cds extend <app-url> |
Activate an extension project | cds activate |
Login to extendable SaaS application | cds login <app-url> |
Logout from extendable SaaS application | cds logout |
Run
cds help <command>
to find details about an individual command. Usecds version
to check the version that you’ve installed. To know what is the latest version, see the Release Notes for CAP.
Editors/IDE Support | Application Studio | VSCode | Eclipse |
---|---|---|---|
CDS Syntax Highlighting | ✔ | ✔ | ✔ |
CDS Code Completion | ✔ | ✔ | ✔ |
CDS Prettifier | ✔ | ✔ | ✔ |
Advanced Debug/Run Tools | ✔ | ||
Project Explorer | ✔ | ||
… |
CDS Language & Compiler
CDS | |
---|---|
Entity-Relationship Modeling | ✔ |
Custom-defined Types | ✔ |
Views / Projections | ✔ |
Associations & Compositions | ✔ |
Annotations → Common, OData | ✔ |
Aspects | ✔ |
Services… | ✔ |
— w/ Redirected Associations | ✔ |
— w/ Auto-exposed Targets | ✔ |
— w/ Actions & Functions | ✔ |
— w/ Events | ✔ |
Managed Compositions of Aspects | ✔ |
Structured Elements | planned |
Nested Projections | planned |
Calculated Fields | planned |
Managed n:m Associations | planned |
Pluggable CDS linter | in prog. |
CDS linter | ✔ |
Providing Services
Core Framework Features | CDS | Node.js | Java |
---|---|---|---|
Automatically Serving CRUD Requests | n/a | ✔ | ✔ |
Deep-Read/Write Structured Documents | ✔ | ✔ | ✔ |
Automatic Input Validation | ✔ | ✔ | ✔ |
Auto-filled Primary Keys | ✔ | ✔ | ✔ |
Implicit Paging | ✔ | ✔ | ✔ |
Implicit Sorting | ✔ | ✔ | ✔ |
Access Control | ✔ | ✔ | ✔ |
Arrayed Elements | ✔ | ✔ | ✔ |
Streaming & Media Types | ✔ | ✔ | ✔ |
Conflict Detection through ETags | ✔ | ✔ | ✔ |
Authentication via JWT | n/a | ✔ | ✔ |
Basic Authentication | n/a | ✔ | ✔ |
Enterprise Features | CDS | Node.js | Java |
---|---|---|---|
Authorization | ✔ | ✔ | ✔ |
Analytics in Fiori | ✔ | in prog. | ✔ |
Localization/i18n | ✔ | ✔ | ✔ |
Managed Data | ✔ | ✔ | ✔ |
Localized Data | ✔ | ✔ | ✔ |
Temporal Data | ✔ | ✔ | ✔ |
Dynamic Extensibility | ✔ | ✔ | ✔ |
Monitoring / Logging [Node.js|Java] | n/a | ✔ | ✔ |
Inbound Protocol Support | CDS 1 | Node.js | Java |
---|---|---|---|
REST/OpenAPI | ✔ | ✔ | ✔ |
OData V2 2 | ✔ | ✔ 3 | ✔ |
OData V4 | ✔ | ✔ | ✔ |
OData V4 for APIs | in prog. | in prog. | in prog. |
GraphQL4 | contrib? | ✔5 | contrib? 6 |
1 Export CDS models to …
2 To support customers with existing OData V2 UIs
3 Through V2 proxy;
4 Could be a good case for 3rd-party contribution
5 For Node.js try out the GraphQL Adapter
6 For Java try out the provided sample code.
Consuming Services
Service Consumption APIs | Node.js | Java |
---|---|---|
Uniform Consumption APIs → Hexagonal Architecture | ✔ | ✔ |
Dynamic Querying | ✔ | ✔ |
Programmatic Delegation | ✔ | ✔ |
Generic Delegation | planned | planned |
Resilience (retry, circuit breaking, …) | contrib? | ✔ |
Outbound Protocol Support | CDS 1 | Node.js | Java |
---|---|---|---|
REST/OpenAPI | ✔ | ✔ | ✔ |
OData V2 | ✔ | ✔ | ✔ |
OData V4 | ✔ | ✔ | ✔ |
GraphQL2 | contrib? | contrib? | contrib? |
1 Import API to CSN
2 Could be a good case for 3rd-party contribution
Learn more about supported features for consuming services.
Events / Messaging
CDS | Node.js | Java | |
---|---|---|---|
Declared Events in CDS | ✔ | ✔ | ✔ |
Mock Broker (to speed up local dev) [Node.js|Java] | n/a | ✔ | ✔ |
SAP Event Mesh (Singletenancy) [Node.js|Java] | n/a | ✔ | ✔ |
SAP Event Mesh (Multitenancy) | n/a | ✔ | ✔ |
SAP Message Queuing (Singletenancy) [Node.js|Java] | n/a | ✔ | ✔ |
Composite Messaging (routing by configuration) [Node.js|Java] | n/a | ✔ | ✔ |
Event Logs (Kafka) | n/a | planned | planned |
Import AsyncAPI | planned | ||
Export AsyncAPI | ✔ |
Database Support
CDS/deploy | Node.js | Java | |
---|---|---|---|
SAP HANA | ✔ | ✔ | ✔ |
SAP HANA Cloud | ✔ | ✔ | ✔ |
PostgreSQL | ✔ | contrib 1 | ✔ |
SQLite 2 | ✔ | ✔ | ✔ |
H2 2 | ✔ | n/a | ✔ |
MongoDB | n/a | n/a | in prog. |
Pluggable drivers architecture | in prog. | in prog. | ✔ |
Out-of-the-box support for other databases? | contrib? | contrib? | contrib? |
1 For Node.js, see the community project cds-pg - PostgreSQL adapter for SAP CDS.
2 To speed up development. Not for productive use!
You can already integrate your database of choice in a project or a contribution level. The last two are meant to further facilitate this by out-of-the-box features in CAP.
UIs/Frontend Support
CDS | Node.js | Java | |
---|---|---|---|
Serving Fiori UIs | ✔ | ✔ | ✔ |
Fiori Annotations in CDS | ✔ | ✔ | ✔ |
Advanced Value Help | ✔ | ✔ | ✔ |
Draft Support | ✔ | ✔ | ✔ |
Draft for Localized Data | ✔ | ✔ | ✔ |
Support for Fiori Analytics | ✔ | in prog. | ✔ |
Support for other UI technologies, e.g. Vue.js 1 | ✔ | ✔ | ✔ |
1 through standard REST/AJAX
Platform Support & Integration
Node.js | Java | |
---|---|---|
Deploy to/run on SAP BTP, Cloud Foundry environment | ✔ | ✔ |
Deploy to/run on Kubernetes1 | in prog. | in prog. |
Deploy to/run on Kyma | ✔ | ✔ |
SaaS on-/off-boarding | ✔ | ✔ |
Multitenancy | ✔ | ✔ |
Health checks | planned | ✔ |
1 Available on plain Kubernetes level → see blog post by Thomas Jung