BrowseAll ecosystems
Everything in the atlas
55 of 2341
Domain: 2
Signals
Content: 2
More
Group by: Capability
EntryBySignalsLast activity
Building an Analytical List Page with CAP OData V4Building an Analytical List Page with CAP OData V4The annotations a CAP OData V4 service needs before an Analytical List Page will render — the write-up behind the cap-alp sample indexed here. Candid about its provenance: the author credits a GitHub repository she found the approach in, and notes that the repository is no longer available, which is the whole argument for indexing the reasoning rather than only linking the code.published 2023-06-12
Building an Analytical List Page with CAP OData V4
cap-alp: no published releases, repository quiet for 24 months. Affects A recipe, Runnable code.
E2E: SAP Cloud Platform Internet of Things to SAP Analytics CloudE2E: SAP Cloud Platform Internet of Things to SAP Analytics CloudDevice data from ingestion to chart, with CAP occupying the middle: a CDS-defined persistence on HANA Cloud, and an OData service published from it for Analytics Cloud to consume live. The interesting choice is that CAP is used for the model rather than for business logic — there is barely any.Gunter, published 2020-08-31
Empowering Your Data Analytics with GPT-3 and SAP CAP IntegrationEmpowering Your Data Analytics with GPT-3 and SAP CAP IntegrationFree text in, SQL out, answer back in a sentence — the model writes the query, CAP runs it, and the model turns the rows into prose. Written in the GPT-3 window, so the model access has dated, but the three-step shape has not, and it is a different bet from retrieval: nothing is embedded, the schema is the context.Former Member, published 2023-03-10
Fiori Elements Analytical Table with CAP: Does it work with V2 and V4?Fiori Elements Analytical Table with CAP: Does it work with V2 and V4?A question in the title and an answer in the post, with the boundary drawn carefully: this is an analytical table inside a List Report, not the Analytical List Page, and the two protocol versions do not behave the same.published 2023-04-03
Fiori Elements Analytical Table with CAP: Does it work with V2 and V4?
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects Runnable code.
How to transfer file from CAP backsideHow to transfer file from CAP backsideA PDF arriving from the front end, stored against the record with @Core.MediaType, and then sent on to an external service for parsing. Short, and the second half is the part that is not in the plugin documentation: getting the bytes back out of the model to forward them somewhere else.published 2023-09-14
How to transfer file from CAP backside
Attachments has changed 3 times since this was published, most recently in @cap-js/sdm 1.0.0, 2024-06-26. Affects Runnable code.
Presenting sap-cap-sdm-plugin: Effortless Integration Between CAP (Node.js) and DMSPresenting sap-cap-sdm-plugin: Effortless Integration Between CAP (Node.js) and DMSThe author's introduction of the plugin, and unusually clear about its lineage: the idea came from a post about cds.plugins whose example did nothing more than append an emoji to annotated properties, and the groundwork was an earlier library, sap-cloud-cmis-client, that this builds on. Worth reading for how a plugin gets conceived as much as for what it does with Document Management Service.published 2023-10-02
Presenting sap-cap-sdm-plugin: Effortless Integration Between CAP (Node.js) and DMS
sap-cap-sdm-plugin is archived. Its last release was 2024-03-24. Affects Runnable code.
Upload attachments in a Freestyle UI5 and CAP appUpload attachments in a Freestyle UI5 and CAP appAttachments where the UI is freestyle rather than Fiori elements, so none of the generated upload behaviour applies and both ends have to be written.published 2023-12-19
[Part – 2] Enrich CAP based Services with Behaviors using Annotations[Part – 2] Enrich CAP based Services with Behaviors using AnnotationsThe second half of a two-part walkthrough of CAP's behavioral annotations, following on from access control and input validation in the first part. This post works through @cds.autoexpose, @cds.api.ignore, @cds.persistence.exists/skip, @cds.on.insert/@cds.on.update and the @odata.Type/@odata.singleton mapping overrides, all shaping how a CDS model is projected into a service, which is data modelling. Alongside these it covers @cds.query.limit for default and maximum page sizes (pagination and streaming), @odata.etag with exclusive and shared locks for optimistic concurrency (concurrency control), and @cds.search for scoping $search to chosen elements (search), each with a CDS code example.published 2023-01-29
[Part – 2] Enrich CAP based Services with Behaviors using Annotations[Part – 2] Enrich CAP based Services with Behaviors using AnnotationsThe second half of a two-part walkthrough of CAP's behavioral annotations, following on from access control and input validation in the first part. This post works through @cds.autoexpose, @cds.api.ignore, @cds.persistence.exists/skip, @cds.on.insert/@cds.on.update and the @odata.Type/@odata.singleton mapping overrides, all shaping how a CDS model is projected into a service, which is data modelling. Alongside these it covers @cds.query.limit for default and maximum page sizes (pagination and streaming), @odata.etag with exclusive and shared locks for optimistic concurrency (concurrency control), and @cds.search for scoping $search to chosen elements (search), each with a CDS code example.published 2023-01-29
#BTP #SAPCAP: Quirky Nuggets (N01-N02)#BTP #SAPCAP: Quirky Nuggets (N01-N02)Walks through two CAP gotchas: the on/before/after phases of custom event handlers, shown with an after handler whose edits only reach the result when the handler returns an object or array, never a primitive; and the @assert.unique annotation, which builds a database uniqueness constraint from the model. For Input validation, the catch is that once the constrained property is nested, @assert.unique must name it by its model dot path (assignment.type) rather than the flattened column data modelling compiles it to (assignment_type).published 2023-06-05
#CAP-TechBytes Input Validation#CAP-TechBytes Input ValidationThe annotations one at a time — @mandatory, @assert.unique, @assert.range including the enum form, @assert.format — each with what it produces. Ends on error handling, which is the part that decides whether any of it is usable from a UI.Thajunniza, published 2023-07-07
Developing Business Services with Cloud Application Programming(CAP) Model in SAP Business StudioDeveloping Business Services with Cloud Application Programming(CAP) Model in SAP Business StudioA step-by-step build of a CAP Node.js service in SAP Business Application Studio: a CDS schema for banks, customers, accounts and transactions using compositions, associations, enumerated types and the @assert.unique constraint, followed by authorization layered on with @restrict and @requires annotations and mock users assigned the authenticated-user and Manager roles in .cdsrc.json. Custom event handlers registered through @sap/cds (srv.before/srv.after) and sample HTTP requests round out the example.Ranjith, published 2020-05-27
First Java Cap ApplicationFirst Java Cap ApplicationA step-by-step walkthrough of a first CAP Java project: com.sap.cds:cds-services-archetype scaffolds the initial Maven project, and the domain model is then rewritten in the db folder with entities, the cuid and managed aspects, associations, compositions and a CodeList, so a hand-coded event handler serving a single entity gives way to a service that CAP's generic persistence handling serves without custom code. It deploys that model to SQLite for local development — cds deploy --to sqlite, then a Spring profile pointing at the generated database file — and ends by adding an index.cds so the model and service can be published as a reusable npm module.bruce_wang3, published 2020-12-08
Use Aspects, Association and Convert OData V4 to V2 using ProxyUse Aspects, Association and Convert OData V4 to V2 using ProxyTwo halves that turn out to belong together: aspects and associations in the model, and then the v4-to-v2 proxy in front of it. The model decides what the proxy has to carry, which is why the author put them in one post.rahul_rajagopal, published 2023-08-28
[BTP HANA Cloud Database] : How to access HANA Cloud Database & HDI Container in BTP[BTP HANA Cloud Database] : How to access HANA Cloud Database & HDI Container in BTPGetting at the database your application already deployed to, which sounds trivial until the HDI container is the only thing that has credentials for it. Guidance for the case where the account is already configured and the question is only how to look inside.showkath_naseem, published 2023-01-18
CAP PostgreSql setup local debugging using Docker - Part 2CAP PostgreSql setup local debugging using Docker - Part 2PostgreSQL in a container so the local loop matches the deployed one — the thing SQLite quietly stops you doing. Short, and it assumes the project from part one already runs.ramonlee5, published 2023-11-22
CAP PostgreSql setup local debugging using Docker - Part 2
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
CAP with PostgreSQL DB alternate to HANA Cloud DB - Part 1CAP with PostgreSQL DB alternate to HANA Cloud DB - Part 1Bootstrapping a CAP project on PostgreSQL, framed as a choice that depends on the client rather than on the technology. Short, and part two is where it gets debuggable.ramonlee5, published 2023-10-10
Exposing Calculation View with Dynamic Client via OData APIExposing Calculation View with Dynamic Client via OData APIGetting a HANA Cloud calculation view — built in Business Application Studio and deployed to an HDI container, which is the recommended way to build native HANA artifacts — out through an OData API. The gap it fills is the one between HANA-native development and a service a client can call, which CAP does not cover for artifacts it did not generate.published 2023-10-04
First Java Cap ApplicationFirst Java Cap ApplicationA step-by-step walkthrough of a first CAP Java project: com.sap.cds:cds-services-archetype scaffolds the initial Maven project, and the domain model is then rewritten in the db folder with entities, the cuid and managed aspects, associations, compositions and a CodeList, so a hand-coded event handler serving a single entity gives way to a service that CAP's generic persistence handling serves without custom code. It deploys that model to SQLite for local development — cds deploy --to sqlite, then a Spring profile pointing at the generated database file — and ends by adding an index.cds so the model and service can be published as a reusable npm module.bruce_wang3, published 2020-12-08
Getting started with CAP on PostgreSQL (Node.js)Getting started with CAP on PostgreSQL (Node.js)Running CAP on PostgreSQL locally in 2020, when doing so meant the community packages cds-pg and cds-dbm. It now opens with a banner the author added later: @sap/cds 7.0.0 has native PostgreSQL support, use @cap-js/postgres instead, with a pointer to a step-by-step guide for it. Worth having for that banner as much as for the content — a post that tells you not to follow it is a dated fact about where the answer moved.published 2020-11-16
Getting started with CAP on PostgreSQL (Node.js)
cds-pg. Affects Runnable code.
Hybrid testing using PostgreSQL on SAP BTP, hyperscaler optionHybrid testing using PostgreSQL on SAP BTP, hyperscaler optionA short note rather than a guide — the author says they came across the feature reading someone else's post on PostgreSQL with Kyma. Hybrid testing against a real PostgreSQL instance, which until then people assumed meant HANA.martinfrick, published 2023-08-08
Lets Deep dive into CAPM and HANA Cloud --> HANACapLets Deep dive into CAPM and HANA Cloud --> HANACapShort, and framed as what the author does day to day on BTP rather than as a tutorial: where CAPM meets HANA Cloud and which pieces have to agree.shivamshukla12, published 2023-07-16
Lets Deep dive into CAPM and HANA Cloud --> HANACap
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
Open Sourcing CAP – how to learn more or get involvedOpen Sourcing CAP – how to learn more or get involvedA roundup of CAP's open-sourcing, begun at TechEd the year before, pointing to a webinar recording, a podcast episode and reCAP 2023 talks for background. Among the components it names are a feature toggle library giving Node.js CAP apps live-updatable toggles backed by Redis, a new pluggable database layer with SQLite and PostgreSQL implementations plus a generic SQL layer, and a change tracking component that builds a change history for data from CDS models.Fempel, published 2023-10-02
PostgreSQL persistence adapter for CAP (Node.js)PostgreSQL persistence adapter for CAP (Node.js)The contradiction the adapter was built to resolve, stated plainly in 2020: CAP's core is open, non-intrusive and platform-agnostic, which is what would let it run outside SAP's world — except that HANA was the only officially supported production persistence and HANA exists only inside BTP. cds-pg is the answer to that, and this is the post that argues for it. Read now as the front end of a story whose other end is the 2023 post recording cds-pg's deprecation in favour of @cap-js/postgres.published 2020-08-20
PostgreSQL persistence adapter for CAP (Node.js)
cds-pg is archived. @cap-js/postgres answers the same capability. Affects Runnable code.
Run and Deploy CAP with PostgreSQL on SAP BTP Cloud Foundry (Node.js)Run and Deploy CAP with PostgreSQL on SAP BTP Cloud Foundry (Node.js)The deployment half of the pair, two weeks after the local one, and superseded the same way: it carries the same banner directing readers to @cap-js/postgres and the official documentation. The two together are the community PostgreSQL path as it stood before the core absorbed it.published 2020-11-30
Run and Deploy CAP with PostgreSQL on SAP BTP Cloud Foundry (Node.js)
cds-dbm. Affects Runnable code.
Run and Deploy SAP CAP (Java) with PostgreSQL on SAP BTP Cloud FoundryRun and Deploy SAP CAP (Java) with PostgreSQL on SAP BTP Cloud FoundrySuperseded by its own author: the post now opens with a notice that @sap/cds 7.0.0 brought native PostgreSQL support and that @cap-js/postgres should be used instead of the packages described below. Kept because that notice is the record of when the community adapter stopped being the answer.shanthakumar_krishnaswamy, published 2023-04-04
Run and Deploy SAP CAP (Java) with PostgreSQL on SAP BTP Cloud Foundry
cds-pg. Affects Runnable code.
Run and Deploy SAP CAP (Java) with PostgreSQL using Official Database Adapter @cap-js/postgresRun and Deploy SAP CAP (Java) with PostgreSQL using Official Database Adapter @cap-js/postgresThe post that records a handover. The author's earlier writing relied on the community projects cds-pg and cds-dbm; this one states that both were deprecated in favour of the official PostgreSQL support arriving with @sap/cds 7, and rewrites the path around @cap-js/postgres. For CAP Java it takes a different route to the initial schema.sql than the Node.js case, and it is candid that automatic schema deployment is convenient but not always what you want. Dated evidence for why two artifacts here went quiet.shanthakumar_krishnaswamy, published 2023-08-02
Run and Deploy SAP CAP (Java) with PostgreSQL using Official Database Adapter @cap-js/postgres
cds 7, line ended. Affects A recipe, Runnable code.
Run and Deploy SAP CAP (Node.js or Java) with PostgreSQL on SAP BTP Cloud FoundryRun and Deploy SAP CAP (Node.js or Java) with PostgreSQL on SAP BTP Cloud FoundryBoth runtimes in one walkthrough, and it stops on schema evolution — which is the reason to read it rather than one of the several other PostgreSQL posts here, since that is where the PostgreSQL story diverges from HANA's and the deploy stops being automatic.TiaXu, published 2023-07-12
Run and Deploy SAP CAP (Node.js or Java) with PostgreSQL on SAP BTP Cloud Foundry
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
SAP CAP (Java) with Amazon Aurora PostgreSQLSAP CAP (Java) with Amazon Aurora PostgreSQLPostgreSQL, but the hyperscaler's own managed global database rather than BTP's option — Aurora, from CAP Java. One of a pair published the same day, the other being Azure's equivalent.shanthakumar_krishnaswamy, published 2023-08-02
SAP CAP (Java) with Amazon Aurora PostgreSQL
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
SAP CAP (Java) with Azure Cosmos DB for PostgreSQLSAP CAP (Java) with Azure Cosmos DB for PostgreSQLThe Azure half of the pair: Cosmos DB speaking PostgreSQL, used from CAP Java. Same shape as the Aurora post, and reading both is how you see what is actually portable between them.shanthakumar_krishnaswamy, published 2023-08-02
SAP CAP (Java) with Azure Cosmos DB for PostgreSQL
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
SAP Cloud Application Programming Model(CAP):概要およびデモ - Part 1SAP Cloud Application Programming Model(CAP):概要およびデモ - Part 1Introduces SAP Cloud Application Programming Model as an open, opinionated framework that shoulders OData plumbing and database-specific code so a domain is modelled once in CDS, then builds a small bookshop project to show it: @sap/cds-dk's cds init scaffolds the project, cds watch serves it locally with live reload against an in-memory SQLite database, and a CatalogService projects a CDS domain model seeded from CSV files. The result is read as an OData service in the browser and exercised further through a Postman collection, with the optional @sap/vscode-cds extension noted for CDS syntax highlighting and completion in VS Code.rasai, published 2020-12-31
Getting started with CAP on PostgreSQL (Node.js)Getting started with CAP on PostgreSQL (Node.js)Running CAP on PostgreSQL locally in 2020, when doing so meant the community packages cds-pg and cds-dbm. It now opens with a banner the author added later: @sap/cds 7.0.0 has native PostgreSQL support, use @cap-js/postgres instead, with a pointer to a step-by-step guide for it. Worth having for that banner as much as for the content — a post that tells you not to follow it is a dated fact about where the answer moved.published 2020-11-16
Getting started with CAP on PostgreSQL (Node.js)
cds-pg. Affects Runnable code.
Run and Deploy CAP with PostgreSQL on SAP BTP Cloud Foundry (Node.js)Run and Deploy CAP with PostgreSQL on SAP BTP Cloud Foundry (Node.js)The deployment half of the pair, two weeks after the local one, and superseded the same way: it carries the same banner directing readers to @cap-js/postgres and the official documentation. The two together are the community PostgreSQL path as it stood before the core absorbed it.published 2020-11-30
Run and Deploy CAP with PostgreSQL on SAP BTP Cloud Foundry (Node.js)
cds-dbm. Affects Runnable code.
Run and Deploy SAP CAP (Java) with PostgreSQL using Official Database Adapter @cap-js/postgresRun and Deploy SAP CAP (Java) with PostgreSQL using Official Database Adapter @cap-js/postgresThe post that records a handover. The author's earlier writing relied on the community projects cds-pg and cds-dbm; this one states that both were deprecated in favour of the official PostgreSQL support arriving with @sap/cds 7, and rewrites the path around @cap-js/postgres. For CAP Java it takes a different route to the initial schema.sql than the Node.js case, and it is candid that automatic schema deployment is convenient but not always what you want. Dated evidence for why two artifacts here went quiet.shanthakumar_krishnaswamy, published 2023-08-02
Run and Deploy SAP CAP (Java) with PostgreSQL using Official Database Adapter @cap-js/postgres
cds 7, line ended. Affects A recipe, Runnable code.
Run and Deploy SAP CAP (Node.js or Java) with PostgreSQL on SAP BTP Cloud FoundryRun and Deploy SAP CAP (Node.js or Java) with PostgreSQL on SAP BTP Cloud FoundryBoth runtimes in one walkthrough, and it stops on schema evolution — which is the reason to read it rather than one of the several other PostgreSQL posts here, since that is where the PostgreSQL story diverges from HANA's and the deploy stops being automatic.TiaXu, published 2023-07-12
Run and Deploy SAP CAP (Node.js or Java) with PostgreSQL on SAP BTP Cloud Foundry
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
[Part – 2] Enrich CAP based Services with Behaviors using Annotations[Part – 2] Enrich CAP based Services with Behaviors using AnnotationsThe second half of a two-part walkthrough of CAP's behavioral annotations, following on from access control and input validation in the first part. This post works through @cds.autoexpose, @cds.api.ignore, @cds.persistence.exists/skip, @cds.on.insert/@cds.on.update and the @odata.Type/@odata.singleton mapping overrides, all shaping how a CDS model is projected into a service, which is data modelling. Alongside these it covers @cds.query.limit for default and maximum page sizes (pagination and streaming), @odata.etag with exclusive and shared locks for optimistic concurrency (concurrency control), and @cds.search for scoping $search to chosen elements (search), each with a CDS code example.published 2023-01-29
Surviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdlesSurviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdlesThree hurdles in running a CAP application locally: services mocked with cds run --with-mocks return no data across OData associations until the ON clause is hand-written into the imported CDS, an on-premise API reached through the SAP Cloud Connector times out because its proxy is part of destinations and connectivity and reachable only from inside SAP BTP, and a Fiori frontend served from the HTML5 Application Repository needs the HTML5 Repo Mock to reach a local backend at all. It closes with the launch configurations the author uses for debugging cds watch locally and attaching to a running Cloud Foundry instance.maxstreifeneder, published 2023-02-02
Developing CAP applications in SAP Business Application StudioDeveloping CAP applications in SAP Business Application StudioThe overview written at the point BAS replaced Web IDE, and it is structured as a comparison — each step of building a CAP application, with the difference from the Web IDE experience called out beside it. Useful now mostly for what it records: which parts of CAP development the editor took over, and when.liat_b, published 2020-07-06
Making CAP Application Development Easier and Faster with the Help of Storyboard in SAP Business Application StudioMaking CAP Application Development Easier and Faster with the Help of Storyboard in SAP Business Application StudioThe Storyboard from the other side — someone who came across it while learning the high-productivity tools, rather than someone who shipped it. It follows the whole arc a CAP project takes through the tool: entities, relationships, services, sample data, a UI, roles, and external resources, each as a thing the diagram can add rather than a file you open.Aryan_Raj_Sinha, published 2023-09-20
Migrating Your CAP Applications from SAP Web IDE to SAP Business Application StudioMigrating Your CAP Applications from SAP Web IDE to SAP Business Application StudioA migration checklist, and a reminder of how much of a CAP project used to be editor-specific: Web IDE configuration files to delete, a build to move to the Cloud MTA Build Tool, a CAP Java version to raise. Historical — Web IDE is gone — but it is the clearest list of what the tooling boundary used to include.liat_b, published 2020-07-09
Migrating Your CAP Applications from SAP Web IDE to SAP Business Application Studio
Editor support changed in @sap/cds-dk 8.8.0, 2025-03-04. Affects A recipe.
Running CAP Node Applications in SAP Business Application StudioRunning CAP Node Applications in SAP Business Application StudioThe Run Configurations tool, which is where binding and mocking live in BAS rather than in a terminal. Three things it does: several named configurations per application in a tree, dependencies bound to real service instances, and OData dependencies mocked. The author notes the configurations are standard launch entries underneath, which is the detail that lets you leave the tool behind if you want to.liat_b, published 2020-10-22
SAP Cloud Application Programming Model(CAP):概要およびデモ - Part 1SAP Cloud Application Programming Model(CAP):概要およびデモ - Part 1Introduces SAP Cloud Application Programming Model as an open, opinionated framework that shoulders OData plumbing and database-specific code so a domain is modelled once in CDS, then builds a small bookshop project to show it: @sap/cds-dk's cds init scaffolds the project, cds watch serves it locally with live reload against an in-memory SQLite database, and a CatalogService projects a CDS domain model seeded from CSV files. The result is read as an OData service in the browser and exercised further through a Postman collection, with the optional @sap/vscode-cds extension noted for CDS syntax highlighting and completion in VS Code.rasai, published 2020-12-31
The fastest and easiest way to run full-stack applications in SAP Business Application StudioThe fastest and easiest way to run full-stack applications in SAP Business Application StudioThe gap between a mocked local run and a real one, and the tooling that closes it — live data, remote services, defaults overridden. The same author's Run Configurations post is the reference for the tool; this is the case it was built for.liat_b, published 2023-08-02
Tips: VS Code ExtensionsTips: VS Code ExtensionsA short list of the VS Code extensions worth having for this stack, from 2020. Dated by definition and still the kind of page people go looking for.jhodel18, published 2020-07-13
cf-create-app: Create End-to-End apps and deploy to Cloud Foundry in minutescf-create-app: Create End-to-End apps and deploy to Cloud Foundry in minutesA generator from 2020 that goes further than scaffolding — an end-to-end application created and deployed to Cloud Foundry in one run. Predates most of what cds add now does.former_member604013, published 2020-07-29
cf-create-app: Create End-to-End apps and deploy to Cloud Foundry in minutes
Generators has changed twice since this was published, most recently in @sap/cds-dk 10.0.3, 2026-07-02. Affects A recipe, Runnable code.
First Java Cap ApplicationFirst Java Cap ApplicationA step-by-step walkthrough of a first CAP Java project: com.sap.cds:cds-services-archetype scaffolds the initial Maven project, and the domain model is then rewritten in the db folder with entities, the cuid and managed aspects, associations, compositions and a CodeList, so a hand-coded event handler serving a single entity gives way to a service that CAP's generic persistence handling serves without custom code. It deploys that model to SQLite for local development — cds deploy --to sqlite, then a Spring profile pointing at the generated database file — and ends by adding an index.cds so the model and service can be published as a reusable npm module.bruce_wang3, published 2020-12-08
SAP Cloud Application Programming Model(CAP):概要およびデモ - Part 1SAP Cloud Application Programming Model(CAP):概要およびデモ - Part 1Introduces SAP Cloud Application Programming Model as an open, opinionated framework that shoulders OData plumbing and database-specific code so a domain is modelled once in CDS, then builds a small bookshop project to show it: @sap/cds-dk's cds init scaffolds the project, cds watch serves it locally with live reload against an in-memory SQLite database, and a CatalogService projects a CDS domain model seeded from CSV files. The result is read as an OData service in the browser and exercised further through a Postman collection, with the optional @sap/vscode-cds extension noted for CDS syntax highlighting and completion in VS Code.rasai, published 2020-12-31
CAP PostgreSql setup local debugging using Docker - Part 2CAP PostgreSql setup local debugging using Docker - Part 2PostgreSQL in a container so the local loop matches the deployed one — the thing SQLite quietly stops you doing. Short, and it assumes the project from part one already runs.ramonlee5, published 2023-11-22
CAP PostgreSql setup local debugging using Docker - Part 2
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
CAP Typescript + Fiori Typescript + live reload Initial app setupCAP Typescript + Fiori Typescript + live reload Initial app setupA full-stack TypeScript starting point recorded as it was arrived at — the terminal commands and the configuration files, in order, for the CAP side, the conversion to TypeScript, and then the Fiori side. The author is explicit that it takes a while to go through, which is the honest framing for a setup that has this many steps.Christophe_SW, published 2023-06-18
CAP Typescript + Fiori Typescript + live reload Initial app setup
TypeScript patterns changed in @cap-js/cds-typer 0.5.0, 2023-07-25. Affects Runnable code.
cds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async Launchpadcds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async LaunchpadThe maintainer on a set of changes rather than on the plugin's original purpose, which is indexing every SAPUI5 project in a workspace into one sandbox launchpad so all of them can be tested together. What moved: it became a CAP plugin, gained UI5 Tooling support, and moved to the async launchpad — each framed as keeping pace with where SAPUI5 itself is going rather than as a feature.published 2023-12-11
Develop SAP CAP apps inside a VS Code Docker ContainerDevelop SAP CAP apps inside a VS Code Docker ContainerA VS Code dev container configuration with everything a CAP project needs already in it, published as a repository rather than as instructions. The 2020 half of a pair whose other half, four years later, does the same for Lazyvim — the same author solving the same problem twice as his editor changed.published 2020-02-20
Develop SAP CAP apps inside a VS Code Docker Container
Local development has changed twice since this was published, most recently in @sap/cds-dk 7.9.1, 2024-05-02. Affects Runnable code.
Hybrid testing using PostgreSQL on SAP BTP, hyperscaler optionHybrid testing using PostgreSQL on SAP BTP, hyperscaler optionA short note rather than a guide — the author says they came across the feature reading someone else's post on PostgreSQL with Kyma. Hybrid testing against a real PostgreSQL instance, which until then people assumed meant HANA.martinfrick, published 2023-08-08
Running CAP Node Applications in SAP Business Application StudioRunning CAP Node Applications in SAP Business Application StudioThe Run Configurations tool, which is where binding and mocking live in BAS rather than in a terminal. Three things it does: several named configurations per application in a tree, dependencies bound to real service instances, and OData dependencies mocked. The author notes the configurations are standard launch entries underneath, which is the detail that lets you leave the tool behind if you want to.liat_b, published 2020-10-22
SAP Cloud Application Programming Model(CAP):概要およびデモ - Part 1SAP Cloud Application Programming Model(CAP):概要およびデモ - Part 1Introduces SAP Cloud Application Programming Model as an open, opinionated framework that shoulders OData plumbing and database-specific code so a domain is modelled once in CDS, then builds a small bookshop project to show it: @sap/cds-dk's cds init scaffolds the project, cds watch serves it locally with live reload against an in-memory SQLite database, and a CatalogService projects a CDS domain model seeded from CSV files. The result is read as an OData service in the browser and exercised further through a Postman collection, with the optional @sap/vscode-cds extension noted for CDS syntax highlighting and completion in VS Code.rasai, published 2020-12-31
SAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAPSAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAPGetting UI5 Tooling and the CAP server onto one port under one command, using cds-plugin-ui5 — which the post presents as the thing that removes the proxy and destination configuration a full-stack dev setup otherwise needs. Part one of a journey that goes on to put the approuter in front at development time.published 2023-10-13
SAP Tech Bytes: Using the SAP Approuter at dev time - a full-stack journey with UI5 and CAP
cds-plugin-ui5 has been through 11 major lines since this was published, most recently 0.15 (2025-11), 0.16 (2025-12), 0.17 (2026-03). Affects Runnable code.
Surviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdlesSurviving and Thriving with the SAP Cloud Application Programming Model: Local development hurdlesThree hurdles in running a CAP application locally: services mocked with cds run --with-mocks return no data across OData associations until the ON clause is hand-written into the imported CDS, an on-premise API reached through the SAP Cloud Connector times out because its proxy is part of destinations and connectivity and reachable only from inside SAP BTP, and a Fiori frontend served from the HTML5 Application Repository needs the HTML5 Repo Mock to reach a local backend at all. It closes with the launch configurations the author uses for debugging cds watch locally and attaching to a running Cloud Foundry instance.maxstreifeneder, published 2023-02-02
The fastest and easiest way to run full-stack applications in SAP Business Application StudioThe fastest and easiest way to run full-stack applications in SAP Business Application StudioThe gap between a mocked local run and a real one, and the tooling that closes it — live data, remote services, defaults overridden. The same author's Run Configurations post is the reference for the tool; this is the case it was built for.liat_b, published 2023-08-02
Use SCP CF Destination service in NodeJs locallyUse SCP CF Destination service in NodeJs locallyReading a destination from a laptop, where the environment variable the destination service normally provides does not exist. A small gap with a real cost, since the alternative is deploying to test every change to a remote call.WouterLemaire, published 2020-05-28
Use SCP CF Destination service in NodeJs locally
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects Runnable code.
BTP CAP : Custom plugin to separate generic change log capture logicBTP CAP : Custom plugin to separate generic change log capture logicWalks through building a custom [CAP](ecosystem:cap) plugin that centralises change-log capture: on cds.once('served') it collects entities annotated @audit, then hooks srv.before('UPDATE') to read the existing record, diff it field by field against the incoming payload, and record old/new values with the user and timestamp. It also documents a cds build failure packaging the plugin's own directory into gen/srv for MTA deployment, fixed by adding it as a copyfiles build-parameter step in mta.yaml.sreehari_vpillai, published 2023-05-10
How to build reusable plugin components for CAP Java applicationsHow to build reusable plugin components for CAP Java applicationsA companion to Daniel Schlachter's Reusable components for CAP with cds-plugin, showing the same mechanism on CAP Java: a plugin ships as its own Maven artifact with an event handler and a CdsRuntimeConfiguration implementation, registered through the JDK's ServiceLoader rather than any CAP-specific wiring. The walkthrough builds a cds-emoji-plugin-java jar that decorates @emoji-annotated fields on read, installs it to the local Maven repository, and adds it as a runtime dependency to a cds init --add java bookshop application. It argues the plugin mechanism was not new to CAP Java, just previously undocumented.robinjayasinghe, published 2023-05-16
Reusable components for CAP with cds-pluginReusable components for CAP with cds-pluginThe post that taught the mechanism, and it teaches it by picking a requirement small enough to be absurd: every string a service returns should end in a random emoji. Working through that on the bookshop example leaves nothing to argue about except the plumbing, which is the point — what a cds-plugin is, where it hooks in, and why packaging it beats copying it into the next project. Vinícius Barrionuevo credits this post as the thing that gave him the idea for sap-cap-sdm-plugin, and it is hard to read the plugin ecosystem in this graph without it.published 2023-04-30
CAP: Consume External Service - Part 1CAP: Consume External Service - Part 1Builds a CAP Node.js service from scratch that consumes the public NorthWind OData V4 service: cds import turns its EDMX metadata into a CSN model under srv/external, and a CatalogService projects Products from it with a custom READ handler that runs the request through cds.connect.to('NorthWind'). Shows the same projection working two ways — against a CSV mocked under srv/external/data with the <service>-<entity>.csv naming the framework expects, then against the real service once credentials.url is added to the CAP configuration and @sap-cloud-sdk/http-client is installed — and defers routing that connection through the Cloud Foundry Destinations service to the next post in the series.published 2020-05-26
CAP full-stack testing with BDD flavourCAP full-stack testing with BDD flavourIntroduces Behavior-Driven Development for CAP applications: specifications written in Gherkin against a running app, validated by Cucumber, using cds-cucumber's ready-made step definitions for SAP Fiori elements and OData screens. The library handles service lifecycle — starting the app, assigning a port, driving the browser and authenticating a named user — and its OData steps know the service's entities and fields from the CDS model itself, so a scenario can open a list report, search it and assert row counts without hand-written glue code.published 2023-10-10
CAP: Unit Testing using Mocha and ChaiCAP: Unit Testing using Mocha and ChaiUnit tests added to an existing CAP service rather than written alongside a new one, which is the harder and more common case. Mocha and Chai wired up by hand, from a time before cds.test was the obvious answer.jhodel18, published 2020-05-31
CAP: Unit Testing using Mocha and Chai
Testing has changed 3 times since this was published, most recently in @cap-js/cds-test 1.0.0, 2026-04-23. Affects Runnable code.
cds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async Launchpadcds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async LaunchpadThe maintainer on a set of changes rather than on the plugin's original purpose, which is indexing every SAPUI5 project in a workspace into one sandbox launchpad so all of them can be tested together. What moved: it became a CAP plugin, gained UI5 Tooling support, and moved to the async launchpad — each framed as keeping pace with where SAPUI5 itself is going rather than as a feature.published 2023-12-11
Integration Tests in a Cloud Foundry Java App using SAP Cloud Application Programming ModelIntegration Tests in a Cloud Foundry Java App using SAP Cloud Application Programming ModelIntegration rather than unit tests, and from 2020 — the earliest testing entry here, and a reminder of what had to be assembled by hand before the framework had an answer.former_member428487, published 2020-02-23
Integration Tests in a Cloud Foundry Java App using SAP Cloud Application Programming Model
Testing has changed 3 times since this was published, most recently in @cap-js/cds-test 1.0.0, 2026-04-23. Affects Runnable code.
Using Postman for API Testing with XSUAAUsing Postman for API Testing with XSUAAA way to get a JWT without routing traffic through the approuter and picking the token out of it. The author walks the alternatives first — redirect through the router, intercept the token — and says what is wrong with each, before requesting the token from the service directly.mariusobert, published 2020-03-02
CAP Typescript + Fiori Typescript + live reload Initial app setupCAP Typescript + Fiori Typescript + live reload Initial app setupA full-stack TypeScript starting point recorded as it was arrived at — the terminal commands and the configuration files, in order, for the CAP side, the conversion to TypeScript, and then the Fiori side. The author is explicit that it takes a while to go through, which is the honest framing for a setup that has this many steps.Christophe_SW, published 2023-06-18
CAP Typescript + Fiori Typescript + live reload Initial app setup
TypeScript patterns changed in @cap-js/cds-typer 0.5.0, 2023-07-25. Affects Runnable code.
CDS-TS-Dispatcher: Simplifying SAP CAP TypeScript DevelopmentCDS-TS-Dispatcher: Simplifying SAP CAP TypeScript DevelopmentThe first of a pair introducing the author's own libraries, and it states what it is reacting to: CAP derives OData services from a CDS model, but the communication between business logic, service and persistence layers is left to you, and the earlier attempt at the service-layer half, cds-routing-handler, appeared unmaintained against newer CAP. The dispatcher is the answer offered for that layer.published 2023-11-13
CDS-TS-Dispatcher: Simplifying SAP CAP TypeScript Development
@dxfrontier/cds-ts-dispatcher has been through 6 major lines since this was published, most recently 4 (2025-01), 5 (2025-07), 6 (2026-07). Affects Runnable code.
CDS-TS-Repository: Simplify SAP CAP Entity persistance with BaseRepositoryCDS-TS-Repository: Simplify SAP CAP Entity persistance with BaseRepositoryThe persistence half of the same pair, three days later: a BaseRepository putting entity access behind a typed repository rather than CQN written inline in a handler. Shares its opening argument with the dispatcher post — the layer between business logic and persistence is the part CAP leaves open — and the two are designed to be used together.published 2023-11-16
CDS-TS-Repository: Simplify SAP CAP Entity persistance with BaseRepository
@dxfrontier/cds-ts-repository has been through 9 major lines since this was published, most recently 5 (2024-12), 6 (2025-07), 7 (2026-07). Affects Runnable code.
Taking CAP to the next level - with TypeScriptTaking CAP to the next level - with TypeScriptThe author's own two packages introduced together, and they are two halves of one idea: cds2types generates TypeScript from the CDS model, cds-routing-handlers arranges the handlers that use them. Published in 2020, years before cds-typer, which makes it the earliest answer in the graph to a question the core answered later.published 2020-05-22
Taking CAP to the next level - with TypeScript
cds-routing-handlers: release and repository quiet for 46 months. Affects Runnable code.
A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3The SAPUI5 frontend of the sample, and mostly an argument for writing UI5 in TypeScript: ES imports in place of sap.ui.define, a class with real private members in place of the underscore convention, and the service types generated from the CDS model copied into the UI package, so one IChats interface types the OData object the controller reads. The second half is structure — a formatter class and a singleton LayoutManager called from the XML view through core:require, a confirmation helper taking a callback, a dialog class resolving a promise, a generic createEntity<T> on a service class — all of it to keep every controller under 100 lines. What it says about arranging a UI5 app holds whatever model sits behind the chat; the tooling around it is of its date, and the post calls UI5's TypeScript support experimental.published 2023-02-27
A ChatGPT-like chat app built with modern SAP technologies (CAP, SAPUI5) – Part 3/3
cds2types. Affects Runnable code.
TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)The middle part of three, and the one about SAP: where TypeScript is supported across a side-by-side extension on BTP, as of July 2023. It says the SAP Cloud SDK already generates OData clients as .ts files and UI5 ships types for its controls and modules, the ground of TypeScript support in UI5, while CAP offers standard types and the new @cap-js/cds-typer generates types for a service, which is typing, with the caveat that running cds-ts commands could overwrite what cds-typer generated.MikeDoyle, published 2023-07-05
TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)TypeScript Sheriff: How can I use TypeScript in the SAP ecosystem? (Part 2 of 3)The middle part of three, and the one about SAP: where TypeScript is supported across a side-by-side extension on BTP, as of July 2023. It says the SAP Cloud SDK already generates OData clients as .ts files and UI5 ships types for its controls and modules, the ground of TypeScript support in UI5, while CAP offers standard types and the new @cap-js/cds-typer generates types for a service, which is typing, with the caveat that running cds-ts commands could overwrite what cds-typer generated.MikeDoyle, published 2023-07-05