BrowseAll ecosystems
Everything in the atlas
319 of 2341
Domain: 2
Signals
Content
More: 3
Group by: None
Domain Data & PersistenceDomain Integration & MessagingSource capireSource SAP Developer CenterSource SAP CommunityClear all
EntryBySignalsLast activity
[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.
[Blog Post] SAP Event Mesh – CAP based implementation of SAP Event Mesh in a Single-Tenant Scenario[Blog Post] SAP Event Mesh – CAP based implementation of SAP Event Mesh in a Single-Tenant ScenarioThe instalment of the Deep Dive series where the framework arrives. The earlier posts consumed Event Mesh over its REST API, so this one is explicitly a comparison: the same thing through CAP's messaging abstraction, with the three flavours — local, file-based and a real broker — named before the broker one is built.AyushKumar and vipul.khullar, published 2022-06-06
[Blog Post] SAP Event Mesh – CAP based implementation of SAP Event Mesh in a Single-Tenant Scenario
Event Mesh changed in @sap/cds 10.0.3, 2026-07-02. Affects A recipe, Runnable code.
[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
[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
#BTP #SAPCAP: Quirky Nuggets (N05-N06)#BTP #SAPCAP: Quirky Nuggets (N05-N06)On SAP BTP, Cloud Foundry Runtime, a one-shot PostgreSQL db-deployer app can be restarted by the platform's default port-type health check inside its 60-second timeout, re-running the deploy and duplicating data in the PostgreSQL database; setting health-check-type to process or http, via cf commands or the app's mta.yaml parameters, avoids it. In CAP, a remote service's entities are imported and consumed through cds.connect.to and queried via a projection, but its functions and actions cannot be projected: they must be redefined in the consuming service's own interface, with the handler forwarding the call to the remote proxy.published 2023-07-27
#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
2024/01最新版!Productivity Toolsを使ったCAPバックエンド開発②~HANA Cloud編~2024/01最新版!Productivity Toolsを使ったCAPバックエンド開発②~HANA Cloud編~In Japanese, and the second of a pair — database connection through to calling the API from outside, with authorisation in between. The author dates the screenshots explicitly and warns that the UI may have moved since, which is the right disclaimer for a click-through guide.takayuki_tanaka, published 2024-01-09
2024/01最新版!Productivity Toolsを使ったCAPバックエンド開発②~HANA Cloud編~
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
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
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
A method to create an Adobe form attachment for a work item using the class concept.A method to create an Adobe form attachment for a work item using the class concept.Walks through an ABAP workflow class, ZCL_WF_PDF, whose methods call an Adobe form through a Form-Builder-generated function module, convert the returned PDF between hexadecimal string and binary with SCMS_XSTRING_TO_BINARY and SCMS_BINARY_TO_XSTRING, and attach it to a work item via SAP_WAPI_ATTACHMENT_ADD and SAP_WAPI_WRITE_CONTAINER, with the class, background-task and SWDD workflow steps shown in full. It explains document output's ABAP route, rendering a PDF through the Form Builder and getting it back into the program, and a route into attachments's ABAP side distinct from Generic Object Services: a file attached to an SAP Business Workflow work item instead.Mithun_Sharma1, published 2026-08-21
A Natural Choice: SAP AIF can now expose events to Advanced Event Mesh to power your EDAA Natural Choice: SAP AIF can now expose events to Advanced Event Mesh to power your EDAAnnounces AIFAEM, a new software component of SAP Application Interface Framework that lets SAP ECC and older SAP S/4HANA backends create custom events from BOR objects and IDocs, in CloudEvents format, and publish them to SAP Integration Suite, advanced event mesh — closing the gap for backends that predate S/4HANA's own RAP-based standard events. It ships as the ABAP add-on AIFAEM731 (SAP NetWeaver 7.31, i.e. ECC) or AIFAEM800 (NetWeaver 7.55 and later), and its usage is included in an advanced event mesh subscription.KStrothmann, published 2024-07-29
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
A Use Case for HANA Cloud Knowledge Graph: AI‑Driven Tender AnalysisA Use Case for HANA Cloud Knowledge Graph: AI‑Driven Tender AnalysisMatching unstructured text against internal data, using both HANA engines at once — the Knowledge Graph for the relationships and the Vector Engine for similarity — with CAP holding the application and its data. Notes that the Knowledge Graph Engine is off by default and has to be enabled when the instance is created, which is the kind of thing that stops a weekend.giacomo_dantonio, published 2026-03-19
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
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
Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]Architecting Complex Real Life Business Scenario on SAP BTP with ease [ Targeting Multiple backend S/4HANA Systems utilizing Principal Propagation ]The opening of a three-part series on reaching more than one S/4HANA system from one CAP application with the user's identity carried through. This part sets up the business problem; the propagation itself is in the parts that follow.mohit_bansal3, published 2022-11-25
Automate BTP Custom Domain certificates using Let's EncryptAutomate BTP Custom Domain certificates using Let's EncryptCertificate lifecycle management as an application: a CAP backend, a Fiori elements UI, the Custom Domain service, Cloud Foundry routes and the Job Scheduler, so requests, renewals and cleanup stop being manual. Part two of the author's BTP Toolbox.Ben, published 2026-03-19
Automate Recurring Data Updates in SAP HANA CloudAutomate Recurring Data Updates in SAP HANA CloudA walkthrough for marking inventory rows stale after 30 days using SAP HANA Cloud's own scheduler: a SQLScript procedure, a CREATE SCHEDULER JOB statement with its 7-field cron pattern, the M_SCHEDULER_JOBS monitoring view, and the matching DROP statements to remove both. It then names where that approach stops and lists the alternatives for scheduling outside the database: SAP Integration Suite's Timer Event, the SAP Job Scheduling service, SAP Automation Pilot for infrastructure commands, and a custom approach for triggering scheduled REST calls from an application.Joni, published 2026-06-11
Automating iFlow Documentation with SAP Integration Suite and Gemini AIAutomating iFlow Documentation with SAP Integration Suite and Gemini AIAn integration flow built from Cloud Integration's own steps — timer start, parallel multicast, process calls, join and gather, and a data store write — retrieves another iFlow's design-time metadata and resources (Groovy scripts, XSLT mappings, EDMX schemas) through the IntegrationDesigntimeArtifacts OData API on SAP Integration Suite. The walkthrough gives each flow step's configuration, the OData endpoints and sample request/response payloads, and an exception subprocess for error logging, before assembling the retrieved XML and posting it to Google's Gemini API to generate a technical specification document stored back in a datastore.Andrew-Fawzy, published 2025-07-18
AWS Mail configuration for SAP ABAP SystemsAWS Mail configuration for SAP ABAP SystemsWalks through routing an SAP ABAP system's outbound mail through Amazon SES instead of an on-premises mail server or a dedicated EC2 SMTP instance: verifying a sender address and generating SMTP credentials in SES, creating the SMTP node in transaction SCOT, importing the SES endpoint's certificate into the SSL client via STRUST, and testing delivery through SO01 and SOST. It covers the SMTP relay underneath ABAP's mail delivery, the layer Notifications marks as where the core stops and where a channel like this is written on top.brijesh_tripath, published 2025-03-04
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
Batch File Pickup and Dynamic ZIP Creation in SAP Integration SuiteBatch File Pickup and Dynamic ZIP Creation in SAP Integration SuiteWalks through configuring a Cloud Integration flow that polls an SFTP server for batches of ten files, using a Content Modifier to preserve each file's name and body before appending them into one temporary file. A Router and Poll Enrich step detect when the batch is complete, a General Splitter breaks the combined payload back into individual messages, and a Gather step reassembles them into a dynamically named ZIP archive that keeps the original filenames, before the archive is sent on to a target SFTP server.sahilminhas, published 2026-05-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
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
Beyond Basic AI Error Handling in SAP CPI - A Rules-First Architecture with HANA Cloud LearningBeyond Basic AI Error Handling in SAP CPI - A Rules-First Architecture with HANA Cloud LearningBuilds a rules-first error-diagnosis pipeline on Cloud Integration in SAP Integration Suite: a Groovy classifier resolves known failures — auth, timeout, malformed payload — deterministically, and only genuinely novel errors reach an LLM through the AI Adapter, after a sanitizer script replaces every payload leaf value with a typed placeholder before it leaves the tenant. SAP HANA Cloud, reached over JDBC, holds a fingerprinted dedup cache and an accumulating table of past diagnoses. It also documents the AI Adapter configuration — Advanced mode, a Bearer-prefixed Secure Parameter, and a connection/processing URL split — needed to reach a non-SAP OpenAI-compatible endpoint, found by the author to be undocumented.Krishna_Karthik, published 2026-06-11
Beyond READ_TEXT: Decoding SAPscript Long Texts (STXL) with SQLScript in CDS/AMDPBeyond READ_TEXT: Decoding SAPscript Long Texts (STXL) with SQLScript in CDS/AMDPSTXL stores a SAPscript long text as a compressed ABAP cluster container — LZ77 plus canonical Huffman — so the only official reads are READ_TEXT, one call per text, and its mass variant READ_TEXT_TABLE, both of which ship every decompressed line to the application server and stay invisible to ABAP CDS. The author reverse-engineered that on-disk format and ported the decoder into SQLScript, wrapped in an AMDP procedure and exposed through CDS table functions, turning long texts into a joinable, filterable column read directly in the database. On ABAP 7.56 a table function needs the driver-and-filter pattern shown because a parameter cannot bind to a calling column; on ABAP 7.58/S/4HANA 2023 the same result becomes a parameter-less CDS scalar function with true filter push-down.aamelin1, published 2026-08-20
Beyond REST: Exploring GraphQL API Integration in SAP BTP Integration SuiteBeyond REST: Exploring GraphQL API Integration in SAP BTP Integration SuiteBecause Cloud Integration in SAP Integration Suite ships no native GraphQL adapter, the author builds a GraphQL integration flow on the standard HTTP adapter: a Groovy script assembles the query or mutation payload and sets the JSON content type, and a JSON-to-XML converter turns the response into something message mapping can consume. The walkthrough uses the public Countries API to stand in for a real order-synchronisation flow between an e-commerce platform and SAP S/4HANA.Avinash_Vaidya, published 2025-11-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
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.
BTP CAP : How to Connect to Remote Services Locally in CAP ApplicationBTP CAP : How to Connect to Remote Services Locally in CAP ApplicationThe same problem four years earlier: a CAP application that consumes a remote service, running locally against the real thing rather than against a mock.showkath_naseem, published 2022-12-12
Building a CAP App with Fiori Integration – Part 1: Environment & HANA Cloud SetupBuilding a CAP App with Fiori Integration – Part 1: Environment & HANA Cloud SetupA trial account taken from nothing to a CAPM project with a HANA Cloud instance behind it. Everything here is prerequisites, which the author says outright — the application is in the parts that follow.SuryaRamesh, published 2026-04-08
Building a Real‑Time Currency Conversion iFlow using SAP Cloud Integration (CPI)Building a Real‑Time Currency Conversion iFlow using SAP Cloud Integration (CPI)A step-by-step build of a currency-conversion integration flow in Cloud Integration: an HTTPS sender adapter accepts JSON, a content modifier stores the currencies and amount as exchange properties, and a Request-Reply step calls an external rate API before a Groovy script renders the result as an HTML table. A Global Exception Subprocess centralizes error handling for the whole flow, turning the MPL ID, error type and message into HTML and mailing it as a notification to a support address.RajeshwerRao_G_1, published 2026-04-01
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.
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
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
Building an SAP BTP Agent Architecture from Scratch: Python + CAP + HANABuilding an SAP BTP Agent Architecture from Scratch: Python + CAP + HANAA first-person build log of a Flask orchestrator on Cloud Foundry that reduces a question to keywords, searches a Node.js service's Documents entity, and passes what it finds to Claude for a grounded answer. Getting there means learning that HANA's fuzzy .search() matches one word but not a full sentence, fixed by splitting the query into terms and merging the per-term hits, and that provisioning SAP HANA Cloud hits a database-level free-tier quota rather than an HDI-container one, with a stopped instance needing to be resumed first. It also covers @sap/cds-dk needing to sit in dependencies rather than devDependencies, since Cloud Foundry's buildpack skips the latter, before cds deploy --to hana can run as part of the push.neilaspin, published 2026-07-28
Building Custom Joule Skills via RFC: Guide for SAP S/4HANA and ECC IntegrationBuilding Custom Joule Skills via RFC: Guide for SAP S/4HANA and ECC IntegrationWalks a Joule skill from a spoken question about a production order's status to an answer in SAP Build Workzone: a Cloud Connector tunnel and a destination in the BTP cockpit reach the S/4HANA or ECC system, a BAPI/RFC Action Project in SAP Build wraps the BAPI that reads the order, and Joule Studio, classic edition turns the action into a skill and deploys it. Establishing the connection and its destination before the action project exists is RFC connectivity and Destinations done for a low-code consumer rather than a CAP service. The action type here is BAPI/RFC, alongside the OData actions Joule Studio's own entry names.Robin-Qiu, published 2026-04-01
Calculating IBP Technical Week "Key Figure Date" in S/4HANA Using CDS ViewCalculating IBP Technical Week "Key Figure Date" in S/4HANA Using CDS ViewA custom ABAP CDS view entity, selecting from the standard I_CalendarDate view, to derive the first date of an SAP IBP "technical week" — the split IBP applies when a calendar week crosses a month boundary, a date S/4HANA does not expose natively. The calculated field is built with a case/when expression over dats_add_days, giving any calendar date's technical-week key figure date.bharatbajaj, published 2026-02-18
CAP - Specifying the queues to be consumed from SAP Event MeshCAP - Specifying the queues to be consumed from SAP Event MeshWritten against the edge of the convention rather than the convention. CAP creates one queue per application and names it for you; this is the case where the queue already exists, belongs to someone else, or there is more than one of them. The oldest Event Mesh post indexed here, and the only one about taking the naming back.schardosin, published 2021-06-21
CAP Foundry: Engineering SAP CAP Applications from Business Intent with Guardrailed AICAP Foundry: Engineering SAP CAP Applications from Business Intent with Guardrailed AICAP Foundry is a prototype that generates a CAP Node.js project with SAP Fiori elements from a written business requirement, discovering the actual data shape from a chosen source — SQLite, a configured SAP HANA HDI container, offline EDMX, live OData through the SAP Destination service, or approved SAP BTP ABAP objects — instead of inventing one. The generated application can carry a Fiori draft lifecycle with optimistic concurrency via ETags and annotation-driven Fiori elements list and object screens, localized independently of the underlying service contract. Attachments can be added with upload, download and delete, gated on a malware-scan status, and the generated project still has to compile, build and pass its generated tests before the run is accepted.Shahid, published 2026-08-20
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.
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 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
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
CAP, CDS, CDL, CSN and jq - finding associationsCAP, CDS, CDL, CSN and jq - finding associationsHow associations are actually represented once CDL is compiled into CSN, worked out by parsing the machine-readable form with jq. Useful less as a recipe than as a way in: anything that wants to reason about a CDS model without the compiler has to read CSN, and this is what that looks like from the outside.published 2024-04-16
CAP: Consume External Service - Part 1CAP: Consume External Service - Part 1Builds a CAP Node.js service from scratch that consumes the public NorthWind OData V4 service: cds import turns its EDMX metadata into a CSN model under srv/external, and a CatalogService projects Products from it with a custom READ handler that runs the request through cds.connect.to('NorthWind'). Shows the same projection working two ways — against a CSV mocked under srv/external/data with the <service>-<entity>.csv naming the framework expects, then against the real service once credentials.url is added to the CAP configuration and @sap-cloud-sdk/http-client is installed — and defers routing that connection through the Cloud Foundry Destinations service to the next post in the series.published 2020-05-26
CAP: Consume External Service – Part 3CAP: Consume External Service – Part 3Built to work around CAP limitations at the time — OData-only external services, no custom headers, no complex OData queries — the post walks through cdse, the author's own module that resolves a named destination from the CAP project's configuration and calls axios directly, so a handler reads the same way whether it is tested locally against a raw URL or deployed against SAP Cloud Platform's Destinations service. A 2022 update at the top of the post calls it obsolete, since the CAP framework has since addressed the limitations it set out to work around. The walkthrough of cdse resolving a destination and switching between a local credentials.url and an SCP destination, including pulling credentials from VCAP_SERVICES when the lookup fails locally, still holds as a worked example.published 2020-07-27
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
Case-insensitive filters in Fiori Elements (List report + CAP)Case-insensitive filters in Fiori Elements (List report + CAP)A blocker rather than a feature: filters on a List Report are case-sensitive, the business wanted them not to be, and the CAP backend is where it gets fixed. Node and Java both.Kishannaicker, published 2022-04-26
cds deploy to sqlite in-memory databasecds deploy to sqlite in-memory databaseTwo pages on what cds deploy --to sqlite does and what it prints. A reference note rather than an argument, and the shortest entry in this capability.AndrewBarnard, published 2021-04-25
Centralized Error Handling in SAP Cloud IntegrationCentralized Error Handling in SAP Cloud IntegrationBusiness integration flows in Cloud Integration route their runtime errors to a shared Central Error Logger flow through an Exception Subprocess and a ProcessDirect adapter, instead of each flow handling failures on its own. The logger normalises the incoming error data — flow name, message ID, correlation ID, timestamps — and formats it into an HTML email sent through a Mail Receiver Adapter. The author validated the same logger flow, unchanged, against a second, more complex business flow with routers and multiple email notifications.vishaladhikari, published 2026-03-27
Claude ported ABAP functions to new APIClaude ported ABAP functions to new APIA first-person account of using Claude Code, driven through the sapcli command line, to install and repair RFC function modules that let a CI pipeline control abapGit and gCTS remotely, rather than treating git as a way to read ABAP source. Instead of trusting a local checkout, Claude read the abapGit login manager class and queried the target system's own type catalogue through sapcli, then used what it found to update a renamed API method and swap a TABLES parameter's structure for the table type BAPIRET2_T.jakub_filak, published 2026-03-16
Clean Core by Design: Event Enablement Cockpit as a Core Integration Enabler in SAP S/4HANAClean Core by Design: Event Enablement Cockpit as a Core Integration Enabler in SAP S/4HANAWalks through wiring an on-premise SAP S/4HANA system into Event Mesh as an event producer, using the Enterprise Event Enablement framework: creating the service instance and its service key, then an RFC destination and OAuth 2.0 client configuration in SPRO so a channel can publish native S/4 business events over AMQP or MQTT. Covers the channel's reconnect and quality-of-service parameters and activating the Event Discovery Service, and notes that SAP ECC needs a third-party add-on for the same events since S/4's native Business Events are not available there.HammadSharif1, published 2026-06-01
Cloud Integration with Document AICloud Integration with Document AIWalks through connecting Cloud Integration to SAP Document AI: an iFlow posts a prescription PDF to Document AI's job API, polls the job endpoint until it completes, and a groovy script reads back the result, keeping only the fields above a stated 60% confidence threshold. The scenario is a hospital extracting a new patient's past illnesses, allergies and blood group from uploaded prescriptions, matched against a custom extraction schema.PriyankaChak, published 2025-08-10
Cloud Integration- Activating Enterprise Messaging Capabilities for JMS Queue - CFCloud Integration- Activating Enterprise Messaging Capabilities for JMS Queue - CFTraces a JMS iFlow deployment failure on Cloud Integration (Cloud Foundry) — ERROR_MISSING_SERVICE_KEY — to the Message Queues (Enterprise Messaging) capability being switched off on the tenant rather than a missing service key, since an edition upgrade does not turn it on by itself. Resolves it by enabling Message Queues under Manage Capabilities, which restarts the tenant, then redeploying the affected iFlows.Pavan_Koppula1, published 2026-07-21
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
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
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
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
Computed field example in CAPComputed field example in CAPAn answer to a Community question — how to count the entities on the far side of an association — written up as a short post rather than left in a thread. The answer combines CDS with Node.js service events, which is the seam worth noticing: some of what looks like modelling is expressed in the model and some has to be computed when the request arrives, and the boundary between them is not obvious from either side.published 2019-08-21
Computed field example in CAP
Data modelling has changed 3 times since this was published, most recently in @sap/cds 9.9.0, 2026-04-23. Affects A recipe, Runnable code.
Configure an SAP CAP Application to Connect to an SAP HANA Cloud Database in Another Global Account or SubaccountConfigure an SAP CAP Application to Connect to an SAP HANA Cloud Database in Another Global Account or SubaccountThe case the tooling does not cover: the database is in a different global account, so there is no HDI container to bind and cds deploy cannot do its usual job. Written for exactly that, and it says so in the subtitle — without HDI.JhoelAnthonyRamosRomeroPE, published 2024-10-08
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 SAP CAP (Node.js) to On-Premise/Private PostgreSQL using SAP Cloud ConnectorConnect SAP CAP (Node.js) to On-Premise/Private PostgreSQL using SAP Cloud ConnectorAn end-to-end route from a CAP Node.js application on Cloud Foundry to a PostgreSQL database that is never made publicly reachable, over BTP Connectivity and the Cloud Connector using a TCP destination and SOCKS5. The part worth having is that it covers the deployer as well as the server: the generated PostgreSQL deployer has to reach the same private database to deploy the CDS model, and a guide that only connects the runtime leaves you with a schema you cannot install.Kalaikovan, published 2026-08-07
Connect SAP CAP (Node.js) to On-Premise/Private PostgreSQL using SAP Cloud Connector
Database connectors changed in @sap/cds 10.1.0, 2026-09-07. Affects A recipe.
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.
Connecting SAP Integration Suite with SAP Document AI and SAP Business AIConnecting SAP Integration Suite with SAP Document AI and SAP Business AIWalks through a Cloud Integration flow in SAP Integration Suite that pulls PDF purchase orders from a Gmail mailbox, extracts header and line-item fields through SAP Document AI's job-submission and polling API, and validates the result with SAP AI Core's generative AI hub using GPT-5-mini as a quality check rather than the source of the extracted values. Groovy steps combine the Document AI confidence score and the model's score into one figure that routes low-scoring purchase orders to manual review, with no S/4HANA posting performed.subhojitSaha, published 2026-08-24
Connecting SAP Integration Suite with Slack: A Hands‑On Guide with Open ConnectorsConnecting SAP Integration Suite with Slack: A Hands‑On Guide with Open ConnectorsA walkthrough builds an integration flow on SAP Integration Suite that receives JSON over an HTTPS sender, transforms it with Groovy, and posts a formatted message to a Slack channel through the Slack Open Connector. An Exception Subprocess catches token, channel and connector-invocation failures and returns a structured error response, and the author verifies it by forcing a bad channel ID and confirming the error-notification email arrives.jareenabee_dudekula, published 2026-03-20
Connecting SAP S/4HANA On-Prem Directly to Advanced Event Mesh using Cloud Connector - finally!Connecting SAP S/4HANA On-Prem Directly to Advanced Event Mesh using Cloud Connector - finally!Package Integration 1.4.0 for the Advanced Event Mesh Adapter adds official support for routing through SAP Cloud Connector, so an on-premise SAP S/4HANA system can produce events that SAP Advanced Event Mesh distributes without exposing a public endpoint. The same release changes the adapter's default acknowledgment mode from Automatic Immediate to Automatic On Exchange Complete, altering delivery semantics and error handling. The release notes warn against mixing proxy configurations within one tenant, since that causes unpredictable routing in complex hybrid tenants.sissyhae, published 2026-01-23
Connecting Two SAP CAP Projects Without Duplicating Your DataConnecting Two SAP CAP Projects Without Duplicating Your DataCross-container HDI synonyms, argued from the alternatives rather than presented as a recipe: copying the table, standing up an API, or hard-coding the values are the three things the author reports seeing teams do, and each is named as working but unclean. With synonyms in place the consuming project queries the owner's HANA tables through ordinary SQL and ordinary CAP service code, with no replication and nothing to drift between environments. Covers the same ground as Mio Yasutake's 2021 post from a different angle — that one enumerates four topologies, this one argues for one of them.Inderpreet, published 2026-07-08
Consume ABAP RFC Function Modules in CAPConsume ABAP RFC Function Modules in CAPCalling an existing RFC function module from CAP instead of asking somebody to build an OData service for it — which is the actual decision, since the alternative is custom development on the ABAP side for a function that already works.published 2025-03-28
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
Consume SAP Document Management using @cap-js/sdm pluginConsume SAP Document Management using @cap-js/sdm pluginStoring attachments in a SAP Document Management repository from a CAP application, using the official plugin. The point the post makes about the plugin is that it brings its own UI: a user attaches any number of documents and one Save writes them all to the repository, so the application does not build an upload surface of its own.published 2024-08-26
Consume SOAP Web Services in SAP Cloud Application Programming ModelConsume SOAP Web Services in SAP Cloud Application Programming ModelCalling a SOAP service from CAP — the case the remote-service story does not cover, since CAP's own import path speaks OData and OpenAPI.SAP
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
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.
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.
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
Create your first CAP pluginCreate your first CAP pluginA step-by-step guide to the cds-plugin.js extension point: scaffold a package, add an index.cds for shared model artifacts, and test it locally against a throwaway CAP project before publishing to npm, with a separate section on building the same plugin in TypeScript and compiling it with tsc. Points to the author's own cds-plugin-handlers and ui5-cap-serverside-rendering-plugin as worked examples.published 2024-12-09
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.
Creating an SAP SD Billing Document Using a BAPI in SAP Build and Accessing It Through 'Joule Work'Creating an SAP SD Billing Document Using a BAPI in SAP Build and Accessing It Through 'Joule Work'Walks through the two pieces of connectivity a SAP Build Process Automation action needs to call an on-premise BAPI: mapping the virtual host to the internal S/4HANA host in Cloud Connector over the RFC protocol, and creating an RFC-type destination in the BTP cockpit so BAPI_BILLINGDOC_CREATEMULTIPLE becomes a selectable action. The resulting process creates an SD billing document from a sales document number and is reached through SAP Build Work Zone, including from the Joule Work mobile app.MrRaj, published 2026-06-29
Creating Material Master Data in SAP S/4HANA Using RAP and EML .Creating Material Master Data in SAP S/4HANA Using RAP and EML .Builds an unmanaged Transactional model RAP business object for Article (Material) master data on top of the standard interface views I_Product, I_ProductDescription and I_ProductPlant, replacing BAPI_MATERIAL_SAVEDATA with EML operations in the create, update and custom extendplant behaviour methods. A CDS metadata extension adds the Fiori annotations — headerInfo, facets, line items and value helps — that drive the generated Fiori elements UI.Sudhanshu07, published 2026-01-08
Creating structured types, enums and named aspects using the CDS Graphical ModelerCreating structured types, enums and named aspects using the CDS Graphical ModelerThe modelling constructs that are awkward to draw — structured types, enums, named aspects — done in the graphical modeller rather than in CDL.Xiao-fei_Song, published 2021-05-26
Custom Form with Custom Data Source in SAP Public Cloud (Grow with SAP)Custom Form with Custom Data Source in SAP Public Cloud (Grow with SAP)Builds a custom Adobe-based output form for SAP S/4HANA Cloud Public Edition when SAP ships no standard data source: a RAP business object exposes header and item CDS views through a service definition, one view marked as the form's data provider, and the layout is designed offline in Adobe LiveCycle Designer against the exported XML schema before upload and rendering back in the tenant. It draws the line against SAP Forms Service by Adobe on BTP, which the post sets aside in favour of building the form inside the S/4HANA Cloud system itself.Gourab_Dey, published 2026-01-15
Deep Insert in SAP CAPM Using Composition and Fiori ElementsDeep Insert in SAP CAPM Using Composition and Fiori ElementsParent and children created in one transaction, which composition already gives you in the model — the post is about what Fiori elements does with it, and what the payload looks like when the UI sends both at once.published 2026-05-22
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
Designing Scalable Integration Flows in SAP BTP Using Pallets and AdaptersDesigning Scalable Integration Flows in SAP BTP Using Pallets and AdaptersExplains two building blocks of integration flows in SAP Integration Suite: a pallet, a reusable group of flow steps built as its own integration flow and called from another over the ProcessDirect adapter for loose coupling, with logging, transformation, error-handling, notification and security pallets as examples; and the adapters Cloud Integration ships to reach other systems — REST, SOAP, OData, IDoc, JDBC, ProcessDirect and SFTP — each with the protocols and authentication it supports. Written as a design pattern for reuse across flows rather than a single worked example.Saksham-Mutneja, published 2025-10-16
Develop a full stack Business application with SAP Cloud Application Programming ModelDevelop a full stack Business application with SAP Cloud Application Programming ModelBuilds a full-stack CAP application in SAP Web IDE Full Stack's now-retired 'SAP Cloud Platform Business Application' template: a data-model.cds entity with its own service definition, then Fiori annotations on the generated OData. Building the project compiles that model into Catalog.xml and csn.json, the EDMX and CSN that metadata publishing says every exposed service gets. The entity and service definitions it writes by hand are the basic shape data modelling covers, though the webIDE and MTA tooling staged around them is gone.former_member584731, published 2018-11-29
Develop and deploy a HTML (Angular/Vue/React) app on SAP BTP access S/4 OP, Part IIIDevelop and deploy a HTML (Angular/Vue/React) app on SAP BTP access S/4 OP, Part IIIThird part of a series on an Angular front end over CAP against an on-premise S/4HANA system: after an OData V4 service is exposed from S/4 OP, a CAP (Node.js) project imports its metadata with cds import, wires it as an external service with cds.connect.to, and resolves the on-premise tenant through a named destination set under the service's cds configuration in package.json. The HTML app itself is built as shown in an earlier part of the series and is only referenced here.Hongjun_Qian, published 2024-03-11
Developing a Shell Plugin for SAP Build Work Zone to Display Custom NotificationsDeveloping a Shell Plugin for SAP Build Work Zone to Display Custom NotificationsThe rendering end of a notification rather than the publishing end: a shell plugin that changes what Work Zone shows, for the cases the standard notification card does not cover.Mykhaylo, published 2025-07-17
Developing Business Services with Cloud Application Programming(CAP) Model in SAP Business StudioDeveloping Business Services with Cloud Application Programming(CAP) Model in SAP Business StudioA step-by-step build of a CAP Node.js service in SAP Business Application Studio: a CDS schema for banks, customers, accounts and transactions using compositions, associations, enumerated types and the @assert.unique constraint, followed by authorization layered on with @restrict and @requires annotations and mock users assigned the authenticated-user and Manager roles in .cdsrc.json. Custom event handlers registered through @sap/cds (srv.before/srv.after) and sample HTTP requests round out the example.Ranjith, published 2020-05-27
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
Discovering SAP Fiori Elements Analytical functions by implementing SAP Support Message ReportingDiscovering SAP Fiori Elements Analytical functions by implementing SAP Support Message ReportingAnalytical annotations learned by building something the author wanted — a view over SAP support messages — after a conversation in February 2021 that the post dates precisely. Exploration written up as exploration.published 2021-03-14
Distributed Resiliency of SAP CAP applications using SAP HANA Cloud (Multi-Zone Replication)Distributed Resiliency of SAP CAP applications using SAP HANA Cloud (Multi-Zone Replication)Resilience defined the way an operator would — failures happen in a complex landscape and should go unnoticed by the user — and then what multi-zone replication on HANA Cloud means for the CAP application in front of it.shanthakumar_krishnaswamy, published 2022-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
E2E: SAP Cloud Platform Internet of Things to SAP Analytics CloudE2E: SAP Cloud Platform Internet of Things to SAP Analytics CloudDevice data from ingestion to chart, with CAP occupying the middle: a CDS-defined persistence on HANA Cloud, and an OData service published from it for Analytics Cloud to consume live. The interesting choice is that CAP is used for the model rather than for business logic — there is barely any.Gunter, published 2020-08-31
Empowering Your Data Analytics with GPT-3 and SAP CAP IntegrationEmpowering Your Data Analytics with GPT-3 and SAP CAP IntegrationFree text in, SQL out, answer back in a sentence — the model writes the query, CAP runs it, and the model turns the rows into prose. Written in the GPT-3 window, so the model access has dated, but the three-step shape has not, and it is a different bet from retrieval: nothing is embedded, the schema is the context.Former Member, published 2023-03-10
End to End Currency Conversion Integration using SAP Integration Suite (SAP CPI)End to End Currency Conversion Integration using SAP Integration Suite (SAP CPI)A hands-on build of a currency-conversion integration flow in Cloud Integration: an HTTPS sender adapter takes JSON input, a Request-Reply step calls an external exchange-rate API, and a Groovy script converts the amount and formats it as an HTML table before a Mail Adapter delivers the result. Most of the walkthrough is the Exception Subprocess added after hitting HTTP 500 and 429 errors in testing, which captures the error message, response code and message-processing-log ID and turns them into a readable response instead of a raw stack trace.shahabaz, published 2026-04-09
End-to-End Error Handling with General Splitter and Local FlowsEnd-to-End Error Handling with General Splitter and Local FlowsA Cloud Integration iFlow splits an incoming XML payload with the General Splitter, calls an OData service in parallel for each part and gathers the results, then hands a failed call to an Exception Subprocess, where a Process Call reaches a Local Integration Process that calls a separate exception-handling iFlow over ProcessDirect. In that second flow a Content Modifier puts the interface ID and the stack trace into message headers and the tenant, flow and message ID into exchange properties, a Groovy script saves the message as a plain-text log attachment, and the Mail adapter sends the stack trace as an email; the failure itself is provoked by removing the https prefix from the OData URL. Each step is given with its own configuration, from the splitter's XPath and batch size to the ProcessDirect address format and the headers the exception handler sets.NaveenReddy_06, published 2025-07-02
End-to-End Mail Adapter Setup in SAP CPI Using Gmail (Step-by-Step Guide)End-to-End Mail Adapter Setup in SAP CPI Using Gmail (Step-by-Step Guide)Walks through configuring Cloud Integration's Mail Receiver Adapter against a personal Gmail account: enabling 2-Step Verification and an app password in Gmail, storing it as CPI security material user credentials, and testing the SMTP connection (smtp.gmail.com, port 587, STARTTLS) before wiring the adapter into an integration flow. A content modifier builds the message body, and a Postman call triggers the flow to send mail through the configured Gmail account.srivallivasamsetti, published 2026-03-09
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
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
Event Driven Architecture with Event Mesh - Part-1Event Driven Architecture with Event Mesh - Part-1Continues the author's own CDS entity-relationship example rather than starting a fresh one, which is the point of it — the same model gains events. Concepts first, then a message client and queue on BTP, then a Postman check that the queue works before any CAP code is written, and finally the emit from a CAP REST service.Avinash_Vaidya, published 2022-12-04
Event Driven Architecture with Event Mesh - Part-1
Event Mesh changed in @sap/cds 10.0.3, 2026-07-02. Affects A recipe, Runnable code.
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
Event Mesh + AMQP: The Retry Trap Nobody Warns You AboutEvent Mesh + AMQP: The Retry Trap Nobody Warns You AboutWorks through two patterns for retrying failed messages from Event Mesh's AMQP sender adapter on Cloud Integration, whose native retry has no configurable delay or backoff: bridging into a JMS queue for full exponential-backoff control, or looping messages through a dedicated retry queue with a TTL and a Dead Message Queue. Compares both against a Groovy sleep() workaround that blocks the adapter's connection and the runtime's worker thread, and shows that Advanced Event Mesh's own adapter ships configurable retry interval, backoff and broker-side redelivery without either workaround.MateuszPiotrowski, published 2026-03-09
Event-driven Extensions for SAP SuccessFactors on SAP BTP – Connecting the DotsEvent-driven Extensions for SAP SuccessFactors on SAP BTP – Connecting the DotsWalks through an event-driven extension for SAP SuccessFactors: Automated Configurations registers the SuccessFactors system against an SAP BTP account with an integration token, and a SuccessFactors custom integration then pushes events, such as an employee joining or leaving, to a topic in Event Mesh that a CAP application subscribes to. The SuccessFactors APIs themselves are downloaded as EDMX files from SAP API Business Hub and imported into the CAP project, the same EDMX-import path behind service integration, so CAP generates the client used to call them. A reference application, RunSmooth, ties Automated Configurations, Event Mesh and CAP together end to end.Former Member, published 2020-08-12
Event-Driven Multi-Tenant Architecture on SAP BTP with CAP and SAP Event MeshEvent-Driven Multi-Tenant Architecture on SAP BTP with CAP and SAP Event MeshThe two topics that are usually written about separately, taken together — because a shared broker is where tenant isolation stops being automatic. It starts from why microservices are decoupled at all, places Event Mesh among the four broker services BTP offers, and then works through what changes when the publisher and the consumer are multitenant.ale_biagi, published 2024-12-19
Execute [OAuth2 client credentials] protected REST request with SAP CAP ApplicationExecute [OAuth2 client credentials] protected REST request with SAP CAP ApplicationA recipe, and the author calls it that — package.json, a .cds and a handler — for calling a remote service protected by OAuth2 client credentials from a CAP application. Short, complete, and addressed to CAP developers rather than to BTP administrators.Lachmish, published 2022-04-27
Execute [OAuth2 client credentials] protected REST request with SAP CAP Application
Authentication changed in CAP Java 3.0.1, 2024-07-26. Affects A recipe.
Explore the declarative power of status-transition flowsExplore the declarative power of status-transition flowsModelling which state a record may move to next, declaratively, rather than scattering the rule across the handlers that move it.SAP
Exploring SAP Salesforce Adapter - retry mechanism with JMS queueExploring SAP Salesforce Adapter - retry mechanism with JMS queueBuilds a retry design for Salesforce update failures in Cloud Integration on SAP Integration Suite: a Parent iFlow triggered by a Salesforce push topic calls a Child iFlow, whose Exception Subprocess routes specific Salesforce errors to a separate JMS Retry PD iFlow over a ProcessDirect target address. The retry iFlow stores the failed payload in a JMS queue (Enterprise Edition), retries up to five times with exponential backoff, moves exhausted messages to the dead-letter queue, and mails the Application Maintenance team; the author notes the queue's 10 GB size limit and that polling may pause under load.Shailaja, published 2025-09-05
Expose RFCs as MCP Tools in Integration SuiteExpose RFCs as MCP Tools in Integration SuiteWalks through creating an MCP server in SAP Integration Suite from an RFC source: an on-premise RFC destination labelled for Integration Cell inclusion, a search over the backend's function modules (minimum seven characters), and up to 50 selected modules each becoming a tool. Covers the resulting server's configuration (Source, Tools and Prompts, with no Resources section for this source) and the two scopes an RFC-based server's policy adds beyond an API-sourced one, API.invoke and ESBMessaging.send, plus the RFC receiver adapter used at runtime. Demonstrates the flow with a purchase-order scenario where an AI client calls BAPI_PO_CREATE1 and BAPI_PO_GETDETAIL1 as MCP tools.ronit199666, published 2026-09-24
Expose S/4HANA Cloud OData API as an MCP Server via CAP Node.jsExpose S/4HANA Cloud OData API as an MCP Server via CAP Node.jsA step-by-step walkthrough that wraps SAP S/4HANA Cloud's Outbound Delivery OData v2 API in a CAP Node.js service and exposes it through @cap-js/mcp, so an MCP client can list the generated tools, query the delivery entities and call a custom createDelivery action over JSON-RPC. The remote S/4HANA connection is configured two ways in package.json: direct Basic Authentication credentials for local hybrid testing, and a named BTP destination for the app once deployed to Cloud Foundry.Jacky_Liu1, published 2026-07-29
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
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
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
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 - Import SAP SuccessFactors OData Services definitionsExtend SAP SuccessFactors on SAP BTP with CAP - Import SAP SuccessFactors OData Services definitionsWalks through importing the ECEmployeeProfile and PLTUserManagement OData services from SAP API Business Hub into a CAP project: downloading their EDMX files, running cds import in SAP Business Application Studio to generate the CSN under srv/external, and pointing the resulting cds.requires entries at a destination. The second half creates a destination and an XSUAA service instance on BTP and binds their service keys into a default-env.json file so the project can reach SAP SuccessFactors during local development.published 2022-03-21
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
Extend Upload Set to Fiori Elements and utilize Document Management ServiceExtend Upload Set to Fiori Elements and utilize Document Management ServiceWritten two months before there was an official plugin, and the author has left the record of that in the page: an update dated 2024-04-04 noting the CAP team released @cap-js/attachments, and another dated 2024-05-21 saying they tested it and wrote up the Object Store variant separately. The hand-built version underneath is still the answer when the plugin's storage choices do not fit.published 2024-02-25
Extend Upload Set to Fiori Elements and utilize Document Management Service
Attachments has changed 3 times since this was published, most recently in @cap-js/sdm 1.0.0, 2024-06-26. Affects Runnable code.
Extend Upload Set with Table to Fiori Elements and utilize Object StoreExtend Upload Set with Table to Fiori Elements and utilize Object StoreThe Object Store variant of the author's earlier Document Management post, written after testing @cap-js/attachments — a sample managing text and file information together, and offered as something for people new to BTP rather than as a pattern.published 2024-05-21
Extend Upload Set with Table to Fiori Elements and utilize Object Store
Fiori annotations changed in @sap/cds-dk 9.6.0, 2025-12-17. Affects Runnable code.
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
Extract Rev-Trac requests by custom program and Rev-Trac APIExtract Rev-Trac requests by custom program and Rev-Trac APIA custom ABAP report that does a full-text search across custom long-text fields of Rev-Trac change requests — a search the change-management tool has no built-in feature for — by calling Rev-Trac's own RFC-enabled function modules from a separate connected ABAP system. It walks through the mechanics of RFC connectivity on the ABAP side: looking up the RFC destination at runtime from a system table via a remote-enabled function module, then calling further remote function modules with CALL FUNCTION ... DESTINATION, including the read/update APIs' parameter-naming convention and their commit-on-connection-end behaviour.published 2025-12-30
Federating, Replicating, and Caching Remote Data in CAP — Part 2Federating, Replicating, and Caching Remote Data in CAP — Part 2The practical half of the pair. Where Part 1 sets out the terminology, what CAP does out of the box and where the gaps are, this one builds a small application that federates, replicates and caches remote data, one step at a time, with the finished project published as sales-cockpit so a reader can either follow along or start from the end. It began as a twenty-minute reCAP talk, which the author says was only room for the intro.published 2026-07-17
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.
First Java Cap ApplicationFirst Java Cap ApplicationA step-by-step walkthrough of a first CAP Java project: com.sap.cds:cds-services-archetype scaffolds the initial Maven project, and the domain model is then rewritten in the db folder with entities, the cuid and managed aspects, associations, compositions and a CodeList, so a hand-coded event handler serving a single entity gives way to a service that CAP's generic persistence handling serves without custom code. It deploys that model to SQLite for local development — cds deploy --to sqlite, then a Spring profile pointing at the generated database file — and ends by adding an index.cds so the model and service can be published as a reusable npm module.bruce_wang3, published 2020-12-08
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
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
Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-1]Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-1]The first of six, and it does the thing the later parts depend on: build the Incident Management application against SQLite on a laptop, with no cloud database in sight. The series is called decoupled because the front end and the back end are deployed separately, and this part is entirely the back end.sanjucs, published 2026-05-06
Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-1]
Database connectors changed in @sap/cds 10.1.0, 2026-09-07. Affects A recipe, Runnable code.
Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-3]Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-3]The cloud database appears: a HANA Cloud instance created on BTP and mapped to a Cloud Foundry space. No application code — this is the part where the platform has to be right before the next part can connect to it.sanjucs, published 2026-05-08
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.
Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-5]Fullstack CAP Application with HANA Cloud (Decoupled Architecture) [Part-5]The consequence of decoupling: with the back end live on its own Cloud Foundry route, the front end needs a BTP destination to reach it rather than a relative path. Short, and it is the join the architecture creates.sanjucs, published 2026-05-18
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
Generating PDF on BTP CF using CAP and PuppeteerGenerating PDF on BTP CF using CAP and PuppeteerA headless browser rendering the PDF, which is the answer people reach for when the document is really a web page. The Cloud Foundry part is the difficulty: Puppeteer needs a browser in the buildpack, and that is what the post is actually about.ltomazeli58, published 2024-03-28
Generation of Message Processing logs report for EDI transactions using SAP CI.Generation of Message Processing logs report for EDI transactions using SAP CI.Walks through building an integration flow in Cloud Integration that calls SAP's standard MessageProcessingLogs OData API, plus a second request for custom headers, and converts the combined result to a CSV report of order, order-acknowledgement and invoice status by trading partner for EDI transactions. Getting the trading partner number into that report first requires a Groovy script and exchange property added to each EDI I-Flow so the value is captured as a custom header in message monitoring.NagurBabu, published 2025-03-13
Getting started with CAP on PostgreSQL (Node.js)Getting started with CAP on PostgreSQL (Node.js)Running CAP on PostgreSQL locally in 2020, when doing so meant the community packages cds-pg and cds-dbm. It now opens with a banner the author added later: @sap/cds 7.0.0 has native PostgreSQL support, use @cap-js/postgres instead, with a pointer to a step-by-step guide for it. Worth having for that banner as much as for the content — a post that tells you not to follow it is a dated fact about where the answer moved.published 2020-11-16
Getting started with CAP on PostgreSQL (Node.js)
cds-pg. Affects Runnable code.
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
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
Handling Concurrent Updates in SAP CAP JavaHandling Concurrent Updates in SAP CAP JavaAlice and Bob open the same employee record; Bob saves last and quietly erases Alice's change. The lost-update problem stated concretely and then answered in CAP Java, which is the only entry here on the subject — hence the capability.Anjali_Pathak, published 2026-05-26
Handling File Routing and Alerts in SAP CPI Based on File TypeHandling File Routing and Alerts in SAP CPI Based on File TypeWalks through building a Cloud Integration flow that pulls files from one SFTP server, captures the name and extension with a Content Modifier's ${file:ext} expression, and uses a Router to send XML files on to a second SFTP server while any other extension, or a missing XML file, triggers an alert. The alert is a Mail adapter step authenticated against Gmail's SMTP server with an app password, so the piece covers an adapter, a router condition and a mail step as parts of one flow.harsh__chauhan, published 2025-04-03
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 I migrated my on-prem xsa cds3+hana solution to cds6+sqliteHow I migrated my on-prem xsa cds3+hana solution to cds6+sqliteThree major CDS versions and a database swap in one move, done to get an old on-premise XSA application running somewhere cheap. The repository is linked, and the interest is in what broke between cds3 and cds6 rather than in the destination.alex_myakinkii, published 2022-08-07
How I migrated my on-prem xsa cds3+hana solution to cds6+sqlite
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
How to Access On-premise OData from the Business Application Studio - CAPM DevelopmentHow to Access On-premise OData from the Business Application Studio - CAPM DevelopmentA destination-naming constraint found the hard way and then corrected in public: the post carries its own update saying that with a CAPM app, a standard destination works through the studio's proxy as long as the name matches [a-z0-9-]. The update credits a comment on the post, so the correction and its source are both in the record.laszlo_kajan2, published 2020-06-02
How to Access On-premise OData from the Business Application Studio - CAPM Development
Destinations changed in @sap-cloud-sdk/connectivity 4.0.0, 2025-03-04. Affects A recipe, Runnable code.
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
How to Configure Retry Mechanism in SAP BTP CI/IS to Handle Only Connectivity Errors when using AEMHow to Configure Retry Mechanism in SAP BTP CI/IS to Handle Only Connectivity Errors when using AEMShows how to configure a Cloud Integration iFlow with an AEM sender so only connectivity errors trigger a retry: a Groovy script reads the CamelHttpResponseCode header and looks it up in a value map, and a router then sends a transient failure such as a 408 timeout down the retry path, where the retry limit set in AEM applies, and an error needing manual intervention, such as a 401, down a path that ends the flow at once and emails the team. It applies only to receiver adapters that return CamelHttpResponseCode, among them HTTP, SOAP, IDoc and OData. It builds on an earlier post of the author's, which this one does not name, where an email goes out after the final retry attempt.Jayabalaji_Sakthivel, published 2025-01-21
How to create an API to run a HANA Cloud Stored Procedure in Cloud FoundryHow to create an API to run a HANA Cloud Stored Procedure in Cloud FoundryReaching past CDS to the database's own machinery — built-in algorithms, SQLScript procedures and functions — and putting an API in front of them. Long, and it is the case where the model is not where the logic belongs.gonzalo_hernan_sendra, published 2022-12-08
How to create an API to run a HANA Cloud Stored Procedure in Cloud Foundry
Database connectors has changed twice since this was published, most recently in @sap/cds 10.1.0, 2026-09-07. Affects Runnable code.
how to create and expose OData APIshow to create and expose OData APIsA step-by-step walkthrough of building an OData API artifact in Cloud Integration: import a service's EDMX metadata, select an entity type, wire an ODATA receiver adapter into an integration flow with a response mapping, then deploy the artifact. The example targets the public Northwind service rather than an SAP backend, and the deployed ProductSet endpoint is tested in Postman with basic auth.SaiPrudhviRajTaduva, published 2025-02-26
How to Generate and Download PDFs on the fly without persisting in CAP ApplicationHow to Generate and Download PDFs on the fly without persisting in CAP ApplicationStreaming a generated document straight to the client without writing it anywhere first — which sidesteps the retention question a stored file creates, and is the distinction worth having beside the attachments capability.HarsithKumarReddy, published 2024-06-18
How To Implement Alert Notification Service in Cloud Application ProgrammingHow To Implement Alert Notification Service in Cloud Application ProgrammingA click-by-click setup of BTP's Alert Notification service against a CAP application. Operational alerting rather than business notification — the audience is whoever is on call, not the user — which is the distinction the Work Zone plugin here does not cover.Aditya12, published 2025-05-27