BlogBlogA post on somebody's own site or a community platform. Nobody edits it after publication, so it dates from the day it was written.See every one →SAP Community
Dynamic OData from "any" API through SAP BTP Kyma
Putting an OData face on a third-party API by way of Kyma, so the SAP side of a landscape can consume something that was never built for it. The word dynamic is doing work in the title — the shape is not modelled in advance.
Where it sits
Explains
ODataODataExposing data and operations through OData, including the service model, metadata and protocol versions clients require. Version differences affect which clients can consume a service and which query features they can use.DeploymentBTPDeploymentGetting an application onto a runtime and keeping it there: build descriptors, deployment topology, service bindings and lifecycle operations. The target runtime determines how the application is packaged and configured.
Source
reachable
Who is behind it
Gunterauthor
Properties
About this work
What was found on the page
Prose
914 words
Numbered steps
12
Code blocks
1
For deployment
Applies in
Group by85 of 85 pieces
Piece, what it offersStill applies
What's new with draft handling in RAP?What's new with draft handling in RAP?An ABAP-day session at Devtoberfest 2026 on two additions to draft handling in RAP: collaborative draft, where two users work on the same draft instance and a field is locked only while the other is in it, and draft scope, where editing an instance of one draft-enabled business object puts the related instances of a dependent one into draft as well. Andre Fischer shows what each costs in the behaviour definition and projection, the draft query view and its DCL that collaborative draft needs over a table-based business object, and the CDS table entities that remove both the draft query view and the persistence table, with their current restrictions in ABAP analytics and extensibility; the from-scratch generator in ADT grows a checkbox for them. Both demos run against the DMO flight scenario of SAP-samples/abap-platform-refscen-flight, and the last part hides the draft-related features of an OData V4 app in its manifest, which the session gives as the reason a simple create-update-delete app no longer needs a V2 service binding.published 2026-09-21
A Guide to CDS Metadata Extensions, Fiori App Generation and SAP UI5 Controller ExtensionsA Guide to CDS Metadata Extensions, Fiori App Generation and SAP UI5 Controller ExtensionsWalks through a RAP-based Fiori elements app end to end: layering UI annotations onto a CDS view through a separate ABAP metadata extension object, gated by @Metadata.allowExtensions on the base view and ordered across extensions by a required @Metadata.layer value. Generates the app in SAP Business Application Studio from the published OData V4 service's merged $metadata document, then adds an SAP UI5 controller extension — registered in manifest.json against a Fiori elements lifecycle hook — only for behaviour the annotations cannot express.ankitapaul229, published 2026-07-27
The Fourth Way to Go Offline in UI5 (And Why the Service Worker Stays Dumb)The Fourth Way to Go Offline in UI5 (And Why the Service Worker Stays Dumb)Reporting on the UI5Con session run by Viktor Sperling and Lars Kissel, the post proposes a fourth offline architecture for a warehouse scanning app: a service worker kept deliberately ignorant of OData, and a JSONModel/IndexedDB layer that does an explicit download, work, submit cycle, queuing local mutations before posting one $batch with a single changeSet at the end of a session. It also works through the alternative v4.ODataModel change-buffer pattern (updateGroupId, submitBatch) and explains why Fiori elements' annotation-driven, live OData V4 interactions resist offline replay. The session-token and XSRF-expiry problem for long offline periods is named as an open gap rather than solved.Noel_Hendrikx, published 2026-07-15
SAP BTP Account Architecture Best Practices: A Practitioner's Field GuideSAP BTP Account Architecture Best Practices: A Practitioner's Field GuideLays out BTP account-hierarchy conventions — one subaccount per business domain and environment, a naming pattern, and a service catalogue entry with a named owner and monthly budget — against the common failure of sharing one subaccount across Dev, Test and Production. It also sets out a four-stage CI/CD pipeline that builds, tests in a Dev subaccount, then stages through Test to Production, naming SAP Continuous Integration and Delivery or Jenkins/GitHub Actions with the BTP CLI as the tooling.basanireddy, published 2026-07-10
From SEGW to @OData.publish: Expose Your CDS View as OData in S/4HANAFrom SEGW to @OData.publish: Expose Your CDS View as OData in S/4HANAWalks through exposing an ABAP CDS view as an OData service in an on-premise S/4HANA system by adding the @OData.publish: true annotation, then registering and activating the generated service in SAP Gateway (transaction /IWFND/MAINT_SERVICE) before testing it with $filter, $top and $count. It sets this against the manual route through transaction SEGW, since the annotation generates the service, its navigation properties and its OData properties straight from the CDS view without a Service Builder project.rupalipunekar1234, published 2026-07-09
Autonomous Diagnostics on Kyma Unplugged: Goose + LiteLLM + KRO + SAP AI Core in ProductionAutonomous Diagnostics on Kyma Unplugged: Goose + LiteLLM + KRO + SAP AI Core in ProductionAn in-cluster autonomous diagnostic pipeline on Kyma Unplugged (open-source Kyma, noted to also run on SAP BTP, Kyma runtime): a Goose agent with kubectl access calls SAP AI Core through a LiteLLM proxy, and most of the post is about the quirks of that route — drop_params silently swallowing unrecognised parameters and beta headers, streaming that has to be off when tools are attached, and prompt caching that sits on the Orchestration V2 API rather than the foundation-model path the LiteLLM provider hits. A second Node.js proxy reaches that API, and the author reports caching unconfirmed at production scale, which leaves the roughly $0.004 per static run a target rather than a measured figure. Spend metrics reach SAP Cloud Logging over OTLP through Kyma's Telemetry MetricPipeline while the health analysis itself lands in Kubernetes custom resources read in Busola, and the stack is declared as KRO Resource Group Definitions applied with one Terraform command.quovadis, published 2026-07-09
How to rename an OData V4 service?How to rename an OData V4 service?Renaming an OData V4 service binding changes its Service Alias and the resulting service URL, breaking any app already deployed against the old one — shown on a /DMO/TRAVEL-based example in the SAP BTP ABAP environment by unpublishing, renaming and republishing the binding, then reading the new URL back from the OData V4 service catalog's ServiceGroups entry. It weighs that against two alternatives: adding a second service definition and publishing it as a new service version under the same binding, or creating an entirely new service definition and binding, which keeps the original URL live during the cutover.published 2026-07-04
From Concept to action: Hands-On with the CAP Operator and the Partner Reference ApplicationFrom Concept to action: Hands-On with the CAP Operator and the Partner Reference ApplicationThe CAP Operator applied to a real application rather than a sample of its own — SAP's Partner Reference Application, taken from plugin integration through containerisation to custom resources. The transition to CRDs is the part that repays attention: it is where the deployment stops being an mta and becomes Kubernetes.ChristianWeiss, published 2026-05-21
Adding Immutable Blockchain Proofs to SAP With CAP - Cardano and OData V4Adding Immutable Blockchain Proofs to SAP With CAP - Cardano and OData V4The write-up behind ODATANO, by its author: how a public blockchain gets reachable from CAP as an ordinary OData V4 service rather than through a bespoke client. The premise it starts from is worth the read on its own — SAP systems are trusted but mutable, which is what an immutable anchor is for — and Cardano is chosen for peer-reviewed research and formal methods rather than for popularity. Written as an experiment with feedback invited, not as a recommendation.maxalexweber, published 2026-05-15
Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-6]Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-6]The last part: the Fiori application built and deployed into the HTML5 Application Repository, separately from the service it talks to. Opens with a checklist of the five parts before it, which is the clearest statement of what the whole series covers.sanjucs, published 2026-05-14
Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-4]Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-4]The switch from SQLite to HANA and the first deploy of the back end to Cloud Foundry — the point in the series where the persistence stops being a file and the build starts producing HDI artifacts.sanjucs, published 2026-05-12
Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-4]
Database connectors changed in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
OData $batch Deleting Records Across Multiple Tables in Single TransactionOData $batch Deleting Records Across Multiple Tables in Single TransactionWalks through implementing a multi-table DELETE inside a single OData v2 $batch changeset on SAP Gateway: setting cv_defer_mode = abap_true in CHANGESET_BEGIN so more than one delete is collected per change set instead of being executed immediately, looping the collected operations in CHANGESET_PROCESS to delete from each backend table in turn, and issuing one COMMIT WORK in CHANGESET_END so all tables commit or roll back together. The example is a supplier master spread across basic, address, identification and purchasing-organisation tables, deleted as one logical unit of work instead of one HTTP call per table.Abhi_0118, published 2026-04-17
Build BTP CAP App with Fiori Integration – Part 2: Implementing End to End AppBuild BTP CAP App with Fiori Integration – Part 2: Implementing End to End AppThe implementation half of the series whose first part set up the account and the database: the application itself, end to end.SuryaRamesh, published 2026-04-09
Extending Standard S/4 HANA OData API'sExtending Standard S/4 HANA OData API'sWalks through extending a standard S/4HANA OData API with a custom field, preferring OData V4 over V2 for its closer OASIS compliance and simpler service enablement, then tracing the extensibility objects documented for the entity before touching any code. The custom field reaches the API by layering three CDS view extensions — extendView on I_Product, extendViewEntity on R_ProductTP and on A_Product_3 — following the projection chain down to where the base table is first selected, built in ABAP Development Tools for Eclipse.JuanDK78, published 2026-04-08
Moving from Hub Gateway to Direct S/4HANA OData V4: A Customized Reusable RAP Processing FrameworkMoving from Hub Gateway to Direct S/4HANA OData V4: A Customized Reusable RAP Processing FrameworkA generic base class for RAP custom-entity query providers — one implementation of IF_RAP_QUERY_PROVIDER~SELECT, subclassed per entity — lets a service expose OData V4 directly from S/4HANA instead of through a separate Gateway Hub. The framework loads entity configuration, extracts the request context, fetches and transforms backend data into the target entity shape, and returns it through the RAP response object, with field mapping and conversion exits left for each subclass to fill in.AnslemArnolda, published 2026-04-07
Part 1: Creating and Deploying a SAP CAP Application with SAP HANA on SAP BTP (Cloud Foundry)Part 1: Creating and Deploying a SAP CAP Application with SAP HANA on SAP BTP (Cloud Foundry)Opens with the observation the whole series rests on — CAP is usually demonstrated locally, and the interesting part starts when it is deployed. Part one of the run that continues into PostgreSQL and Work Zone.yashbhosle789, published 2026-02-25
Part 1: Creating and Deploying a SAP CAP Application with SAP HANA on SAP BTP (Cloud Foundry)
Database connectors changed in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
Receive Events from Event Mesh of Integration Suite to CAP Node.js ApplicationsReceive Events from Event Mesh of Integration Suite to CAP Node.js ApplicationsWalks a CAP Node.js application through consuming events from SAP Integration Suite, Event Mesh: adding the messaging and xsuaa services with cds add, writing messaging.on handlers for named topics, and building and deploying the service as an MTA to Cloud Foundry. Documents a mismatch between Cloud Foundry's automatic queue provisioning and Event Mesh's management API, worked around by pointing the service key's management URI at a mock endpoint that always returns 201.KevinWang_ST_Consultancy, published 2026-02-13
UI for the BTP Application Vulnerability ReportUI for the BTP Application Vulnerability ReportAn open-source SAPUI5 front end for SAP's Application Vulnerability Report API, backed by a CAP Node.js service that projects the external findings as an OData V4 entity and forwards each query with api.run(req.query). The CAP service reaches that API through a Destination service instance configured with OAuth2ClientCredentials authentication from a service key, so the address and credentials stay out of the application code.published 2026-02-10
Part 2: Runtime Architecture & Cost efficiency gainsPart 2: Runtime Architecture & Cost efficiency gainsThe technical half of the Kyma Evolution series: why a cluster tuned for CAP multitenancy is not just somewhere to run containers, and where the cost efficiency actually comes from.ChristianWeiss, published 2026-02-04
Kyma Evolution: Transforming SAP Kyma into a tailor-made SaaS Platform for sbs extensionsKyma Evolution: Transforming SAP Kyma into a tailor-made SaaS Platform for sbs extensionsWritten by an extensibility expert building against Cloud ERP under clean core, and it treats Kyma as something to shape rather than to adopt — what has to be added to the runtime before it is a SaaS platform for CAP extensions. The Partner Reference Application post is the hands-on sequel.ChristianWeiss, published 2026-02-03
Streamlined Kyma deployment for CAP applicationsStreamlined Kyma deployment for CAP applicationsUnder two thousand characters on getting a CAP application onto Kyma with less ceremony than the long guides require. Short by design.published 2025-12-08
Event Driven SAP CAP on Kyma with Agentic AI and UI Auto RefreshEvent Driven SAP CAP on Kyma with Agentic AI and UI Auto RefreshA prototype, described as one: a plain CAP application made to react to external events on Kyma, with an agent in the loop and the UI refreshing itself rather than being reloaded. Short — it reports what was built and why, not how to rebuild it.Shahid, published 2025-12-01
S/4HANA公有云版的内部ABAP拓展S/4HANA公有云版的内部ABAP拓展Argues that S/4HANA Cloud public edition's in-app ABAP extensibility is still real ABAP development, just under stricter rules: developer extensions require ABAP Development Tools rather than SAP GUI transactions, data models are defined as CDS views instead of SE11 tables, business logic is a RAP behavior definition instead of a function module, and service exposure is an auto-generated OData service from a Service Definition instead of a hand-built RFC/BAPI. The piece walks a worked example — a Fiori app that triggers the Purchase Requisition API — through CDS, RAP, OData activation on SAP Gateway, and authorization via business catalogues, and frames the whitelist of released APIs and CDS views as upgrade-safety rather than a restriction.ArthurYang, published 2025-11-24
Adding Shell Plugin to SAP Fiori CAP Application and Deploying to Cloud Portal ServiceAdding Shell Plugin to SAP Fiori CAP Application and Deploying to Cloud Portal ServiceA launchpad shell plugin built as a CAP application and deployed to the Cloud Portal service — extending the shell around your app rather than the app itself.Abhinandan2, published 2025-11-24
Create a CAP Application with SAP HANA Cloud from Scratch and Deploy to Cloud FoundryCreate a CAP Application with SAP HANA Cloud from Scratch and Deploy to Cloud FoundryThe whole lifecycle in one post rather than a series — model, service, HANA binding, build, deploy. Useful as a single reference for the order things have to happen in, which is the part that is easy to get wrong when it is spread over six posts.MaheshSirsat1708, published 2025-11-19
Create a CAP Application with SAP HANA Cloud from Scratch and Deploy to Cloud Foundry
Database connectors changed in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
Quickly Deploy a Sample CAP Application to BTPQuickly Deploy a Sample CAP Application to BTPPrerequisites first and at length — account, dev environment, CLI tools, MBT — because that is where a first deployment actually fails. The deploy itself is short once they are true.AminAlmarsafy, published 2025-11-15
OData Deep Insert: Implementation and Real-Life ExamplesOData Deep Insert: Implementation and Real-Life ExamplesWalks through implementing OData Deep Insert on classic SAP Gateway: two entity types joined by an association in SEGW, and a redefined CREATE_DEEP_ENTITY method in the DPC_EXT class that unpacks the header and item payload and calls BAPI_SALESORDER_CREATEFROMDAT2 to create a sales order with its line items in one request instead of separate calls per item. Gives a sample JSON payload to test with Postman or /IWFND/GW_CLIENT and names the usual failure points — an unmapped association, a method that was never redefined, or a commit left out after the BAPI call.SRSATAPATHY, published 2025-09-15
Create CDS Views and expose through OData service in CAPMCreate CDS Views and expose through OData service in CAPMViews defined in CDS and then exposed, which is the whole of what a small CAP service is. Written step by step from cds init onward in Business Application Studio.VenkateshMundru, published 2025-08-11
Step-by-Step Guide to Display System Details on SAP Fiori Launchpad ShellStep-by-Step Guide to Display System Details on SAP Fiori Launchpad ShellA step-by-step build of a plugin for the SAP Fiori launchpad shell that shows the system ID and client on every app it hosts: an OData service modelled in SAP Gateway Service Builder (SEGW), its GetEntitySet method redefined to call the function module RSAPI_CTC_GET_SYSTEM_DETAILS, then consumed from a project in SAP Business Application Studio with the Component.js and manifest.json changes a shell plugin needs instead of a standalone app. It covers the registration step a plugin needs beyond a normal Fiori app: a Catalog and Target Mapping with Semantic Object Shell and Action Plugin, deployed on-premise and assigned to roles.RahulManchala, published 2025-07-30
Joule Studioがリリースされたので早速CAPアプリを自然言語で操作するカスタムスキルを構築してみたJoule Studioがリリースされたので早速CAPアプリを自然言語で操作するカスタムスキルを構築してみたA walkthrough of building a custom Joule Studio skill on a CAP bookshop app: cds add sample and cds add mta scaffold the project and its deployment descriptor, cds compile srv/ --to xsuaa generates the role template behind the @requires: 'admin' check on AdminService from the SAP Authorization and Trust Management service (XSUAA), and mbt build packages the app for deployment to the SAP BTP, Cloud Foundry Runtime. The skill reaches the deployed OData API through the SAP Destination service, configured with the OAuth2 Client Credentials grant using the client ID, secret and token endpoint from the app's XSUAA service key, so Joule answers a natural-language question about a book by its ID.takayuki_tanaka, published 2025-07-30
The Complete Guide to Calling Actions in UI5 with Custom CodeThe Complete Guide to Calling Actions in UI5 with Custom CodeWritten because the documentation is thin and the samples sparse, and openly as a note to the author's future self — hand-coding an action call has become a rare task for anyone mostly working in Fiori elements, which is exactly why it is hard to look up when it comes round. Comes with a CAP sample project, so the service half is there too.published 2025-07-21
Exploring Application Frontend Service: Deploying the UI of an MTA AppExploring Application Frontend Service: Deploying the UI of an MTA AppApplication Frontend Service, which arrived in May 2026 and overlaps the HTML5 Application Repository without replacing it. The post is careful about the difference — single-tenant, stand-alone, and no Work Zone integration yet — which is what you need to decide between them.MioYasutake, published 2025-07-12
🚀 秒速で学ぶ SAP AI Core Agent 開発 🚀 - Part 8 CloudFoundry にデプロイ🚀 秒速で学ぶ SAP AI Core Agent 開発 🚀 - Part 8 CloudFoundry にデプロイPart 8 of a Japanese-language series deploys the Python backend and SAPUI5 chat UI built in earlier parts to SAP BTP, Cloud Foundry Runtime: the backend's manifest.yaml declares its buildpack, memory and start command for cf push, while the UI's MTA project is built with mbt build and uploaded with cf deploy, then has its ENDPOINT constant repointed at the live API's route. It closes with adding the deployed HTML5 app to SAP Build Work Zone, standard edition through Channel Manager's content sync, Content Explorer and a new Site Directory site.Ryota_Ito, published 2025-06-16
DevOps with SAP BTPDevOps with SAP BTPHow SAP frames a delivery pipeline for applications on BTP Cloud Foundry: continuous integration through the SAP Continuous Integration and Delivery service and its pipeline templates for CAP and Fiori, transport and change management across environments, and a section on reasonable alternatives for teams with existing CI infrastructure. Culture first, tools second, and explicit that the setup differs on other BTP environments.published 2025-06-06
How to Perform Initial Loads from S/4HANA to Advanced Event Mesh with Odata PollHow to Perform Initial Loads from S/4HANA to Advanced Event Mesh with Odata PollWalks through building a Cloud Integration flow that polls the S/4HANA Business Partner OData API on a timer, splits the response into individual records, and publishes each as an event to Advanced Event Mesh through its adapter, with the topic set dynamically from a grouping property. Selects fields and expands associations with $select/$expand against an EDMX from the API Business Hub, and works around the OData V2 adapter's lack of JSON support by falling back to the HTTP adapter with an XML-to-JSON converter. Flags the trade-off: the pattern needs no backend change beyond activating the API, but the polled payload has to stay aligned with whatever event format the ERP pushes on change.AlexPfeil, published 2025-04-04
Generating Adobe Form Using RAP framework OData ServicesGenerating Adobe Form Using RAP framework OData ServicesModels a RAP root view entity and consumption view over a custom sales-order table, built with ABAP CDS, and exposes it through a service definition and an OData V2 UI service binding. A separate SEGW project implements GET_STREAM to call an Adobe Form driver class and stream the rendered PDF back as the response, with a computed link field added to the CDS view so the UI can open it. The PDF is generated in the backend and returned to the calling program rather than sent straight to a printer.Megastar, published 2025-03-18
Architecting Multi-Region HA/DR resiliency patternsArchitecting Multi-Region HA/DR resiliency patternsPatterns for running BTP applications across regions when the default multi-availability-zone resilience is not enough: DNS-based load balancing across regional endpoints with Azure Traffic Manager, Route 53 or Cloud DNS, replication of data and configuration between regions, and the fundamentals of single-region versus multi-region resiliency in its sub-pages. BTP services are multi-AZ by default; a multi-region setup is something the customer architects, and this is SAP's description of how.published 2025-02-19
The fastest way to a deployable CAP app on SAP BTP Cloud FoundryThe fastest way to a deployable CAP app on SAP BTP Cloud FoundryThe gap between an application that runs locally and one that runs deployed — binding, bundling, the database connection, authorization — treated as the problem rather than as setup. Since updated for cds up, which is the shortest answer the core now offers, and the post carries that update inline rather than leaving the original standing.published 2025-02-13
SAP CAP Lessons Learned: Run a CAP app using SQLite on SAP BTP - Cloud FoundrySAP CAP Lessons Learned: Run a CAP app using SQLite on SAP BTP - Cloud FoundrySQLite past the point it is meant to go — deployed, not local. Written as a lesson learned rather than a recommendation, and it pairs with the author's own note that SQLite is single threaded.LucasMagriniRigo, published 2024-12-30
Deploy and Run the Incident Management Application in the SAP BTP, Kyma Runtime with a Mock ServerDeploy and Run the Incident Management Application in the SAP BTP, Kyma Runtime with a Mock ServerBuilds the Incident Management CAP service and its HTML5 UI deployer as container images with the pack CLI's Cloud Native Buildpacks, then deploys both to SAP BTP, Kyma runtime with a Helm chart, wiring in the mock-server destination and productive cds build --production output set up in the prerequisite tutorials. Marked out of maintenance in favour of the newer "Develop a Side-by-Side CAP-Based Extension Application" mission in SAP Discovery Center, but the build-and-deploy mechanics it walks through — buildpacks, image tags, a Helm chart — are what deployment still covers for Kyma.published 2024-12-06
Deploy and Run the Incident Management Application in the SAP BTP, Kyma Runtime with a Mock Server
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects A recipe.
Calling bound / unbound CAP actions from Fiori elements application.Calling bound / unbound CAP actions from Fiori elements application.invokeAction from the Fiori elements Edit flow API, with the difference between bound and unbound actions spelled out first because the call shape differs. Under three thousand characters and it answers exactly one question.vidhyasagarmule, published 2024-09-07
SQLite as database for a multi-target (/productive) CAP ApplicationSQLite as database for a multi-target (/productive) CAP ApplicationOpens with "Not recommended but possible", and then names the two cases where it is the right call anyway: a showcase, and a landscape with no HANA Cloud available. The caveat is the content.Christopher_Ketzler, published 2024-07-05
SQLite as database for a multi-target (/productive) CAP Application
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.
Graph intro series, part 8: Use Graph With OData v4Graph intro series, part 8: Use Graph With OData v4Part eight of the Graph intro series works through querying SAP Graph's unified business data graph over OData v4: inspecting the $metadata EDMX document for an entity type such as SalesQuote, then shaping the response with $select and nested $expand across navigation properties, and paging a collection with $filter, $orderby, $top and $skip. It stays with the protocol mechanics against the Graph sandbox endpoint rather than any one client library.florian_moritz, published 2024-03-19
SAP CAP(Cloud Application Programming)开发框架概述SAP CAP(Cloud Application Programming)开发框架概述A Chinese-language walkthrough of CAP built mainly from CAPire's own "About CAP" page: CDS entities, associations, compositions and aspects for data modelling, with an extend Books with @restrict: [{ grant:'WRITE', to:'admin' }] aspect as its authorization example; CQL and CQN queries shown against both a local service and OData's $select/$expand; and the service-and-event model — this.on, this.emit, srv.on — that carries CAP's async processing. It closes with the author's own setup: installing @sap/cds-dk, scaffolding a bookshop project with cds init, and running it with cds watch against local SQLite, mocked authentication and file-based messaging standing in for HANA Cloud, IAS and Kafka.ArthurYang, published 2024-01-07
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
SAP BTP - KYMA - SERVICE MESHSAP BTP - KYMA - SERVICE MESHThe service mesh as it applies to side-by-side extensions — what it gives you between services once more than one of them is deployed. Definitional in places, and it quotes the official documentation for the concept before showing the use.maxi1555, published 2023-09-15
Simplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud FoundrySimplifying SaaS Self-Onboarding Automation using Terraform in Kyma and Cloud FoundrySelf-onboarding automated with Terraform across both runtimes rather than one, which is the point — the same subscriber flow described for Kyma and for Cloud Foundry side by side.martinfrick, published 2023-09-07
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
Tips for running CAP nodejs in SAP BTPTips for running CAP nodejs in SAP BTPDeliberately not a summary of capire: the author says up front that nothing here repeats the documented best practices, and the subject is configuration for running cloud-natively rather than correctly. Examples target Cloud Foundry, with the claim that they hold for Kyma too.published 2023-06-21
Tips for running CAP nodejs in SAP BTP
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects Runnable code.
从BTP Launchpad里的sapui5应用里调用部署的CPI IFLOW从BTP Launchpad里的sapui5应用里调用部署的CPI IFLOWA short follow-up to the author's earlier post on calling a deployed CPI iflow from a standalone-router SAPUI5 app, adjusted for the case where the app runs inside the BTP Launchpad: the fetch call is built from the launchpad component's own base URI, and the app's xs-app.json approuter route maps a /cpi/* path to a destination that fronts the CPI iflow runtime, with XSUAA authentication on the route. It also walks the MTA build and cf deploy commands used to push the app, scaffolded with generator-easy-ui5, to BTP.Jacky_Liu1, published 2023-06-13
#BTP #SAPCAP: Quirky Nuggets (N03-N04)#BTP #SAPCAP: Quirky Nuggets (N03-N04)Two unrelated findings in one post, which is the format of the series: the OData operators tried against a CAP service — with a schema of deliberately awkward types to try them on — and undeploying database artifacts, which is the half people hit in anger. Numbered N03 and N04 of a run that continues either side.Ajit_K_Panda, published 2023-06-05
#BTP #SAPCAP: Quirky Nuggets (N03-N04)
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects A recipe, Runnable code.
SAP SuccessFactors extensibility easy with SAP BTP, Kyma runtimeSAP SuccessFactors extensibility easy with SAP BTP, Kyma runtimeSuccessFactors extensibility called directly from Kyma, with OAuth2SAMLBearerAssertion doing the identity part. Long, and code-first — the author leads with the sample rather than with the architecture.quovadis, published 2023-05-22
Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!Multitenant SaaS applications on SAP BTP using CAP? SAP BTP, Kyma Runtime!The Kyma counterpart to the Cloud Foundry Tried-and-True series — the same SaaS application, the same requirements, a Kubernetes runtime underneath. The two code lines were later merged, which the Reloaded post announces.martinfrick, published 2023-04-05
Surviving and Thriving with the SAP Cloud Application Programming Model: Deployment to SAP BTP, Kyma runtimeSurviving and Thriving with the SAP Cloud Application Programming Model: Deployment to SAP BTP, Kyma runtimeAn episode of the author's #CAPTricks series, and it reads like one — long, opinionated, and organised around the things that actually go wrong on the way to a deployed CAP application rather than around the documented happy path.maxstreifeneder, published 2023-03-07
Surviving and Thriving with the SAP Cloud Application Programming Model: Deployment to SAP BTP, Kyma runtime
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects A recipe, Runnable code.
SAP CAP function and action with Unstructured/Dynamic Type Input/OutputSAP CAP function and action with Unstructured/Dynamic Type Input/OutputA CAP action or function can take or return an unstructured type: annotate the service @protocol: 'rest', declare the parameter or return value as @open type object {}, and a handler shapes the payload however a given request needs, shown here with a bound action and a function that returns a different structure per input. The text states plainly that OData V4 and GraphQL services require a fixed structure for action and function parameters, so the dynamic type works only over CAP's REST protocol.published 2022-12-08
HTML5.Timeout for CAP destinations in mta.yaml longer than defaultHTML5.Timeout for CAP destinations in mta.yaml longer than defaultA page and a half about one property that has to be raised when a CAP destination is slower than the default allows — and it now opens with its own correction, dated October 2025, that the property is called timeout rather than HTML5.Timeout, credited to a commenter. The correction is why it is worth keeping.NilsJanen, published 2022-11-09
Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client ApplicationsMessaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client ApplicationsGetting a message out of a CAP service and onto a Fiori elements object page in a draft scenario — errors, warnings and information, each of which the UI treats differently. Co-written with one of the people on the OData side, and it spends its length on the message container rather than on the handler that fills it.arley-triana-morin, published 2022-08-11
Messaging System for Transferring Error, Warning, and Information Messages from OData V4 Services to HTTP Client Applications
OData changed in @cap-js-community/odata-v2-adapter 1.10.0, 2023-04-05. Affects A recipe, Runnable code.
CAP on Kyma - Deploy your CAP apps to SAP BTP, Kyma RuntimeCAP on Kyma - Deploy your CAP apps to SAP BTP, Kyma RuntimeThe post that superseded the author's own earlier one, written for cds and cds-dk 6 when Kyma deployment became something the tooling did rather than something you assembled. The current reference of the several Kyma posts here.Uwe_Klinger, published 2022-07-12
CAP on Kyma - Deploy your CAP apps to SAP BTP, Kyma Runtime
Deployment changed in @sap/cds-dk 8.9.0, 2025-03-31. Affects A recipe, Runnable code.
The new way to consume Service Bindings on Kyma RuntimeThe new way to consume Service Bindings on Kyma RuntimeService bindings on Kyma, which had until then been a Cloud Foundry idea — how a BTP service reaches a workload in Kubernetes, and what changes for an application that expects VCAP_SERVICES.Uwe_Klinger, published 2022-07-12
Extend SAP SuccessFactors on SAP BTP with CAP - Deploy to SAP HANA CloudExtend SAP SuccessFactors on SAP BTP with CAP - Deploy to SAP HANA CloudThe deployment instalment of the author's SuccessFactors extension series — the project already exists and the imported service is already modelled, so this is only the move onto HANA Cloud. Depends on the two posts before it and says so.ale_biagi, published 2022-03-29
Extend SAP SuccessFactors on SAP BTP with CAP - Create the CAP ServiceExtend SAP SuccessFactors on SAP BTP with CAP - Create the CAP ServiceWalks through writing a service definition in SAP Business Application Studio that projects entities from an existing CDS model: one entity gets @odata.draft.enabled because Fiori Elements only shows CRUD actions on a draft-enabled entity, and a read-only projection of an already-imported SuccessFactors OData entity fails with the generic handlers because the call is delegated to the remote service, so a custom handler is needed. Running cds watch then serves the entities, drafts and $metadata at the declared service path.published 2022-03-23
SAP CAP Adapter to expose OData as custom REST ServiceSAP CAP Adapter to expose OData as custom REST ServiceWalks through consuming an external OData V2 service in a CAP project — cds import converts the Northwind service's EDMX into a CSN and cds.connect.to wires up the remote proxy — then re-exposing it as plain REST with the @protocol:'rest' annotation instead of OData's own envelope. Shows two ways to reshape the response, renaming and dropping fields in a CDS projection or rewriting the returned objects in a custom service handler, and remaps ?pageSize and ?offset onto OData's $top and $skip in that same handler.Former Member, published 2021-09-15
Create a Business Service using CDS, Node.js, SQLite and a OData serviceCreate a Business Service using CDS, Node.js, SQLite and a OData serviceThe stack at its smallest — CDS, Node, SQLite, an OData service — worked through at length. Nothing cloud in it, which is the point: it is the shape of a CAP service before any of the platform arrives.raybanton, published 2021-07-12
Create a Business Service using CDS, Node.js, SQLite and a OData service
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.
Deploying CAP services with the in-memory SQLite databaseDeploying CAP services with the in-memory SQLite databaseIn-memory, deployed to Cloud Foundry — so the data is gone on restart, on purpose. For a service whose datastore does not need to survive anything, which is a narrower case than it sounds and a real one.liam_mischewski, published 2021-05-24
SAP Tech Bytes: Adding Service Implementation to an SAP HANA ProjectSAP Tech Bytes: Adding Service Implementation to an SAP HANA ProjectThomas Jung converts an existing SAP HANA-only project into a CAP one, exposing its native tables, views and a calculation view as CAP service entities with @cds.persistence.exists so they get full create, update, delete and read operations without being redefined. He adds OData V2 support through an adapter proxy for callers still expecting XSODATA-shaped responses, and separately turns on CAP's OpenAPI generation with its Swagger UI test tool. A second part rebuilds the same service layer with a standalone Node.js module instead of CAP, for cases that need more control than CAP's REST or OData defaults give.published 2021-05-07
The End2End Journey: Advocates Service – CAP Service, OData V2/4 & REST in One single ProjectThe End2End Journey: Advocates Service – CAP Service, OData V2/4 & REST in One single ProjectOne CAP service exposing OData V2, OData V4 and REST at the same time, which is unusual enough to be worth the read on its own. Part of an end-to-end series, deployed on Cloud Foundry against HANA Cloud, so the protocol question sits inside a whole application rather than a snippet.KRiedelsheimer, published 2021-05-06
The End2End Journey: Advocates Service – CAP Service, OData V2/4 & REST in One single Project
OData changed in @cap-js-community/odata-v2-adapter 1.10.0, 2023-04-05. Affects A recipe, Runnable code.
From R/3 ABAP to CAP/Fiori Elements on SAP BTP- DeploymentFrom R/3 ABAP to CAP/Fiori Elements on SAP BTP- DeploymentThe doing half: the steps and the code that got the application from the first post deployed and working. Shorter, and it assumes the argument has already been made.former_member231477, published 2021-04-30
From R/3 ABAP to CAP/Fiori Elements on SAP BTP- Deployment
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects Runnable code.
Custom Functions in OData V4 – SAP Cloud Application Programming ModelCustom Functions in OData V4 – SAP Cloud Application Programming ModelFunctions rather than actions, and the distinction is where it starts: a function must return data and must never change any, so it is the read-only half of custom operations. Then how to declare and implement one on a CAP service.Roopa_N, published 2021-04-28
Custom Functions in OData V4 – SAP Cloud Application Programming Model
OData changed in @cap-js-community/odata-v2-adapter 1.10.0, 2023-04-05. Affects A recipe.
SAP BTP SDK for iOS & CAP with OData V4 supportSAP BTP SDK for iOS & CAP with OData V4 supportThe iOS SDK gaining OData V4, which until then made connecting a native app to a CAP service awkward — CAP defaults to v4 and the SDK did not speak it. Short, and it marks the date that stopped being a problem.KRiedelsheimer, published 2021-04-21
Simple steps to deploy your CAP project to HANA cloudSimple steps to deploy your CAP project to HANA cloudWritten from the far side of a failed deploy — the author says these are the troubleshooting steps that ended up working, not a designed procedure. Short, and honest about being a record rather than a recommendation.OmPrakashJha, published 2021-02-11
Is it time to switch to OData v4?Is it time to switch to OData v4?A recommendation with its caveat attached: use v4 on new projects, and be aware it is less mature than v2 in terms of what the SAP stack around it supports. Written after using it on a real extension project, which is what makes the caveat credible.MikeDoyle, published 2021-02-05
Deploying a CAP Application to SAP Cloud Platform, Kyma runtime & connecting an iOS appDeploying a CAP Application to SAP Cloud Platform, Kyma runtime & connecting an iOS appKyma when it was new on the platform, taken from a CAP application through deployment to a native iOS client on the other end. Written by someone working the mobile side, so the parts about what a device needs from the service are more careful than usual.KRiedelsheimer, published 2020-12-17
SAP HANA XSA pt. 2 – Smart variants, OData v4 -> v2SAP HANA XSA pt. 2 – Smart variants, OData v4 -> v2Smart tables and smart variants against an OData v4 service, with the v4-to-v2 conversion that the smart controls needed at the time. The second part of an XSA series, written from Tokyo in a summer the author mentions.Gunter, published 2020-08-27
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.
Resolving date serialization issues when using an external OData v2 service with CAPResolving date serialization issues when using an external OData v2 service with CAPDates coming out of an external OData v2 service in a shape CAP does not expect, and what to do about it. A narrow bug report with a fix, and the kind of thing that costs an afternoon if nobody has written it down.pieterjanssens, published 2020-07-09
How to add OData v2 adapter proxy to your CAP projectHow to add OData v2 adapter proxy to your CAP projectThe problem is stated in one line — a UI5 application that only speaks OData v2 in front of a CAP service that speaks v4 — and the answer is a proxy in the middle rather than a rewrite of either end. Written while v4 support in the UI5 stack was still patchy, which is the whole reason the adapter exists.published 2020-06-30
How to add OData v2 adapter proxy to your CAP project
OData changed in @cap-js-community/odata-v2-adapter 1.10.0, 2023-04-05. Affects Runnable code.
SAP Cloud Application Programming Model: Deep Insert (5) Consume Remote Service with SAP Cloud SDKSAP Cloud Application Programming Model: Deep Insert (5) Consume Remote Service with SAP Cloud SDKThe same thing again through SAP Cloud SDK, published as a deliberate comparison with the part before it — the author says outright that it does what the previous post did, differently. Reading both is how you see what the SDK is actually doing for you.CarlosRoggan, published 2019-07-26
SAP Cloud Application Programming Model: Deep Insert (5) Consume Remote Service with SAP Cloud SDK
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects Runnable code.
SAP Cloud Application Programming Model: Deep Insert (4) Consume Remote ServiceSAP Cloud Application Programming Model: Deep Insert (4) Consume Remote ServiceFourth in a long series on deep insert, and the one where the target stops being local. Twenty thousand characters, project files linked, and the earlier parts on UUIDs and multi-level structures are prerequisites the author names.CarlosRoggan, published 2019-07-24
SAP Cloud Application Programming Model: Deep Insert (4) Consume Remote Service
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects A recipe, Runnable code.
SAP Cloud Platform Backend service: Tutorial [11]: CDS : magic: key: generationSAP Cloud Platform Backend service: Tutorial [11]: CDS : magic: key: generationExplains CDS's UUID key type: giving a key property UUID gets its value generated automatically instead of a hand-picked unused number, as data modelling lets an element's type do, at the cost of a 36-character value unfit for a user-facing display. It then works out how that generated value is addressed in a single-entity read URL — bare brackets in OData V4 against the guid'...' literal V2 requires — citing the OData specification for the difference.CarlosRoggan, published 2019-03-15
Consume Remote Services in a Full-Stack CAP ApplicationConsume Remote Services in a Full-Stack CAP ApplicationExtending the Developer's Guide application with a remote S/4HANA service — connectivity, importing the Business Partner API, and running against it. SAP publishes this as four separate paths: mock server or real S/4HANA Cloud, times Cloud Foundry or Kyma. One entry covers all four, because the difference between them is which backend and which runtime, not what you learn.SAP
Extend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming ModelExtend SAP SuccessFactors on SAP BTP with the SAP Cloud Application Programming ModelTwelve tutorials, about two hours, building a side-by-side extension of SuccessFactors on BTP. The spine is remote services: importing the SuccessFactors OData service definitions into a CAP model, then treating them as entities the extension reads and writes through, rather than as an API called from a handler. Indexed as one entry because the parts only make sense in order.SAP
OData entity as a governed query surface for agents, not a toolOData entity as a governed query surface for agents, not a toolAn OData entity, generated from the annotations a service already carries, as the surface an agent queries over SAP data: filterable, selectable and sortable fields, authorisation injected on the server side, and a bound query cost, instead of the entity as a tool. SAP's abstract sets this against the MCP gateway in SAP Integration Suite, where exposing an API is the easy part and getting an agent to pick the right one is not, which is the tool governance concern read through OData. A TechEd 2026 session (Wednesday 28 October, Berlin), presented by Aleksandr Ivanov and Evgenii Shirokikh, written here from SAP's abstract; the recording is not yet published.
AI-assisted full stack development using model context protocol serversAI-assisted full stack development using model context protocol serversMCP servers in Visual Studio Code used to configure, query and change a full-stack application built with CAP, CDS and OData: the agent access to your code concern, a coding assistant reading and changing the project it works in. The abstract names no server, so neither @cap-js/mcp-server nor any other is attached, and it does not say which changes are made. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Sergio Guerrero, written here from SAP's abstract; the recording is not yet published.
SAP Fiori elements and the age of AI: Build apps that are future readySAP Fiori elements and the age of AI: Build apps that are future readyBuilding SAP Fiori elements apps so they work with AI and fit SAP's next products: the abstract names AI-assisted development, OData and annotation design, and intent- and action-ready semantics that keep an app secure, discoverable and upgrade safe. Annotation design is the Fiori annotations concern and the OData service under it the other; the atlas holds no entry for SAP Fiori elements itself, and the abstract names no tool, annotation or version. A TechEd 2026 session (Thursday 29 October, Berlin), presented by Katja Zoch and Sebastian Steinhauer, written here from SAP's abstract; the recording is not yet published.
Deploy a Full-Stack CAP Application in SAP BTPDeploy a Full-Stack CAP Application in SAP BTPFive tutorials taking the Developer's Guide application from running locally to running on BTP — preparation, the deployment itself, role assignment, and integration with Build Work Zone. Published twice, once for Cloud Foundry and once for Kyma, with the same shape and different descriptors; indexed once, because the second is the first with the runtime swapped.SAP
Details
Graph
ODatacapability, core and community
Deploymentcapability, core and community
SAP Communitypublishing source
SAP Communitycap-tag
Source
Type
blog
Published on
Host
community.sap.com
Discovered via
First seen
History
- explains → applies_to on capability:deployment (btp)Door scope proposed from the title and summary, so a door page lists the piece only where it holds (docs/concepts/content-on-doors.md).
- Entered the atlasDiscovered via SAP Community · cap-tag.
For your agent
- Ref
content:dynamic-odata-from-any-api-through-sap-btp-kyma- JSON
- /content/dynamic-odata-from-any-api-through-sap-btp-kyma.json
- MCP
- Connecting an agent