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 |
Login to multitenant SaaS application | cds login <app-url> |
Upgrade tenant(s) subscribed to a multitenant SaaS app to its latest base model. | cds upgrade |
Logout from multitenant SaaS application | cds logout |
Subscribe a tenant to a SaaS application | cds subscribe <tenant> |
Unsubscribe a tenant from a SaaS application | cds unsubscribe <tenant> |
Pull the base model for a SaaS extension | cds pull |
Push a SaaS extension | cds push |
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 | VS Code |
---|---|---|
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 | ✓ |
Nested Projections | in prog. |
Calculated Elements | ✓ |
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 | ✓ | ✓ | ✓ |
Localized Data | ✓ | ✓ | ✓ |
Temporal Data | ✓ | ✓ | ✓ |
Managed Data | ✓ | ✓ | ✓ |
Dynamic Extensibility | ✓ | ✓ | ✓ |
Monitoring / Logging [Node.js|Java] | n/a | ✓ | ✓ |
Audit 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 (For single-tenant apps) [Node.js|Java] | n/a | ✓ | ✓ |
SAP Cloud Application Event Hub (For single-tenant apps) [Node.js] | n/a | ✓ beta | in prog. |
Composite Messaging (routing by configuration) [Node.js|Java] | n/a | ✓ | ✓ |
Import AsyncAPI | planned | ||
Export AsyncAPI | ✓ |
Database Support
CDS/deploy | Node.js | Java | |
---|---|---|---|
SAP HANA | ✓ | ✓ | ✓ |
SAP HANA Cloud | ✓ | ✓ | ✓ |
PostgreSQL | ✓ | ✓ | ✓ |
SQLite 1 | ✓ | ✓ | ✓ |
H2 1 | ✓ | n/a | ✓ |
MongoDB out of the box | 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 To speed up development. Not for productive use!
Note: 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
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-/offboarding | ✓ | ✓ |
Multitenancy | ✓ | ✓ |
Health checks | ✓ | ✓ |
1 Available on plain Kubernetes level → see blog post by Thomas Jung
Extensibility
Tenant-Specific Extensions | ✓ |
Adding Extension Fields | ✓ |
Adding new Entities | ✓ |
Adding new Relationships | ✓ |
Adding/Overriding Annotations | ✓ |
Adding Events | planned |
Extension Namespaces | ✓ |
Extension Templates | ✓ |
Custom Governance Checks | in prog. |
Generic Input Validations | ✓ |
Declarative Constraints | planned |
Execute Sandboxed Code | planned |
Runtime API for In-App Extensibility | in prog. |
Propagating Extensions across (µ) Services | planned |