BrowseAll ecosystems
Everything in the atlas
317 of 2341
Domain
Signals
Content: 2
More
Group by: Capability
EntryBySignalsLast activity
Basic code's of ABAPBasic code's of ABAPNine standalone ABAP reports built around REUSE_ALV_GRID_DISPLAY and CL_SALV_TABLE, covering display, screen validation, spool creation, Excel upload and table maintenance without SM30. One report raises and catches a custom exception class with RAISE EXCEPTION and TRY/CATCH, the class-based mechanism error handling names for ABAP; another submits a job to spool, converts it to PDF with CONVERT_ABAPSPOOLJOB_2_PDF and exports a CL_SALV_TABLE result to Excel before mailing both, producing document output from spool rather than Form Builder.RakeshZore, published 2025-09-30
Beginners Guide to Advanced Event MeshBeginners Guide to Advanced Event MeshA scenario-by-scenario walkthrough of Advanced Event Mesh, run through Cloud Integration iFlows: publishing and consuming queue messages, dead message queue setup with retry counts and acknowledgment modes, direct messages, durable topic endpoints and selectors, time-to-live, REST Delivery Points, replay by replication group message ID, parallel consumers with partition keys, and the request-reply pattern. Each scenario is built and verified step by step against a Solace trial account standing in for AEM.PriyankaChak, published 2025-07-24
Effective Axios Error Logging for Robust SAP IntegrationsEffective Axios Error Logging for Robust SAP IntegrationsTwo logged failures printed side by side, and the point is made by looking at them: one tells you what went wrong and one does not. Axios buries the useful part of an HTTP error, and this is what to unwrap before logging it from a CAP service.Sahil2508, published 2025-08-31
How to create a Purchase Order through BAPI in the SAP through program ( SE38 ) T-CODE .How to create a Purchase Order through BAPI in the SAP through program ( SE38 ) T-CODE .Walks through creating a purchase order from an ABAP report (SE38) by filling the BAPIMEPOHEADER/BAPIMEPOITEM structures and their X-indicator counterparts, then calling BAPI_PO_CREATE1 within the same session. Its error handling centres on the BAPIRET2 return table: looping over entries typed E or A, skipping BAPI_TRANSACTION_COMMIT when one is found, and displaying the returned message text rather than assuming success once the function module returns.chandu_kumar_badukuri, published 2025-12-18
How to subscribe or fetch data from solace to CPI using AEM Adapter : part-5How to subscribe or fetch data from solace to CPI using AEM Adapter : part-5Closes a series on event-driven architecture with Solace by detailing the subscriber side of an iFlow in Cloud Integration: an advanced event mesh adapter feeds an exception subprocess, and a Groovy step classifies each failure as recoverable, left to Solace's own retry, or non-recoverable, answered with a custom property that tells Solace to stop retrying before the message reaches an escalation layer. The escalation layer names email, ServiceNow and Loggly as destinations without explaining any of them.pavanKolla, published 2025-08-03
Making the Case for Enhanced REST Adapter in SAP Integration SuiteMaking the Case for Enhanced REST Adapter in SAP Integration SuiteCatalogues what SAP Integration Suite's native HTTP adapter supports for authentication (Basic, OAuth 2.0 client credentials and client certificates on the sender; OAuth 2.0 client credentials and SAML bearer assertion on the receiver) and for error handling (retry on HTTP failure only, with no pattern-based retry, failure queues or dead-letter queues), and that it has no OpenAPI import or export. Three worked scenarios, FedEx shipment tracking, Avalara AvaTax and SAP Ariba's operational reporting API, name what that leaves to Groovy scripting: the other OAuth 2.0 flows, gzip and multipart payloads, and pagination that chains a nextPageToken by JSONPath, which is the case the piece makes for the third-party Advantco REST Adapter.peter_ha3, published 2025-07-14
Migration Journey from MuleSoft to SAP Integration Suite (CI)Migration Journey from MuleSoft to SAP Integration Suite (CI)Maps MuleSoft Anypoint's error handling onto SAP Integration Suite: the Global Error Handler and MuleSoft's built-in retries become Exception Subprocesses with scripted Groovy retry logic or JMS-based retry, since Cloud Integration has no automatic equivalent. MuleSoft's searchable logger text becomes Content Modifier headers and Groovy-scripted Message Log entries, correlated by application message ID and correlation ID for traceability across complex interfaces. The mapping is drawn from the author's own migration project across assessment, development and validation phases, and is explicitly flagged as not an SAP- or MuleSoft-approved design.Shailaja, published 2025-09-21
New tutorial for UI5 Middleware FE MockserverNew tutorial for UI5 Middleware FE MockserverA step-by-step tutorial accompanying a Devtoberfest session walks through @sap-ux/ui5-middleware-fe-mockserver across nine exercises: zero-config mock data generated from OData metadata, custom JSON datasets with consistent IDs and referential keys, JavaScript actions, multi-service and cross-service scenarios, tenant isolation through sap-client, returning 400/404/422/500/501 responses for UI error-handling tests, and offline end-to-end tests run with wdi5. A companion tool, ui5-middleware-odata-recorder, captures real backend OData traffic to generate the mock datasets used for offline replay.published 2025-10-14
Parallel Data Filtering and Dropbox Integration Using SAP Cloud IntegrationParallel Data Filtering and Dropbox Integration Using SAP Cloud IntegrationA step-by-step build of an integration flow in Cloud Integration: a Start Timer triggers the flow, a Parallel Multicast splits student records by gender through XPath filters, and each branch uploads its file to Dropbox over a Receiver Adapter authorized against a Dropbox app's OAuth2 credentials. An Exception Subprocess captures the error message and a Mail Adapter sends it over SMTP, centralizing error handling and an email notification for the whole flow.Vurumind03, published 2025-12-10
CAP: GraphQL as new protocolCAP: GraphQL as new protocolWritten days after @cap-js/graphql appeared, by somebody who went looking for it — an introduction to GraphQL alongside what the adapter actually does to a CAP service. The first outside account of the capability, and still one of very few.jhodel18, published 2023-03-18
CAP: GraphQL as new protocol
@cap-js/graphql has been through 11 major lines since this was published, most recently 0.12 (2025-05), 0.13 (2025-07), 0.14 (2025-10). Affects Runnable code.
SAP CAPv7 - Node.js Highlights and ExperiencesSAP CAPv7 - Node.js Highlights and ExperiencesAn account of upgrading a 100+ table CAP Node.js project from v6 to v7, working through breaking changes in @sap/cds 7: event handlers now always receive an array, service paths move under /odata/v4/... unless serve_on_root is set, and cds-serve replaces cds run. It goes deepest on the GraphQL plugin, @cap-js/graphql: the /graphql endpoint it serves, Composition results wrapped in a nodes connection, and offset-based pagination reached through OData's top and skip rather than GraphQL's own limit and offset.published 2023-08-03
Calling the Sales Order (A2X) OData V2 API from BTP Using a Service Consumption ModelCalling the Sales Order (A2X) OData V2 API from BTP Using a Service Consumption ModelWalks through ABAP's Service Consumption Model for OData V2 in ABAP Development Tools for Eclipse: generating a client proxy from the Sales Order (A2X) API's downloaded EDMX, then using it from an ABAP console class to create a deep sales order with items, texts, partners and pricing elements, read it back and patch a field. The client itself is built the way HTTP clients describes for SAP BTP ABAP environment: a communication arrangement resolved through cl_http_destination_provider=>create_by_comm_arrangement, handed to cl_web_http_client_manager=>create_by_http_destination, reaching the inbound SAP_COM_0109 scenario configured on the SAP S/4HANA Cloud Public Edition side.Katsiaryna_Darapeika, published 2025-02-04
Calling the Sales Order (A2X) OData V4 API from BTP Using a Service Consumption ModelCalling the Sales Order (A2X) OData V4 API from BTP Using a Service Consumption ModelWalks through calling SAP S/4HANA Cloud Public Edition's Sales Order (A2X) OData V4 API from an ABAP class on SAP BTP ABAP environment: a communication arrangement on each side, a Service Consumption Model built in ADT from the API's downloaded EDMX, and a client proxy wired through cl_http_destination_provider=>create_by_comm_arrangement and cl_web_http_client_manager=>create_by_http_destination, the same HTTP clients pattern for ABAP for Cloud Development. The sample class creates a deep sales order with an item, a text, a partner and a pricing element, reads it back, then updates a field guarded by its ETag.Katsiaryna_Darapeika, published 2025-02-06
Invoking Business Agent Foundation Agents from ABAP: A Step-by-Step GuideInvoking Business Agent Foundation Agents from ABAP: A Step-by-Step GuideWalks through calling a Business Agent Foundation agent's chat endpoint from an on-premise ABAP report: an OAuth 2.0 client profile configured in SE80/SOAUTH2_CLIENT with client-credentials grant against the service key, an HTTP (type G) RFC destination in SM59 bound to that profile, and an ABAP report using CL_HTTP_CLIENT=>CREATE_BY_DESTINATION to POST a JSON message to the agent's sendMessage endpoint and extract the reply by splitting the response string. The destination and client code are the same shape as any outbound REST call from ABAP; nothing here is specific to the agent service beyond the request body and URL.tanmay_0117, published 2025-11-26
Outbound Integration from SAP BTP, ABAP to SAP S/4HANA Cloud via Service Consumption ModelOutbound Integration from SAP BTP, ABAP to SAP S/4HANA Cloud via Service Consumption ModelWalks through ABAP's Service Consumption Model for OData in ABAP Development Tools for Eclipse: generating a V4 client proxy from a remote service's EDMX metadata, then calling one of its bound actions by hand because the 2311 release's ADT tooling does not yet generate that code. The client itself is built the way HTTP clients describes for SAP BTP, ABAP Environment — a communication arrangement resolved through cl_http_destination_provider=>create_by_comm_arrangement, handed to cl_web_http_client_manager=>create_by_http_destination to create the client.Pramathesh_t_s, published 2025-10-28
How to use reserved words as property names in your OData service?How to use reserved words as property names in your OData service?Setting a CDS view alias to a reserved OData word, such as Number, fails compilation with 'NUMBER is a reserved word'. The fix for a RAP-based OData service is the @odata.property.name annotation: it lets the underlying CDS view keep a compiler-safe name (NumberInStock) while the $metadata EntityType still exposes the field as Number, shown against a products view and its generated EDMX.Andre_Fischer, published 2025-11-10
#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.
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
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
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
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
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
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
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
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
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
Edge Integration Cell : Design, deploy and manage APIsEdge Integration Cell : Design, deploy and manage APIsWalks through creating an API artifact in API Management on the customer-managed Edge Integration Cell runtime, including the option to generate the artifact by importing an OpenAPI specification rather than from a URL or by hand. It then attaches an Authentication policy and a Quota step capped at four calls per minute, deploys, and shows both the resulting 401 and the quota-breach error in the Monitor logs. The author frames it as the first of a series on Edge Integration Cell's policies.published 2023-11-15
Making the Case for Enhanced REST Adapter in SAP Integration SuiteMaking the Case for Enhanced REST Adapter in SAP Integration SuiteCatalogues what SAP Integration Suite's native HTTP adapter supports for authentication (Basic, OAuth 2.0 client credentials and client certificates on the sender; OAuth 2.0 client credentials and SAML bearer assertion on the receiver) and for error handling (retry on HTTP failure only, with no pattern-based retry, failure queues or dead-letter queues), and that it has no OpenAPI import or export. Three worked scenarios, FedEx shipment tracking, Avalara AvaTax and SAP Ariba's operational reporting API, name what that leaves to Groovy scripting: the other OAuth 2.0 flows, gzip and multipart payloads, and pagination that chains a nextPageToken by JSONPath, which is the case the piece makes for the third-party Advantco REST Adapter.peter_ha3, published 2025-07-14
Part 2 – Empowering SAP BTP CAP Services through Open API Spec and Annotations for Effective Communication, Collaboration and GovernancePart 2 – Empowering SAP BTP CAP Services through Open API Spec and Annotations for Effective Communication, Collaboration and GovernanceWalks through generating an OpenAPI specification for a Node.js CAP service: installing cds-swagger-ui-express, bootstrapping it in server.js, a sample CDS data model with associations and compositions, and the YUML diagram and endpoint details the Open API Preview renders in Business Application Studio. Also shows gating the Swagger UI behind a user-defined environment variable so it is served in development and QA subaccounts but excluded from the production deployment on Cloud Foundry. Second of a three-part series; the first covers the concepts and the third goes deeper into annotations.mohit_bansal3, published 2023-05-24
Part 3 – Empowering SAP BTP CAP Services through Open API Spec and Annotations for Effective Communication, Collaboration and GovernancePart 3 – Empowering SAP BTP CAP Services through Open API Spec and Annotations for Effective Communication, Collaboration and GovernanceThe closing part of a three-post series applies OData @Capabilities annotations — TopSupported, SkipSupported, CountRestrictions, UpdateRestrictions, DeleteRestrictions, FilterRestrictions, SelectSupport, SortRestrictions, SearchRestrictions, InsertRestrictions, ReadRestrictions and NavigationRestrictions — to three sample CDS entities (Purchase Order, Business Partner, Product) and shows the generated OpenAPI document changing with each one. The point it builds toward: the spec is a direct readout of the model and its annotations, not something edited by hand afterward.mohit_bansal3, published 2023-05-24
[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
A Practical Real-Time CTI Widget for SAP Sales Cloud V2A Practical Real-Time CTI Widget for SAP Sales Cloud V2A small CAP backend, a WebSocket channel and a UI5 widget in an iframe — enough to get telephony events into Sales Cloud without any custom backend inside the CRM. The smallness is the design.gizemsoylutr, published 2025-11-28
Communicate from a Java Application to ABAP via WebSocket RFC using JCo - Migration GuideCommunicate from a Java Application to ABAP via WebSocket RFC using JCo - Migration GuideWalks a JCo setup from classic CPIC-based RFC to WebSocket RFC: swap the application- or message-server logon properties for jco.client.wshost and jco.client.wsport, and implement DestinationDataProvider's getSSLContext (and, for mTLS, getClientCertificate) since the new connection runs over TLS. It covers building the PKI trust on both sides — a local PKCS12 keystore for the Java side, STRUST's SSL-Server Standard certificate exported and imported for mutual trust on the ABAP side — and notes that on BTP, JCo paired with the Destination service already implements this via the Connectivity service, so the custom SSLContext work can be skipped there.simon_luser, published 2025-01-21
SAP Event Mesh: S4 HANA On-Prem and SAP CI(BTP IS) through WebSocket and WebhooksSAP Event Mesh: S4 HANA On-Prem and SAP CI(BTP IS) through WebSocket and WebhooksA step-by-step walkthrough of wiring Event Mesh to publish and consume events between an on-premise S/4HANA system and Cloud Integration, contrasting persistent queues (one subscriber, kept until consumed) against unpersisted topics, and WebSocket's AMQP transport against webhook delivery for the same queue. Two tested findings support it: a queue consumer running in continuous consumption mode receives a message ahead of a webhook on the same topic, and a message stays queued and is retried (almost 8770 times in under a minute, in the author's test) until the consumer processes it successfully.FarooqAhmed, published 2023-10-03
Streaming LLM Output with CAP and WebSocketsStreaming LLM Output with CAP and WebSocketsTokens arriving from the AI SDK's orchestration module, forwarded to the browser as they come rather than after the model finishes. Covers all four pieces — enabling WebSocket support in CAP, a service with actions and events, the streaming itself, and a frontend on the native WebSocket API — which is what makes it the clearest case for why a CAP service would want a socket at all.RobinP, published 2025-11-18
Streaming LLM Output with CAP and WebSockets
LLM integration changed in @cap-js/ai 1.0.0, 2026-04-28. Affects A recipe, Runnable code.
Federated Machine Learning with SAP DatasphereFederated Machine Learning with SAP DatasphereSAP's design for training predictive models on an external machine learning platform against SAP Datasphere data that is not replicated to that platform. The open-source FedML Python library runs in the platform's notebook, connects to Datasphere over Python/SQLDBC and reads the analytic models in which Datasphere unifies SAP and non-SAP sources; a trained model can then be deployed to SAP AI Core, or in several sub-pages to SAP BTP, Kyma runtime, which is the predictive models path where training happens outside SAP. Sub-pages cover Amazon SageMaker, Azure Machine Learning, Google Vertex AI, Databricks, NVIDIA RAPIDS on GPUs and IBM watsonx.published 2025-01-23
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.
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.
Building an Attachment Upload and Download Solution Using UploadSetwithTable ControlBuilding an Attachment Upload and Download Solution Using UploadSetwithTable ControlThe successor control to UploadSet posts the file in one request by default, and against CAP that is wrong: the record has to be created first and the content put to it afterwards. The author states the two-step shape plainly and notes it may not apply to an ABAP backend, which is the kind of boundary that usually goes unsaid. Written during a proof of concept for a reusable attachment component, and it carries the problem they hit with the control.published 2025-03-13
Configure Journal Entry Posting Approval from Store Template in Build Process AutomationConfigure Journal Entry Posting Approval from Store Template in Build Process AutomationWalks through deploying SAP's Journal Entry Posting Approval template from the SAP Build Process Automation Store against an on-premise S/4HANA system that has no Secure Network Connection: destinations for S/4HANA via Cloud Connector, for SAP Document Management service, integration option to hold the approval's supporting documents, and for the BPA service and its SMTP mail. It then swaps the template's SNC action groups for basic-connection BAPI calls and deploys the approval's UI5 applications so the task lands in My Inbox, with a Desktop Agent registered to run the unattended document-check and document-post automations.published 2025-01-28
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.
Major updates to the Attachments plugin – multi-cloud support, malware scanning and moreMajor updates to the Attachments plugin – multi-cloud support, malware scanning and moreMulti-cloud storage and malware scanning added to the official plugin, framed through CAP's Calesi pattern — the argument being that a service interface is what lets the storage underneath change without the application noticing. The post that a triage bug hid: "attachment" had stopped matching "Attachments".published 2025-12-02
Major updates to the Attachments plugin – multi-cloud support, malware scanning and more
@cap-js/attachments 3.4.0, now 4.0.0, com.sap.cds:cds-feature-attachments 1.2.2. Affects A recipe, 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
Uploading attachment with cap-js/attachment plugins but via External App/PostmanUploading attachment with cap-js/attachment plugins but via External App/PostmanThe plugin is written for a Fiori elements front end; this is the case where the caller is neither — Postman and a React app. Short, and it exists because the request shape is not obvious from outside the generated UI: what to POST, what to PUT, and in which order.published 2025-07-24
Use SAP Document Management Service Plugin In CAP NODEJS Step by Step GuidanceUse SAP Document Management Service Plugin In CAP NODEJS Step by Step GuidanceThe official plugin is documented in capire; this is somebody who set it up anyway and wrote down where it went wrong. The author says as much — the point is to spare customers the troubles, so the value is in the order of the steps and the prerequisites, not in the API.Jacky_Liu1, published 2025-03-06
Boosting performance in SAP Cloud Application Programming Model (CAP) applications with cds-cachingBoosting performance in SAP Cloud Application Programming Model (CAP) applications with cds-cachingThe plugin's introduction post: what cds-caching is for, how it is put together and the cases it was written against. The edge holds because the plugin's README still points here as the piece to read first, so this is where a reader arriving at the plugin is sent. It predates version 1.0 and the API has moved since: the read-through calls it shows as cache.run() and cache.send() are the ones the README now lists as deprecated in favour of cache.rt.*, which returns the cache key and hit/miss metadata alongside the result, and 1.0 made user, tenant and locale awareness opt-in under keyManagement rather than folding them into request-based keys by default. Metrics and monitoring, the OData API and full TypeScript definitions arrived with 1.0 and are described in CAP just got faster: What's new in cds-caching 1.0 instead. The reasoning about when a CAP service wants a cache still reads true; the call sites need translating.published 2025-06-25
Boosting performance in SAP Cloud Application Programming Model (CAP) applications with cds-caching
cds 9, maintenance until 2027-06, cds-caching 0.x, now 3.1.1. Affects A recipe.
CAP just got faster: What's new in cds-caching 1.0CAP just got faster: What's new in cds-caching 1.0What changed in cds-caching at 1.0, announced at reCAP 2025 by the plugin's own maintainer. The substantive change is the read-through API: cache.rt.run(), send(), exec() and wrap() replace the bare cache.run() and cache.send(), and each returns the cache key and hit-or-miss metadata beside the result rather than the value alone. The second is quieter and easier to miss on an upgrade: user, tenant and locale stopped being folded into request-based cache keys by default and became opt-in through keyManagement, or per operation through a key template. Both of those still describe 3.x. What does not is the second half of the post: the metrics configuration it shows was reshaped at 2.0 and the statistics and dashboard settings were removed at 3.0, so take the monitoring and dashboard sections from the README instead. Read it as the successor to the introduction post, which still shows the deprecated calls.published 2025-07-15
CAP just got faster: What's new in cds-caching 1.0
cds-caching 1.0, now 3.1.1, cds 9, maintenance until 2027-06. Affects A reference.
Performance Boost and Caching Strategy for Faster Data Access using "cds-caching" in SAP CAPPerformance Boost and Caching Strategy for Faster Data Access using "cds-caching" in SAP CAPSomebody else's account of using the plugin, which is the useful counterpart to its documentation. The case is specific: a master-data entity of more than a million rows, rarely written and constantly read, where the read-heavy shape is what makes caching worth the complexity rather than a general performance wish. Walks through integrating cds-caching into that application and what it changed.NaveenChandar, published 2025-03-04
Performance Boost and Caching Strategy for Faster Data Access using "cds-caching" in SAP CAP
cds-caching has been through 4 major lines since this was published, most recently 1 (2025-07), 2 (2026-07), 3 (2026-08). 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
[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
A CAP Plugin for Flexible Number Range Management: cds-numberrange-pluginA CAP Plugin for Flexible Number Range Management: cds-numberrange-pluginThe author's own plugin, and the reason given for writing it is about plugins rather than about number ranges: a year of using them convinced them that this was the way to extend CAP without leaving marks on the application. Sequential document numbers are the thing it does; keeping the host project clean is the thing it argues for.abdulbasit, published 2025-06-17
Building an Enterprise Application Using Fiori Elements and CAP - Part 1Building an Enterprise Application Using Fiori Elements and CAP - Part 1Part one of three, and it is all backend: the CAP service the UI will sit on. The author states the constraint the series works under — simple enough for someone new to the stack, without departing from the standard project layout.Farooq, published 2025-12-10
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
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
Understanding Projections in CAPM: Select Only What You Need!Understanding Projections in CAPM: Select Only What You Need!One concept, explained by someone who had just learned it and says so — what a projection is, why it matters, and an analogy. The register is unusual here and suits the subject: projections are the first thing that makes CDS feel different from a table.Avisek_, published 2025-06-10
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
Accelerating Your Analytics with Delta Table Replication into SAP HANA CloudAccelerating Your Analytics with Delta Table Replication into SAP HANA CloudStarting with QRC 04/2025, SAP HANA Cloud can replicate a Delta Lake table from an external Delta Sharing source directly into a native HANA table, rather than only querying it live through a virtual table. The post walks through creating a remote subscription, running a chunk-based initial load, and setting up change data capture on a schedule or on demand, each with the SQL statements and monitoring views involved, plus the simpler virtual-table-toggling and HANA Cloud Central UI alternatives.SeungjoonLee, published 2025-12-22
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
CAPM Basics - Part 2CAPM Basics - Part 2Walks through deploying a CAP application to SAP BTP, Cloud Foundry Runtime: provisioning a SAP HANA Cloud instance and HDI container, then running cds add hana and cds add xsuaa --for production, cds build --production, and an MTA build and deploy. Tests the deployed service in Postman with an OAuth 2.0 client credentials token from the XSUAA binding (SAP Authorization and Trust Management service), explicitly leaving out any role templates or scopes.archisman92, published 2025-02-28
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.
Creating a Hybrid CAP (Node.js) Profile with PostgreSQL on BTP from Business Application StudioCreating a Hybrid CAP (Node.js) Profile with PostgreSQL on BTP from Business Application StudioHybrid testing is documented for HANA; this is the same profile against a PostgreSQL instance on BTP, driven from a BAS dev space rather than a laptop. Proposed under editor support because of where it runs, but the subject is the binding: what cds bind writes, and what has to be true of the service instance and the tunnel for a local process to reach it.valentincadart, published 2025-10-02
Creating a Hybrid CAP (Node.js) Profile with PostgreSQL on BTP from Business Application Studio
Database connectors changed in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
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
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.
Lets Talk to the Database - CAP & SQLite Powered by Google Gemini-2.5-ProLets Talk to the Database - CAP & SQLite Powered by Google Gemini-2.5-ProNatural language against a CAP service on SQLite, with a non-SAP model doing the translation. Written as a learning exercise rather than a pattern, and the choice of Gemini over anything in the AI hub is the interesting part of it.ShivamShuklaSAP, published 2025-04-16
Medallion Reference Architecture for Big Data Processing in SAP HANA CloudMedallion Reference Architecture for Big Data Processing in SAP HANA CloudSAP's medallion layout for SAP HANA Cloud: structured, semi-structured and unstructured data lands raw in HANA Cloud, data lake files as the bronze layer, is cleansed into a common structure in silver, held in data lake files or the HANA database, and is curated and read-optimised in gold, from where it can also be exposed as a Delta Share. The staged path from raw to consumable is the ground loading a warehouse covers, with Spark jobs and SAP Datasphere data flows named as ways to move data between layers and SAP Analytics Cloud among the consumers of gold. It leaves the ingestion method open, to be chosen by source, freshness and performance, and names no pipeline or schedule beyond that.published 2025-04-03
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
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 CAP Lessons Learned: SQLite is single threaded, HANA is notSAP CAP Lessons Learned: SQLite is single threaded, HANA is notA page long, and one of the more useful pages here: the local database serialises what the deployed one runs in parallel, so concurrency bugs are invisible until they are not. Filed by the author as something the tutorials do not make clear.LucasMagriniRigo, published 2025-01-22
SAP CAP With Prostgres Serice in BTPSAP CAP With Prostgres Serice in BTPA step-by-step walkthrough of a CAP bookshop project on @cap-js/postgres, provisioning PostgreSQL on SAP BTP, hyperscaler option's trial plan through mta.yaml, building the MTA archive and deploying it to Cloud Foundry by hand, then inspecting the deployed database with pgAdmin over an SSH tunnel. It updates an earlier post by Mike Zaschka on the same topic to the package CAP now ships by default, though the manual build-and-deploy sequence it shows predates cds up folding those steps into one command by a day.satya-dev, published 2025-03-30
SAP HANA Cloud as an Esri GeodatabaseSAP HANA Cloud as an Esri GeodatabaseSAP's design for running an Esri ArcGIS Enterprise geodatabase inside SAP HANA Cloud, so that geometries and SAP business data sit in one database and are joined in a HANA calculation view, which is the spatial part of graph, spatial and document data. It traces three personas: an analyst in ArcGIS Pro building query layers over that view, a developer whose CAP application models spatial types such as ST_Point in CDS, and an analyst using a Fiori app on top of such an application. The deployment advice stops at placement: ArcGIS Server and HANA Cloud go in the same region and availability zone, because Esri's certified architectures allow under 5 milliseconds of network latency between them.published 2025-03-25
Using HANA Cloud’s "VECTOR_EMBEDDING" Function in CAPUsing HANA Cloud’s "VECTOR_EMBEDDING" Function in CAPEmbeddings generated inside the database rather than fetched from AI Core or an external model — a Q4 2024 HANA Cloud function, used from CAP. The shift it describes is where the embedding step lives, which changes what has to be deployed and what has to be called.published 2025-03-02
SAP HANA Cloud as an Esri GeodatabaseSAP HANA Cloud as an Esri GeodatabaseSAP's design for running an Esri ArcGIS Enterprise geodatabase inside SAP HANA Cloud, so that geometries and SAP business data sit in one database and are joined in a HANA calculation view, which is the spatial part of graph, spatial and document data. It traces three personas: an analyst in ArcGIS Pro building query layers over that view, a developer whose CAP application models spatial types such as ST_Point in CDS, and an analyst using a Fiori app on top of such an application. The deployment advice stops at placement: ArcGIS Server and HANA Cloud go in the same region and availability zone, because Esri's certified architectures allow under 5 milliseconds of network latency between them.published 2025-03-25
Medallion Reference Architecture for Big Data Processing in SAP HANA CloudMedallion Reference Architecture for Big Data Processing in SAP HANA CloudSAP's medallion layout for SAP HANA Cloud: structured, semi-structured and unstructured data lands raw in HANA Cloud, data lake files as the bronze layer, is cleansed into a common structure in silver, held in data lake files or the HANA database, and is curated and read-optimised in gold, from where it can also be exposed as a Delta Share. The staged path from raw to consumable is the ground loading a warehouse covers, with Spark jobs and SAP Datasphere data flows named as ways to move data between layers and SAP Analytics Cloud among the consumers of gold. It leaves the ingestion method open, to be chosen by source, freshness and performance, and names no pipeline or schedule beyond that.published 2025-04-03
HANA Database Migration: Handling Incompatible Changes to Existing TablesHANA Database Migration: Handling Incompatible Changes to Existing TablesThe question schema evolution exists for, asked plainly: how do you restructure a table in a production system that already holds live data. Incompatible changes are the ones CAP's own alter path will not make, which is where this starts.Sekar Somasundaram, published 2025-04-16
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
Semantic search in CAP (Node.js): vector embeddings and cosine similaritySemantic search in CAP (Node.js): vector embeddings and cosine similarityFinding the best semantic match for a prompt inside an entity, using local vector embeddings and cosine similarity — and the finding the author leads with is that it works without a vector database at all. Reported as experiments rather than as a pattern, which is the honest register for it: the interesting claim is how little infrastructure the simple case needs.published 2025-12-09
A simple example of a SAP RAP Application based on Legacy API without UUID keysA simple example of a SAP RAP Application based on Legacy API without UUID keysWalks through building a managed RAP business object over the Flight Reference Scenario's Travel and Booking entities with unmanaged save and late numbering, so CRUD operations route through the legacy /DMO/FLIGHT_TRAVEL_CREATE, _UPDATE and _DELETE function modules instead of generated persistence, a worked case of ABAP's transactional model. Covers the ADJUST_NUMBERS and SAVE_MODIFIED saver methods that map preliminary draft keys to the legacy-assigned travel and booking IDs, and a GetDefaultsForBookings action that proposes the next booking ID during draft handling.cseijas, published 2025-09-01
BEHAVIOR_ILLEGAL_STATEMENT dump | Technical workaroundsBEHAVIOR_ILLEGAL_STATEMENT dump | Technical workaroundsThe BEHAVIOR_ILLEGAL_STATEMENT dump fires in SAP RAP when an explicit COMMIT WORK or ROLLBACK WORK, or a direct database write, collides with RAP's own transactional model: a Logical Unit of Work split into an interaction phase, where changes sit in a transactional buffer, and a save sequence that validates and persists them. The post then names four ways to move the offending statement into a separate task instead — the Background Processing Framework, parallel processing, Application Jobs, or, on-premise only, a wrapper RFC function module called with DESTINATION 'NONE' — pointing to further reading for each rather than working through any of them here.PranayGaroo, published 2025-08-11
BO Interface APIs : An alternative to BAPIs and traditional FMsBO Interface APIs : An alternative to BAPIs and traditional FMsWalks through updating an S/4HANA Purchase Order's line items through a released BO interface instead of a BAPI, using EML against the underlying CDS entity and a COMMIT ENTITIES statement because the call sits outside a behavior class. Argues the BO interface route avoids a RAP behavior class's restriction against calling COMMIT WORK directly, and covers finding a released interface's CRUD operations on api.sap.com and extending the same approach to a custom field or a custom RAP-based Fiori app's own BO.Sudhan_Nagarajan, published 2025-07-02
ABAP code to wait for the end of "inbound bgRFC type Q" unitsABAP code to wait for the end of "inbound bgRFC type Q" unitsWalks through inbound bgRFC type Q — ABAP's queue-based flavor of async processing built on background remote function calls — and gives a helper ABAP class that polls cl_qrfc_client_inbound for each unit's and queue's state until every unit submitted across a set of parallel qRFC queues has finished. The method assumes no single unit spans more than one inbound queue, and the author flags the classes it relies on, cl_qrfc_client_inbound=>get_unit_state and get_queue_state, as unverified for this use.Sandra_Rossi, published 2025-10-07
Beginners Guide to Advanced Event MeshBeginners Guide to Advanced Event MeshA scenario-by-scenario walkthrough of Advanced Event Mesh, run through Cloud Integration iFlows: publishing and consuming queue messages, dead message queue setup with retry counts and acknowledgment modes, direct messages, durable topic endpoints and selectors, time-to-live, REST Delivery Points, replay by replication group message ID, parallel consumers with partition keys, and the request-reply pattern. Each scenario is built and verified step by step against a Solace trial account standing in for AEM.PriyankaChak, published 2025-07-24
Cloud-Native with ABAP Cloud – The Transactional Outbox PatternCloud-Native with ABAP Cloud – The Transactional Outbox PatternImplements the transactional outbox pattern in ABAP Cloud's background processing framework (bgPF): a RAP business object's save sequence registers a bgPF handler implementing IF_BGMC_OP_SINGLE, and the RAP runtime runs it, and only then emits the message, after the database commit succeeds, so a rolled-back transaction emits nothing. The post walks through the full working example published as SAP-samples/abap-platform-rap-transactional-outbox-with-bgpf.published 2025-11-12
DIY JDBC Sender Adapter for SAP Integration SuiteDIY JDBC Sender Adapter for SAP Integration SuiteSimulates the JDBC Sender Adapter that SAP Integration Suite dropped from SAP PO by polling a source database with a Request/Reply step, triggered by a configurable scheduler or a manual HTTP call, and writing the result to a DataStore or JMS Queue to decouple polling from mapping and insertion. Retries run against a configured maximum, a failed batch escalates to a Dead Letter Queue once they are exhausted, and a mapping failure skips retries and escalates straight away from its own local subprocess. The author reports migrating several SAP PO scenarios onto this flow design and offers a reusable template on request.lanza, published 2025-10-21
Quick tip: event/task scheduling in CAP Node.js (in alpha state)Quick tip: event/task scheduling in CAP Node.js (in alpha state)A note on something spotted in capire's May 2025 release notes rather than a technique: CAP Node.js is to support scheduling events — actions and functions included — with callbacks, currently alpha and explicitly subject to change. Useful as a dated marker of the core moving into ground the community has been covering, and the alpha caveat is the point rather than a footnote.published 2025-10-30
Completing the B2B migration into SAP Integration Suite visionCompleting the B2B migration into SAP Integration Suite visionWalks through migrating SAP PI's B2B integrations — EDIFACT, X12 and other partner formats — into Trading Partner Management in SAP Integration Suite: recording test messages from SAP PI, creating partner profiles, and filling a Self Partner Agreement template that references the MIG and MAG guidelines SAP's own migration path builds on. The author's migration tool, Figaf, turns each Operation Mapping into a Process Direct flow, carrying its UDFs to Groovy or SAP's Cloud Integration Function Libraries, then reruns the recorded test cases against the result.DG, published 2025-09-09
CAP Service to Fetch + Create Sales Order in S4 HANA Public CloudCAP Service to Fetch + Create Sales Order in S4 HANA Public CloudA CAP Node.js walkthrough imports SAP S/4HANA Cloud's Sales Order OData API with cds import, adds csrf handling to the generated service definition, and forwards a custom REST action's reads and writes to the remote proxy through cds.connect.to, the pattern Service integration covers. The mta.yaml binds the SAP S/4HANA Cloud extensibility service and a SAP Destination service instance so the S/4HANA Public Cloud system's address and credentials stay outside the application, per Destinations.Mujeeb, published 2023-05-30
Configure Journal Entry Posting Approval from Store Template in Build Process AutomationConfigure Journal Entry Posting Approval from Store Template in Build Process AutomationWalks through deploying SAP's Journal Entry Posting Approval template from the SAP Build Process Automation Store against an on-premise S/4HANA system that has no Secure Network Connection: destinations for S/4HANA via Cloud Connector, for SAP Document Management service, integration option to hold the approval's supporting documents, and for the BPA service and its SMTP mail. It then swaps the template's SNC action groups for basic-connection BAPI calls and deploys the approval's UI5 applications so the task lands in My Inbox, with a Desktop Agent registered to run the unattended document-check and document-post automations.published 2025-01-28
Configuring SAP Cloud Integration for an IBP to S/4HANA (on prem / private cloud) integrationConfiguring SAP Cloud Integration for an IBP to S/4HANA (on prem / private cloud) integrationWalks through creating the two BTP destinations an Cloud Integration iflow needs for an IBP-to-S/4HANA integration: one of type RFC with a WebSocket RFC server host and port for the IBP tenant, and one of type RFC with the on-premise proxy type, a Cloud Connector location ID and a virtual host for the S/4HANA system. It then has the reader copy SAP's prebuilt IBP integration packages into the Design workspace and deploy every reusable iflow in them before a business iflow can call the S/4HANA extractor through SAP Connectivity service.SofianePebre, published 2025-08-27
Connect to Public Cloud API in Node.js via Authorisation CodeConnect to Public Cloud API in Node.js via Authorisation CodeThe authorisation code flow rather than client credentials, which is the harder half: a service key, an XSUAA instance bound to the CAP app, and a destination, with the author saying plainly that this was challenging and they hope it saves somebody the same time.Egan, published 2025-07-22
Connecting On Premise Mail Destination and Sending Email Using SAP Cloud SDK JavaScript Version 3 on SAP CAPConnecting On Premise Mail Destination and Sending Email Using SAP Cloud SDK JavaScript Version 3 on SAP CAPMail from CAP through a company's own SMTP server rather than a hosted one, which is the case the existing answers did not cover — the author names them and says why each failed here: one needed an SMTP provider like Mailtrap, another solved it in Java. What is left is the connectivity: an on-premise mail destination reached from Node, and a hybrid profile to test it against.codebrokerad, published 2023-02-14
Connecting On Premise Mail Destination and Sending Email Using SAP Cloud SDK JavaScript Version 3 on SAP CAP
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects Runnable code.
Consuming data from SAP Datasphere in SAP BTP CAP ApplicationsConsuming data from SAP Datasphere in SAP BTP CAP ApplicationsDatasphere as the source a CAP application reads from — the case for it being that Datasphere already unified the SAP and non-SAP data, so the application does not have to. From a real project.sudheer-tammana, published 2025-06-03
Developing Mobile Apps with SAP BuildDeveloping Mobile Apps with SAP BuildA tutorial that builds a cross-platform mobile app with the Mobile Development Kit on top of the CAP-based data service from the author's earlier posts, using the mobile Dev Space in SAP Business Application Studio to configure and deploy the app to SAP Mobile Services. It sets up the mobile destination against SAP Destination service two ways — reusing the BTP destination already created for the CAP service, or an Internet Destination with OAuth2 User Token Exchange and a manually retrieved client secret — and turns on Cross Context SSO so a token issued in the browser carries into the generic SAP Mobile Services Client app on the phone.published 2025-05-22
Establishing connectivity between a local CAP runtime and on-premise systemsEstablishing connectivity between a local CAP runtime and on-premise systemsReaching S/4HANA, an on-premise HANA or any HTTP service from a CAP process running on your laptop — the case where the connectivity proxy the platform provides is not there and the tunnel has to be arranged.vLeonkev, published 2025-10-15
Exposing SAP S4 Onprem data to external System || Odata Service || BTP || Destination-ConnectivityExposing SAP S4 Onprem data to external System || Odata Service || BTP || Destination-ConnectivityA walkthrough that wraps an IDOC-reprocessing function module in a RAP OData service on S/4HANA on-premise, then reaches it from a Python app on Cloud Foundry by looking the on-premise system up through the Destinations service and calling it through SAP Connectivity service proxies behind Cloud Connector. It walks through the destination and connectivity service keys, resolving the destination's URL and credentials, and the connectivity-service token and proxy call needed to reach the on-premise OData endpoint, noting the app must run on Cloud Foundry since destination and connectivity lookups do not work from a local machine.Ace_D, published 2025-07-24
Extending SAP Sales and Service Cloud V2 Using CAPExtending SAP Sales and Service Cloud V2 Using CAPAn extension target that does not run on BTP at all — Sales and Service Cloud V2 sits directly on hyperscalers — so the separation between core and extension is enforced rather than encouraged. That constraint is what makes the post worth reading.Quablab, published 2025-07-09
From REST to Datasphere: A CAP-based Integration ApproachFrom REST to Datasphere: A CAP-based Integration ApproachThe reverse direction and a second attempt: the authors had already written data into Datasphere with a small FastAPI service on the OPEN SQL schema, and this is what changed when they rebuilt it on CAP.christian_willi, published 2025-09-30
Hey ABAP Cloud please let me save my data export to Azure Storage please🥺🙏- part 4Hey ABAP Cloud please let me save my data export to Azure Storage please🥺🙏- part 4Walks through reaching Azure Blob Storage from ABAP Cloud without an intermediary Cloud Foundry app: an OAuth2 client credentials flow against Microsoft Entra ID, driven either through cl_http_destination_provider and the SAP Destination service at subaccount or Cloud Foundry-space level, or through the SAP_COM_0276 communication scenario and Communication Management. Notes that SAP marks the destination-service route deprecated for ABAP Cloud even though it alone offers management APIs and cross-tenant reuse, and closes on automating the resulting client-secret rotation with Azure Key Vault.published 2023-11-21
How to Call a Remote OData API from Your Local CAP Java ProjectHow to Call a Remote OData API from Your Local CAP Java ProjectThe Business Accelerator Hub sandbox called from a CAP Java project on a laptop, with a concrete finish line — a localhost URL that returns business partners. Everything needed to get there is listed, Maven and JDK versions included.Umezuki, published 2025-08-11
Part 2: Architecting SaaS Resilience Against S/4HANA VariancePart 2: Architecting SaaS Resilience Against S/4HANA VarianceThe unspoken problem it names is a good one: a multitenant SaaS application faces not one S/4HANA but every customer's, each at a different release with different extensions. What resilience means when the backend varies per tenant.michal_majer, published 2025-10-20
SAP BTP Destinations in a Nutshell Part 1 - Motivation & NoAuthentication DestinationsSAP BTP Destinations in a Nutshell Part 1 - Motivation & NoAuthentication DestinationsOpens a series on SAP BTP Destinations by walking through the simplest case, a NoAuthentication destination from one CAP Node.js app to another on Cloud Foundry, shown two ways: executeHttpRequest from @sap-cloud-sdk/http-client, and a manual sequence that reads the destination service's credentials from VCAP_SERVICES, fetches an OAuth token, and requests the destination by name before calling its URL. The manual path is written deliberately verbose to show what the Cloud SDK call does behind the scenes; later parts of the series cover the other destination types.JakobFra, published 2023-05-23
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
Secure Service Consumption Across HyperscalersSecure Service Consumption Across HyperscalersSAP's design for a workload on SAP BTP that calls Amazon Web Services or Google Cloud services with short-lived credentials instead of stored keys, which is the outbound side of authentication: the BTP application proving who it is to another cloud. On AWS it draws two paths, an ID token from Identity Authentication in Cloud Identity Services exchanged through AWS STS for an IAM role, or an X.509 certificate kept in SAP Destination service and presented to IAM Roles Anywhere; on Google Cloud only the token path, through Workload Identity Federation and an impersonated service account. It is drawn for those two hyperscalers only, and Microsoft Azure has no page in it.published 2025-05-14
Sending Emails from SAP CAP Applications with Any SMTP ProviderSending Emails from SAP CAP Applications with Any SMTP ProviderWalks through sending mail from a CAP application with no dedicated mail service: create an SMTP destination for a Gmail account in the SAP BTP cockpit, bind it to the Cloud Foundry app, and call the sap-cf-mailer npm package from a CAP service handler naming that destination. The SAP Destination service holds the SMTP host, port and app password so the handler code names only the destination, and the same handler sends plain text, an HTML body, or a message with a base64-encoded attachment.MaheshSirsat1708, published 2025-08-19
Set up the SAP Cloud Connector: Integrating On‑Premise Systems with Cloud ServicesSet up the SAP Cloud Connector: Integrating On‑Premise Systems with Cloud ServicesA step-by-step walkthrough of installing Cloud Connector, adding a subaccount, managing identity and trust certificates in STRUST, and mapping cloud-to-on-premise paths for an SAP HANA backend. It ends by creating a Destinations entry in SAP BTP with proxy type OnPremise and basic authentication, then testing it from SAP Business Application Studio.Thijn_Grilis, published 2025-06-12
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
从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
A cross application Fiori APP to print Adobe FormsA cross application Fiori APP to print Adobe FormsWalks through building a custom Fiori app that turns an existing Adobe print form (purchase orders, billing documents) into a downloadable PDF: a function module calls the standard form-data-provider interface to render the form, a SEGW OData service streams the result through a media entity's GET_STREAM, and a parameterised CDS view feeds a Fiori elements list with a download link per document. Two custom Z-tables supply the name-value pairs the form template needs, which the author flags as a stopgap for values that could be derived at runtime instead.padchalingam, published 2025-07-22
Basic code's of ABAPBasic code's of ABAPNine standalone ABAP reports built around REUSE_ALV_GRID_DISPLAY and CL_SALV_TABLE, covering display, screen validation, spool creation, Excel upload and table maintenance without SM30. One report raises and catches a custom exception class with RAISE EXCEPTION and TRY/CATCH, the class-based mechanism error handling names for ABAP; another submits a job to spool, converts it to PDF with CONVERT_ABAPSPOOLJOB_2_PDF and exports a CL_SALV_TABLE result to Excel before mailing both, producing document output from spool rather than Form Builder.RakeshZore, published 2025-09-30
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
How to Merge Two Separate Smart Forms into a Single PDF in SAPHow to Merge Two Separate Smart Forms into a Single PDF in SAPWalks through generating two separate Smart Forms as OTF, converting each to PDF with CONVERT_OTF, then combining them into one file with cl_rspo_pdf_merge before downloading the result to the frontend. The whole flow runs inside the ABAP system that holds the data, from SMARTFORMS-built forms to a single merged PDF on the local device.chandu_kumar_badukuri, published 2025-12-17
Merge multiple PDF forms into a single document for download or printing.Merge multiple PDF forms into a single document for download or printing.Faced with bundling several Adobe-Forms-generated PDFs into one file, where FP_JOB_OPEN could not handle the parameters a bundled FP_GET_PDF_TABLE output needed and the forms themselves could not be changed, the author merges the individual PDFs at runtime with the CL_RSPO_PDF_MERGE class instead. Walks through opening the spool job with FP_JOB_OPEN, generating each form via its FP_FUNCTION_MODULE_NAME-resolved function module, adding each result's xstring to the merger with add_document, then calling merge_documents and converting the result for GUI_DOWNLOAD or printing.MiljanDjuric, published 2025-06-17
Using Custom Actions to display PDF from SAP BTP Forms service into a CAP SAPUI5 applicationUsing Custom Actions to display PDF from SAP BTP Forms service into a CAP SAPUI5 applicationA requirement that arrived after the application was finished — render a PDF from the record currently open on an object page — and the join it needed: the Forms service bound to the CAP application, a custom action on the service, and a button on the object page header calling it.rodfior, published 2023-01-30
[Blog Post] SAP Event Mesh - Consuming S4 events simultaneously in CAP-based applications and SAP Integration Suite[Blog Post] SAP Event Mesh - Consuming S4 events simultaneously in CAP-based applications and SAP Integration SuiteOne S/4HANA event, two consumers at once: a CAP Java application and SAP Integration Suite. Late in a long Deep Dive series and written as such — the queues, the S/4HANA connection and the Integration Suite side were all established in earlier posts, so this is the part where they meet.AyushKumar and vipul.khullar, published 2023-03-24
[Blog Post] SAP Event Mesh - Consuming S4 events simultaneously in CAP-based applications and SAP Integration Suite
Event Mesh changed in @sap/cds 10.0.3, 2026-07-02. Affects Runnable code.
Beginners Guide to Advanced Event MeshBeginners Guide to Advanced Event MeshA scenario-by-scenario walkthrough of Advanced Event Mesh, run through Cloud Integration iFlows: publishing and consuming queue messages, dead message queue setup with retry counts and acknowledgment modes, direct messages, durable topic endpoints and selectors, time-to-live, REST Delivery Points, replay by replication group message ID, parallel consumers with partition keys, and the request-reply pattern. Each scenario is built and verified step by step against a Solace trial account standing in for AEM.PriyankaChak, published 2025-07-24
Complete Guide: Setting Up CAP Plugin for Advanced Event Mesh with OAuth AuthenticationComplete Guide: Setting Up CAP Plugin for Advanced Event Mesh with OAuth AuthenticationWritten because the plugin's own documentation stops short of the prerequisites and the author had to assemble them from three other sources and a help chapter. It joins them: the OIDC application in Identity Authentication, the OAuth profile in Broker Manager, the token checked before anything is wired, and only then the plugin. The author says plainly it came out of trial and error and was going to be a README.rpagni, published 2025-11-10
Designing Event-Driven ApplicationsDesigning Event-Driven ApplicationsSAP's guidance for building applications on event-driven architecture with BTP services. It sets out a two-part strategy: SAP Cloud Application Event Hub for events between SAP cloud applications and BTP, and the SAP Integration Suite family for dedicated event brokers in hybrid landscapes. Its sub-pages then cover EDA patterns, design considerations and AWS and Azure IoT integration. The framing is integration between systems; the in-process outbox and queueing inside one CAP service are not its subject.published 2025-10-10
Enhancing SAP Business Events with Custom Payload Fields using RAPEnhancing SAP Business Events with Custom Payload Fields using RAPWalks through enriching an outbound Business Partner event for Event Mesh that by default carries only the partner ID: a derived RAP business event, raised from a behaviour definition with RAISE ENTITY EVENT and bound through SWE2 event linkage to a receiver function module, adds first and last name to the payload. The custom event is defined on a root view entity over BUT000 and verified in /IWXBE/EVENT_MONITOR, where the enriched JSON payload shows the extra fields reaching subscribers without an additional callback to the source system.BramhaniG, published 2025-10-27
Event Driven Architecture with Event Mesh – Part-2Event Driven Architecture with Event Mesh – Part-2Part 1 published a message and stopped there; this closes the loop by giving it somewhere to go. A REST API built in Integration Suite is registered as a webhook on the Event Mesh queue, and the chain is run end to end — CAP to Event Mesh to Integration Suite to Twilio — so the consumer side and the webhook configuration are what this adds.Avinash_Vaidya, published 2023-01-30
Event Driven Architecture with Event Mesh – Part-2
Event Mesh changed in @sap/cds 10.0.3, 2026-07-02. Affects A recipe, Runnable code.
Event enabling SAP Data Replication Framework with Advanced Event Mesh & AIFAEMEvent enabling SAP Data Replication Framework with Advanced Event Mesh & AIFAEMWalks through connecting SAP's ABAP-side Data Replication Framework to Advanced Event Mesh by way of the AIFAEM add-on, bypassing SAP Cloud Integration: a custom ABAP class maps business-partner replication data into AIF, which publishes it to AEM in CloudEvents format. The author's own disclaimer favours the standard pattern instead — a Standard DRF Replication through an Integration Suite iFlow with the AEM adapter — and presents this direct, custom-ABAP route only as a documented alternative.AlexPfeil, published 2025-08-21
Getting Started with SAP Event Mesh: Concepts, Setup, and Best PracticesGetting Started with SAP Event Mesh: Concepts, Setup, and Best PracticesExplains SAP Event Mesh as SAP's managed messaging service and works through its core concepts: queues versus topics, publish-subscribe versus point-to-point delivery, and direct versus guaranteed messaging. A hands-on half wires a Solace event broker to SAP Cloud Platform Integration, with two iFlows publishing to and consuming from a queue and a topic over AMQP and HTTP REST.vvinay_kumar, published 2025-10-15
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
How to subscribe or fetch data from solace to CPI using AEM Adapter : part-5How to subscribe or fetch data from solace to CPI using AEM Adapter : part-5Closes a series on event-driven architecture with Solace by detailing the subscriber side of an iFlow in Cloud Integration: an advanced event mesh adapter feeds an exception subprocess, and a Groovy step classifies each failure as recoverable, left to Solace's own retry, or non-recoverable, answered with a custom property that tells Solace to stop retrying before the message reaches an escalation layer. The escalation layer names email, ServiceNow and Loggly as destinations without explaining any of them.pavanKolla, published 2025-08-03
How to use a CAP application to manage DMQ messages on SAP Advanced Event MeshHow to use a CAP application to manage DMQ messages on SAP Advanced Event MeshA CAP application built for the failure path rather than the happy one. Messages that land in a Dead Message Queue are deleted for good when their TTL expires, so this pulls them out first and holds them in quarantine, where a Fiori elements UI lets someone inspect a payload, correct it and reinject it. An operations tool, and a rare write-up of what to do after delivery has already failed.stefan-keuker, published 2025-12-31
How to use a CAP application to manage DMQ messages on SAP Advanced Event Mesh
Event Mesh changed in @sap/cds 10.0.3, 2026-07-02. Affects Runnable code.
Implementing Event-Driven Architecture in CAP Java using SAP Event MeshImplementing Event-Driven Architecture in CAP Java using SAP Event MeshPublish and consume from the Java stack, which most of the Event Mesh writing on the community does not cover. The MTA declaration and the credentials come first, then the emit and the handler, then the two sections that make it worth keeping: error handling with retries, and securing the events with OAuth.Soumya-Pirlamarla, published 2025-11-26
Implementing Event-Driven Architecture in CAP Java using SAP Event Mesh
Event Mesh changed in @sap/cds 10.0.3, 2026-07-02. Affects A recipe.
SAP EHS Public Cloud: Extending Your Existing Landscape Side-by-Side - Guidebook (Part 4)SAP EHS Public Cloud: Extending Your Existing Landscape Side-by-Side - Guidebook (Part 4)Two custom iFlows in SAP Integration Suite subscribe over AMQP to Event Mesh queues, triggered by SAP S/4HANA On-Premise's Enterprise Event Enablement channels publishing Equipment and Functional Location changes; each flow calls the on-premise OData API, maps the result, and pushes it into SAP S/4HANA Cloud Public Edition through the SAP_COM_0395 communication scenario. The synchronized Plant Maintenance data feeds SAP EHS Public Cloud's risk management, incident management and emissions management processes, which otherwise have no asset master data of their own.duynguyendeloitte, published 2025-11-28
SAP Event Mesh Architecture PatternsSAP Event Mesh Architecture PatternsNine architectural patterns for wiring producers and consumers through queues, topics and webhooks: single-subscriber point-to-point delivery, fan-out to multiple subscribers, filtering several event types into one subscriber, domain-scoped topic subscriptions, an aggregator that bundles related events, a multi-stage enrichment pipeline, scatter-gather over parallel requests, a dead-letter queue for poison messages, and pushing events to an HTTP webhook. Each pattern states its motivation, a pros-and-cons pair, when to use it and example queue or topic names.vbalko-claimate, published 2025-05-16
SAP Event Mesh: S4 HANA On-Prem and SAP CI(BTP IS) through WebSocket and WebhooksSAP Event Mesh: S4 HANA On-Prem and SAP CI(BTP IS) through WebSocket and WebhooksA step-by-step walkthrough of wiring Event Mesh to publish and consume events between an on-premise S/4HANA system and Cloud Integration, contrasting persistent queues (one subscriber, kept until consumed) against unpersisted topics, and WebSocket's AMQP transport against webhook delivery for the same queue. Two tested findings support it: a queue consumer running in continuous consumption mode receives a message ahead of a webhook on the same topic, and a message stays queued and is retried (almost 8770 times in under a minute, in the author's test) until the consumer processes it successfully.FarooqAhmed, published 2023-10-03
Using Apache Kafka for messaging in the SAP Cloud Application Programming Model (CAP) – Part 1/2Using Apache Kafka for messaging in the SAP Cloud Application Programming Model (CAP) – Part 1/2The theory half of a pair introducing cds-kafka: what the plugin is for and what it can do, with event-driven architecture set up as the reason rather than assumed. Nothing is deployed here — the running application is part two — so this is the post to read if the question is whether Kafka belongs in the picture at all rather than how to wire it.published 2025-01-02
Using Apache Kafka for messaging in the SAP Cloud Application Programming Model (CAP) – Part 2/2Using Apache Kafka for messaging in the SAP Cloud Application Programming Model (CAP) – Part 2/2The practical half: concrete use cases for cds-kafka, running locally and on BTP. It opens by placing the plugin among SAP's own event-driven offerings rather than beside them, which is the part that decides whether you reach for this or for Event Mesh — a comparison a plugin's own README rarely makes about itself.published 2025-01-13