https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-HANA-Cloud-blog-posts.xml SAP Community - SAP HANA Cloud 2026-04-12T11:01:06.140901+00:00 python-feedgen SAP HANA Cloud blog posts in SAP Community https://community.sap.com/t5/technology-blog-posts-by-sap/building-enterprise-grade-rag-seven-architectural-innovations-beyond-vector/ba-p/14348376 Building Enterprise-Grade RAG: Seven Architectural Innovations Beyond Vector Search 2026-03-16T05:36:58.019000+01:00 ansh_jindal https://community.sap.com/t5/user/viewprofilepage/user-id/2244233 <P><FONT size="6"><STRONG>Building Enterprise-Grade RAG: Seven Architectural Innovations Beyond Vector Search</STRONG></FONT></P><P><EM>A concise technical guide for production RAG systems</EM></P><P><FONT size="5"><STRONG>Executive Summary</STRONG></FONT></P><P>Traditional Retrieval-Augmented Generation (RAG) systems rely primarily on semantic similarity through vector embeddings, but this approach fails in enterprise environments with large, diverse document collections. This article presents seven architectural innovations that address fundamental RAG limitations, delivering&nbsp;<STRONG>60-75% faster queries, 85-95% precision, and 60-75% token reduction</STRONG>&nbsp;compared to traditional approaches.</P><P><FONT size="5"><STRONG>The Five Problems with Traditional RAG</STRONG></FONT></P><P><FONT size="4"><STRONG>Problem 1: Semantic-Only Retrieval Cannot Distinguish Context</STRONG></FONT></P><P>Traditional RAG encodes queries and searches all embeddings by <STRONG>cosine similarity</STRONG>, assuming semantic closeness equals relevance. This breaks down when users need contextual filtering: "show me vendor A contracts from 2024" retrieves any semantically similar contract language regardless of vendor identity, document type, or fiscal year. <STRONG>Vector embeddings capture meaning but not categorical properties</STRONG>—two vendor contracts from different years produce nearly identical embeddings because they use identical legal language and pricing terminology. Result: <STRONG>30-50% false positives</STRONG> from wrong vendors, wrong years, or wrong document types. Users must manually verify every result, defeating automation's purpose.</P><P><FONT size="4"><STRONG>Problem 2: Structural Blindness Destroys Document Organization</STRONG></FONT></P><P>Character-count chunking (typically 1000 characters with 200 overlap) <STRONG>ignores document structure</STRONG>, splitting at arbitrary boundaries <STRONG>regardless of semantic sections</STRONG>. A document with clear sections-Introduction, Technical Specifications, Pricing, Compliance gets carved into chunk 1, chunk 2, chunk N without preserving these boundaries. When users query "show me technical specifications," the system retrieves random paragraphs mentioning "technical" scattered across the document rather than the complete specifications section. Even perfect vector search cannot overcome structural destruction during chunking, related content sits in disconnected chunks requiring manual reconstruction.</P><P><FONT size="4"><STRONG>Problem 3: Table Destruction Loses Critical Structured Data</STRONG></FONT></P><P>Tables contain 40-60% of critical enterprise information-pricing matrices, technical specifications, comparison charts, timelines, responsibility assignments. Text-based chunking catastrophically fails: a 20-row pricing <STRONG>table gets split across chunks</STRONG>, each missing column headers or context. Converting tables to linear text loses two-dimensional relationships. Worse, tables are typically introduced by explanatory paragraphs ("The following pricing applies to annual contracts only...") that get separated during chunking, leaving the LLM to interpret data without crucial qualifiers. Result: <STRONG>60-80% of tables rendered unusable or misinterpreted.</STRONG></P><P><FONT size="4"><STRONG>Problem 4: Chat History Token Explosion from AI Response Storage</STRONG></FONT></P><P>Most RAG systems store complete conversation history-user messages plus AI responses for follow-up context. A typical 5-turn conversation: user message 1 (50 tokens) + AI response 1 (2000 tokens) + user message 2 (30 tokens) + AI response 2 (1800 tokens) + user message 3 (40 tokens) + AI response 3 (2200 tokens) = 6,120 total tokens stored. Actual new information: 120 tokens from user messages<STRONG>. AI responses are synthesized from documents already in the database—storing them is pure redundancy adding no new context</STRONG>. As conversations extend to 10-15 turns, history consumes 20,000-30,000 tokens, leaving less context window for retrieved documents and increasing API costs exponentially.</P><P><FONT size="4"><STRONG>Problem 5: One-Size-Fits-All Responses Waste Resources</STRONG></FONT></P><P>Traditional RAG treats all queries identically: embed → vector search → retrieve → generate LLM response. But 30-40% of enterprise queries want document inventory (lists, counts, metadata): "list all contracts," "how many technical documents?" These need simple database lookups returning structured lists , not vector searches followed by verbose LLM generation. The remaining 60-70% need content extraction: "summarize technical requirements," "compare pricing across vendors." These require full RAG pipeline. Traditional systems <STRONG>waste compute and time generating responses</STRONG> for inventory queries that should be instant metadata lookups, degrading user experience with slow, verbose responses when users want clean, fast lists.</P><P><FONT size="5"><STRONG>The Seven Innovations</STRONG></FONT></P><P><FONT size="4"><STRONG>Innovation 1: LLM-Powered Document Classification</STRONG></FONT></P><P><STRONG>Use an LLM to classify each chunk into semantic section </STRONG>types (Introduction, Technical Specifications, Requirements, Pricing, Timelines, Compliance, Risks) based on content analysis rather than arbitrary character boundaries. After standard text splitting creates chunks, pass each through a zero-temperature LLM with constrained classification prompt returning a single category label stored as chunk metadata. This adds some time consumed per chunk during ingestion but enables <STRONG>powerful section-aware retrieval</STRONG> and saves time during retrieval, users can query "show me pricing sections" and retrieve complete, focused pricing content rather than scattered paragraphs. Classification uses temperature=0 for deterministic results and minimal token output to reduce latency.&nbsp;<STRONG>Impact:</STRONG>&nbsp;Section-specific queries improve from 50-70% precision to 85-95%, with 60-80% reduction in irrelevant chunks.</P><P><FONT size="4"><STRONG>Innovation 2: Dual-Stream Chunking (Text + Tables)</STRONG></FONT></P><P>Implement parallel extraction pipelines-one for flowing text, one for structured data. During document processing, detect and extract tables, charts, and matrices as complete units separately from text extraction, <STRONG>preserving internal structure</STRONG> entirely. Convert tables to Markdown format for LLM readability, <STRONG>capture surrounding context</STRONG> (preceding 2-3 paragraphs explaining scope and assumptio, and infer semantic category from position. Store tables as independent chunks with specialized metadata: structure type, dimensions, contextual flags. Enrich table content with context prefix: "Context: The following pricing applies to annual contracts only. [Table: Pricing Matrix] | Plan | Cost | ..." This embeds business meaning with data structure, dramatically improving semantic search.&nbsp;<STRONG>Impact:</STRONG>&nbsp;100% table structure preservation (vs 20-30% with text splitting), <STRONG>90%+ precision for structured data queries</STRONG>, 50-70% better semantic relevance from context enrichment.</P><P><FONT size="4"><STRONG>Innovation 3: Rich Metadata Layer</STRONG></FONT></P><P>Attach comprehensive <STRONG>hierarchical metadata</STRONG> at three levels: folder/organizational (inherited from directory structure), document (file properties and custom business tags from document management systems), and chunk (section classification). Metadata captures identity (name, type, author), organizational context (department, region, category), temporal attributes (creation date, fiscal period), and custom business tags (vendor, client, project, status). Use inheritance pattern: folder-level tags apply to all contained documents, document-level tags override folder tags, chunk-level tags add section granularity. Store metadata as structured JSON alongside embeddings, enabling efficient database queries. On initialization, scan corpus to discover available metadata values across dimensions, building a catalog of unique vendors, document types, regions, years.&nbsp;<STRONG>Impact:</STRONG>&nbsp;Enables precise contextual queries combining 3-5 filters, reducing search space by <STRONG>95-98%</STRONG> before vector operations.</P><P><FONT size="4"><STRONG>Innovation 4: Metadata Pre-Filtering Before Vector Search&nbsp;<EM>(The Game Changer)</EM></STRONG></FONT></P><P>Execute metadata filtering BEFORE vector similarity search, reducing search space by to only contextually relevant candidates. Five-stage process:<BR />(1) Discover available metadata by scanning corpus—vendors, regions, document types, fiscal years,<BR />(2) LLM extracts relevant filters from user query given the discovered catalog, returning structured constraints like {vendor:[A,C], doc_type:[contract], year:[2024]}.<BR />(3) Build database query matching extracted metadata conditions.<BR />(4) Execute filter reducing 50,000 chunks to 500-1000 pre-qualified chunks (98%+ reduction).<BR />(5) Compute vector similarity only on filtered subset. Modern vector databases (like HANA Cloud) support hybrid queries combining metadata filters with vector similarity.&nbsp;<BR /><STRONG>Impact:</STRONG>&nbsp;3x faster, precision jumps from 15% to 95%+ because all results are contextually correct,<STRONG> 60-75% token reduction</STRONG> from tighter context.</P><P><FONT size="4"><STRONG>Innovation 5: Smart Chat History (User Messages Only)</STRONG></FONT></P><P>Store complete conversations in database for audit, but retrieve <STRONG>only user messages</STRONG> from time window (e.g., last 12 hours) when building context for new queries. AI responses are synthesized from documents already in database they add no new information, only consuming tokens. Use context retrieval of user messages only filtered by time window. Pass user-only history to LLM for query consolidation: "Given prior user queries [list], interpret new query in context." Time windowing captures typical work session duration while preventing stale context interference and naturally limiting context growth.&nbsp;<STRONG>Impact:</STRONG>&nbsp;<STRONG>90-97% token reduction</STRONG> on chat history, faster query processing, better context quality focusing only on user intent refinement trail.</P><P><FONT size="4"><STRONG>Innovation 6: Intent-Based Query Routing</STRONG></FONT></P><P>Classify user intent before processing, <STRONG>routing to appropriate pipeline</STRONG>: lightweight metadata retrieval for inventory queries, full RAG for content extraction. Use fast keyword matching for unambiguous queries ("list documents," "how many," "find all" → LIST intent; "what are," "summarize," "compare," "extract" → ANSWERING intent). LIST intent executes database query returning document names/counts/categories as structured HTML list (no LLM). ANSWERING intent executes full enhanced RAG with metadata filter, vector search, and LLM generation. For ambiguous queries, use lightweight LLM classification or default to ANSWERING.&nbsp;<STRONG>Impact:</STRONG>&nbsp;<STRONG>10x faster responses</STRONG> for inventory queries, <STRONG>40-60% lower API costs</STRONG>, better UX matching response type to user expectation (clean lists for inventory, comprehensive synthesis for extraction).</P><P><FONT size="4"><STRONG>Innovation 7: Production-Grade Resilience</STRONG></FONT></P><P>Implement fault-tolerant batch processing for enterprise-scale ingestion (1000+ documents, 100,000+ chunks). Four-layer defense: (1) <STRONG>Batch processing </STRONG>with rate limiting-split into small batches (10-20 chunks per call) with delays between batches (1-2s) and documents (3-5s), (2)<STRONG> Independent document processing</STRONG>-each document is autonomous unit, failure doesn't abort batch, successful documents commit immediately, (3) <STRONG>Progress tracking</STRONG>—real-time logging, error categorization, partial success reporting ("150 succeeded, 8 failed"). (4)<STRONG>Before processing, check database for existing documents</STRONG> by source URL (prevents deduplications and saves time as everytime it runs it only uploads delta documents).&nbsp;<BR /><STRONG>Impact:</STRONG>&nbsp;Reliable operation at scale, survives transient API failures without intervention, clear progress visibility, partial success delivery (</P><P><FONT size="5"><STRONG>Performance Impact: Traditional vs Enhanced</STRONG></FONT></P><TABLE width="635"><TBODY><TR><TD><P><STRONG>Metric</STRONG></P></TD><TD><P><STRONG>Traditional RAG</STRONG></P></TD><TD><P><STRONG>Enhanced RAG</STRONG></P></TD><TD><P><STRONG>Improvement</STRONG></P></TD></TR><TR><TD><P><STRONG>Query Latency</STRONG></P></TD><TD><P>2-4 seconds</P></TD><TD><P>0.5-1.2 seconds</P></TD><TD><P><STRONG>60-75% faster</STRONG></P></TD></TR><TR><TD><P><STRONG>Chunks Searched</STRONG></P></TD><TD><P>10,000-100,000+ (all)</P></TD><TD><P>500-2,000 (1-5% of corpus)</P></TD><TD><P><STRONG>95-98% reduction</STRONG></P></TD></TR><TR><TD><P><STRONG>Precision </STRONG></P></TD><TD><P>50-70% relevant</P></TD><TD><P>85-95% relevant</P></TD><TD><P><STRONG>30-40pp increase</STRONG></P></TD></TR><TR><TD><P><STRONG>False Positives</STRONG></P></TD><TD><P>30-50% of results</P></TD><TD><P>5-15% of results</P></TD><TD><P><STRONG>70-85% reduction</STRONG></P></TD></TR><TR><TD><P><STRONG>Token Usage (input)</STRONG></P></TD><TD><P>12,000-20,000 tokens</P></TD><TD><P>3,000-8,000 tokens</P></TD><TD><P><STRONG>60-75% reduction</STRONG></P></TD></TR><TR><TD><P><STRONG>Chat History Overhead</STRONG></P></TD><TD><P>6,000-8,000 tokens</P></TD><TD><P>150-300 tokens</P></TD><TD><P><STRONG>95-97% reduction</STRONG></P></TD></TR><TR><TD><P><STRONG>Inventory Query Time</STRONG></P></TD><TD><P>2-4 seconds (full RAG)</P></TD><TD><P>0.1-0.3 seconds (metadata)</P></TD><TD><P><STRONG>90-95% faster</STRONG></P></TD></TR><TR><TD><P><STRONG>Table Retrieval Success</STRONG></P></TD><TD><P>20-40% intact</P></TD><TD><P>95-100% intact</P></TD><TD><P><STRONG>3-4x improvement</STRONG></P></TD></TR><TR><TD><P><STRONG>Ingestion Success Rate</STRONG></P></TD><TD><P>60-80% (fails on errors)</P></TD><TD><P>90-98% (fault tolerance)</P></TD><TD><P><STRONG>15-30pp increase</STRONG></P></TD></TR></TBODY></TABLE><P><FONT size="4"><STRONG><FONT size="5">The Core Architectural Insight:</FONT><BR /></STRONG></FONT>&nbsp;Metadata filtering before vector search beats pure vector search. By filtering 95-98% of irrelevant chunks using structured metadata before expensive semantic similarity calculations, we achieve simultaneous improvements in speed, accuracy, and efficiency—the rare engineering win-win-win.</P><P><BR /><FONT size="4"><STRONG>Traditional RAG</STRONG></FONT></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2026-03-11 103028.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/383790iC0763198C2D8E913/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2026-03-11 103028.png" alt="Screenshot 2026-03-11 103028.png" /></span></P><P><FONT size="4"><STRONG>The New Pipeline</STRONG></FONT></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2026-03-16 103211.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/383791iDA4CB88CC594D7D6/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2026-03-16 103211.png" alt="Screenshot 2026-03-16 103211.png" /></span></P><P><FONT size="5"><STRONG>Conclusion:</STRONG>&nbsp;</FONT><BR />These seven innovations transform RAG from prototype demo to production-grade system users can trust. The patterns are <STRONG>platform-agnostic</STRONG> and applicable to any enterprise RAG system over <STRONG>large, diverse document collections</STRONG> with organizational hierarchies, temporal dimensions, and categorical properties.</P> 2026-03-16T05:36:58.019000+01:00 https://community.sap.com/t5/data-professionals-blog-posts/a-developer-s-coin-toss-app-data-or-enterprise-data/ba-p/14350176 A Developer's Coin Toss: App Data or Enterprise Data 2026-03-16T19:50:18.485000+01:00 Daniel_Dukes https://community.sap.com/t5/user/viewprofilepage/user-id/41370 <P class="lia-align-center" style="text-align: center;"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="two_developers_working_at_a_conference_table.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/384267iC968E2D2BA457D9C/image-size/large?v=v2&amp;px=999" role="button" title="two_developers_working_at_a_conference_table.png" alt="two_developers_working_at_a_conference_table.png" /></span></P><P class="lia-align-left" style="text-align : left;">Maya leans back from the whiteboard while a test run finishes and flips a coin into the air. Chris catches it, glances at their architecture, and says, “Heads, we optimize the data design for the app. Tails, we optimize for everything that comes after the app.” Maya laughs and reaches for the coin. “That is not how coin flips work,” she tells him. “We need both and you do not get to call both sides because you keep guessing wrong.” Chris sets the coin flat on the table between them and points at the diagram on their laptops. “That is the problem though,” he says. Then he highlights the rest of the diagram, where analytics, data products, and AI flows are sketched in different colors. “We no longer can build apps that work in isolation.”</P><P>Maya studies the drawing again and sees his point. Heads is the application, tails is the company’s <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/what-is-a-business-data-fabric/ba-p/13579695" target="_self">business data fabric</A>, and neither side makes sense without the other. Their new app still must perform, but the rest of the business also needs its data for analytics and AI. They may be separate solutions with different responsibilities, but the final design should share the application's data with the rest of the enterprise. Maya smiles after a quick thought, points back at the coin, and light-heartedly says, “Maybe you should stick with what you are good at.” Chris grins, because this time he is not guessing outcomes.</P><P><STRONG>Architecting for SAP HANA Cloud</STRONG></P><P>From a design perspective, SAP HANA Cloud does not force an architectural split between operational processing, analytical access, and AI-oriented data work. It is an in-memory database platform built for applications, analytics, and AI. However, this point is key - HANA Cloud gives applications one place to work with transactional and analytical patterns without immediately fragmenting the design. This consideration really comes into play when an application starts simple and then grows into something critically needed by the business.&nbsp;</P><P>A practical advantage for developers (and support teams) is the combination of multi-model engines, multi-store options, and AI capabilities in the same platform. An app can follow a store-data-once philosophy and still work with relational structures, graph relationships, spatial data, vector embeddings, JSON content, and predictive or machine learning-oriented patterns when the use case calls for them. That type of simplicity changes how development teams design their solutions. Instead of solving each new requirement with another specialized persistence layer, they can extend the data schema while pushing more logic into the database.</P><P>That design gets stronger when performance and storage are treated as part of the same conversation. Hot data can stay in memory for data needed in the moment. Less frequently accessed data can move to disk-based storage, and data with slower access requirements can move to the data lake tier without forcing the team to rethink the whole model. For developers and database administrators, that means they can optimize for response time, scale, and cost without turning the application into a map of disconnected databases.</P><P><STRONG>AI Solutions That Extend Business Processes</STRONG></P><P>AI becomes useful inside an application when it participates correctly in the business process. That means the service must receive the right context at the right handoff point, perform the right inference or retrieval step, and then pass a usable result into the next step in the flow. If any of those pieces sit too far away from the operational data, latency increases, context gets weaker, and the implementation usually starts depending on extra synchronization jobs or partial copies of data.</P><P>The SAP HANA Cloud vector engine and the knowledge graph engine live alongside the application data instead of being pushed into separate infrastructure from the start. The vector engine gives developers a way to encode embeddings and search by similarity, which makes it useful for memory-like retrieval patterns, semantic lookup, recommendation flows, and other use cases where likeness matters more than exact matching. That is often the first capability developers reach for when they want a generative AI experience to reference business context rather than produce generic output.</P><P>The knowledge graph engine addresses a different problem. It connects facts and relationships so an application can search through a domain of known information instead of relying only on nearest-neighbor similarity. In practice, that means a developer can ground an AI workflow in a connected business context such as entities, dependencies, roles, and process relationships. When that context is modeled well, the application becomes better at choosing the right supporting information before it asks a model to generate or recommend anything.</P><P>The important architectural point here is that these capabilities are available from the same database that already stores the application data. That reduces data sprawl, avoids unnecessary handoffs, and keeps retrieval and grounding close to the transaction or event that needs them. For a technical team, that is the difference between bolting AI onto a workflow and extending the workflow with AI in a way that remains understandable and maintainable.</P><P><STRONG>Easily Share Data with the Business Data Fabric</STRONG></P><P>Custom applications no longer live in isolation. Even when a team builds for a narrow operational use case, the data from that application quickly becomes relevant to analytics, planning, and AI across the wider enterprise. That “community” aspect of data is why the application's database as well as the business data fabric should not be treated as competing destinations for the same dataset. Even though their underlying systems are separate parts of the physical architecture, their use becomes more valuable when the application is designed to participate cleanly in the larger fabric.</P><P>Access to enterprise data is where SAP Business Data Cloud enters the conversation as an equal participant, but with a different role. If the application needs trusted, governed, business-ready data from the wider landscape, <A href="https://www.sap.com/resources/what-are-data-products" target="_self" rel="noopener noreferrer">data products</A> are a design concept to consider. They provide curated data sharing between producers and consumers versus ad hoc extracts or hand-built point integrations. Instead of pushing every integration burden back onto the application team, data products let the broader architecture expose reusable, semantically meaningful data for consumption across applications, analytics and AI scenarios.</P><P>Regarding the integration of the application back into the data fabric, every process does not necessarily require the duplication of data. SAP Datasphere can consume data from SAP HANA Cloud virtually, which is often the cleanest option when the performance of live access is sufficient. The data can also be replicated when persistence makes the better choice. Ultimately, the option to choose between integration methodologies gives teams a practical decision rather than a forced one. They can preserve operational integrity in the application while still making its data available to the broader business data fabric in a technically sensible way.</P><P>Thus, the real lesson behind Maya and Chris’s coin game. Heads and tails equally add value to the same object. In the same way, SAP HANA Cloud does not become SAP Business Data Cloud, and SAP Business Data Cloud does not replace the application database. Each solution plays its own role. The business truly benefits when "both sides of the coin" are designed to complement one another.</P><P><STRONG>Conclusion</STRONG></P><P>Application data and enterprise data no longer must live as separate worlds. They can function together like two sides of the same coin, with SAP HANA Cloud supporting the operational and AI-ready application foundation while SAP Business Data Cloud supports the governed, reusable, enterprise-wide data context. When those roles are designed intentionally, there is less guessing about whether the right answer lives on the “heads” side or the “tails” side. The architecture is already prepared for both.</P><P>If your team is researching a database solution for its next application or AI solution, start with the <A href="https://www.sap.com/products/data-cloud/hana/trial.html" target="_self" rel="noopener noreferrer">SAP HANA Cloud basic trial</A>. It gives hands-on access to an in-memory, multi-model, multi-store database and includes guided material that helps a developer move from first setup into core platform capabilities. Next, try the <A href="https://discovery-center.cloud.sap/missiondetail/4405/" target="_self" rel="nofollow noopener noreferrer">Discovery Center mission</A> on generative AI with SAP HANA Cloud Vector Engine. It builds naturally from the fundamentals into a more advanced path that combines vector storage and similarity search so you can see how application data, retrieval, and AI handoffs work together in a realistic pattern. After that, keep the momentum going by working through the <A href="https://developers.sap.com/mission.hana-cloud-get-started.html" target="_self" rel="noopener noreferrer">getting-started tutorial</A> and joining the <A href="https://community.sap.com/t5/data-professionals/gh-p/data-professionals" target="_self">Data Professionals community group</A>. These next steps give you a useful mix of hands-on practice, deeper technical content, and peer discussion with other developers and data professionals.</P><P><EM>Finally, take some time today and challenge a colleague to guess a couple of coin tosses.&nbsp;If you want, share in the comments: “What data design did you two implement that looking back you would have done differently?”</EM></P><P><STRONG>Recommended Resources</STRONG></P><P>Blog Post: <A href="https://www.sap.com/resources/what-are-data-products" target="_self" rel="noopener noreferrer">What are data products?</A></P><P>Blog Post: <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/what-is-a-business-data-fabric/ba-p/13579695" target="_blank">What is a business data fabric?</A></P><P>Hand-on: SAP HANA Cloud - Basic Trial: <A href="https://www.sap.com/products/data-cloud/hana/trial.html" target="_blank" rel="noopener noreferrer">https://www.sap.com/products/data-cloud/hana/trial.html</A></P><P>Hands-on: SAP HANA Cloud - Getting Started Tutorial: <A href="https://developers.sap.com/mission.hana-cloud-get-started.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/mission.hana-cloud-get-started.html</A></P><P>Hands-on: SAP HANA Cloud - Vector Engine – Discovery Mission: <A href="https://discovery-center.cloud.sap/missiondetail/4405/" target="_blank" rel="noopener nofollow noreferrer">https://discovery-center.cloud.sap/missiondetail/4405/</A></P><P>Social: SAP Data Professionals Community: <A href="https://community.sap.com/t5/data-professionals/gh-p/data-professionals" target="_blank">https://community.sap.com/t5/data-professionals/gh-p/data-professionals</A></P> 2026-03-16T19:50:18.485000+01:00 https://community.sap.com/t5/artificial-intelligence-blogs-posts/langchain-hana-cache/ba-p/14345633 Langchain Hana Cache 2026-03-18T07:36:35.841000+01:00 david_diaz https://community.sap.com/t5/user/viewprofilepage/user-id/799372 <H2 id="toc-hId-1791462501">Introduction</H2><P>When building AI agents your first priority is to make this bad boy work. Get the RAG pipeline properly aligned, check retrieval correctness and check the overall answer usefulness. The task is not an easy one when you work with clients that have thousands or millions of documents that must be ingested properly.</P><P>Eventually you reach the point where you deploy the agents in production. You enjoy the good engineering results until the next BTP invoice shows up. You check the token usage and realize you need to do something about it because, well, it is a lot.</P><P>So you check your traces, and discover that while there is a ton of interaction with the agent, a big portion of those calls are variations of the same questions. Different users, slightly different wording, but the same answer every time. "How do I reset my password", "password reset help", "I forgot my password." Three different prompts, three LLM calls, three times you pay. Same answer.</P><P>That's where I found myself after deploying LangGraph agents on SAP BTP with HANA Cloud. The pipeline worked well. The retrieval was solid (I'd already built <A href="https://github.com/stubborncoder/langchain-hana-retriever" target="_blank" rel="noopener nofollow noreferrer">langchain-hana-retriever</A> for hybrid search). The agent state was persisted (using <A href="https://github.com/stubborncoder/langgraph-checkpoint-hana" target="_blank" rel="noopener nofollow noreferrer">langgraph-checkpoint-hana</A>). But the token bill kept growing with every new user asking the same things in different words.</P><P>So I decided to also built a semantic cache for HANA Cloud, that will enhance the langchain/langraph solution that I'm using with my SAP clients and their rag Pipelines.</P><H2 id="toc-hId-1594948996">The idea</H2><P>Pretty straightforward: before calling the LLM, embed the user's prompt and check HANA for a stored response to a similar prompt. If the similarity is high enough, return the cached answer and skip the API call entirely. If there's no match, call the LLM normally and cache the result for next time.</P><P>HANA Cloud already has COSINE_SIMILARITY for vector search. It's the same function that powers RAG retrieval. Here I'm just pointing it at prompts instead of documents.</P><OL><LI>User sends a prompt</LI><LI>Embed the prompt into a vector</LI><LI>Search HANA for cached entries using COSINE_SIMILARITY</LI><LI>If there's a match above the threshold, return the cached response. No LLM call.</LI><LI>If no match, call the LLM, store the prompt embedding + response in HANA, return the response</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="langchain-hana-cache-inphografic.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/381826i1A1981A8A2C34092/image-size/large?v=v2&amp;px=999" role="button" title="langchain-hana-cache-inphografic.jpg" alt="langchain-hana-cache-inphografic.jpg" /></span></P><H2 id="toc-hId-1398435491">Installation and setup</H2><P>as usual pretty straight forward</P><PRE><CODE>pip install langchain-hana-cache</CODE></PRE><P>The package implements LangChain's BaseCache interface. You set it as the global cache and every LLM call in your application checks HANA first. You don't need to change anything else in your code:</P><PRE><CODE>import hdbcli.dbapi from langchain_hana_cache import HANASemanticLLMCache from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_core.globals import set_llm_cache connection = hdbcli.dbapi.connect( address="your-host.hanacloud.ondemand.com", port=443, user="DBADMIN", password="your-password", encrypt=True, ) embeddings = OpenAIEmbeddings(model="text-embedding-3-small") cache = HANASemanticLLMCache( connection=connection, embedding=embeddings, table_name="LLM_CACHE", similarity_threshold=0.95, ) set_llm_cache(cache) llm = ChatOpenAI(model="gpt-4o") # First call: hits the API, caches the result response1 = llm.invoke("What are the reporting requirements for article 12?") # Second call with similar wording: cache hit, no API call response2 = llm.invoke("Tell me about article 12 reporting requirements")</CODE></PRE><P>That second call comes back instantly. Same answer, zero tokens consumed.</P><H2 id="toc-hId-1201921986">What I actually saw when I tested it</H2><P>I ran three consecutive calls against my HANA Cloud instance to see what happens. First a new question, then the same question but rephrased, then something completely different:</P><pre class="lia-code-sample language-bash"><code> ====================================================================== HANASemanticLLMCache Demo ====================================================================== [1] Connecting to SAP HANA Cloud... ✓ Connected [2] Creating semantic cache (table: LLM_CACHE_DEMO_85DFB4)... ✓ Cache ready (vector dim auto-detected) [3] First LLM call (cache MISS expected): Prompt: "What are the three laws of thermodynamics? Explain briefly." Response: The three laws of thermodynamics are fundamental principles... ⏱ Time: 9.46s [4] Second LLM call (cache HIT expected, similar prompt): Prompt: "Explain the 3 laws of thermodynamics in a short summary" Response: The three laws of thermodynamics are fundamental principles... ⏱ Time: 0.41s [5] Third LLM call (cache MISS expected, different topic): Prompt: "What is the recipe for a classic French omelette?" Response: A classic French omelette is simple yet elegant... ⏱ Time: 8.16s ====================================================================== Results Summary ====================================================================== Call 1 (MISS): 9.46s LLM called, response cached Call 2 (HIT): 0.41s served from HANA cache! Call 3 (MISS): 8.16s different topic, LLM called Speedup on cache hit: 23.0x faster (96% latency reduction) ======================================================================</code></pre><P>9.46 seconds down to 0.41. That's 23x faster. And the omelette question correctly missed the cache because it has nothing to do with thermodynamics. The thing actually works.</P><H2 id="toc-hId-1005408481">Tuning the similarity threshold</H2><P>This is the one knob you need to care about. The similarity_threshold controls how close two prompts need to be for a cache hit:</P><UL><LI><STRONG>0.98</STRONG>: very strict. Only nearly identical prompts match. Safe, but you won't save much.</LI><LI><STRONG>0.95</STRONG>: what I use. Catches rephrasings without being too loose.</LI><LI><STRONG>0.90</STRONG>: aggressive. You save more, but you risk serving a wrong answer when two different questions happen to look similar to the model.</LI></UL><P>I started with 0.95 and haven't needed to touch it. If your agent handles very repetitive questions (think support desk), you could try going lower and see what happens.</P><H2 id="toc-hId-808894976">Dealing with stale answers</H2><P>Once this is running in production you'll think about the next problem: what if the source documents change? If someone updates a policy and a user asks about it, the cache might still serve the old answer. TTL (time-to-live) takes care of that:</P><PRE><CODE>cache = HANASemanticLLMCache( connection=connection, embedding=embeddings, table_name="LLM_CACHE", similarity_threshold=0.95, ttl_seconds=86400, # entries expire after 24 hours ) # Manual cleanup when you need it cache.evict_expired() cache.evict_lru(max_entries=1000) cache.clear()</CODE></PRE><H2 id="toc-hId-612381471">What the cache table looks like</H2><P>Under the hood, the package creates a single table in HANA with:</P><UL><LI><STRONG>PROMPT_HASH</STRONG>: SHA256 of the exact prompt to prevent storing duplicates</LI><LI><STRONG>PROMPT_TEXT</STRONG>: the original prompt text</LI><LI><STRONG>PROMPT_EMBEDDING</STRONG>: the vector for semantic matching (REAL_VECTOR column)</LI><LI><STRONG>LLM_STRING</STRONG>: which model generated the response. GPT-4o cache won't serve GPT-3.5 queries.</LI><LI><STRONG>RESPONSE</STRONG>: the serialized LLM response</LI><LI><STRONG>CREATED_AT, LAST_ACCESSED, HIT_COUNT</STRONG>: for TTL and eviction</LI></UL><P>The vector dimension is auto-detected from whatever embedding model you pass in. You don't have to think about it.</P><H2 id="toc-hId-415867966">When all this makes sense?</H2><P>Well, this is not something you add on day one to a rag pipeline. As I told at the beginnig of this article, you add it after your agent is working and you're looking at how to make it sustainable, you have to also check whether you are making use the llm cache capabilities, taking care of cache invalidation, the agent making good use of the retrieval tools, etc... In my experience it pays off when:</P><UL><LI>Multiple users are hitting the agent with variations of the same questions</LI><LI>You're on an expensive model and the monthly bill reflects it</LI><LI>The answers stay valid for hours or days (policies, regulations, product docs, internal knowledge bases)</LI></UL><P>It makes less sense when every query is truly unique, or when your data changes so fast that the cache is always stale.</P><P>Also one thing to keep in mind: every cache lookup needs an embedding call to compare the incoming prompt against stored ones. <STRONG>If your LLM is super cheap, the embedding might actually cost more than just calling the model</STRONG>.</P><H2 id="toc-hId-219354461">What's next</H2><P>This is v0.1.0, focused on LLM response caching. I'm working on two more pieces:</P><UL><LI><STRONG>Retriever cache</STRONG>: cache the retrieved document chunks so similar queries skip the embedding + vector search step entirely</LI><LI><STRONG>Pipeline cache</STRONG>: cache the full pipeline result, retrieval + LLM together, for maximum savings on repeated queries</LI></UL><P>Each one targets a different part of the cost. Together they should cover most of the optimization you'd want after getting a RAG pipeline into production.</P><H2 id="toc-hId-22840956">Conclusion</H2><P>Building the agent is the hard part. Making it affordable is the next challenge, and it's a much more tractable one. This cache lives in the same HANA instance as your business data. No extra infrastructure, just one more table. I saw 23x speedups on cache hits in my tests and the token savings add up fast once you have real users hitting the agent every day.</P><P>Give it a try and let me know how it goes.</P><UL><LI><STRONG>PyPI:</STRONG> <A href="https://pypi.org/project/langchain-hana-cache/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/langchain-hana-cache/</A></LI><LI><STRONG>GitHub:</STRONG> <A href="https://github.com/stubborncoder/langchain-hana-cache" target="_blank" rel="noopener nofollow noreferrer">https://github.com/stubborncoder/langchain-hana-cache</A></LI></UL> 2026-03-18T07:36:35.841000+01:00 https://community.sap.com/t5/technology-blog-posts-by-members/a-use-case-for-hana-cloud-knowledge-graph-ai-driven-tender-analysis/ba-p/14352125 A Use Case for HANA Cloud Knowledge Graph: AI‑Driven Tender Analysis 2026-03-19T16:08:09.126000+01:00 giacomo_dantonio https://community.sap.com/t5/user/viewprofilepage/user-id/1957975 <H2 id="toc-hId-1792291815">Introduction</H2><P><SPAN>Many companies face the same challenge: they need to match unstructured text, such as tenders, applications, or support tickets, with their internal data to make informed decisions. In our project, we tackled exactly this problem and worked on an application that connects text understanding, semantic search and structured data. Our primary objective was to acquire knowledge about the tools SAP offers for developing applications of this nature. We undertook this project as part of SAP’s Early Adopter Care program for the <a href="https://community.sap.com/t5/c-khhcw49343/SAP+HANA+Cloud/pd-p/73554900100800002881" class="lia-product-mention" data-product="22-1">SAP HANA Cloud</a>&nbsp;</SPAN><SPAN>Knowledge Graph Engine.</SPAN></P><P><SPAN>Our concrete use case was an internal tender analysis scenario within our company, focusing on public-sector calls for tenders. Deciding about potential participation requires answering several questions: Does the topic fit our company's portfolio, which skills and experience are required and do the required skills exist in our organization, are the necessary resources available? Instead of manually searching for this information through documents and databases, we wanted to automate this process. The goal was to build a system that can read and interpret the tender text, understand the company's internal skill profiles, and combine both to produce a meaningful recommendation.</SPAN></P><P><SPAN>To achieve this, we combined three capabilities:</SPAN></P><UL><LI><SPAN>semantic structuring of employee data using a knowledge graph</SPAN></LI><LI><SPAN>semantic representation of competency descriptions and CVs using vector embeddings</SPAN></LI><LI><SPAN>LLM-powered analysis to interpret and connect both worlds</SPAN></LI></UL><P><SPAN>This architecture allowed us to bring together unstructured text and structured data enabling precise matching and explainable results, thus building a foundation that can be reused for many other AI scenarios.</SPAN></P><P><SPAN>We implemented the application using <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+Application+Programming+Model/pd-p/9f13aee1-834c-4105-8e43-ee442775e5ce" class="lia-product-mention" data-product="100-1">SAP Cloud Application Programming Model</a>&nbsp;(CAP), a cloud-native framework that seamlessly integrates with <a href="https://community.sap.com/t5/c-khhcw49343/SAP+HANA+Cloud/pd-p/73554900100800002881" class="lia-product-mention" data-product="22-2">SAP HANA Cloud</a>, <a href="https://community.sap.com/t5/c-khhcw49343/SAP+AI+Core/pd-p/73554900100800003641" class="lia-product-mention" data-product="405-1">SAP AI Core</a>&nbsp;and the Generative AI Hub (GenAI Hub). To give you a clear picture of how these components work together, the solution diagram below illustrates the overall flow, from data ingestion to semantic processing to the final application.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Solution Diagram" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385478iFD6E80C0CCECD30D/image-size/large?v=v2&amp;px=999" role="button" title="tech-blog-architecture.png" alt="Solution Diagram" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Solution Diagram</span></span></P><H2 id="toc-hId-1595778310">Provisioning the Resources</H2><P><SPAN>To implement this architecture, we provisioned a set of cloud resources in SAP BTP , each of which contribute a specific capability to the overall workflow.</SPAN></P><P><SPAN>At the center of the setup is SAP HANA Cloud, which provides both the Knowledge Graph Engine (KGE) and the Vector Engine (VE), and in which the CAP application data is persisted. The KGE is not enabled by default; it must be activated when the HANA instance is created and comes with some technical requirements:</SPAN></P><UL><LI><SPAN>Triple Store activation: The KGE relies on the HANA Triple Store, which must be enabled as part of the instance configuration. Without this, RDF triples cannot be stored or queried.</SPAN></LI><LI><SPAN>Minimum memory requirement: The KGE requires a HANA instance with at least 48 GB memory. This is necessary because storing the graph, executing SPARQL and SQL statements, and inference processes such as subclass inference, domain/range inference, and transitive property expansion operate in-memory. Smaller instances cannot activate Triple Store at all.</SPAN></LI></UL><P><SPAN>For the AI workflows, we provisioned AI Core which includes the GenAI Hub</SPAN>. AI Core runs the embedding and LLM processing jobs, while the GenAI Hub provides access to the models used for these tasks. This allows the application to generate semantic representations of text documents (tenders and CVs in our use case)<SPAN> and to retrieve information of documents via prompts.</SPAN></P><P><SPAN>The application layer itself is deployed as a CAP service running in a Cloud Foundry environment. CAP binds to the HANA Cloud, AI Core, and GenAI Hub service instances through standard service bindings, i.e. by receiving all required credentials and endpoints through environment variables.</SPAN></P><P><SPAN>This provisioning model keeps the architecture modular: each capability (knowledge graph, vector search, AI processing, and application logic) is provided as a separate cloud resource. It also makes the system easy to extend. </SPAN></P><H2 id="toc-hId-1399264805">Knowledge Graphs and Embeddings: The Semantic Foundation of Our Architecture</H2><P><SPAN>Before diving into the SAP-specific components, it is useful to look at the two core concepts that shape our solution: knowledge graphs and embeddings. Both address the same challenge from different angles: turning human-readable meaning into structured, machine-interpretable representation.</SPAN></P><H3 id="toc-hId-1331834019">Knowledge Graphs: Representing Relations between Data Entities</H3><P><SPAN>A knowledge graph stores information not as tables, but as entities and relationships. Instead of using foreign keys and joins, it forms an explicit network of connected facts. This makes it easier to express complex relationships, integrate data, and run queries that follow semantic structures rather than rigid schemas.</SPAN></P><P><SPAN>At the heart of every knowledge graph is an ontology: a structured definition of entities, properties, and relationships that the graph represents. An ontology defines:</SPAN></P><UL><LI><SPAN>classes (e.g., <EM>Person</EM>, <EM>Skill</EM>, <EM>Project</EM>)</SPAN></LI><LI><SPAN>properties that connect them (e.g., <EM>hasSkill</EM>, <EM>requiresSkill</EM>)</SPAN></LI><LI><SPAN>hierarchies and subclasses (e.g., abstract classes or hierarchical organization units)</SPAN></LI><LI><SPAN>constraints and expected value types (e.g., each identifiable entity has exactly one ID of type int)</SPAN></LI></UL><P><SPAN>The ontology gives the graph its semantic structure. It tells the system what kinds of things exist in the domain and how they relate to each other. Without an ontology, a knowledge graph would be just a collection of disconnected triples.</SPAN></P><P><SPAN>Knowledge graphs are typically stored as RDF (Resource Description Framework) triples, with the following general structure:</SPAN></P><PRE><SPAN>Subject – Predicate – Object</SPAN></PRE><UL><LI><SPAN>Subject: the thing we are talking about</SPAN></LI><LI><SPAN>Predicate: the property or relationship</SPAN></LI><LI><SPAN>Object: the value or another entity</SPAN></LI></UL><P><SPAN>For example:</SPAN></P><PRE><SPAN>Person123 – hasSkill – Python</SPAN></PRE><P><SPAN>This triple structure is simple but flexible and extensible. It is especially suitable for representing domains where the data model evolves over time.</SPAN></P><P><SPAN>To query RDF data, we use SPARQL, a graph-oriented query language. Instead of specifying joins explicitly – as is required in SQL – SPARQL expresses patterns that should appear in the data. This approach is particularly powerful for dynamic or AI-generated queries, where the structure of the query may not be known in advance. While SQL’s traditional query optimization excels when working with predefined schemas and foreign keys, it becomes less flexible when relationships or entity types vary. SPARQL, by contrast, is built to operate on semantic relationships and can naturally accommodate evolving graph structures.</SPAN></P><P><SPAN>The conceptual difference becomes clear when comparing a typical SQL query—which depends on rigid tables and join conditions—with an equivalent SPARQL query, where relationships are expressed in a way that is closer to how users understand the domain. In SPARQL, entities and relationships are simply assumed to exist in the graph without requiring predefined foreign-key constraints.</SPAN></P><P><SPAN><STRONG>SQL-Query example</STRONG></SPAN></P><pre class="lia-code-sample language-sql"><code>SELECT u.UserID, u.JobPosition, u.OrgUnitID, s.SkillName, us.SkillLevel, us.SkillLevelName, FROM Users u JOIN UserSkills us ON u.UserID = us.UserID JOIN Skills s ON us.SkillID = s.SkillID WHERE u.Active = 1</code></pre><P><SPAN><STRONG>SPARQL-Query example</STRONG></SPAN></P><pre class="lia-code-sample language-sql"><code>PREFIX : &lt;http://example.org/my-project#&gt; PREFIX rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; PREFIX xsd: &lt;http://www.w3.org/2001/XMLSchema#&gt; SELECT ?person ?position ?skill ?skillName ?level WHERE { ?person rdf:type :Person ; :isActive true ; :hasJobPosition ?position ; :hasUserSkill ?userSkill . ?userSkill :connectsToSkill ?skill ; :hasSkillLevel ?level ; :hasSkillLevelName ?levelName . ?skill :hasSkillName ?skillName . }</code></pre><P>&nbsp;<SPAN>In short:</SPAN></P><UL><LI>SQL is designed for handling stable, well-defined tabular schemas with fixed relationships.</LI><LI>SPARQL is designed for handling semantic relationships, flexible graph structures, and dynamically changing query shapes, making it well suited for AI-generated scenarios.</LI></UL><H3 id="toc-hId-1135320514"><SPAN>Embeddings: Encoding Text Semantics as Vectors</SPAN></H3><P><SPAN>Embeddings take a different approach. Instead of modelling explicit relationships, they encode the semantic meaning of text as high-dimensional vectors. Similar texts end up close to each other in vector space while unrelated texts are far apart. This enables semantic search, similarity matching and clustering. Embeddings are essential when working with documents like tenders or CVs, where meaning is not explicitly structured but must be inferred.</SPAN></P><H3 id="toc-hId-938807009"><SPAN>How This Maps to the SAP World: KGE and VE</SPAN></H3><P><SPAN>SAP HANA Cloud provides built-in components that implement these concepts directly inside the database:</SPAN></P><UL><LI><SPAN>The Knowledge Graph Engine (KGE) stores RDF triples and executes SPARQL queries. It gives us explicit, queryable relationships between entities such as people, skills, and projects.</SPAN></LI><LI><SPAN>The Vector Engine (VE) stores embeddings and provides functions for calculating the cosine similarity between embeddings, which simplifies similarity searches. It allows us to compare tender documents with CVs or skill profiles on a semantic level.</SPAN></LI></UL><P><SPAN>Together, KGE and VE combine explicit knowledge in the form of the knowledge graph structure with implicit meaning in the form of text embeddings. This dual representation enables our application to extract relevant information from tender documents and map it to our data model of employee competencies.</SPAN></P><P><SPAN>In the next section, we will look at how we designed the ontology and processed the data to populate both engines.</SPAN></P><H2 id="toc-hId-613210785"><SPAN>Building the Knowledge Graph</SPAN></H2><P><SPAN>Creating the knowledge graph was a multi-step process that combined data engineering, domain modeling, and graph construction. While some parts of the pipeline can be automated, the core design work requires domain knowledge and deliberate modeling decisions. In our project we followed a three-stage approach.</SPAN></P><H3 id="toc-hId-545779999"><SPAN>Selecting and Structuring Relevant Data</SPAN></H3><P><SPAN>The first step was to identify which data should become part of the knowledge graph and how these pieces of information relate to each other. This is a classic data engineering task: understanding the domain, exploring the available data sources, and deciding which entities and relationships are relevant for the scenario.</SPAN></P><P><SPAN>In our case, this meant analyzing the existing SQL-based data model (employees, skills, projects, roles, and assignments) and determining which parts of it contain meaningful information for matching tenders with internal capabilities. This step cannot be easily automated; it requires domain knowledge to decide which entities and relationships between them matter for the business question and which attributes are relevant for which entity type.</SPAN></P><H3 id="toc-hId-349266494"><SPAN>Creating An Ontology</SPAN></H3><P><SPAN>Once the structure of the ontology has been decided on, it can be translated into classes, properties, hierarchies, and constraints that structure the graph. </SPAN></P><P><SPAN>Our ontology is defined using Turtle (Terse RDF Triple Language), a human-readable syntax for expressing RDF data. Turtle is a W3C standard that provides a compact and intuitive way to describe semantic relationships. It is based on the following key syntax elements:</SPAN></P><P><STRONG><SPAN>Prefixes</SPAN></STRONG><SPAN>: Define namespace shortcuts for cleaner code</SPAN></P><pre class="lia-code-sample language-sql"><code>@prefix : &lt;http://example.org/our-project#&gt; . @prefix owl: &lt;http://www.w3.org/2002/07/owl#&gt; . @prefix rdfs: &lt;http://www.w3.org/2000/01/rdf-schema#&gt; .</code></pre><P><STRONG><SPAN>Classes</SPAN></STRONG><SPAN>: Define entity types using </SPAN><EM>a owl:Class</EM></P><pre class="lia-code-sample language-sql"><code>:Person a owl:Class ; rdfs:label "Person" ; rdfs:comment "Individual employee or consultant" .</code></pre><P><STRONG><SPAN>Properties</SPAN></STRONG><SPAN>: Define relationships (ObjectProperty) or attributes (DatatypeProperty)</SPAN></P><pre class="lia-code-sample language-sql"><code>:possessesSkillWith a owl:ObjectProperty ; rdfs:domain :Person ; rdfs:range :UserSkill .</code></pre><P><SPAN>This links a person to their skill instances which include, e.g., proficiency levels and experience.</SPAN></P><P><STRONG><SPAN>Triples</SPAN></STRONG><SPAN>: The fundamental RDF structure (Subject-Predicate-Object)</SPAN></P><pre class="lia-code-sample language-sql"><code>:Person rdfs:subClassOf :IdentifiableEntity .</code></pre><P><SPAN>This reads as: "Person is a subclass of IdentifiableEntity"</SPAN></P><P>The semicolon notation allows defining multiple properties of the same entity without repeating the subject. The following statement is equivalent to four separate triples, but much more readable:</P><pre class="lia-code-sample language-abap"><code>:Person a owl:Class ; rdfs:label "Person" ; rdfs:comment "Individual employee" ; rdfs:subClassOf :IdentifiableEntity .</code></pre><P>To organize related concepts, we introduced abstract classes. They reduce redundancy by collecting shared properties in one place instead of repeating them across many similar classes. This makes the ontology easier to maintain and ensures consistency because updates to shared properties only need to be made once.</P><P>In addition to structuring the model, the ontology also defines formal constraints that describe how data in the knowledge graph is expected to look. These constraints specify rules and cardinalities, such as requiring each person to have exactly one <EM>UserID</EM> or ensuring that each project includes a start date. While SAP HANA Cloud cannot automatically enforce these constraints without a reasoner, they still serve as valuable documentation and help implementing validation checks using Shapes Constraint Language tools.</P><H3 id="toc-hId-152752989">Creating Instances</H3><P><SPAN>The knowledge graph contains instances that are generated from data stored in a relational database. To connect both worlds, we defined a mapping that links SQL tables and columns to ontology properties. For example, the ontology property</SPAN> <EM>hasUserID</EM><SPAN> corresponds to the column </SPAN><EM>UserID</EM><SPAN> in the table <EM>Users</EM> in an SQL database. This declarative mapping makes it possible to extract relational data and convert it into semantic triples .</SPAN></P><P><SPAN>Simple one‑to‑one and one‑to‑many relationships can be handled directly. For many‑to‑many relationships, we added an extended mapping layer that can follow junction tables in the relational schema.</SPAN></P><P><SPAN>Because SAP HANA Cloud’s RDF Store does not include a reasoner, inverse properties cannot be inferred automatically. They must be created explicitly during triple generation. To support this, our mapping configuration allows us to define inverse property pairs (e.g., </SPAN><EM>tagsProject</EM> ↔ <EM>projectTaggedWith</EM>), so the parser generates both directions of the relationship automatically<SPAN>.</SPAN></P><P><SPAN>The triple generation pipeline runs in several steps. First, it creates datatype property triples (literal attributes), automatically assigning the correct types based on the ontology. Then it generates object property triples (links between entities), using an in-memory index to quickly look up target URIs. For large datasets, the system uses chunked batch processing to load triples in bulk, which improves performance and reduces memory usage.</SPAN></P><P><SPAN>Each ontology class is written into its own RDF graph, allowing updates to specific entity types without reloading the entire knowledge base. Finally, the system serializes these graphs into Turtle (.ttl) files and uploads them to the SAP Knowledge Graph Engine (i.e., SAP HANA Cloud’s RDF Store).</SPAN></P><H2 id="toc-hId-174411122"><SPAN>Requirement Analysis and Evaluation</SPAN></H2><H3 id="toc-hId--315505390"><SPAN>Extracting required skills and experience levels via Prompts</SPAN></H3><P><SPAN>To extract information from tender documents, we developed an LLM‑based pipeline that first checks whether a tender fits the company’s domain. For tenders that match the business profile, the pipeline automatically generates a concise text summary and extracts the skills referenced in the document. For each identified skill, it captures the skill name, and its stated importance level in the tender — classified as <EM>must-have</EM>, <EM>should-have,</EM> or <EM>nice-to-have</EM> (when explicitly indicated in the text). </SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Skills and priorities" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385520iC3C2C139CA19A929/image-size/large?v=v2&amp;px=999" role="button" title="screenshot-skills.png" alt="Skills and priorities" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Skills and priorities</span></span></SPAN></P><H3 id="toc-hId--512018895">Skill Matching</H3><P><SPAN>This structured extraction turns free</SPAN>‑<SPAN>text requirements into machine</SPAN>‑<SPAN>readable skill profiles that can be directly queried within our knowledge graph. For these queries, the system needs to match the skills extracted by the LLM</SPAN> <SPAN>with the skill names stored in the employee database. These names rarely match exactly because of synonyms or different wording. We have implemented this matching by first looking up the top-k skills most similar in terms of word embedding using the Knowledge Graph Engine and subsequently filtering out entries that are unrelated to the skill mentioned in the tender via a prompt (for example, matching “Python” in the tender to entries like “Python 3” or “Python Programming” in the employee database).</SPAN></P><P><SPAN>Once the skill mapping is complete, the matched skills are inserted into a predefined SPARQL query. This query returns all employees who have these skills, including their proficiency levels, enabling automated candidate identification for tender requirements.</SPAN></P><P><SPAN>By combining embeddings with LLMs, the system can handle linguistic variations while still generating precise SPARQL queries.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Users matching" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385521iC1B6CAC6380349CF/image-size/large?v=v2&amp;px=999" role="button" title="screenshot-users.png" alt="Users matching" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Users matching</span></span></SPAN></P><P>&nbsp;</P><H3 id="toc-hId--708532400">Requirement Evaluation</H3><P><SPAN>Once employees with the required skills are found through the SPARQL queries, the system calculates a skill score based on their proficiency levels. A skill receives a score of 1.0 if at least one employee is an expert, 0.8 for intermediate proficiency, 0.5 for beginner-level proficiency, and 0.0 if no one in the company has that skill. This gives an overall picture of how well the organization covers each required competency.</SPAN></P><P>The skill scores are aggregated within the importance levels (must‑have, should‑have, nice‑to‑have) using a simple average. The result is a score for each importance level that shows how well the company’s employees' competencies match the tender requirements at different levels of importance.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Aggregated scores" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385522iD3DAABEACFA57E09/image-size/large?v=v2&amp;px=999" role="button" title="screenshot-analysis.png" alt="Aggregated scores" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Aggregated scores</span></span></P><H2 id="toc-hId--611642898">Supplementary Analysis: Comparing Employee CVs and Tender Text</H2><P><SPAN>Beyond the structured skill matching outlined above, we added a second analysis pipeline which determines the suitability of candidates for a given tender document by evaluating the semantic similarity between employee CVs and tender text based on embeddings.</SPAN></P><P><SPAN>Employee CVs are split into meaningful chunks (up to 6,000 tokens each) so that related information about projects and skills stays together. Each chunk is then embedded using a suitable model deployed through the SAP AI Core and stored in SAP Vector Engine (i.e. SAP HANA Cloud’s vector database) for semantic search. Tender documents go through the same embedding process, turning unstructured text into dense vectors that capture meaning beyond simple keywords.</SPAN></P><P><SPAN>To identify suitable candidates, the system compares CV embeddings with tender embeddings using cosine similarity, ranking employees according to how closely their experience aligns with the project requirements. By capturing semantic similarity rather than relying on exact keyword matches, this approach enables accurate matching even when different wording or terminology is used.</SPAN></P><P>By combining precise skill matching through the knowledge graph with semantic search across CV embeddings, the system provides a comprehensive way to find candidates based both on explicitly listed competencies and experience descriptions.</P><H2 id="toc-hId--808156403">Outlook</H2><P>As a next step, we plan to enable fully automated tender analysis where LLMs generate SPARQL queries directly from the tender text, without relying on predefined templates. This means the LLM would translate project requirements into precise knowledge graph queries on its own. For example, if a tender asks for “three senior Java developers with cloud architecture experience and at least five years in the financial sector,” the LLM would automatically create a SPARQL query that filters employees by skill levels, domain experience, and project history, returning all candidates who meet these criteria in one step.</P> 2026-03-19T16:08:09.126000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/introducing-performance-analyzer-in-sap-hana-cloud-central/ba-p/14356442 Introducing Performance Analyzer in SAP HANA Cloud Central 2026-03-24T00:07:25.343000+01:00 Hai https://community.sap.com/t5/user/viewprofilepage/user-id/160136 <H3 id="toc-hId-1921496640"><STRONG><SPAN>Overview<SPAN>&nbsp;</SPAN></SPAN></STRONG></H3><P><SPAN>SAP HANA Cloud Central now includes the Performance Analyzer, a new capability for visualizing and analyzing historical performance data of SAP HANA Cloud database instances. This feature enables administrators to identify performance issues, investigate root causes, and make data-driven decisions based on up to 42 days of historical metrics.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN>This blog post provides an overview of the Performance Analyzer, its key features, and guidance on how to use it effectively.<SPAN>&nbsp;</SPAN></SPAN></P><H3 id="toc-hId-1724983135"><STRONG><SPAN>Background<SPAN>&nbsp;</SPAN></SPAN></STRONG></H3><P><SPAN>Performance troubleshooting in cloud database environments requires visibility into historical data. While real-time monitoring provides insight into current system state, identifying the performance degradation or correlating issues with specific events requires access to historical metrics.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN>The Performance Analyzer addresses this need by providing comprehensive historical data visualization, interactive exploration capabilities, and customizable views for different analysis scenarios.<SPAN>&nbsp;</SPAN></SPAN></P><H3 id="toc-hId-1528469630">Key Features&nbsp;</H3><H4 id="toc-hId-1461038844">Load History Chart&nbsp;</H4><P><SPAN>The Load History chart serves as the primary navigation tool within the Performance Analyzer. It displays up to 42 days of historical data for selected key performance indicators (KPIs), enabling administrators to:<SPAN>&nbsp;</SPAN></SPAN></P><UL><LI><SPAN><SPAN>Identify time periods with anomalous behavior<SPAN>&nbsp;</SPAN></SPAN></SPAN></LI><LI><SPAN><SPAN>Select specific time ranges for detailed analysis<SPAN>&nbsp;</SPAN></SPAN></SPAN></LI><LI><SPAN><SPAN>Correlate performance changes with system events<SPAN>&nbsp;</SPAN></SPAN></SPAN></LI></UL><P><SPAN>The chart includes two sections: an overview panel showing the full 42-day history, and a detail panel that displays granular data for the selected time range.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="스크린샷 2026-03-24 오전 7.48.18.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388052iE6240305FE1AF4EB/image-size/large?v=v2&amp;px=999" role="button" title="스크린샷 2026-03-24 오전 7.48.18.png" alt="스크린샷 2026-03-24 오전 7.48.18.png" /></span></SPAN></SPAN></P><H4 id="toc-hId-1264525339">Chart Library&nbsp;</H4><P><SPAN>The Performance Analyzer includes a Chart Library containing visualization components organized by category:<SPAN>&nbsp;</SPAN></SPAN></P><UL><LI><SPAN><SPAN>CPU, Memory, Lock, Transaction, Workload, Delta merge, Statement, Session, Savepoint<SPAN>&nbsp;</SPAN></SPAN></SPAN></LI></UL><P><SPAN>Administrators can browse charts by category, search for specific visualizations, and preview charts before adding them to the current view.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="chart library.png" style="width: 460px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388053i6F855EC610E53070/image-size/large?v=v2&amp;px=999" role="button" title="chart library.png" alt="chart library.png" /></span></SPAN></SPAN></P><H4 id="toc-hId-1068011834"><STRONG><SPAN>Preset and Custom Views<SPAN>&nbsp;</SPAN></SPAN></STRONG></H4><P><SPAN>The Performance Analyzer provides preset views optimized for common analysis scenarios:<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN>CPU: Charts relevant to processor utilization and statement performance<SPAN>&nbsp;</SPAN></SPAN></SPAN></P><P><SPAN><SPAN>Memory: Charts focused on memory consumption patterns<SPAN>&nbsp;</SPAN></SPAN></SPAN></P><P><SPAN><SPAN>Lock: Charts for transactional lock and concurrency analysis<SPAN>&nbsp;</SPAN></SPAN></SPAN></P><P><SPAN>Administrators can also create custom views by modifying preset configurations, adding charts from the library, and saving personalized layouts for future use.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="스크린샷 2026-03-24 오전 7.51.34.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388054i1415662FC2145488/image-size/large?v=v2&amp;px=999" role="button" title="스크린샷 2026-03-24 오전 7.51.34.png" alt="스크린샷 2026-03-24 오전 7.51.34.png" /></span></SPAN></SPAN></P><H4 id="toc-hId-871498329">Interactive Exploration&nbsp;</H4><P><SPAN>All charts within the Performance Analyzer support interactive data exploration:<SPAN>&nbsp;</SPAN></SPAN></P><UL><LI><SPAN><SPAN>Tooltips display precise values when hovering over data points<SPAN>&nbsp;</SPAN></SPAN></SPAN></LI><LI><SPAN><SPAN>Time range selections synchronize across all charts in the view<SPAN>&nbsp;</SPAN></SPAN></SPAN></LI><LI><SPAN><SPAN>Zoom and pan controls enable detailed examination of specific periods<SPAN>&nbsp;</SPAN></SPAN></SPAN></LI></UL><P><SPAN><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="스크린샷 2026-03-24 오전 7.53.48.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388055iD62C2E9E47C01ED4/image-size/large?v=v2&amp;px=999" role="button" title="스크린샷 2026-03-24 오전 7.53.48.png" alt="스크린샷 2026-03-24 오전 7.53.48.png" /></span></SPAN></SPAN></SPAN></P><H3 id="toc-hId-545902105"><STRONG><SPAN>Accessing the Performance Analyzer<SPAN>&nbsp;</SPAN></SPAN></STRONG></H3><P><SPAN>The Performance Analyzer is accessible through multiple entry points within SAP HANA Cloud Central:<SPAN>&nbsp;</SPAN></SPAN></P><H4 id="toc-hId-478471319"><STRONG><SPAN>Side Navigation<SPAN>&nbsp;</SPAN></SPAN></STRONG></H4><P><SPAN>Select the Performance Analyzer icon in the left navigation panel to access the tool directly.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="side.png" style="width: 546px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388056iEC03BFE7BA782B64/image-size/large?v=v2&amp;px=999" role="button" title="side.png" alt="side.png" /></span></SPAN></SPAN></P><H4 id="toc-hId-281957814"><STRONG><SPAN>Instance Overview<SPAN>&nbsp;</SPAN></SPAN></STRONG></H4><P><SPAN>From the instance Overview page, navigate to the Memory or Compute cards and select "Analyze Performance."<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="overview.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388057iC2B64DC0C1FB04BF/image-size/large?v=v2&amp;px=999" role="button" title="overview.png" alt="overview.png" /></span></SPAN></SPAN></P><H4 id="toc-hId--412272786"><STRONG><SPAN>Alerts Integration<SPAN>&nbsp;</SPAN></SPAN></STRONG></H4><P><SPAN>When viewing alerts related to CPU, memory, or transactional locks, select "Analyze Performance Issue" in the alert details to open the Performance Analyzer with the relevant time context.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="alert.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388058iEE9D551582E72649/image-size/large?v=v2&amp;px=999" role="button" title="alert.png" alt="alert.png" /></span></SPAN></SPAN></P><H4 id="toc-hId--608786291"><STRONG><SPAN>Command Palette<SPAN>&nbsp;</SPAN></SPAN></STRONG></H4><P><SPAN>Open the Command Palette, search for "Performance Analyzer," and select the target instance from the results.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="command.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388059i6CD8CCDFD124DC1F/image-size/large?v=v2&amp;px=999" role="button" title="command.png" alt="command.png" /></span></SPAN></SPAN></P><H4 id="toc-hId--805299796"><STRONG><SPAN>Joule Integration<SPAN>&nbsp;</SPAN></SPAN></STRONG></H4><P><SPAN>The Performance Analyzer is also accessible through Joule. Request performance analysis or enter "Performance Analyzer" to receive navigation assistance.<SPAN>&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="joule.png" style="width: 804px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388060iDA5227AA71615DBB/image-size/large?v=v2&amp;px=999" role="button" title="joule.png" alt="joule.png" /></span></SPAN></SPAN></P><H3 id="toc-hId--708410294">Use Cases&nbsp;</H3><H4 id="toc-hId--1198326806">Analyzing CPU Utilization&nbsp;</H4><P><SPAN>To investigate CPU-related performance issues:<SPAN>&nbsp;</SPAN></SPAN></P><OL><LI><SPAN>Access the Performance Analyzer and select the CPU preset view<SPAN>&nbsp;</SPAN></SPAN></LI><LI><SPAN>Use the Load History chart to identify periods of elevated CPU usage<SPAN>&nbsp;</SPAN></SPAN></LI><LI><SPAN>Select the time range of interest to view detailed metrics<SPAN>&nbsp;</SPAN></SPAN></LI><LI><SPAN>Add relevant charts such as "Total Execution Time by Statement Hash"<SPAN>&nbsp;</SPAN></SPAN></LI></OL><P><SPAN><SPAN>Analyze which statements or operations contributed to CPU consumption<SPAN>&nbsp;</SPAN></SPAN></SPAN></P><H4 id="toc-hId--1394840311">Investigating Memory Consumption&nbsp;</H4><P><SPAN>To examine memory usage patterns:<SPAN>&nbsp;</SPAN></SPAN></P><OL><LI><SPAN>Select the Memory preset view<SPAN>&nbsp;</SPAN></SPAN></LI><LI><SPAN>Review the Load History chart for unusual consumption trends<SPAN>&nbsp;</SPAN></SPAN></LI><LI><SPAN>Add memory allocator charts to identify contributing components<SPAN>&nbsp;</SPAN></SPAN></LI></OL><P><SPAN><SPAN>Examine host allocator visualizations to determine memory distribution<SPAN>&nbsp;</SPAN></SPAN></SPAN></P><H4 id="toc-hId--1591353816">Troubleshooting Performance Degradation&nbsp;</H4><P><SPAN>To investigate general performance degradation:<SPAN>&nbsp;</SPAN></SPAN></P><OL><LI><SPAN>Use the Load History chart to establish baseline performance patterns<SPAN>&nbsp;</SPAN></SPAN></LI><LI><SPAN>Identify the time when degradation began<SPAN>&nbsp;</SPAN></SPAN></LI><LI><SPAN>Compare metrics from before and during the performance issue<SPAN>&nbsp;</SPAN></SPAN></LI></OL><P><SPAN><SPAN>Add relevant charts to analyze changes in system behavior<SPAN>&nbsp;</SPAN></SPAN></SPAN></P><H3 id="toc-hId--1494464314">Summary&nbsp;</H3><P><SPAN>The Performance Analyzer in SAP HANA Cloud Central provides administrators with comprehensive tools for historical performance analysis. By combining extensive data retention, flexible visualization options, and multiple access methods, it enables efficient identification and resolution of performance issues in SAP HANA Cloud environments.<SPAN>&nbsp;</SPAN></SPAN></P> 2026-03-24T00:07:25.343000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/what-s-new-in-sap-hana-cloud-march-2026/ba-p/14355960 What’s New in SAP HANA Cloud – March 2026 2026-03-24T16:54:37.626000+01:00 thomashammer https://community.sap.com/t5/user/viewprofilepage/user-id/122781 <P>We’re kicking off 2026 with a new set of innovations in SAP HANA Cloud, continuing our evolution as<STRONG> the database that AI was looking for.</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="blogpostqrc12026.png" style="width: 670px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387863i3695FC022A6BE5CD/image-dimensions/670x259?v=v2" width="670" height="259" role="button" title="blogpostqrc12026.png" alt="blogpostqrc12026.png" /></span></P><P>The Q1 2026 release introduces capabilities that enhance automation, flexibility, and intelligent data interaction, from infrastructure expansion and improved scalability to new agent-driven approaches for exploring enterprise data. &nbsp;Together, these innovations help organizations reduce complexity, optimize performance, and unlock faster insights.</P><P>Let’s dive into some of the key highlights of this release.</P><H1 id="toc-hId-1663306276"><BR />SAP HANA Cloud agents</H1><P>Following our announcement at TechEd 2025, we are excited to bring you the&nbsp;<STRONG>Data &amp; Discovery Agent Procedures</STRONG> in SAP HANA Cloud.</P><P>As part of our journey toward a more agentic and AI-native data platform, these agent procedures combine knowledge graph–based discovery with AI-driven query generation. This allows users to engage with their data in a more intuitive, conversational way, reducing the need for deep SQL expertise.</P><P>With the SAP HANA Cloud Data &amp; Discovery Agents, business users and developers alike can more easily bridge the gap between business questions and complex data models, accelerating access to insights and enabling more efficient data exploration.</P><P>To support early adoption and gather valuable feedback, this capability is now available through a <STRONG>Beta Program, with registration starting April 1</STRONG>. We invite you to participate, explore the features firsthand, and help shape the future of agent-driven data interaction in SAP HANA Cloud.</P><P class="lia-align-center" style="text-align: center;"><STRONG>Register here for the Beta Program:</STRONG><BR /><A href="https://url.sap/399tsd" target="_blank" rel="noopener nofollow noreferrer"><STRONG>https://url.sap/399tsd</STRONG></A><STRONG>&nbsp;</STRONG></P><P class="lia-align-center" style="text-align: center;"><A href="https://url.sap/399tsd" target="_blank" rel="noopener nofollow noreferrer"><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="button blogpost.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388026iAC023B8616FE2319/image-size/small?v=v2&amp;px=200" role="button" title="button blogpost.png" alt="button blogpost.png" /></span></STRONG></A></P><P>&nbsp;</P><P class="lia-align-center" style="text-align: center;">&nbsp;</P><P>For more information, check out <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-hana-cloud-becomes-agentic-introducing-discovery-agent-amp-data-agent/ba-p/14257394" target="_blank">this blogpost</A> by&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/38259">@shabana</a>&nbsp;</P><P>&nbsp;</P><H1 id="toc-hId-1466792771"><SPAN><STRONG>Machine Learning and NLP services Updates</STRONG></SPAN><SPAN>&nbsp;</SPAN></H1><P><SPAN>With the Q1 2026 release of SAP HANA Cloud, we continue to strengthen embedded Machine Learning and AI capabilities across the Predictive Analysis Library (PAL), and the Natural Language Processing (NLP)&nbsp;services. These enhancements focus on making&nbsp;tabular AI predictions using custom AI models or semantic data retrieval scenario&nbsp;easier to use and&nbsp;applied to&nbsp;real business&nbsp;application data.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Key highlights of this release are:</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>A new Text column TFIDF with&nbsp;truncatedSVD&nbsp;transformer&nbsp;operator&nbsp;in&nbsp;AutoML, for&nbsp;simplest and efficient text feature processing for use cases like Service Ticket Intelligence</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>A new dimension reduction function for stored text embedding vectors, allowing to reduce high cardinality vectors&nbsp;to lower cardinality of 62, 128 or 256 dimensions for faster processing while&nbsp;retaining&nbsp;key semantic insights</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>A new feature space reduction function Feature Agglomeration, allowing to group correlated feature columns into compact, interpretable clusters, thus reducing feature dimensionality</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Support for clustering of Vector columns using the Affinity Propagation&nbsp;clustering function</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Faster text classification function, supporting float precision for better performance</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Introducing a SQL CROSS_ENCODE function, for&nbsp;more&nbsp;precise&nbsp;semantic re-ranking of search retrieval results using the SAP HANA Cloud NLP services&nbsp;</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>The&nbsp;python&nbsp;Machine Learning client for SAP HANA 2.28&nbsp;supporting&nbsp;several new functions like text log parsing, cross&nbsp;encoder&nbsp;and parameter optimization with the multi-task&nbsp;multilayer&nbsp;perception&nbsp;neural network function.</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="blogpost1.png" style="width: 936px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387887i5171B832A2AB1957/image-size/large?v=v2&amp;px=999" role="button" title="blogpost1.png" alt="blogpost1.png" /></span></SPAN></P><P><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-1270279266"><SPAN><STRONG>Calculation View&nbsp;Modeling</STRONG></SPAN><SPAN>&nbsp;</SPAN></H1><P><SPAN>As with every release, numerous new capabilities and enhancements were added to Calculation View Modeling in SAP HANA Cloud. One of the highlights clearly is the ability to semantically import SAP HANA Cloud Calculation Views into SAP Business Data Cloud, for reuse purpose without data duplication.<BR /><BR />To learn more about additional Calculation View Modeling innovations, check out <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/calculation-view-features-of-2026-qrc1/ba-p/14347471" target="_blank">this blogpost</A> by&nbsp;<A href="https://community.sap.com/t5/user/viewprofilepage/user-id/239612" target="_blank">JanZwickel.</A><BR /></SPAN></P><H2 id="toc-hId-1202848480"><SPAN><STRONG>Reuse Calculation Views in SAP Business Data Cloud (BDC)</STRONG></SPAN><SPAN>&nbsp;</SPAN></H2><P><SPAN>Combined, SAP HANA Cloud and SAP Business Data Cloud are a strong foundation for your data and analytics use cases.<BR />Semantic onboarding in SAP Business Data Cloud enables calculation views from SAP HANA Cloud to be leveraged in BDC without transferring data, only semantics are transferred, creating BDC proxies.<BR />As such, we enable uses to re-use existing investments made into calculation views, in SAP BDC. Moreover, we foster a HANA-native approach of modeling, tightly integrated with BDC capabilities; enabling you to extend our HANA-based data marts with SAP BDC. Untimely, allowing you to benefit from both solutions in combination.</SPAN></P><P><SPAN>AT the moment, two integration modes are available:</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN><STRONG>Flat View</STRONG></SPAN><SPAN>: Onboards views as flat structures (not for Dimension Views). Use for minimal BDC enhancements.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN><STRONG>Construction Kit</STRONG></SPAN><SPAN>: Imports only private attributes, allowing flexible recombination in BDC. Supports Dimension Views.</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>Onboarded semantics include input parameters, variables, currency/unit conversion, labels, hierarchies, and&nbsp;information about&nbsp;star-join dimensions.</SPAN><SPAN>&nbsp;Further enhancements are planned, and roadmap is driven by customer feedback.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="blogpost2.png" style="width: 304px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387888iA0A9E642E9172049/image-size/large?v=v2&amp;px=999" role="button" title="blogpost2.png" alt="blogpost2.png" /></span></P><P>Are you eager to adopt the bi-directional integration between SAP HANA Cloud and SAP Business Data Cloud? If yes, learn more about our <STRONG>SAP HANA Cloud Customer Care Program</STRONG>&nbsp;down below.</P><P>&nbsp;</P><H2 id="toc-hId-1006334975">SAP HANA Cloud Customer Care Program</H2><H3 id="toc-hId-938904189"><STRONG>Calculation Views in the Context of SAP Business Data Cloud</STRONG></H3><P>To further support customers and partners exploring integration scenarios between SAP HANA Cloud and SAP Business Data Cloud, we are introducing a dedicated SAP HANA Cloud <STRONG>Customer Care Program focused Calculation Views in the Context of SAP Business Data Cloud</STRONG></P><P>This program is designed to help participants explore how existing SAP HANA Cloud calculation views can be leveraged in the context of SAP Business Data Cloud, particularly through semantic onboarding, which enables reuse of models without requiring data replication. In addition, participants can evaluate scenarios such as building new calculation views on top of SAP Business Data Cloud Data Products.</P><P>Through this initiative, we aim to work closely with customers and partners who are actively working on, or planning, projects in this space. Participants will have the opportunity to gain early insights into new capabilities, receive guidance during implementation, and provide direct feedback that helps shape future enhancements.</P><P><EM>Participation in the program is limited and based on alignment with the program scope and project requirements.</EM></P><P>&nbsp;</P><P class="lia-align-center" style="text-align: center;"><STRONG>Register here for the Customer Care Program:</STRONG><BR /><STRONG><SPAN><A class="" title="https://url.sap/qw0rnu" href="https://url.sap/qw0rnu" target="_blank" rel="noreferrer noopener nofollow">https://url.sap/qw0rnu</A></SPAN> </STRONG></P><P class="lia-align-center" style="text-align: center;"><A href="https://url.sap/qw0rnu" target="_blank" rel="noopener nofollow noreferrer"><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="button blogpost.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388026iAC023B8616FE2319/image-size/small?v=v2&amp;px=200" role="button" title="button blogpost.png" alt="button blogpost.png" /></span></STRONG></A></P><H1 id="toc-hId-484225246"><SPAN><STRONG>SQL Tools for Administration in SAP HANA Cloud Central</STRONG></SPAN><SPAN>&nbsp;</SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="andreamiranda_11-1774282520834.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387845i7AF3FEE88DC5E710/image-size/medium?v=v2&amp;px=400" role="button" title="andreamiranda_11-1774282520834.png" alt="andreamiranda_11-1774282520834.png" /></span></H1><H2 id="toc-hId-416794460"><SPAN><STRONG>SQL Console&nbsp;Code Completion</STRONG></SPAN><SPAN>&nbsp;</SPAN></H2><P><SPAN>With the Q1 Release,&nbsp;the&nbsp;SQL console&nbsp;in HANA Cloud Central now includes enhanced code completion that suggests both SQL snippets and schema objects as you type, making&nbsp;it quicker and easier to work with SQL. As users begin typing, the console will display&nbsp;recommended&nbsp;snippets such as CREATE TABLE, CREATE PROCUDURE, or GRANT.&nbsp;When the user selects a statement, it will insert a complete template automatically. It also provides lookups for tables, views, and columns within the current schema, reducing&nbsp;errors,&nbsp;and helping users find&nbsp;the objects they need. These improvements boost productivity for experienced users and make the SQL&nbsp;experience&nbsp;far more&nbsp;approachable&nbsp;for those who are new to SQL.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="josh1.png" style="width: 665px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387909iD8CBC9E6C1E4D05F/image-dimensions/665x565?v=v2" width="665" height="565" role="button" title="josh1.png" alt="josh1.png" /></span></P><P><SPAN>&nbsp;</SPAN></P><H2 id="toc-hId-220280955"><SPAN><STRONG>SQL Console GenAI</STRONG></SPAN><SPAN>&nbsp;</SPAN></H2><P><SPAN>The SQL Console now includes new GenAI‑powered actions that make working with SQL faster and more accessible. Within the Run menu, users will find three new options: Run Prompt, Explain SQL Statement using AI, and Optimize SQL Statement using AI.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="josh2.png" style="width: 746px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387910i663A06801901FEE5/image-dimensions/746x354?v=v2" width="746" height="354" role="button" title="josh2.png" alt="josh2.png" /></span></P><P><SPAN>By selecting text in the SQL Console and choosing Run Prompt, users can generate SQL statements directly from natural‑language instructions. The Explain option provides clear natural‑language explanations of SQL statements, including complex queries, while Optimize SQL Statement uses AI to refine and improve existing SQL for better performance. These enhancements help users work more efficiently and make SQL much easier for those who are new to it.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>&nbsp;</SPAN></P><H2 id="toc-hId-23767450"><SPAN><STRONG>SAP HANA Cloud Clients</STRONG></SPAN><SPAN>&nbsp;</SPAN></H2><H3 id="toc-hId--118894705"><SPAN><STRONG>Addition of the SAP HANA database client to the package manager for .NET</STRONG></SPAN><SPAN>&nbsp;</SPAN></H3><P><SPAN>The SAP HANA database client is officially available on NuGet, making it easier than ever for developers to integrate SAP HANA Cloud into their applications. By adding the SAP-provided packages directly from the SAP profile and NuGet, developers can quickly include both the HANA .NET driver and Entity Framework Core provider without needing manual downloads or custom setup.&nbsp;Users can also now see the updated tutorials on Connecting Using the Microsoft Entity Framework Core (EF Core) and SAP HANA .NET Interface.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="josh3.png" style="width: 771px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387911i959B7B417F5BD575/image-dimensions/771x445?v=v2" width="771" height="445" role="button" title="josh3.png" alt="josh3.png" /></span></P><H2 id="toc-hId--22005203"><SPAN><STRONG>Direct connection&nbsp;option&nbsp;for replicas</STRONG></SPAN><SPAN>&nbsp;</SPAN></H2><P><SPAN>The SAP HANA Client supports a direct connection option for replicas,&nbsp;enabling&nbsp;applications to&nbsp;explicitly&nbsp;route read-only workloads away from the source system. Developers can&nbsp;now&nbsp;use a SQL hint such as&nbsp;WITH HINT (RESULT_LAG('hana_sr'))&nbsp;to target replica nodes for read‑only queries or specify the connection property&nbsp;replicationRole=REPLICA&nbsp;to ensure the connection is&nbsp;established&nbsp;directly with a replica. This capability improves cost efficiency and performance by offloading analytical workloads from the source system while still&nbsp;maintaining&nbsp;full high‑availability readiness.&nbsp;We also have this new tutorial on&nbsp;Routing queries to a read only replica.&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="josh4.png" style="width: 693px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387912i67C3C2C9DC92ED0C/image-dimensions/693x590?v=v2" width="693" height="590" role="button" title="josh4.png" alt="josh4.png" /></span></P><P>&nbsp;</P><H2 id="toc-hId--218518708"><SPAN><STRONG>New installation program for the data lake client</STRONG></SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></H2><P><SPAN>The data lake client now includes a new installation program based on the SAP HANA database lifecycle manager, providing a more unified and streamlined setup experience. This installer will be available through the SAP Software Center and supports Microsoft Windows, Linux x64, and Linux ARM64. When downloaded from the SAP Software Center, it also includes the required cryptographic libraries, simplifying deployment, and ensuring secure operation. This harmonized installation process makes it easier for customers to install and manage clients for SAP HANA Cloud.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="josh5.png" style="width: 671px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387913iDAAE8429BF78BD10/image-dimensions/671x591?v=v2" width="671" height="591" role="button" title="josh5.png" alt="josh5.png" /></span></P><P><SPAN>&nbsp;</SPAN></P><H3 id="toc-hId--708435220"><SPAN><STRONG>Enabling HTTP proxy support for the data lake client</STRONG></SPAN><SPAN>&nbsp;</SPAN></H3><P><SPAN>The data lake client now supports connecting through an HTTP proxy, enabling better compatibility with enterprise network environments. Users can enable proxy usage by configuring the&nbsp;settings&nbsp;proxyHTTP=true, along with&nbsp;proxyHost,&nbsp;proxyPort,&nbsp;proxyUser, and&nbsp;proxyPassword. These options allow the client to route traffic through an organization’s proxy infrastructure while&nbsp;maintaining&nbsp;secure and controlled access. This enhancement ensures the data lake client fits seamlessly into enterprise deployments that rely on HTTP proxy requirements.</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><H2 id="toc-hId--611545718"><SPAN><STRONG>Performance Analyzer in SAP HANA Cloud Central</STRONG></SPAN></H2><P>With the Q1 2026 release, SAP HANA Cloud Central introduces the Performance Analyzer, a new capability for analyzing historical performance data of SAP HANA Cloud database instances.</P><P>The Performance Analyzer provides access to up to 42 days of historical metrics, enabling administrators to identify performance issues, investigate root causes, and correlate system behavior over time. This complements real-time monitoring by adding the historical visibility required for effective troubleshooting.</P><P>Key capabilities include:</P><UL><LI><STRONG>Load History Chart</STRONG><BR />A central entry point for analysis, allowing users to identify anomalies, select time ranges, and correlate performance changes with system events across a 42-day history.</LI><LI><STRONG>Chart Library</STRONG><BR />A collection of predefined visualizations across categories such as CPU, memory, locks, transactions, and workload, which can be added dynamically to analysis views.</LI><LI><STRONG>Preset and Custom Views</STRONG><BR />Predefined views for common scenarios such as CPU, memory, and lock analysis, with the ability to create and save custom views tailored to specific needs.</LI><LI><STRONG>Interactive exploration</STRONG><BR />Support for tooltips, synchronized time selection, and zooming, enabling detailed analysis of specific time periods.</LI></UL><P>The Performance Analyzer is integrated across SAP HANA Cloud Central and can be accessed through multiple entry points, including the side navigation, instance overview, alerts, command palette, and Joule.</P><P>Typical use cases include analyzing CPU utilization, investigating memory consumption, and troubleshooting performance degradation by comparing historical system behavior.</P><P>To learn more, please check out <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/introducing-performance-analyzer-in-sap-hana-cloud-central/ba-p/14356442" target="_self">this blogpost</A> by&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/160136">@Hai</a>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId--808059223"><SPAN><STRONG>Data Integration</STRONG></SPAN><SPAN>&nbsp;</SPAN></H2><H3 id="toc-hId--1297975735"><SPAN><STRONG>Smart Data Access: Support for a New Cloud MySQL Remote Source Through the Data Access Agent</STRONG></SPAN><SPAN>&nbsp;</SPAN></H3><P><SPAN>With the Smart Data Access (SDA) Data Access Agent introduced in QRC 03/2025, readonly access to a new remote source, MySQL in the cloud, will be available starting in QRC 01/2026.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Configuration and usage remain the same&nbsp;as for&nbsp;previously supported remote sources. For newly provisioned Data Access Agents, all new adapters are&nbsp;activated&nbsp;by default. To activate new adapters on an already provisioned&nbsp;Data Access Agent, refer to&nbsp;</SPAN><A href="https://me.sap.com/notes/2600176" target="_blank" rel="noopener noreferrer"><SPAN>SAP Note 2600176, SAP HANA Smart Data Access Supported Remote Sources</SPAN></A><SPAN>, for details on activation and support information.</SPAN><SPAN>&nbsp;</SPAN></P><H2 id="toc-hId--1201086233">&nbsp;</H2><H2 id="toc-hId--1397599738"><SPAN><STRONG>Elasticity</STRONG></SPAN><SPAN>&nbsp;</SPAN></H2><H3 id="toc-hId--1887516250"><SPAN><STRONG>Elastic Compute Node: Automated ECN Provisioning and Deprovisioning Through ECN Policy</STRONG></SPAN><SPAN>&nbsp;</SPAN></H3><P><SPAN>SAP HANA Cloud introduces a significant enhancement to Elastic Compute Node management with the new ECN policy feature, available starting with QRC 01/2026. Previously, ECN Advisor recommendations required manual action. With ECN policies, the system can now automatically provision and deprovision ECNs based on your workload patterns. After running the ECN Advisor, you can choose scheduled scaling for predictable usage or demand based scaling for more dynamic environments.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Scheduled scaling allows you to define recurring timebased rules to add or remove ECNs. Demand based scaling adjusts capacity automatically according to system load, and the initial release provides two scaling focuses, Availability and Cost. These options determine how aggressively the system reacts to load changes, with the ability to scale up to sixteen ECNs sequentially. Table replication continues to require separate handling, and each instance supports one demand based policy with the option to configure multiple scheduled policies. More details can be found in the&nbsp;</SPAN><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-administration-guide/ecn-policies" target="_blank" rel="noopener noreferrer"><SPAN>About ECN Policies</SPAN></A><SPAN>&nbsp;section.</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><H1 id="toc-hId--1329040050"><STRONG>Further news:</STRONG></H1><H2 id="toc-hId--1818956562"><SPAN><STRONG>SAP&nbsp;HANA Cloud&nbsp;Datacenter expansion</STRONG></SPAN><SPAN>&nbsp;</SPAN></H2><P><SPAN>In Q1 2026, we are expanding the global availability of&nbsp;SAP HANA Cloud&nbsp;in&nbsp;four new&nbsp;BTP&nbsp;regions:</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI>Germany (Frankfurt)&nbsp;and&nbsp;UK (London)&nbsp;on Microsoft Azure,&nbsp;</LI><LI>Japan (Tokyo)<SPAN>&nbsp;and&nbsp;US East (Sterling)&nbsp;on SAP Cloud Infrastructure (SCI).</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>With these additions, SAP HANA Cloud is now available in&nbsp;more than 40 public cloud locations worldwide. While&nbsp;most&nbsp;regions run on&nbsp;hyperscalers, SAP HANA Cloud continues to strengthen its footprint on&nbsp;SAP Cloud Infrastructure (SCI), which now spans&nbsp;seven regions&nbsp;(see Figure 1). This expansion provides customers with greater flexibility to choose&nbsp;both&nbsp;the infrastructure provider and deployment region that best align with their business, performance, and regulatory requirements.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>EU22—the second Microsoft Azure region in the EU—lays the foundation for future&nbsp;multi-region disaster recovery&nbsp;within the EU. Similarly, US01—the second SCI presence in the United States—prepares the groundwork for future multi-region disaster recovery capabilities in the US.&nbsp;</SPAN><SPAN>For&nbsp;the&nbsp;latest&nbsp;updates on the availability&nbsp;timeline for&nbsp;multi-region disaster recovery&nbsp;in&nbsp;these&nbsp;regions, please refer to&nbsp;</SPAN><A href="https://roadmaps.sap.com/board?PRODUCT=73554900100800002881&amp;range=CURRENT-LAST&amp;BC=000D3AAC9DD21EEB9E81FE20F9812D63" target="_blank" rel="noopener noreferrer"><SPAN>SAP Roadmap Explorer</SPAN></A><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="datacenters.png" style="width: 755px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/387914i559034AB59CF458E/image-dimensions/755x398?v=v2" width="755" height="398" role="button" title="datacenters.png" alt="datacenters.png" /></span></P><P class="lia-align-center" style="text-align: center;"><EM>SAP HANA Cloud Public Cloud&nbsp;Locations &nbsp;</EM></P><P>&nbsp;</P><H2 id="toc-hId--2015470067"><STRONG>Expanded Performance Class Options Across Hyperscalers</STRONG></H2><P>SAP HANA Cloud continues to enhance flexibility in sizing and performance across supported infrastructures.</P><P>On Alibaba Cloud, SAP HANA database instances now support additional performance classes and instance sizes. With the QRC 01/2026 update, you can provision configurations tailored to different workload requirements, ranging from memory-intensive scenarios with up to 8 TB of memory to more compute-focused setups. This provides greater flexibility to align system sizing with specific application needs.<BR /><SPAN>More details about the available options can be found</SPAN>&nbsp;<A href="https://help.sap.com/docs/hana-cloud/sap-hana-cloud-administration-guide/sap-hana-database-size?version=dev&amp;state=DRAFT" target="_blank" rel="noopener noreferrer">SAP HANA Database Size</A>.&nbsp;&nbsp;</P><P>On AWS, a new 16 GB instance size is now available, designed specifically for low-throughput and lightweight workloads. This option enables more efficient deployment of smaller applications, development and testing environments, and cost-sensitive use cases, helping avoid overprovisioning.</P><P>This instance size will also be made available on Google Cloud Platform and Microsoft Azure, further extending consistent sizing flexibility across all hyperscalers supported by SAP HANA Cloud.</P><P>&nbsp;</P><HR /><P>&nbsp;</P><P>Thanks for taking the time to explore the What’s New in SAP HANA Cloud on Q1 2026 innovations!</P><P>If you’d like to go deeper into the technical details of the March 2026 release, we recommend visiting the<SPAN>&nbsp;</SPAN><SPAN><A href="https://help.sap.com/whats-new/2495b34492334456a49084831c2bea4e" target="_blank" rel="noopener noreferrer">What’s New Viewer</A></SPAN><SPAN>&nbsp;</SPAN>in the technical documentation. It provides a comprehensive overview of the full release scope. To stay informed about upcoming innovations, announcements, and best practices, follow the<SPAN>&nbsp;</SPAN><SPAN><A href="https://community.sap.com/t5/c-khhcw49343/SAP+HANA+Cloud/pd-p/73554900100800002881" target="_blank">SAP HANA Cloud tag</A></SPAN>.</P><P>You can also find our latest blog posts by searching for the<SPAN>&nbsp;</SPAN><SPAN><A href="https://community.sap.com/t5/tag/whatsnewinsaphanacloud/tg-p" target="_blank"><STRONG>#whatsnewinsaphanacloud</STRONG></A></SPAN><SPAN>&nbsp;</SPAN>hashtag.</P><P>If you missed earlier What’s New webinars, you’ll find recordings of past sessions and upcoming events in our<SPAN>&nbsp;</SPAN><SPAN><A href="https://www.youtube.com/playlist?list=PL3ZRUb1AKkpTDZQgENtRcupp6vsNg8NHN" target="_blank" rel="noopener nofollow noreferrer">YouTube playlist</A></SPAN>. Our What’s New webinar covering the Q1 2026 innovations will be posted on this playlist very soon.</P><P>Do you have questions about SAP HANA Cloud or want to share your thoughts on the new features?<BR />Join the conversation in the<SPAN>&nbsp;</SPAN><SPAN><A href="https://community.sap.com/t5/technology-q-a/qa-p/technology-questions" target="_blank">SAP HANA Cloud Community Q&amp;A</A></SPAN><SPAN>&nbsp;</SPAN>or leave a comment below. We’d love to hear from you!</P><P>&nbsp;</P><P>&nbsp;</P> 2026-03-24T16:54:37.626000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/calculation-view-features-of-2026-qrc1/ba-p/14347471 Calculation View Features of 2026 QRC1 2026-03-25T08:21:00.192000+01:00 jan_zwickel https://community.sap.com/t5/user/viewprofilepage/user-id/239612 <P><SPAN>Within the time frame of 2026 Q1, several new calculation view features have been released in SAP Business Application Studio when connected to SAP HANA Cloud database QRC1. Some of these features are highlighted below. You can find examples that illustrate the individual features&nbsp;</SPAN><A href="https://github.com/SAP-samples/hana-cloud-learning/tree/main/CV_2026_QRC1_Selected_Calculation_View_Modeling_Features" target="_blank" rel="nofollow noopener noreferrer">here</A><SPAN>. An overview of features of other releases can be found&nbsp;</SPAN><A href="https://blogs.sap.com/2022/08/25/new-calculation-view-modeling-features-in-sap-hana-cloud/" target="_blank" rel="noopener noreferrer">here</A><SPAN>.</SPAN></P><DIV><DIV>&nbsp;</DIV><H3 id="toc-hId-1920603002"><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-modeling-guide-for-sap-business-application-studio/enable-business-data-cloud-integration-mode-for-calculation-view" target="_self" rel="noopener noreferrer"><SPAN>Reuse of Existing Calculation Views in SAP Business Data Cloud (BDC)</SPAN></A></H3></DIV><DIV><DIV><SPAN>To reuse existing calculation views in the context of BDC, calculation views can be semantically onboarded. This offers the opportunity to leverage calculation views in SAP HANA Cloud standalone and at the same time to also use and extend the calculation views in BDC. This way the best of both solutions can be used.</SPAN></DIV><BR /><DIV><SPAN>Semantic onboarding transfers the semantic and logic of the calculation view without moving the source data into BDC. It creates BDC proxies ready for use in BDC modeling.</SPAN></DIV><DIV>&nbsp;</DIV><DIV><H4 id="toc-hId-1853172216"><SPAN>Semantic Onboarding</SPAN></H4><DIV><DIV><SPAN>1. Start the semantic onboarding process in BDC by selecting a BDC Integration mode in SAP Business Application Studio:</SPAN></DIV><DIV>&nbsp;</DIV><DIV><DIV><H5 id="toc-hId-1785741430"><SPAN>Integration Mode</SPAN></H5></DIV></DIV><DIV>&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="integrationMode.png" style="width: 817px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388257iCDB704ABE85F068E/image-size/large?v=v2&amp;px=999" role="button" title="integrationMode.png" alt="integrationMode.png" /></span><SPAN> </SPAN><P>&nbsp;</P><P>&nbsp;</P><DIV><DIV><SPAN>"<STRONG>Flat View</STRONG>": This mode onboards calculation views as a flat structure that includes the private and shared attributes of the calculation views. This integration mode is not available for Dimension Views</SPAN></DIV><DIV><EM>Use this option if you do not anticipate larger enhancements in BDC and are looking for a quick integration</EM></DIV><DIV><SPAN>&nbsp; &nbsp; </SPAN></DIV><DIV><SPAN>"<STRONG>Construction Kit</STRONG>": This mode imports only the private attributes of cubes giving you the freedom to recombine or change the structure of the original calculation views in BDC.&nbsp;Also Dimension Views can be imported in this mode.</SPAN></DIV><DIV><EM>Use the Construction Kit approach if you require flexibility in recombining calculation views in BDC</EM></DIV><DIV>&nbsp;</DIV><DIV><DIV><SPAN>All integration modes create BDC proxies for the calculation views. Queries targeted to these proxies will be directed to the source calculation view.</SPAN></DIV><DIV>&nbsp;</DIV><DIV>2. Continue with the semantic onboarding in BDC&nbsp;<SPAN>(requires upgraded version of SAP Datasphere. Below are lab-preview screenshots of what is planned to become available end of April 2026)</SPAN><BR />:<SPAN> </SPAN></DIV><DIV>&nbsp;</DIV><DIV><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="semanticOnboarding.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388258i77E9F055D9646E76/image-size/large?v=v2&amp;px=999" role="button" title="semanticOnboarding.png" alt="semanticOnboarding.png" /></span><BR /><DIV><DIV><SPAN>&nbsp;</SPAN></DIV></DIV></DIV></DIV></DIV></DIV><DIV><DIV><H4 id="toc-hId-1460145206"><SPAN>Onboarded Semantic</SPAN></H4><DIV><SPAN>Currently, the following semantic information of calculation views is reused by the Analytic Model:</SPAN></DIV><UL><LI><SPAN>Input Parameters</SPAN></LI><LI><SPAN>Variables</SPAN></LI><LI><SPAN>Currency and unit conversion information</SPAN></LI><LI><SPAN>Labels for user-friendly displays</SPAN></LI><LI><SPAN>Shared hierarchies for dimensional analysis</SPAN></LI><LI><SPAN>Information about Dimensions of star-joins</SPAN></LI></UL></DIV></DIV></DIV></DIV><DIV><EM>Use semantic onboarding to leverage existing calculation views in the context of SAP Business Data Cloud</EM></DIV><DIV><H3 id="toc-hId-1134548982"><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-modeling-guide-for-sap-business-application-studio/data-classification-for-calculation-views" target="_self" rel="noopener noreferrer"><SPAN>Data Classification</SPAN></A></H3><DIV><DIV><SPAN>Different data classifications can be assigned to calculation views to indicate how data that are returned by a calculation view should be treated.</SPAN></DIV><DIV>&nbsp;</DIV><DIV><H4 id="toc-hId-1067118196"><SPAN>Setting Data Classification of Calculation View</SPAN></H4><DIV>Assign data classification levels to your calculation views to clearly indicate how the returned data should be handled. Simply define the classification under "View Properties". The available ratings are sourced from the&nbsp;_SYS_BI.BIMC_SENSITIVITY_CLASSIFICATION&nbsp;table.</DIV><DIV>&nbsp;</DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dataClassification.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388255iFADD1ECBF2A93532/image-size/large?v=v2&amp;px=999" role="button" title="dataClassification.png" alt="dataClassification.png" /></span><BR /><P><SPAN>The data classification of a calculation view can be read from column SENSITIVITY_CLASSIFICATION of table&nbsp;</SPAN>&nbsp;_SYS_BI.BIMC_ALL_AUTHORIZED_CUBES</P><P>&nbsp;</P><DIV><DIV><SPAN>When a calculation view is opened or a Data Source added a warning is shown if the current calculation view has a lower classification than any of the directly consumed calculation views.&nbsp;&nbsp;</SPAN>You’ll be offered the option to upgrade the rating to match the highest sensitivity level of the directly consumed calculation views, ensuring consistent data governance.</DIV><DIV>&nbsp;</DIV><DIV><DIV><DIV><EM>Use data classifications to support the consistent handling of classified data throughout your company</EM></DIV></DIV></DIV><H3 id="toc-hId-741521972"><SPAN>MDS Cube: Incremental Loading</SPAN></H3><DIV><DIV><P><SPAN>Use incremental loading for your MDS Cubes - a&nbsp;smart approach that updates only newly added records since the last load, dramatically reducing both processing time and resource consumption.</SPAN></P></DIV><DIV>&nbsp;</DIV><DIV><STRONG>How to enable it</STRONG></DIV><DIV>Define an MDS Cube attribute as an Incremental Column<SPAN>:</SPAN></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="incrementalColumns.png" style="width: 466px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388259i9D701057C32EDF08/image-size/large?v=v2&amp;px=999" role="button" title="incrementalColumns.png" alt="incrementalColumns.png" /></span><BR /><BR /><DIV><DIV><SPAN>The selected column must increase with each record that is added to the result set of the calculation view. </SPAN></DIV><BR /><DIV><SPAN>During incremental loading only records are loaded that have higher values in this column than the highest value at the last time of loading. </SPAN></DIV><BR /><DIV><SPAN>Use the <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-administration-guide/api-for-managing-mds-cubes#command-update" target="_self" rel="noopener noreferrer">Update</A> command to start incremental loading.</SPAN></DIV><DIV>&nbsp;</DIV><DIV><DIV><EM>Use incremental update when loading MDS Cubes to speed up loading and to reduce CPU and memory consumption</EM></DIV><DIV><DIV><DIV>&nbsp;</DIV><H3 id="toc-hId-545008467"><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-modeling-guide-for-sap-business-application-studio/duplicate-copy-or-remove-nodes" target="_self" rel="noopener noreferrer"><SPAN>Copy Nodes with Descendants</SPAN></A></H3></DIV></DIV><DIV>&nbsp;<DIV><DIV><SPAN>Need to replicate complex calculation logic across multiple views? The "Copy with Descendants" feature makes it simple.</SPAN></DIV><DIV>&nbsp;</DIV><DIV><SPAN>1. Right-click the node you want to copy with its feeding structures and select "Copy with Descendants" :</SPAN></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="copyWithDecendents.png" style="width: 897px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388261i2BC018CCA0FD0F52/image-size/large?v=v2&amp;px=999" role="button" title="copyWithDecendents.png" alt="copyWithDecendents.png" /></span><BR /><P>2.&nbsp;&nbsp;<SPAN>In the target view right-click an empty space and select "Paste":</SPAN></P><P>&nbsp;</P></DIV><DIV>&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="paste.png" style="width: 808px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388262i9724038E4552D1D7/image-size/large?v=v2&amp;px=999" role="button" title="paste.png" alt="paste.png" /></span><DIV><DIV>Your entire node structure, including all feeding components, is duplicated saving you valuable development time.</DIV><DIV>&nbsp;</DIV><DIV><EM>Leverage "Copy with Descendants"&nbsp;to reuse calculation view logic across calculation views</EM></DIV><DIV>&nbsp;</DIV><H3 id="toc-hId-348494962">Working with Data Sources</H3><DIV><DIV><SPAN>Easily copy element texts such as the data source name or calculation view name using a <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-modeling-guide-for-sap-business-application-studio/copy-data-source-names" target="_self" rel="noopener noreferrer">right-click or a keyboard short-cut</A>:</SPAN></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="copyDataSourceName.png" style="width: 587px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388263i303E16432767FED3/image-size/large?v=v2&amp;px=999" role="button" title="copyDataSourceName.png" alt="copyDataSourceName.png" /></span><BR /><P>&nbsp;</P><DIV><DIV><SPAN><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-modeling-guide-for-sap-business-application-studio/create-calculation-views" target="_self" rel="noopener noreferrer">Data sources are now included in the Outline panel</A>&nbsp;giving you an instant overview of which sources are used throughout your calculation view and exactly where they appear:</SPAN></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="outline.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388265iA1005D0214FC5071/image-size/large?v=v2&amp;px=999" role="button" title="outline.png" alt="outline.png" /></span><BR /><P>&nbsp;</P><BR /><P>&nbsp;</P></DIV><DIV>&nbsp;<DIV><DIV><EM>Use the Outline to get an overview of which data sources are used in a calculation view and in which nodes</EM></DIV><DIV>&nbsp;</DIV><H3 id="toc-hId-151981457">Key Column Indicator</H3><DIV><DIV><SPAN>Visual&nbsp;key column indicators&nbsp;help you quickly identify which columns belong to a data source’s key - essential information when defining joins or cardinality information. </SPAN></DIV><DIV>&nbsp;</DIV><DIV><SPAN>The information of the key indicator is based on the primary key definition in case of table data sources and on the Semantics key in case of calculation views as data sources.&nbsp;</SPAN><SPAN>The visual key column indicators are shown in the join definition and mapping displays.</SPAN></DIV><BR /><DIV><SPAN>A key indicator can appear in gold or grey and can be solid or dashed:</SPAN></DIV><DIV>&nbsp;</DIV><DIV><SPAN>A golden icon visualizes a complete key. All key columns are present.</SPAN></DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="golden.png" style="width: 80px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388266iB8ECF90B523C85D3/image-size/large?v=v2&amp;px=999" role="button" title="golden.png" alt="golden.png" /></span><BR /><DIV>&nbsp;</DIV><DIV><SPAN>A dashed icon indicates an incomplete key. Only some columns from a multi-column key are projected.</SPAN></DIV></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="dashed.png" style="width: 99px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388267iD3B6250427D83F12/image-size/large?v=v2&amp;px=999" role="button" title="dashed.png" alt="dashed.png" /></span><BR /><P>&nbsp;</P></DIV><DIV><DIV><SPAN>Grey indicates that some intermediate operations (joins, unions, or table functions) potentially removed the key property.</SPAN></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="grey.png" style="width: 90px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388268i61FE48E1AEF049B8/image-size/large?v=v2&amp;px=999" role="button" title="grey.png" alt="grey.png" /></span><BR /><P>&nbsp;</P><DIV><DIV><EM>Use information about key columns e.g., when deciding on join columns</EM></DIV></DIV></DIV><DIV>&nbsp;</DIV><DIV>&nbsp;</DIV><DIV><H3 id="toc-hId--119763417"><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-modeling-guide-for-sap-business-application-studio/add-execution-hints" target="_self" rel="noopener noreferrer"><SPAN>Spill To Disk Hints in Execution Hints List</SPAN></A></H3><DIV><DIV><SPAN>&nbsp;</SPAN><SPAN>For queries where performance isn’t critical,&nbsp;</SPAN><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-administration-guide/use-hints-to-enable-spill-to-disk" target="_self" rel="noopener noreferrer">Spill To Disk hints</A><SPAN>&nbsp;let you trade execution speed for lower memory consumption. These hints are now conveniently available in the </SPAN><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-modeling-guide-for-sap-business-application-studio/9fd70ce83ee546e7bde7ec3c2333488a.html" target="_self" rel="noopener noreferrer"><SPAN>pre-defined hint list</SPAN></A><SPAN>:</SPAN></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="spillToDisk.png" style="width: 711px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388269iD8FDD7A1A83F3A0C/image-size/large?v=v2&amp;px=999" role="button" title="spillToDisk.png" alt="spillToDisk.png" /></span><BR /><DIV><DIV><EM>Decrease memory consumption for queries that are not performance critical using the Spill To Disk Hints</EM></DIV><DIV>&nbsp;</DIV><DIV><DIV><DIV><H3 id="toc-hId--316276922"><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-modeling-guide-for-sap-business-application-studio/enforce-filter-pushdown" target="_self" rel="noopener noreferrer"><SPAN>Visualize Blockers of Filter Push-Down</SPAN></A></H3></DIV></DIV><DIV><P><SPAN>Filters typically work best when applied early in query execution, reducing record volumes from the start. However, certain node types and modeling patterns can block filter push-down due to their impact on results.&nbsp; Dedicated o</SPAN><SPAN>ptions exist to enforce the push-down of filters also in this case.</SPAN></P></DIV><BR /><DIV><SPAN>Nodes or modeling patterns that block the push-down of filters are now marked by a icon so that it becomes easier to detect and deal with filter blocking operations.</SPAN></DIV><DIV>&nbsp;</DIV><DIV><DIV><SPAN>Below is an example where a Rank node blocks filter push-down:</SPAN></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="blockFilterPushDown.png" style="width: 895px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388273i11AF34787D652B96/image-size/large?v=v2&amp;px=999" role="button" title="blockFilterPushDown.png" alt="blockFilterPushDown.png" /></span><BR /><DIV><DIV>&nbsp;</DIV><DIV><SPAN>If you enable the filter push-down the icon disappears:</SPAN></DIV><DIV>&nbsp;</DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="allowFilterPushDown.png" style="width: 867px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388276iCC44AD447E3525DC/image-size/large?v=v2&amp;px=999" role="button" title="allowFilterPushDown.png" alt="allowFilterPushDown.png" /></span><BR /><P>Similarly for multi-consumer patterns:</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="multipleOutputBlocked.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/388279i2B11B124D3DFA65F/image-size/large?v=v2&amp;px=999" role="button" title="multipleOutputBlocked.png" alt="multipleOutputBlocked.png" /></span><BR /><P>&nbsp;</P><P>&nbsp;</P><DIV><DIV><EM>Quickly identify potential blockers for filter push down and decide based on your business needs whether to remove the blockers or not<BR /><BR /></EM></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV> 2026-03-25T08:21:00.192000+01:00 https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-rethinking-paper-based/ba-p/14352377 Architecting Electronic Bill of Lading on SAP BTP - Rethinking Paper-Based Trade (Part 1 of 3) 2026-03-27T10:29:07.001000+01:00 RodrigoCampos https://community.sap.com/t5/user/viewprofilepage/user-id/1638903 <H2 id="ember657" id="toc-hId-1792293894">Introduction</H2><HR /><P class="" data-unlink="true">After participating in the <STRONG>SAP Multidimensional Architect Program</STRONG> at the <STRONG>SAP Academy</STRONG>&nbsp;<STRONG> in California</STRONG> during Fall 2025, I was particularly inspired by a session titled <EM>“From Blueprint to Real Architecture,”</EM> which showed how to design end-to-end solutions, one of the cases presented, was international trade scenario, area of my personal interest over the last few years. That experience motivated me to write this Proof of Concept.</P><P class="" data-unlink="true">This article focuses on the scenario of Ocean Carriers transitioning from paper-based processes to a fully digital platform, aiming to reduce CO₂ emissions while ensuring security and transparency among stakeholders. The solution implements the <STRONG>Electronic Bill of Lading</STRONG> using IMDA's&nbsp; <STRONG>TradeTrust</STRONG>&nbsp;, an open-source framework that enables the creation of digital trade documents represented as <STRONG>NFT(ERC-721 tokens)</STRONG> on a blockchain network.</P><P class="" data-unlink="true">This PoC demonstrates how this capability can be deployed on <STRONG>SAP Business Technology Platform</STRONG>, aligned with Digital Container Shipping Association (DCSA)&nbsp; standards.</P><H2 id="toc-hId-1595780389">&nbsp;</H2><H2 id="ember661" id="toc-hId-1399266884">Article Summary</H2><HR /><P class="">This three-part series demonstrates how international trade can move from paper-based operations to secure and automate processes while helping organizations achieve their sustainability goals</P><UL><LI><STRONG>Part 1 – Case Study:</STRONG> Introduces the shift in global trade from paper-based documents to Electronic Bills of Lading.</LI><LI><A href="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-blueprint-part-2-of-3/ba-p/14352463" target="_blank"><EM><STRONG><STRONG>Part 2 – Blueprint</STRONG></STRONG></EM></A><STRONG>:&nbsp;</STRONG>&nbsp;Describes the key building blocks of the solution, including: event-driven architecture, SAP BTP, Automation, TradeTrust Framework, UI, and the architecture diagram.</LI><LI><STRONG><A href="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-end-to-end-scenario-part/ba-p/14352514" target="_blank">Part 3 – End-to-End Scenario</A>:</STRONG>&nbsp;Shows the lifecycle of the Electronic Bill of Lading through a real-world scenario.</LI></UL><P class="">&nbsp;</P><H3 id="ember665" id="toc-hId-1331836098">1. Case Study</H3><HR /><P class="">The global shipping industry, responsible for approximately 90% of world trade, faces pressure to reduce its environmental footprint. Traditional paper-based Bills of Lading, critical for international trade, contribute to deforestation, water pollution, and greenhouse gas emissions through their production, transportation, and disposal.</P><DIV class=""><DIV class=""><DIV class=""><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="intro_port.png" style="width: 689px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385610i55ADDAA37D56C214/image-dimensions/689x365?v=v2" width="689" height="365" role="button" title="intro_port.png" alt="intro_port.png" /></span></P></DIV></DIV></DIV><H3 id="ember668" id="toc-hId-1135322593">2. Business Context</H3><HR /><P class="">Paper Bills of Lading(BL) plays a crucial role in international trade, serve as Receipt, Contract and Document of title. This document is been the core of international trade for centuries.</P><UL><LI><STRONG>Receipt</STRONG>: The BL, which is issued by the carrier, serves as proof that the cargo has been loaded onto the vessel, documenting the quantity and condition of the goods at the time of shipment.</LI><LI><STRONG>Contract</STRONG>: It acts as a contract of carriage between the shipper, carrier and consignee, defining the agreed terms and conditions of transportation.</LI><LI><STRONG>Document of title</STRONG>: It acts as a document of title, representing ownership of the goods while they are in transit. Possession of the original bill of lading allows the holder to claim the goods upon their arrival or arrange transfer ownership of the cargo to another party in the supply chain.</LI></UL><P>&nbsp;</P><P class="">The process typically starts with the carrier issuing the BL to the shipper/seller upon receiving the goods. The shipper/seller then sends the original bill of lading to the buyer, often through a bank, to ensure that the seller receives the payment before the goods are released to the buyer. Finally, the consignee/buyer presents the original bill of lading to the carrier at the destination port to take possession of the goods.</P><P class=""><STRONG>Problem</STRONG></P><P class="">Traditionally, this has been paper-based, the document must travel physically between banks and buyers across countries, requiring couriers, manual signatures, and physical handovers. Each party checks it manually, which <STRONG>takes 5-10 days</STRONG>, and if the cargo is traded while the ship is at sea, the bill changes hands multiple times. This often causes ships to wait at port, creates demurrage costs, and forces parties to use risky workarounds like letters of indemnity, which carry legal and financial risks.</P><P class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Total time needed for B/L transfer via express courier service: 5-10 days" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385573i32E286F6360D9A40/image-size/medium?v=v2&amp;px=400" role="button" title="Screenshot 2026-03-15 at 1.40.50 PM.png" alt="Total time needed for B/L transfer via express courier service: 5-10 days" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Total time needed for B/L transfer via express courier service: 5-10 days</span></span></P><P class=""><STRONG>Solution</STRONG></P><P class="">The emergence of <STRONG>blockchain</STRONG> technology has enabled the development of <STRONG>Electronic Bills of Lading(eBL)</STRONG>, offering not only enhanced security and efficiency but also the potential for a substantial reduction in paper consumption and associated carbon emissions.</P><P class="">Blockchain provides a decentralized and transparent system to manage eBL. The data is not controlled by a single party, but shared across a network where all participants can verify the transactions. Every action, such as issuing or transferring the eBL, is recorded on the blockchain and can be traced by authorized parties. Transactions are validated almost in <STRONG>real time,</STRONG> allowing the eBL to be transferred within minutes instead of several days required with paper documents sent by courier.</P><P class="">By eliminating millions of paper documents and the need for courier shipments, organizations can reduce delays, lower operational costs, minimize the risk of errors, and decrease carbon footprints while aligning with ESG commitments. Electronic bills of lading on an <STRONG>Ethereum Layer 2</STRONG> can cut carbon emissions by <STRONG>~96% </STRONG>compared to traditional paper B/Ls.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Electronic Bill of Lading Lifecycle[4]" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385575iFF24363CC2FA5E1B/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2026-03-11 at 8.41.03 PM.png" alt="Electronic Bill of Lading Lifecycle[4]" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Electronic Bill of Lading Lifecycle[4]</span></span></P><P>&nbsp;</P><P class="">The benefits of the eBL are many and huge. In the announcement, DCSA wrote: <EM>“Switching away from the transfer of physical paper bills of lading could save $6.5 billion in direct costs for stakeholders, enable $30-40 billion in annual global trade growth, transform the customer experience and improve sustainability.” </EM></P><P class=""><STRONG>Payment Settlement in International Trade</STRONG></P><P class="">In traditional international trade, payments are typically secured through banking instruments such as Letters of Credit, documentary collections, or bank guarantees. In these models, banks act as trusted intermediaries that verify trade documents, including the Bill of Lading, before releasing payment from the importer to the exporter. While these mechanisms provide security, they are often manual, time-consuming, and highly dependent on paper-based documentation.</P><P class="">As trade processes move toward digital documentation, new opportunities emerge to integrate payment mechanisms directly with Electronic Bills of Lading.</P><P class="">By combining digital payments with eBL, parts of the trade process could be automated. For example, a <STRONG>smart contract </STRONG>on a blockchain funded by the importer could hold the payment until predefined conditions are met. Once ownership of the eBL is transferred to the importer, the smart contract could automatically release the funds to the exporter. In this context, <STRONG>stablecoins</STRONG> may play an important role by enabling fast and programmable digital settlement.</P><P class="">At the same time, modern banks increasingly provide APIs for Letter of Credit verification and trade finance services. Through networks such as SWIFT, financial institutions can exchange standardized payment messages and verification data. These capabilities can be integrated into digital trade platforms, helping automate document verification.</P><P class="">Although payment is not explored in detail within the scope of this Proof of Concept, the architecture presented here is designed to support such capabilities in the future, allowing payment orchestration to be incorporated as the trade ecosystem continues to evolve.</P><P class=""><STRONG>The Future of Global Trade</STRONG></P><P class="">In February 2023, DCSA announced a multi-carrier agreement to get to 100% usage of electronic Bills of Lading by 2030.</P><P class="">Thomas Bagge, chief executive officer, DCSA stated, “<EM>The digitalization of international trade holds vast potential for the world economy by reducing friction and, as trade brings prosperity and the eBL will further enable trade, helping bring millions out of poverty. Document digitalization has the power to transform and requires collaboration from all stakeholders.”</EM></P><H3 id="ember690" id="toc-hId-938809088">3. Solution Implementation</H3><HR /><P class="" data-unlink="true">In order to develop a fully digitalized solution for international trade that leverages blockchain technology for the <STRONG>Electronic Bill of Lading</STRONG>, the solution should be aligned with industry standards to ensure interoperability, operational efficiency, and regulatory compliance. The solution follows the guidelines established by the Digital Container Shipping Association (DCSA)&nbsp; and the United Nations Centre for Trade Facilitation and Electronic Business(UN/CEFACT)&nbsp;.</P><P class="" data-unlink="true">To support the implementation of the Electronic Bill of Lading, this Proof of Concept leverages <STRONG>TradeTrust</STRONG>&nbsp;, an open-source framework developed by the Infocomm Media Development Authority (IMDA)&nbsp;. TradeTrust provides a neutral infrastructure for the digitization and secure exchange of trade documents, aiming to make international trade safer, faster, easier, and more cost-effective.</P><P class="" data-unlink="true">The framework uses a public blockchain to maintain a single source-of-truth record of document ownership and aligns with the principles of the MLETR(Model Law on Electronic Transferable Records)&nbsp;, established by the UNCITRAL(United Nations Commission on International Trade Law).&nbsp;</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="How TradeTrust Works" style="width: 667px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385576i60CF19A2420ECFA9/image-dimensions/667x407?v=v2" width="667" height="407" role="button" title="1773607662250.png" alt="How TradeTrust Works" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">How TradeTrust Works</span></span></P><H2 id="ember657" id="toc-hId-613212864">Conclusion</H2><P><SPAN>In Part 1, I explored the benefits of the Electronic Bill of Lading and its potential to transform the industry—driving sustainability, improving transparency across the supply chain, and accelerating global trade operations.</SPAN></P><P class="" data-unlink="true"><span class="lia-unicode-emoji" title=":link:">🔗</span>In <STRONG><A title="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-blueprint-part-2-of-3/ba-p/14352463" href="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-blueprint-part-2-of-3/ba-p/14352463" target="_blank">Part 2</A></STRONG>&nbsp;, I’ll walk through the technical design and core building blocks behind the solution.</P> 2026-03-27T10:29:07.001000+01:00 https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-blueprint-part-2-of-3/ba-p/14352463 Architecting Electronic Bill of Lading on SAP BTP - Blueprint (Part 2 of 3) 2026-04-02T00:23:19.930000+02:00 RodrigoCampos https://community.sap.com/t5/user/viewprofilepage/user-id/1638903 <H2 id="ember657" id="toc-hId-1792294820">Introduction</H2><P><SPAN>In <A title="https://www.linkedin.com/pulse/proof-concept-architecting-electronic-bill-lading-sap-rodrigo-campos-y8jae/?trackingId=Rqm4JTaLhlQhyU1r0q55dg%3D%3D" href="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-rethinking-paper-based/ba-p/14352377" target="_blank"><EM><STRONG>Part 1 </STRONG></EM></A>, we explored the transformative potential of the Electronic Bill of Lading in international trade, highlighting its impact on sustainability, enhanced supply chain transparency, and accelerated business processes.</SPAN></P><P class=""><STRONG>Part 2</STRONG> presents the building blocks used to implement the solution and includes an architecture diagram illustrating how the SAP BTP services and components are integrated.</P><P class="">&nbsp;</P><H3 id="ember301" id="toc-hId-1724864034">1. System Context</H3><HR /><P class="">The ocean carrier already operates an established core system that manages transactional data such as bookings, shipping instructions, and transport events on <STRONG>SAP Cloud ERP( S/4HANA Transportation Management)</STRONG>.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SAP Cloud ERP" style="width: 723px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385612iF0836CB8A1291D10/image-dimensions/723x423?v=v2" width="723" height="423" role="button" title="SAPTM.png" alt="SAP Cloud ERP" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">SAP Cloud ERP</span></span></P><DIV class="">&nbsp;</DIV><H3 id="ember304" id="toc-hId-1528350529">2. SAP Business Technology Platform</H3><HR /><P class="">The foundation of this solution is <STRONG>SAP BTP</STRONG>, a cloud platform that brings together application development, data management, integration, and AI capabilities. It provides the core infrastructure and services needed to build enterprise applications.</P><P class="">To support the transition to digital trade, the <STRONG>Electronic Bill of Lading</STRONG> capability is implemented on <STRONG>SAP BTP&nbsp;</STRONG>as a side-by-side extension.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2026-03-14 at 5.34.23 PM.png" style="width: 728px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385614i63A9BCDFE3183199/image-dimensions/728x311?v=v2" width="728" height="311" role="button" title="Screenshot 2026-03-14 at 5.34.23 PM.png" alt="Screenshot 2026-03-14 at 5.34.23 PM.png" /></span></P><DIV class="">&nbsp;</DIV><H3 id="ember308" id="toc-hId-1331837024">3. Electronic Bill of Lading: TradeTrust Framework</H3><HR /><P class="" data-unlink="true">The open-source <STRONG>TradeTrust</STRONG>&nbsp;<STRONG>Framework</STRONG>&nbsp; serve as the foundation for implementing a fully digital and verifiable Electronic Bill of Lading solution. It can be deployed as a <STRONG>Node.js </STRONG>application on<STRONG>&nbsp;Cloud Foundry</STRONG>, which provides the runtime for developing and running cloud-native applications on SAP BTP.</P><P class="">On this PoC, the TradeTrust framework uses the <STRONG>Ethereum blockchain</STRONG> whereby the ERC-721 provides a widely-used smart contract API used on non-fungible tokens (NFTs) to allow transfer of ownership whilst providing assurance of integrity, singularity, and control.</P><P class=""><EM>Blockchain technology is a decentralized digital ledger system that records and verifies transactions across a network of computers in a secure and transparent manner. It consists of a chain of blocks, each containing a list of transactions thatare linked and secured using cryptographic techniques. Once a block is added to the chain, its data become immutable through a distributed ledger system, ensuring the integrity and permanence of the transaction records. This immutability and transparency enable blockchain to facilitate the exchange of anything of value, whether tangible assets including physical goods or intangible items such as digital assets.</EM>[11]</P><DIV class="">&nbsp;</DIV><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773346306937.png" style="width: 705px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385615i28B16B6DAA4E9A90/image-dimensions/705x381?v=v2" width="705" height="381" role="button" title="1773346306937.png" alt="1773346306937.png" /></span></DIV><H3 id="ember313" id="toc-hId-1135323519">4. Terminal Operating System</H3><HR /><P class=""><STRONG>Terminal Operating System (TOS)</STRONG> is the port terminal’s operational platform that manage and monitor container and vessel activities. Leveraging IoT-enabled equipment and sensors, the TOS generates real-time operational events such as container loading, vessel arrival, and departure. These events are distributed through a publish–subscribe model, pushing notifications to a configured endpoint. To ensure authenticity and integrity, the messages are encrypted and digitally signed.</P><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773191371504.png" style="width: 702px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385616i22C4075C98EF6D5A/image-dimensions/702x268?v=v2" width="702" height="268" role="button" title="1773191371504.png" alt="1773191371504.png" /></span></DIV><H3 id="ember316" id="toc-hId-938810014">5. Event-Driven Architecture</H3><HR /><P class=""><STRONG>SAP Integration Suite</STRONG> running on <STRONG>SAP BTP</STRONG> provides the capabilities that enable Event-Driven Architecture within the solution. The <STRONG>Cloud Integration </STRONG>is the middleware layer responsible for routing, transforming, and exchanging messages between external systems and SAP services. Under the hood, it uses the open-source <STRONG>Apache Camel Framework</STRONG>, enabling integration flows based on enterprise integration patterns.</P><P class="">For event orchestration <STRONG>SAP Event Mesh</STRONG> is the message broker, it facilitates asynchronous communication by receiving events from the terminal/port and routing them to the subscribed consumer <STRONG>Events-To-Business Actions Framework</STRONG>, that leverages the decisions capability of <STRONG>SAP Build Process Automation</STRONG> to initiate business actions.</P><DIV class="">&nbsp;</DIV><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773329195065.png" style="width: 807px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385617i7A384850AC096ABD/image-dimensions/807x191?v=v2" width="807" height="191" role="button" title="1773329195065.png" alt="1773329195065.png" /></span></DIV><H3 id="ember320" id="toc-hId-742296509">6. Automation</H3><HR /><P class="" data-unlink="true">For the process automation, a workflow is managed on <A href="https://www.sap.com/products/technology-platform/process-automation.html" target="_self" rel="noopener noreferrer">SAP Build Process Automation&nbsp;</A></P><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1772558372788.png" style="width: 698px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385618i2B992165C10D49D1/image-dimensions/698x580?v=v2" width="698" height="580" role="button" title="1772558372788.png" alt="1772558372788.png" /></span></DIV><DIV class="">&nbsp;</DIV><H3 id="ember323" id="toc-hId-545783004">7. UI</H3><HR /><P class="">Stakeholders access the application through SAP Build Work Zone, where authentication is handled by SAP Cloud Identity Services integrated with a custom Identity Provider (IdP) that validates blockchain wallet signatures. Authorization is then enforced via role collections, ensuring access only to permitted functionalities.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1772502965037.png" style="width: 753px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385620i4439626CB9B1DF25/image-dimensions/753x199?v=v2" width="753" height="199" role="button" title="1772502965037.png" alt="1772502965037.png" /></span></P><P class="">&nbsp;</P><H3 id="ember326" id="toc-hId-349269499">8. Diagram</H3><HR /><OL><LI>The <STRONG>Terminal Operating System</STRONG> generates an operational event(<EM>Load</EM>, <EM>Departure, Arrival</EM>). The event is published to the event broker <STRONG>SAP Event Mesh.</STRONG></LI><LI><STRONG>Event-to-Business-Actions framework</STRONG> is subscribed to <STRONG>SAP Event Mesh</STRONG> topics to receive the events.</LI><LI>Based on the rule outcome, the processor triggers a workflow on <STRONG>SAP Build Process Automation</STRONG> to orchestrate the business process.</LI><LI>The workflow calls <STRONG>SAP Integration Suite</STRONG> to start the process.</LI><LI>An Integration Flow retrieves the required Ocean Freight Booking from <STRONG>SAP S/4HANA</STRONG> and builds the payload to issue the eBL.</LI><LI>The Integration Flow invokes the <STRONG>TradeTrust Framework</STRONG>.</LI><LI>The <STRONG>Electronic Bill of Lading</STRONG> is issued on Ethereum Network.</LI></OL><P>&nbsp;</P><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773356166354.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385621i49D29577F4A198E8/image-size/large?v=v2&amp;px=999" role="button" title="1773356166354.png" alt="1773356166354.png" /></span></DIV><H3 id="ember329" id="toc-hId-152755994">9. Data Context</H3><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773457469947.png" style="width: 731px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385622i97B2221B8F162107/image-dimensions/731x238?v=v2" width="731" height="238" role="button" title="1773457469947.png" alt="1773457469947.png" /></span></P><P>&nbsp;</P><H2 id="ember135" id="toc-hId-174414127">Conclusion:</H2><P><SPAN>Part 2 outlined the essential building blocks and architectural components for implementing the eBL solution on SAP Business Technology Platform.</SPAN></P><P class=""><EM>In <STRONG><A title="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-end-to-end-scenario-part/ba-p/14352514" href="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-end-to-end-scenario-part/ba-p/14352514" target="_blank">Part 3</A></STRONG></EM><EM>,</EM> I’ll walk through a complete end-to-end global trade scenario, illustrating how the architecture operates in practice, from container loading event to eBL issuance, ownership transfer, and final surrender.</P> 2026-04-02T00:23:19.930000+02:00 https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-end-to-end-scenario-part/ba-p/14352514 Architecting Electronic Bill of Lading on SAP BTP - End-to-End Scenario(Part 3 of 3) 2026-04-02T19:09:58.380000+02:00 RodrigoCampos https://community.sap.com/t5/user/viewprofilepage/user-id/1638903 <H2 id="ember657" id="toc-hId-1792295627">Introduction</H2><P><SPAN>In <A title="https://www.linkedin.com/pulse/proof-concept-architecting-electronic-bill-lading-sap-rodrigo-campos-y8jae/?trackingId=Rqm4JTaLhlQhyU1r0q55dg%3D%3D" href="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-rethinking-paper-based/ba-p/14352377" target="_blank"><EM><STRONG>Part 1 – Case Study</STRONG></EM></A> and <EM><STRONG><A title="" href="https://community.sap.com/t5/technology-blog-posts-by-members/architecting-electronic-bill-of-lading-on-sap-btp-blueprint-part-2-of-3/ba-p/14352463" target="_blank">Part 2 – Blueprint</A></STRONG></EM>, we introduced the concept of the Electronic Bill of Lading and walked through the key steps required for its implementation.</SPAN></P><P class="">The <STRONG>Part 3</STRONG> presents a complete end-to-end global trade scenario, beginning with a container loading event emitted by the Terminal Operating System, continuing through the issuance of the <STRONG>electronic Bill of Lading,</STRONG> and ending with the surrender of the eBL when the importer claims the goods.</P><H3 id="ember281" id="toc-hId-1724864841">Teaser</H3><P class="" data-unlink="true">The recently announced <STRONG>trade agreement between the European Union and Mercosur&nbsp;</STRONG>(January 2026) opens new opportunities for smaller producers to gain greater market access and visibility in cross-border commerce. Additionally, the European Union will contribute with €1.8 billion through the Global Gateway&nbsp; initiative to support Mercosur’s green and digital transition. As trade volumes grow, <STRONG>Electronic Bills of Lading </STRONG>help by enabling faster, more secure, and fully digital handling of one of the most important documents in international trade.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mercosur-trade-agreement.png" style="width: 592px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385658i563285FA9B82CB22/image-dimensions/592x333?v=v2" width="592" height="333" role="button" title="mercosur-trade-agreement.png" alt="mercosur-trade-agreement.png" /></span></P><P>&nbsp;</P><H2 id="ember284" id="toc-hId-1399268617">Scenario</H2><HR /><P class="">A Brazilian<STRONG> Coffee Exporter</STRONG> contracts an <STRONG>Ocean Carrier</STRONG> to ship a container of coffee beans to an European<STRONG> Coffee Importer:</STRONG></P><UL><LI><STRONG>Stakeholders</STRONG>: Buyer, Seller and Carrier</LI><LI><STRONG>Origen</STRONG>: Port of Santos, Brazil</LI><LI><STRONG>Destination</STRONG>: &nbsp;Port of Antwerp, Belgium</LI><LI><STRONG>Goods</STRONG>: Arabica Coffee Beans</LI><LI><STRONG>Amount</STRONG>: 18 tons</LI><LI><STRONG>Container</STRONG>: 1 TEU</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RodrigoCampos_0-1774029071989.png" style="width: 598px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/386993i9825B1023E51A42D/image-dimensions/598x396?v=v2" width="598" height="396" role="button" title="RodrigoCampos_0-1774029071989.png" alt="RodrigoCampos_0-1774029071989.png" /></span></P><P>&nbsp;</P><H3 id="ember288" id="toc-hId-1331837831">Booking Request</H3><HR /><P class="">The exporter requests transportation from the ocean carrier by submitting a <STRONG>booking request</STRONG>.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773671736259.png" style="width: 652px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385661i9F9F589A0B6973BE/image-dimensions/652x411?v=v2" width="652" height="411" role="button" title="1773671736259.png" alt="1773671736259.png" /></span></P><P class=""><SPAN>The booking page of the app call the</SPAN><STRONG> <A class="" href="https://api.sap.com/api/CE_FREIGHTBOOKING_0001/overview" target="_self" rel="noopener noreferrer">FREIGHTBOOKING</A></STRONG> <A class="" href="https://api.sap.com/api/CE_FREIGHTBOOKING_0001/overview" target="_self" rel="noopener noreferrer"><STRONG>API</STRONG></A> <SPAN>to create the Ocean Booking on</SPAN> <STRONG>SAP Cloud ERP</STRONG></P><P class=""><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="booking2.png" style="width: 796px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385662iE6BD3165BF710E2F/image-dimensions/796x433?v=v2" width="796" height="433" role="button" title="booking2.png" alt="booking2.png" /></span></STRONG></P><H3 id="ember293" id="toc-hId-1135324326">Stakeholder Onboarding</H3><P class="">Before the shipment process begins, key participants such as the exporter, importer, and carrier are onboarded to the platform. During this step, each party registers its digital identity and public key, enabling secure signing, verification, and ownership transfer of the Electronic Bill of Lading.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773671926780.png" style="width: 791px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385665i4D222B9F465AB200/image-dimensions/791x358?v=v2" width="791" height="358" role="button" title="1773671926780.png" alt="1773671926780.png" /></span></P><H2 id="ember296" id="toc-hId-809728102">Electronic Bill of Lading Lifecycle</H2><HR /><P class="">The eBL lifecycle is based on the events generated by the <STRONG>Terminal Operating System:</STRONG></P><P class=""><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773694975142.png" style="width: 805px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385669i83310ED848E774D5/image-dimensions/805x485?v=v2" width="805" height="485" role="button" title="1773694975142.png" alt="1773694975142.png" /></span></STRONG></P><H3 id="ember76" id="toc-hId-742297316">1. Event: Load</H3><HR /><P class=""><STRONG>Port/Terminal Operating System:</STRONG> confirms the container has been loaded on a vessel</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RodrigoCampos_1-1774029113223.png" style="width: 635px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/386994iA85C50DD3441DCBC/image-dimensions/635x417?v=v2" width="635" height="417" role="button" title="RodrigoCampos_1-1774029113223.png" alt="RodrigoCampos_1-1774029113223.png" /></span></P><P>&nbsp;</P><P class=""><STRONG>Event Payload</STRONG><SPAN>:</SPAN></P><pre class="lia-code-sample language-json"><code>{ "event_id": "evt-load-0001", "event_created_date_time": "2026-03-16T10:15:30Z", "event": { "journey_type": "EQUIPMENT", "event_classifier": "ACT", "event_type": "LOAD", "transport_mode": "VESSEL", "empty_indicator": "FULL" }, "facility": { "facility_type": "POTE", "location": { "location_code": "BRSSZ", "location_name": "Port of Santos" } }, "transport": { "vessel_name": "Atlantic Pearl", "voyage_number": "VY-2024-095" }, "equipment": { "container_number": "MSKU1234567", "iso_equipment_code": "22G1" }, "shipment": { "commodity": "Green Coffee Beans", "gross_weight_kg": 18000 }, "destination": { "location_code": "BEANR", "location_name": "Port of Antwerp" } }</code></pre><P>&nbsp;</P><P><SPAN>On <STRONG>step 1</STRONG>, the event is published on a topic of SAP Event Mesh</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RodrigoCampos_0-1773852885536.png" style="width: 654px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385801i67833972314A9975/image-dimensions/654x541?v=v2" width="654" height="541" role="button" title="RodrigoCampos_0-1773852885536.png" alt="RodrigoCampos_0-1773852885536.png" /></span></P><P><SPAN>On the <STRONG>step 2</STRONG>, the event is consumed by the Event-to-Business Actions framework that triggers the workflow on SAP Build Process Automation.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1772502460588.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385672i56C2E764CC847BFF/image-size/medium?v=v2&amp;px=400" role="button" title="1772502460588.png" alt="1772502460588.png" /></span></SPAN></P><P class="">On the <STRONG>step 3</STRONG>, an integration flow is triggered on Integration Suite:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RodrigoCampos_1-1773853191190.png" style="width: 609px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385803i57A10E9C1DD963E6/image-dimensions/609x479?v=v2" width="609" height="479" role="button" title="RodrigoCampos_1-1773853191190.png" alt="RodrigoCampos_1-1773853191190.png" /></span></P><H3 id="toc-hId-545783811">&nbsp;</H3><H3 id="ember87" id="toc-hId-349270306">Integration Suite</H3><P class="">On <STRONG>step 4</STRONG>, Integration flow fetches the Ocean Freight Booking on <STRONG>SAP Cloud ERP(Step 5)</STRONG>&nbsp;according to the 'Container ID' and 'Voyage ID' and then proceed with the creation of the Electronic Bill of Lading via TradeTrust Framework.</P><P class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="iflow.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385674i79B6A19AD9355292/image-size/large?v=v2&amp;px=999" role="button" title="iflow.png" alt="iflow.png" /></span></P><H3 id="ember90" id="toc-hId-152756801">Business Partners:</H3><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bp2.png" style="width: 783px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385677iB815D6B6B1266A7F/image-dimensions/783x263?v=v2" width="783" height="263" role="button" title="bp2.png" alt="bp2.png" /></span></P><P><STRONG>Container:</STRONG></P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="container2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385680i30F1FB154C2DBBAB/image-size/large?v=v2&amp;px=999" role="button" title="container2.png" alt="container2.png" /></span></STRONG></P><P>&nbsp;</P><P><STRONG>Shipping Instructions</STRONG></P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773697198946.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385681i1F970CA1C5AE149B/image-size/large?v=v2&amp;px=999" role="button" title="1773697198946.png" alt="1773697198946.png" /></span></STRONG></P><P class="">After SAP Integration Suite fetch the data from the backend, it generate a payload.</P><H3 id="ember97" id="toc-hId--118988073">Electronic Bill of Lading Payload:</H3><pre class="lia-code-sample language-json"><code>{ "$schema": "https://schema.tradetrust.io/ebl/1.0/schema.json", "@context": [ "https://www.w3.org/2018/credentials/v1", "https://schema.trustvc.io/credentials/v1" ], "id": "urn:uuid:sap-ebl-trustvc-001", "type": [ "VerifiableCredential", "ElectronicBillOfLading", "TradeTrustDocument" ], "issuers": [ { "name": "Carrier", "documentStore": "0x0908aD5481673E19c3D03f1379E0032458118881", "identityProof": { "type": "DNS-TXT", "location": "carrier.example.com" } } ], "issuanceDate": "2026-03-16T11:00:00Z", "credentialSubject": { "id": "did:ethr:0x562eeBbaBB405db740f2e607F87f152989a10b7E", "origin": "Port of Santos, Brazil", "destination": "Port of Antwerp, Belgium", "goods": "Green Coffee Beans", "amount": "18 tons", "container": "1 TEU", "holder": "0x562eeBbaBB405db740f2e607F87f152989a10b7E", "consignee": "0x5C1d8d47784d8302B3839436e0e82E094D8e234f" } }</code></pre><P>&nbsp;</P><P><SPAN>On <STRONG>step 6</STRONG>, Integration Suite sends the payload to the TradeTrust framework to issue the eBL(<STRONG>step 7</STRONG>) :</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RodrigoCampos_2-1773853316058.png" style="width: 648px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385804i4188E20410823156/image-dimensions/648x557?v=v2" width="648" height="557" role="button" title="RodrigoCampos_2-1773853316058.png" alt="RodrigoCampos_2-1773853316058.png" /></span></P><P>&nbsp;</P><P><STRONG>Tradetrust framework Node.js </STRONG><SPAN>deployed on</SPAN> <STRONG>Cloud Foundry.</STRONG></P><pre class="lia-code-sample language-javascript"><code>const fs = require("fs"); const path = require("path"); const { Wallet, ethers } = require("ethers"); const { signDocument, SUPPORTED_SIGNING_ALGORITHM } = require("@tradetrust-tt/tradetrust"); require("dotenv").config(); const RPC_URL = "https://rpc.sepolia.linea.build"; // Linea Sepolia RPC const PRIVATE_KEY = process.env.PRIVATE_KEY; // Carrier wallet const NFT_CONTRACT_ADDRESS = "0x6fD6DB343c5d84Baa7fDaeD5CedDA15652451a8f"; // Stakeholders const EXPORTER = "0x562eeBbaBB405db740f2e607F87f152989a10b7E"; const IMPORTER = "0x5C1d8d47784d8302B3839436e0e82E094D8e234f";</code></pre><P><SPAN>The payload is wrapped with</SPAN> <STRONG>OpenAttestation</STRONG> <SPAN>metadata and cryptographically signed using the carrier’s key pair (public and private keys).</SPAN></P><pre class="lia-code-sample language-javascript"><code>let rawWrapped = fs.readFileSync(WRAPPED_JSON, "utf-8"); const wrappedDocument = JSON.parse(rawWrapped); console.log("✅ Wrapped document loaded"); // Sign document with carrier key const keyPair = { public: "did:ethr:0x9843Cd2834010A4dca776d3035117750d20b3C01#controller", private: PRIVATE_KEY }; const signedDocument = await signDocument( wrappedDocument, SUPPORTED_SIGNING_ALGORITHM.Secp256k1VerificationKey2018, keyPair ); fs.writeFileSync(SIGNED_JSON, JSON.stringify(signedDocument, null, 2)); console.log("Document signed successfully");</code></pre><P><STRONG>Prepare parameters</STRONG></P><pre class="lia-code-sample language-javascript"><code>// Connect wallet &amp; contract const provider = new ethers.JsonRpcProvider(RPC_URL); const wallet = new Wallet(PRIVATE_KEY, provider); console.log("🧾 Wallet (carrier):", wallet.address); const balance = await provider.getBalance(wallet.address); console.log(" ETH balance:", ethers.formatEther(balance)); if (balance === 0n) throw new Error("Wallet has ZERO ETH — fund it for gas"); const contract = new ethers.Contract(NFT_CONTRACT_ADDRESS, EBL_ABI, wallet); // Check wallet is carrier const carrierAddress = await contract.carrier(); if (wallet.address.toLowerCase() !== carrierAddress.toLowerCase()) { throw new Error(`Wallet is not the carrier. Contract carrier is ${carrierAddress}`); } //Prepare issueEBL parameters const tokenId = BigInt(Date.now()); // PoC uniqueness const merkleRoot = signedDocument?.signature?.merkleRoot; const documentHash = toBytes32(merkleRoot); // Estimate gas + send const gasEstimate = await contract.issueEBL.estimateGas( tokenId, EXPORTER, IMPORTER, documentHash, tokenURI ); const gasLimit = percentBuffer(gasEstimate, 25); const maxPriorityFeePerGas = ethers.parseUnits("1", "gwei"); // tip const maxFeePerGas = ethers.parseUnits("5", "gwei"); // must be &gt;= priority const tx = await contract.issueEBL( tokenId, EXPORTER, IMPORTER, documentHash, tokenURI, { gasLimit, maxFeePerGas, maxPriorityFeePerGas } ); console.log("📤 Transaction sent:", tx.hash); const receipt = await tx.wait(); console.log("✅ Mint/Issue confirmed in block:", receipt.blockNumber);</code></pre><P>&nbsp;</P><P><STRONG>NFT Minted on Blockchain</STRONG></P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773698854001.png" style="width: 735px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385780iB5A63769088B7E83/image-dimensions/735x162?v=v2" width="735" height="162" role="button" title="1773698854001.png" alt="1773698854001.png" /></span></STRONG></P><P><STRONG><EM>From this point onward, all TradeTrust-related steps will be demonstrated using the TradeTrust viewer. However, these operations can also be implemented programmatically using the TradeTrust Node.js library.</EM></STRONG></P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773698010785.png" style="width: 746px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385785iA84843284EDA3320/image-dimensions/746x376?v=v2" width="746" height="376" role="button" title="1773698010785.png" alt="1773698010785.png" /></span></EM></STRONG></P><H3 id="ember112" id="toc-hId--315501578">Electronic Bill of Lading created:</H3><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773687335919.png" style="width: 744px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385786i23F364391B88A3D7/image-dimensions/744x657?v=v2" width="744" height="657" role="button" title="1773687335919.png" alt="1773687335919.png" /></span></EM></STRONG></P><H3 id="ember114" id="toc-hId--512015083">2. Event: Departure</H3><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773458029764.png" style="width: 541px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385788iE392E8C9AAF9A448/image-dimensions/541x346?v=v2" width="541" height="346" role="button" title="1773458029764.png" alt="1773458029764.png" /></span></EM></STRONG></P><P>Once the vessel leaves the port and start the journey, the Terminal Operating System emits the event Departure:</P><pre class="lia-code-sample language-javascript"><code>{ "event_id": "evt-depa-0001", "event_created_date_time": "2026-03-16T18:40:00Z", "journey_event": { "journey_type": "TRANSPORT", "event_classifier": "ACT", "event_type": "DEPA", "transport_mode": "VESSEL", "facility_type": "POTE" }, "shipment_location": { "type_code": "POL", "location_code": "BRSSZ" }, "transport": { "vessel_name": "Atlantic Pearl", "voyage_number": "VY-2024-095" }, "shipment": { "transport_document_reference": "BL-SANTOS-ANT-0001" } }</code></pre><P>The vessel starts to transmit telemetry(stored on a Hana DB) which is used for tracking and trace:</P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1772502569575.png" style="width: 607px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385787i2C561778572D6FF2/image-dimensions/607x376?v=v2" width="607" height="376" role="button" title="1772502569575.png" alt="1772502569575.png" /></span></EM></STRONG></P><P>Once the goods are in transit, the buyer is notified via SAP BPA to provide the payment:</P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1772502568799.png" style="width: 648px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385789iA8874A94E06AD890/image-dimensions/648x243?v=v2" width="648" height="243" role="button" title="1772502568799.png" alt="1772502568799.png" /></span></EM></STRONG></P><P>Once the payment is verified, the ownership of the Electronic Bill of Lading can be transferred to the Importer:</P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773685657932.png" style="width: 739px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385790i52381E823C1633D2/image-dimensions/739x381?v=v2" width="739" height="381" role="button" title="1773685657932.png" alt="1773685657932.png" /></span></EM></STRONG></P><H3 id="ember123" id="toc-hId--708528588">3. Event: Arrival</H3><HR /><P class="">This event notifies the consignee via SAP Process Automation that the goods have arrived at the destination port and it is ready for pick up</P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773458097005.png" style="width: 547px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385791iFDD71122BB7CD1C2/image-dimensions/547x368?v=v2" width="547" height="368" role="button" title="1773458097005.png" alt="1773458097005.png" /></span></EM></STRONG></P><P><STRONG><EM>Payload:</EM></STRONG></P><pre class="lia-code-sample language-javascript"><code>{ "event_id": "evt-arri-0001", "event_created_date_time": "2026-03-26T07:20:00Z", "journey_event": { "journey_type": "TRANSPORT", "event_classifier": "ACT", "event_type": "ARRI", "transport_mode": "VESSEL", "facility_type": "POTE" }, "shipment_location": { "type_code": "POD", "location_code": "BEANR" }, "transport": { "vessel_name": "Atlantic Pearl", "voyage_number": "VY-2024-095" }, "shipment": { "transport_document_reference": "BL-SANTOS-ANT-0001" } }</code></pre><P>&nbsp;</P><P>Journey completed:</P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1772502569779.png" style="width: 641px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385792i86B66A6CE306C89E/image-dimensions/641x397?v=v2" width="641" height="397" role="button" title="1772502569779.png" alt="1772502569779.png" /></span></EM></STRONG></P><P>&nbsp;</P><P>The Importer surrenders the electronic Bill of Lading to the carrier for cargo release at the destination port.</P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773686293894.png" style="width: 739px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385793i56AE113B10F2FF40/image-dimensions/739x450?v=v2" width="739" height="450" role="button" title="1773686293894.png" alt="1773686293894.png" /></span></EM></STRONG></P><P>The surrender step marks the end of the workflow and completes the trade process.</P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1772502568800.png" style="width: 422px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385794iD849C24C85960D1D/image-dimensions/422x161?v=v2" width="422" height="161" role="button" title="1772502568800.png" alt="1772502568800.png" /></span></EM></STRONG></P><P>Endorsement Chain completed:</P><P><STRONG><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1773683927552.png" style="width: 702px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/385795i73C4AB1769876EEF/image-dimensions/702x410?v=v2" width="702" height="410" role="button" title="1773683927552.png" alt="1773683927552.png" /></span></EM></STRONG></P><H2 id="ember135" id="toc-hId--611639086">Conclusion:</H2><P class="">This Proof of Concept demonstrates how an electronic Bill of Lading can be issued, verified, and transferred using a blockchain technology integrated with SAP Business Technology Platform.</P><P class="">Given that modern container vessels can carry thousands of containers, the proposed architecture is designed to scale and process a high volume of operational events efficiently.</P><P class="">Looking ahead, <STRONG>AI agents</STRONG> could be integrated to further enhance the solution. These agents could monitor events, detect potential issues, automate operational tasks, and trigger workflows when required.</P><P class="">Combined with digital payment mechanisms such as on-chain settlement, this approach has the potential to significantly transform how international trade processes are executed.</P><P class="">&nbsp;</P><P class="" data-unlink="true"><STRONG>Sources: </STRONG>SAP BTP Guidance Framework,&nbsp; SAP Application Extension Methodology&nbsp;, SAP Integration Solution Advisory Methodology&nbsp;, Integration Architecture Guide.</P><P><STRONG>References:</STRONG></P><P>[1] ICC Academy: Break the eBL silos: Why interoperability is the missing link in digital trade</P><P>[2] CargoX: Environmental impact of digitalisation in shipping documentation: Carbon footprint comparison of paper and electronic bills of lading</P><P>[3] Weareprocarrier</P><P>[4] Intracen: International Trade Centre</P><P>[5] IMDA: TradeTrust Legal Analysis Article</P><P>[6] Smart Ports Bynder</P><P>[7] GitHub - Event to Business Action</P><P>[8] Irishweekly: Europe Greenlights Massive Mercosur Trade Deal, Ending Long Stalemate</P><P>[9] 93degreescoffeeroasters</P><P>[10] ICC Academy: Ebl digital trade</P><P>[11] Intracen: Expediting Trade Through Electronic Bills of Lading</P><P class="">&nbsp;</P> 2026-04-02T19:09:58.380000+02:00 https://community.sap.com/t5/technology-blog-posts-by-sap/good-to-know-quot-sql-statement-collection-quot-the-swiss-army-knife-for/ba-p/14365736 Good to know: "SQL Statement Collection" the Swiss army knife for SAP HANA database administrators 2026-04-04T11:21:44.192000+02:00 Laszlo_Thoma https://community.sap.com/t5/user/viewprofilepage/user-id/170406 <P><ul =""><li style="list-style-type:disc; margin-left:0px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-sap/good-to-know-quot-sql-statement-collection-quot-the-swiss-army-knife-for/ba-p/14365736#toc-hId-1664227788">Why was this blog post created?</a></li><li style="list-style-type:disc; margin-left:0px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-sap/good-to-know-quot-sql-statement-collection-quot-the-swiss-army-knife-for/ba-p/14365736#toc-hId-1467714283">Where can I find the most important information about SQL Statement Collection reports?</a></li><li style="list-style-type:disc; margin-left:0px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-sap/good-to-know-quot-sql-statement-collection-quot-the-swiss-army-knife-for/ba-p/14365736#toc-hId-1271200778">Where to find learning materials?</a></li><li style="list-style-type:disc; margin-left:0px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-sap/good-to-know-quot-sql-statement-collection-quot-the-swiss-army-knife-for/ba-p/14365736#toc-hId-1074687273">Other articles</a></li><li style="list-style-type:disc; margin-left:0px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-sap/good-to-know-quot-sql-statement-collection-quot-the-swiss-army-knife-for/ba-p/14365736#toc-hId-878173768">Do you have further questions?</a></li><li style="list-style-type:disc; margin-left:0px; margin-bottom:1px;"><a href="https://community.sap.com/t5/technology-blog-posts-by-sap/good-to-know-quot-sql-statement-collection-quot-the-swiss-army-knife-for/ba-p/14365736#toc-hId-681660263">Contribution</a></li></ul></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SAP_Community_Blog_Banner_2026.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/393265iDD2CDF063060F099/image-size/large?v=v2&amp;px=999" role="button" title="SAP_Community_Blog_Banner_2026.png" alt="SAP_Community_Blog_Banner_2026.png" /></span></P><P class="lia-align-center" style="text-align: center;"><span class="lia-unicode-emoji" title=":graduation_cap:">🎓</span><FONT color="#FF0000">The blog contains SAP Learning references. </FONT><span class="lia-unicode-emoji" title=":television:">📺</span></P><P class="lia-align-right" style="text-align : right;"><FONT color="#FF0000">last updated: 2026-04-04</FONT></P><H1 id="toc-hId-1664227788">Why was this blog post created?</H1><P>The SAP HANA database comes with a set of tools that support the work of database administrators, developers, and other support teams. The tools are available both internally (SAP Employees) and externally. Knowledge of this set of tools is essential for SAP HANA database operators.</P><H1 id="toc-hId-1462018528" id="toc-hId-1467714283">Where can I find the most important information about SQL Statement Collection reports?</H1><P>The following SAP Note is the central source of the toolkit <span class="lia-unicode-emoji" title=":wrench:">🔧</span> called "SQL Statement Collection".</P><P><span class="lia-unicode-emoji" title=":blue_book:">📘</span>&nbsp;<A href="https://me.sap.com/notes/1969700" target="_blank" rel="noopener noreferrer">1969700</A> - SQL Statement Collection for SAP HANA</P><P>There are huge number of reports available for different purposes. There is a SAP Knowledge Base Article created to explain the reports one-by-one in details.</P><P><SPAN><span class="lia-unicode-emoji" title=":closed_book:">📕</span></SPAN>&nbsp;<A href="https://me.sap.com/notes/3311408" target="_blank" rel="noopener noreferrer">3311408</A> - Bookmark of SQL Statement Collection reports for SAP HANA</P><P>The SAP Knowledge Base Article is under construction and will contain more reports in the future.</P><P>SAP Help Portal -&nbsp;<SPAN>SAP HANA Troubleshooting and Performance Analysis Guide -&nbsp;<A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/bed8c14f9f024763b0777aa72b5436f6/69d0f22dee8f4c0e947e4b6327a51a7b.html" target="_blank" rel="noopener noreferrer">Using the SQL Statement Collection for Analysis and Health Checks</A></SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SAP_Community_Blog_Image_SQLStatementCollection.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/393268i085B7E53B835C69E/image-size/large?v=v2&amp;px=999" role="button" title="SAP_Community_Blog_Image_SQLStatementCollection.png" alt="SAP_Community_Blog_Image_SQLStatementCollection.png" /></span></P><H1 id="toc-hId--35400413" id="toc-hId-1271200778"><STRONG>Where to find learning materials?</STRONG></H1><UL><LI>SAP Learning -&nbsp;<A href="https://learning.sap.com/courses/sap-hana-installation-and-administration" target="_blank" rel="noopener noreferrer">SAP HANA - Installation and Administration</A> -&nbsp;<A href="https://learning.sap.com/courses/sap-hana-installation-and-administration/using-the-sap-hana-statement-library" target="_blank" rel="noopener noreferrer">Using the SAP HANA Statement Library</A></LI></UL><H1 id="toc-hId-675964508" id="toc-hId-1074687273"><SPAN>Other articles</SPAN></H1><P><span class="lia-unicode-emoji" title=":writing_hand:">✍️</span>&nbsp;<A href="https://blogs.sap.com/2023/03/29/where-can-i-find-knowledge-and-information-belongs-to-sap-hana/" target="_blank" rel="noopener noreferrer">Where can I find knowledge and information belongs to SAP HANA?</A><BR /><span class="lia-unicode-emoji" title=":writing_hand:">✍️</span>&nbsp;<A href="https://blogs.sap.com/2023/06/02/where-can-i-find-information-about-the-available-tools-for-sap-hana-all-types-of-use/" target="_blank" rel="noopener noreferrer">Where can I find information about the available tools for SAP HANA (all types of use)?</A></P><H1 id="toc-hId-479451003" id="toc-hId-878173768">Do you have further questions?</H1><P>Please do not hesitate to contact me if you have question or observation regarding the article.<BR />Q&amp;A link for SAP HANA:<SPAN>&nbsp;</SPAN><A href="https://answers.sap.com/tags/73554900100700000996" target="_blank" rel="noopener noreferrer">https://answers.sap.com/tags/73554900100700000996</A>&nbsp;</P><H1 id="toc-hId-282937498" id="toc-hId-681660263">Contribution</H1><P>If you find any missing information belongs to the topic, please let me know. I am happy to add the new content. My intention is to maintain the content continuously to keep the info up-to-date.</P><P><FONT color="#999999"><STRONG>Release Information</STRONG></FONT></P><TABLE width="100%" cellspacing="1"><TBODY><TR><TD height="58px"><FONT color="#999999">Release Date</FONT></TD><TD height="58px"><FONT color="#999999">Description</FONT></TD></TR><TR><TD height="30px"><FONT color="#999999">2026.04.04</FONT></TD><TD height="30px"><FONT color="#999999">First/initial Release of the SAP Blog Post documentation (Technical Article).</FONT></TD></TR></TBODY></TABLE> 2026-04-04T11:21:44.192000+02:00 https://community.sap.com/t5/technology-blog-posts-by-sap/meet-your-hana-cloud-lifecycle-agent-enabled-by-joule-and-sap-automation/ba-p/14367242 Meet Your HANA Cloud Lifecycle Agent: Enabled by Joule and SAP Automation Pilot 2026-04-07T09:07:22.826000+02:00 BiserSimeonov https://community.sap.com/t5/user/viewprofilepage/user-id/3334 <P>In a <A title="Automating SAP HANA Cloud (Other Environment) DB Lifecycle Management with SAP Automation Pilot" href="https://community.sap.com/t5/technology-blog-posts-by-sap/automating-sap-hana-cloud-other-environment-db-lifecycle-management-with/ba-p/14338555" target="_blank">previous blog post</A>, we explored how SAP HANA Cloud lifecycle management can be automated end-to-end using SAP Automation Pilot, outlining various automations capabilities and scenarios:&nbsp; from instance operations to backup and recovery. We also have demonstrated how SAP Automation Pilot can help Ops / DevOps / IT Admin team to bring Agentic Ops into action, see this blogpost:&nbsp;<A class="" href="https://community.sap.com/t5/technology-blog-posts-by-sap/from-automation-to-agentic-ops-mcp-servers-in-sap-automation-pilot/ba-p/14307662" target="_blank">From Automation to Agentic Ops: MCP Servers in SAP Automation Pilot</A></P><P>Now, it is time to take the next step. What happens when all available HANA Cloud automations in SAP Automation Pilot are no longer triggered manually, but instead are consumed and orchestrated by AI agents?&nbsp;</P><P>Welcome to the world of HANA Cloud Ops Agents powered by Joule and SAP Automation Pilot and a true<STRONG> HANA Cloud Lifecycle Management agent </STRONG>- powered by SAP Automation Pilot content and consumed directly in Joule in a truly agentic manner.</P><H2 id="toc-hId-1793365311"><span class="lia-unicode-emoji" title=":movie_camera:">🎥</span>&nbsp; Meet Your HANA Cloud Lifecycle Management Agent</H2><P>See an example about&nbsp;<STRONG>HANA Cloud Lifecycle Agent enabled by SAP Automation Pilot</STRONG> and find out how easy it is to set up an MCP server, expose automations, and <STRONG>trigger them in an agentic way through Joule</STRONG>.</P><P><A href="https://community.sap.com/source-Ids-list" target="1_qh9cgu1a" rel="nofollow noopener noreferrer">&nbsp;</A></P><H2 id="toc-hId-1596851806">From Automation to Agentic HANA Cloud Operations</H2><P>With SAP Automation Pilot, DevOps and Ops teams can already automate complex operational workflows using prebuilt and custom commands. At the same time, Joule is evolving into an intelligent orchestrator of AI agents that can observe, reason, and act across SAP landscapes. Bringing these two together unlocks a <STRONG>new operational model</STRONG> where&nbsp;<STRONG>Joule Agents</STRONG> orchestrate and trigger automations based on intent and context (see diagram below):&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="hana-cloud-mcp-servers-automation-pilot.png" style="width: 747px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394131i98D3AF94F26201CD/image-dimensions/747x401?v=v2" width="747" height="401" role="button" title="hana-cloud-mcp-servers-automation-pilot.png" alt="hana-cloud-mcp-servers-automation-pilot.png" /></span></P><P>SAP HANA Cloud operations typically involve a wide range of recurring, critical activities. With Automation Pilot and Joule Agents, these can now be exposed as reusable, governed capabilities.</P><P>Let’s look at some concrete examples as i<SPAN>nstead of executing repetitive and sensitive database operations manually, you can now automate domains such as:&nbsp;</SPAN></P><P><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span></SPAN><SPAN>&nbsp;</SPAN>Instance Lifecycle Management;</P><P><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span></SPAN>Backup &amp; Recovery;</P><P><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span></SPAN>&nbsp;Snapshot Management;</P><P><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span></SPAN>&nbsp;Instance Configuration;</P><P><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span></SPAN>&nbsp;Upgrades &amp; Plugins;</P><P><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":small_blue_diamond:">🔹</span></SPAN>&nbsp;Elastic Compute Nodes (ECN);&nbsp;</P><H2 id="toc-hId-1400338301"><STRONG>…and Many More</STRONG></H2><P>These scenarios are just a starting point.</P><P>Any operational workflow automated in SAP Automation Pilot can be exposed via MCP Servers and consumed by Joule Agents - enabling a flexible, extensible, and truly agent-driven operations model across SAP HANA Cloud and beyond.</P><P>This approach unlocks a <STRONG>completely new way to ops&nbsp; automation</STRONG>&nbsp; where AI agents can reason, execute, and orchestrate operational tasks seamlessly following customers requests and needs.</P><DIV><H2 id="toc-hId-1203824796"><span class="lia-unicode-emoji" title=":bookmark:">🔖</span>&nbsp; Try SAP HANA Cloud LM MCP Server in SAP Automation Pilot Yourself&nbsp;</H2><P><SPAN>Interested in exploring the SAP HANA Cloud Lifecycle Management MCP Server in SAP Automation Pilot? You can import it directly and experience how easy it is to set up and use by building your own AI agent in Joule Studio.</SPAN></P><P>Just follow the steps below to get started:&nbsp;</P><OL><LI>Import in your SAP Automation Pilot tenant the <A href="https://github.com/SAP-samples/automation-pilot-examples/tree/main/hana-lifecycle-management" target="_blank" rel="noopener nofollow noreferrer">SAP HANA Cloud Lifecycle Management catalog published in our Github repo</A>. Direct link to the catalog itself is <A href="https://github.com/SAP-samples/automation-pilot-examples/blob/main/hana-lifecycle-management/catalog.json" target="_blank" rel="noopener nofollow noreferrer">here</A>.&nbsp; <EM>Tip: more details on how to import catalogs are described in <A href="https://github.com/SAP-samples/automation-pilot-examples/tree/main?tab=readme-ov-file#getting-started" target="_blank" rel="noopener nofollow noreferrer">Getting Started section</A>.&nbsp;</EM></LI><LI>In your SAP Automation Pilot tenant there is a catalog named: "Welcome". Create an Input with Input key "ServiceManager" as described within the <A href="https://github.com/SAP-samples/automation-pilot-examples/tree/main/hana-lifecycle-management#requirements" target="_blank" rel="noopener nofollow noreferrer">Requirements section.</A></LI><LI>Import the MCP server in SAP Automation Pilot - we have also published for free exploration in <A href="https://github.com/SAP-samples/automation-pilot-examples/blob/main/hana-lifecycle-management/MCP%20Server%20in%20Automation%20Pilot%20-%20SAP%20HANA%20Cloud%20Lifecycle%20Management.json" target="_blank" rel="noopener nofollow noreferrer">Github following this link</A>.<SPAN>&nbsp; <EM>Tip: more details on how to import MCP Servers are provided in the help documentation here:&nbsp;</EM></SPAN><EM><A href="https://help.sap.com/docs/automation-pilot/automation-pilot/managing-mcp-servers?locale=en-US&amp;state=PRODUCTION&amp;version=Cloud" target="_blank" rel="noopener noreferrer">Managing MCP Servers</A>;</EM></LI><LI><A href="https://help.sap.com/docs/Joule_Studio/45f9d2b8914b4f0ba731570ff9a85313/b323c5a639a5428eb05fdafcca9bc9df.html" target="_blank" rel="noopener noreferrer">Setup your project in Joule Studio and build your AI Agent</A> using the MCP Server endpoint provided by SAP Automation Pilot to bring the needed automation to your agent.&nbsp;</LI></OL></DIV><DIV><H2 id="toc-hId-1007311291"><span class="lia-unicode-emoji" title=":books:">📚</span>&nbsp;Learn More</H2><P><SPAN>If you would like to explore MCP servers in more detail or start using them in your own landscapes, please check out the SAP Automation Pilot official documentation which provides further insights:</SPAN></P></DIV><UL><LI><SPAN><A href="https://help.sap.com/docs/automation-pilot/automation-pilot/mcp-server" target="_blank" rel="noopener noreferrer">MCP Server Overview</A></SPAN>;</LI><LI><SPAN><A href="https://help.sap.com/docs/automation-pilot/automation-pilot/managing-mcp-servers?locale=en-US&amp;state=PRODUCTION&amp;version=Cloud" target="_blank" rel="noopener noreferrer">Managing MCP Servers</A></SPAN>;</LI><LI><A title="Integrating SAP Automation Pilot with Joule Studio" href="https://help.sap.com/docs/automation-pilot/automation-pilot/integrating-service-with-joule-studio" target="_self" rel="noopener noreferrer">Integrating SAP Automation Pilot with Joule Studio</A>&nbsp;;</LI></UL><P><SPAN>Looking forward to collaborating and shaping the future of agentic IT operations together.</SPAN></P> 2026-04-07T09:07:22.826000+02:00 https://community.sap.com/t5/technology-blog-posts-by-sap/partner-learning-accelerator-data-engineer-sap-hana/ba-p/14367517 Partner Learning Accelerator: Data engineer - SAP HANA 2026-04-07T16:00:00.031000+02:00 JoseBastidas https://community.sap.com/t5/user/viewprofilepage/user-id/3227 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Partner Learning Accelerator Data engineer - SAP HANA.png" style="width: 799px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394286i9E8DF839FB736086/image-size/large?v=v2&amp;px=999" role="button" title="Partner Learning Accelerator Data engineer - SAP HANA.png" alt="Partner Learning Accelerator Data engineer - SAP HANA.png" /></span></P><P>Getting certified as a data engineer on SAP HANA Cloud can feel like a big step. &nbsp;The content is deep, the exam is detailed, and time is always tight.</P><P>That’s exactly why we created this <STRONG>Partner Learning Accelerator</STRONG>.</P><P>In this 3-hour live session, you’ll walk through key topics like data modeling, provisioning, and exam structure. You’ll see real examples, ask questions in real time, and get practical tips that go beyond slides. Plus, we’ll close with a focused exam wrap-up so you know what to expect.</P><P>If you’re working with SAP HANA Cloud or planning to, this is a strong way to build confidence before the C_HAMOD certification.</P><P>The thing is, preparation becomes much easier when you know where to focus.</P><P>Join us and move one step closer to certification.</P><P>Register now.&nbsp; <A href="https://partneredge.sap.com/en/library/education/psd/2026/mar/e_oe_te_w_PSD_WEB_00013386.html" target="_blank" rel="noopener noreferrer">https://partneredge.sap.com/en/library/education/psd/2026/mar/e_oe_te_w_PSD_WEB_00013386.html</A></P><P>#SAP #SAPBTP #SAPPartners #SAPEcosystem #SAPHANA #DataEngineering #SAPLearning #CloudSkills</P> 2026-04-07T16:00:00.031000+02:00 https://community.sap.com/t5/technology-blog-posts-by-members/building-a-cap-app-with-fiori-integration-part-1-environment-amp-hana-cloud/ba-p/14367752 Building a CAP App with Fiori Integration – Part 1: Environment & HANA Cloud Setup 2026-04-08T08:32:43.137000+02:00 SuryaRamesh https://community.sap.com/t5/user/viewprofilepage/user-id/2066090 <P>In this blog series we are going to see how to create a Basic CAPM Application from scratch through BTP Trial Account and Integrate it with Fiori.&nbsp;</P><P>--&gt; The First Part of this series will explain all the Pre-Requisites to be done before creating CAP Application.&nbsp;</P><P>--&gt; Second Part of this series will explain how to create CAP Application and Integrate it with Fiori.</P><P>Cloud Based Applications may look complex from outside but when blocks are perfectly aligned even a beginner can build a powerful CAP application using BAS. Let’s dive in and start arranging those blocks from the ground up.</P><P><STRONG>Tools Required:</STRONG> BAS, HANA Cloud Central</P><P>At end of this series we can able to successfully run a CAP Application in Fiori Generated App and able to create entries in HANA Cloud Central based DB from the Fiori App.&nbsp;</P><P>1.&nbsp; Create a BTP Trial Account/Use existing Global Account for the Development Process. Access to your SubAccount as below from<STRONG> Account Explorer -&gt; SubAccounts.</STRONG>&nbsp;</P><P>2. Now get into Sub Account and Navigate to Instances and Subscriptions as below and then click <STRONG>Create</STRONG> Button.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAPM - 1.png" style="width: 695px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394422i503A0F865DB8FB4D/image-dimensions/695x278?v=v2" width="695" height="278" role="button" title="CAPM - 1.png" alt="CAPM - 1.png" /></span></P><P>3. Under Services tab -&gt;<STRONG> Select SAP HANA Cloud</STRONG> &amp; in Plan select&nbsp;<STRONG>Tools/<STRONG>hana-cloud</STRONG>&nbsp;</STRONG>which makes service compatible for shareable instance.&nbsp;</P><P><STRONG>Note</STRONG>: If SAP HANA Cloud is not showing under services tab then add it from <STRONG>Entitlements-&gt;Add service Plans.</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAPM - 3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394423i10776F32A3F3581D/image-size/large?v=v2&amp;px=999" role="button" title="CAPM - 3.png" alt="CAPM - 3.png" /></span></P><P>4. After Creation, the SAP HANA Cloud Central tool will be added to subscription as below along with Business Application Studio. Note: Incase if BAS is not added then add that as well from Create Button.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP - 4.png" style="width: 539px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394411iD10E1805DC40107C/image-dimensions/539x181?v=v2" width="539" height="181" role="button" title="CAP - 4.png" alt="CAP - 4.png" /></span></P><P>5. Once the HANA Cloud and BAS set up is done, then navigate to&nbsp;<STRONG>Security-&gt;Users&nbsp;</STRONG>and assign these Roles.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-5.png" style="width: 655px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394424i35689B92E2C55826/image-dimensions/655x337?v=v2" width="655" height="337" role="button" title="CAP-5.png" alt="CAP-5.png" /></span></P><P><STRONG>Roles Required :</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-6.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394425i2EB298D7F4D3D160/image-size/large?v=v2&amp;px=999" role="button" title="CAP-6.png" alt="CAP-6.png" /></span></P><P><STRONG>Note:</STRONG> These roles should be assigned to the user and with that HANA Cloud can be accessed.</P><P class="lia-align-left" style="text-align : left;"><EM>Before moving into next point lets have a quick overview on what is SAP HANA Cloud Central and BAS.&nbsp;</EM></P><P class="lia-align-left" style="text-align : left;"><EM>SAP HANA Cloud Central - It manages&nbsp;SAP HANA Cloud instances&nbsp;within the&nbsp;SAP Business Technology Platform (BTP). It acts as a centralized dashboard to create, monitor, and maintain both&nbsp;SAP HANA database&nbsp;instances and&nbsp;Data Lake&nbsp;instances.</EM></P><P class="lia-align-left" style="text-align : left;"><EM>SAP BAS -&nbsp;<STRONG>SAP Business Application Studio</STRONG>&nbsp;is a cloud-based&nbsp;<STRONG>Integrated Development Environment (IDE)</STRONG>&nbsp;designed specifically to build and extend SAP applications.</EM></P><P class="lia-align-left" style="text-align : left;"><EM>Basically SAP HANA Cloud Central helps to manage data through cloud instances and BAS helps in building data. We can decide how the data should look/maintained from BAS.&nbsp;&nbsp;</EM></P><P class="lia-align-left" style="text-align : left;"><EM>Now let's continue with the Pre-Requisites;</EM></P><P class="lia-align-left" style="text-align : left;">6. As a next step, navigate to&nbsp;<STRONG>Cloud Foundry-&gt;Spaces&nbsp;</STRONG>and ensure if space dev is available. If that is not there then create dev space using&nbsp;<STRONG>Create space&nbsp;</STRONG>Button. This<SPAN>&nbsp;</SPAN><STRONG>Space</STRONG>&nbsp;is really important as it<SPAN>&nbsp;acts as a deployment target from CAP where code is deployed and executed.</SPAN></P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 7.png" style="width: 687px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394426iCCB886AF1BE67078/image-dimensions/687x271?v=v2" width="687" height="271" role="button" title="CAP 7.png" alt="CAP 7.png" /></span></P><P class="lia-align-left" style="text-align : left;">7. Navigate to HANA Cloud and click on&nbsp;<STRONG>Create Instance.&nbsp;</STRONG>Again, Creation of HANA Cloud Instance is as important as creation of dev space in cloud foundruy. It<SPAN>&nbsp;acts as the&nbsp;</SPAN><STRONG>database-as-a-service (DBaaS)</STRONG><SPAN>&nbsp;where application’s data is permanently stored. HANA Cloud instance also contains <STRONG>HDI Containers</STRONG>&nbsp;which act as a bridge between&nbsp;<STRONG>design-time</STRONG>&nbsp;code from BAS into&nbsp;<STRONG>run-time</STRONG>&nbsp;database objects like tables and views.</SPAN></P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 8.png" style="width: 685px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394427i55505F8960F0B8C2/image-dimensions/685x287?v=v2" width="685" height="287" role="button" title="CAP 8.png" alt="CAP 8.png" /></span></P><P class="lia-align-left" style="text-align : left;"><SPAN>8. On&nbsp;<STRONG>Type&nbsp;</STRONG>section select Instance configuration as&nbsp;<STRONG>Configure Manually&nbsp;</STRONG>( Select other options if you want to configure instance in different way ) and Instance type as&nbsp;<STRONG>SAP HANA Database&nbsp;</STRONG>as we are creating Instance for HANA DB. If Data Lake is expected then select Data lake instead of HANA DB.&nbsp;</SPAN></P><P class="lia-align-left" style="text-align : left;"><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 9.png" style="width: 500px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394382i8B49DB2217DD4009/image-dimensions/500x299?v=v2" width="500" height="299" role="button" title="CAP 9.png" alt="CAP 9.png" /></span></SPAN></P><P class="lia-align-left" style="text-align : left;"><SPAN>9. In section&nbsp;<STRONG>SAP HANA Database General, Cloud foundry </STRONG>tab&nbsp;to be navigated for filling instance related details as the deployment happens for Cloud Foundry. But it is disabled by default. Henceforth user should select&nbsp;<STRONG>Sign in to cloud Foundry Environment&nbsp;</STRONG>and after sign in the Cloud Foundry tab will be enabled. In that tab fill the details as below.&nbsp;</SPAN></P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 10.png" style="width: 580px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394430iE7A2EDAF22B89B0D/image-dimensions/580x232?v=v2" width="580" height="232" role="button" title="CAP 10.png" alt="CAP 10.png" /></span></P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 11.png" style="width: 547px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394431iC0B370B62174D223/image-dimensions/547x331?v=v2" width="547" height="331" role="button" title="CAP 11.png" alt="CAP 11.png" /></span></P><P class="lia-align-left" style="text-align : left;">10. Post filling the important section as above, navigate to other sections where Connection Details and Advanced settings needs to be mentioned. For a Minimalistic App execution these tabs are not required and henceforth I've skipped it. It needs to be filled based on Business expectations.&nbsp;</P><P class="lia-align-left" style="text-align : left;">11. Enable Data lake if required and click on create instance as below.&nbsp;</P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 14.png" style="width: 460px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394395i4D7BFC51961411EF/image-dimensions/460x306?v=v2" width="460" height="306" role="button" title="CAP 14.png" alt="CAP 14.png" /></span></P><P class="lia-align-left" style="text-align : left;">12. Once above process is done, Test Instance will be created for SAP HANA Cloud central as below and it acts as DB for the Developments made from CAP Project.&nbsp;</P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 15.png" style="width: 669px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394435i35E85461A06F8A46/image-dimensions/669x344?v=v2" width="669" height="344" role="button" title="CAP 15.png" alt="CAP 15.png" /></span></P><P class="lia-align-left" style="text-align : left;">13. Now SAP HANA Cloud is all set, Let's Navigate to BAS and create Dev Space. Get back to your subaccount. Navigate Instances and Subscriptions -&gt; Business Application Studio. Click on create Dev space.</P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 16.png" style="width: 502px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394398iD39BAC75BA7247DD/image-dimensions/502x310?v=v2" width="502" height="310" role="button" title="CAP 16.png" alt="CAP 16.png" /></span></P><P class="lia-align-left" style="text-align : left;">14. Define Dev space name and select Full Stack cloud Application option as below.&nbsp;</P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 17.png" style="width: 596px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394436i4B7321DE283A2334/image-dimensions/596x426?v=v2" width="596" height="426" role="button" title="CAP 17.png" alt="CAP 17.png" /></span></P><P class="lia-align-left" style="text-align : left;">15. With that Dev space will be created in BAS.&nbsp;</P><P class="lia-align-left" style="text-align : left;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP 18.png" style="width: 635px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394437iD6A18649A9E52079/image-dimensions/635x203?v=v2" width="635" height="203" role="button" title="CAP 18.png" alt="CAP 18.png" /></span></P><P class="lia-align-left" style="text-align : left;">From here, let's continue on <STRONG><A href="https://community.sap.com/t5/technology-blog-posts-by-members/build-btp-cap-app-with-fiori-integration-part-2-implementing-end-to-end-app/ba-p/14369248" target="_blank">Part - 2</A>&nbsp;</STRONG>&nbsp;where full stack CAP Application will be built and Deployed/Integrated with SAP HANA Cloud.&nbsp;</P><P class="lia-align-left" style="text-align : left;">What we did till now.</P><P class="lia-align-left" style="text-align : left;">-&gt; Created Trial Account</P><P class="lia-align-left" style="text-align : left;">-&gt; Enabled necessary subscriptions and Roles&nbsp;</P><P class="lia-align-left" style="text-align : left;">-&gt; Set up SAP HANA Cloud Central</P><P class="lia-align-left" style="text-align : left;">-&gt; Created Instance and ensured Dev space is available</P><P class="lia-align-left" style="text-align : left;">-&gt; Set up BAS Dev space.&nbsp;</P><P class="lia-align-left" style="text-align : left;"><STRONG><EM>PART: 2 Link - </EM></STRONG><EM><A href="https://community.sap.com/t5/technology-blog-posts-by-members/build-btp-cap-app-with-fiori-integration-part-2-implementing-end-to-end-app/ba-p/14369248" target="_blank">Build BTP CAP App with Fiori Integration – Part 2: Implementing End to End App</A>&nbsp;</EM></P> 2026-04-08T08:32:43.137000+02:00 https://community.sap.com/t5/technology-blog-posts-by-sap/what-s-new-in-sap-btp-q1-2026-innobytes/ba-p/14368327 What's New in SAP BTP - Q1 2026 Innobytes 2026-04-08T08:38:08.906000+02:00 romymann https://community.sap.com/t5/user/viewprofilepage/user-id/2090926 <P>This first quarter has set the tone for 2026, bringing in new ideas and innovations all around Data, Joule and more. Let’s dive into some of the highlights Q1 has brought us.</P><P>&nbsp;</P><P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FGLHnYgC2XQg%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DGLHnYgC2XQg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FGLHnYgC2XQg%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="400" height="225" scrolling="no" title="Whats New in SAP BTP: Data &amp; Discovery Agents | Q1 2026" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P>&nbsp;</P><P><FONT size="5" color="#33CCCC"><STRONG>AI &amp; Data Foundation Highlight</STRONG></FONT></P><P><FONT size="5" color="#3366FF"><STRONG>Discovery and Data Agent in SAP HANA Cloud</STRONG></FONT></P><P>The new Discovery and Data Agents are lowering learning barriers for developers and data users who just need answers. These new agents make it easier to explore, analyze, and act on data without needing deep knowledge of the underlying artifacts.</P><P>To see this demo in action, watch the video (starting at 0:11).</P><P>Learn more</P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-hana-cloud-becomes-agentic-introducing-discovery-agent-amp-data-agent/ba-p/14257394" target="_blank">Discovery &amp; Data Agent on SAP Community</A></SPAN></LI><LI><SPAN><A href="https://influence.sap.com/sap/ino/#campaign/4199" target="_blank" rel="noopener noreferrer">Register for the&nbsp;SAP HANA Cloud Data &amp; Discovery Agents - Beta Program</A></SPAN></LI></UL><P>&nbsp;</P><P><FONT size="5" color="#33CCCC"><STRONG>Integration Highlight</STRONG></FONT></P><P><FONT size="5" color="#3366FF"><STRONG>Fresh Connections in SAP Integration Suite</STRONG></FONT></P><P>New adapters for SAP Integration Suite on SAP BTP help transform your integration landscape, breaking down data silos, streamlining operations, and allow rapid adoption of new capabilities to innovate faster.&nbsp;</P><P>The latest release offers:</P><UL><LI>The&nbsp;<STRONG>BambooHR adapter</STRONG> enables receiving and processing employee lifecycle data effectively.</LI><LI>The&nbsp;<STRONG>Microsoft Outlook Sender and Receiver adapter</STRONG> allows seamless integration for calendars, mail, attachments, and messaging directly into your mission-critical workflows.&nbsp;</LI></UL><P>For Edge Integration Cella:</P><UL><LI>The&nbsp;<STRONG>File adapter,</STRONG> enabling secure file exchange with NFS systems</LI><LI>The&nbsp;<STRONG>OFTP2 adapter </STRONG>for compliant B2B connections to securely exchange messages&nbsp;from&nbsp;business partners.&nbsp;</LI></UL><P>See the new integration content (starting at 2:14).</P><P>Learn more:</P><UL><LI><SPAN><A href="https://api.sap.com/integrations/integrationadapter" target="_blank" rel="noopener noreferrer">Integration Adapter</A></SPAN></LI><LI><SPAN><A href="https://pages.community.sap.com/topics/integration-suite" target="_blank" rel="noopener noreferrer">SAP Integration Suite on SAP Community</A></SPAN></LI></UL><P>&nbsp;</P><P><FONT size="5" color="#33CCCC"><STRONG>Agent &amp; Application Development Highlights</STRONG></FONT></P><P><FONT size="5" color="#3366FF"><STRONG>API based Action Error Handling</STRONG></FONT></P><P>In real-world automation, failures are inevitable. What matters is how the system handles them. This innovation brings precision and predictability to <STRONG>API error handling</STRONG> <STRONG>in SAP Build Process Automation on SAP BTP</STRONG>. When configuring an API-based Action step, enable error handling and define specific errors, handling authentication failures precisely. You can create generic categories, such as 4XX or 5XX, handling broader client or server issues.</P><P>The inability to define category overlap eliminates ambiguity, and deterministic runtime behavior is guaranteed. When an error occurs, precedence is strictly enforced:</P><UL><LI>Specific errors first</LI><LI>Generic category second</LI><LI>Undefined fallback last</LI></UL><P>At the Action level, you can configure retries that define the number of attempts and the delay between them. Afterwards, the error handling logic is executed. Every stage is fully logged in Monitoring, ensuring complete traceability and turning error handling from a black box into a controlled, observable workflow decision.</P><P>Watch the demo (starting at 3:35).</P><P>&nbsp;</P><P><FONT size="5" color="#3366FF"><STRONG>Conversational&nbsp;Work in SAP Build Work Zone&nbsp;</STRONG></FONT></P><P>There is now a powerful new way to work in SAP Build Work Zone. Save time by simply asking Joule what you need instead of clicking through multiple pages.</P><P>In the demo (starting at 5:33), a new project workspace for a cross-functional initiative is set up through a short conversation with Joule, enabling easy navigation, no technical steps, and only one screen. SAP Build Work Zone becomes more conversational, more intuitive, and more aligned with how people actually work.</P><P>Learn more:</P><UL><LI><SPAN><A href="https://help.sap.com/docs/joule/capabilities-guide/joule-in-sap-build-work-zone-advanced-edition" target="_blank" rel="noopener noreferrer">Joule in SAP Build Work Zone</A></SPAN></LI></UL><P>&nbsp;</P><P><FONT size="5" color="#33CCCC"><STRONG>Core Platform Highlight</STRONG></FONT></P><P><FONT size="5" color="#3366FF"><STRONG>SAP Automation Pilot and Joule: Unlocking AI-Powered Ops Agents</STRONG></FONT></P><P>The <STRONG>SAP Automation Pilot</STRONG> and <STRONG>Joule</STRONG> turn repeatable operational tasks into intelligent, agent-driven capabilities on SAP BTP.</P><P>By starting with a real operational process like a S/4HANA health check, use Automation Pilot’s low-code/no-code interface. Here, the necessary steps, inputs and validations can be collected and grouped into a <STRONG>Model Context Protocol (MCP) Server</STRONG>. The MCP Server exposes these automations as governed, reusable tools that can be safely consumed by AI agents without writing custom APIs.</P><P>Once published, connect it to <STRONG>Joule Studio</STRONG> to build a <STRONG>Joule Ops Agent</STRONG> that understands when and how to invoke these tools. The Ops Agent can now detect issues or fetch system status, triggering the right automation behind the scenes.</P><P>The DevOps or Admin team can simply ask the Ops Agent in Joule to ‘check my HANA Cloud and App instances health and remediate common issues’ by using the MCP Server to execute these steps securely, consistently, and audibly.</P><P>For a demo, watch the video (starting at 7:35).</P><P>Learn more:</P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/from-automation-to-agentic-ops-mcp-servers-in-sap-automation-pilot/ba-p/14307662" target="_blank">Blog Post: From Automation to Agentic Ops</A></SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/meet-your-ops-agents-powered-by-sap-automation-pilot-and-joule/ba-p/14333881" target="_blank">Blog Post: Meet your Ops Agents</A></SPAN></LI></UL><P>&nbsp;</P><P><FONT size="5"><STRONG><FONT color="#FFCC00">Share your thoughts</FONT>&nbsp;</STRONG></FONT></P><P>These videos are for YOU, and we would love to hear your impressions. How do you like the video? How can we improve upcoming videos? Please share your feedback by liking this post or leaving a comment below.</P><P>Thank you for your support and happy viewing, sharing, and enjoying!</P><P>You Might Also Be Interested In</P><UL><LI><A href="https://events.sap.com/sap-btp-garage-2025/en_us/home.html" target="_blank" rel="noopener noreferrer">SAP BTP Garage</A>:&nbsp;monthly LIVE webinar with hands-on use case walkthroughs and demos.</LI><LI><A href="https://podcast.opensap.info/cloud-platform/" target="_blank" rel="nofollow noopener noreferrer">Unlocking SAP BTP</A>: monthly podcast covering all things SAP BTP.</LI></UL><P><SPAN>&nbsp;</SPAN></P> 2026-04-08T08:38:08.906000+02:00 https://community.sap.com/t5/technology-blog-posts-by-sap/sap-hana-cloud-release-march-2026-round-up/ba-p/14368678 SAP HANA Cloud release March 2026 Round-up 2026-04-08T12:46:34.453000+02:00 andreamiranda https://community.sap.com/t5/user/viewprofilepage/user-id/135788 <P><SPAN>Dear SAP HANA Cloud Enthusiasts,</SPAN><BR /><BR />We are thrilled to share a comprehensive collection of the latest videos, blogposts, and resources from the SAP HANA Cloud Q1 2026 release.</P><P>&nbsp;</P><TABLE border="1" width="100%"><TBODY><TR><TD width="50.129533678756474%" height="222px"><P><A href="https://www.youtube.com/watch?v=9VScLmZ_uNQ&amp;list=PL3ZRUb1AKkpTDZQgENtRcupp6vsNg8NHN&amp;index=2" target="_blank" rel="noopener nofollow noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="playteaser.png" style="width: 391px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394932i2E888F01A42FB379/image-dimensions/391x220?v=v2" width="391" height="220" role="button" title="playteaser.png" alt="playteaser.png" /></span></A></P></TD><TD width="49.870466321243526%" height="222px"><H4 id="toc-hId-2051564483"><STRONG>What’s New Teaser</STRONG></H4>Explore the latest innovations in SAP HANA Cloud with Lead Product Manager Thomas Hammer, as he shares his top highlights from the newest release in this engaging teaser.<BR /><BR /><A href="https://www.youtube.com/watch?v=9VScLmZ_uNQ&amp;list=PL3ZRUb1AKkpTDZQgENtRcupp6vsNg8NHN&amp;index=2" target="_blank" rel="nofollow noopener noreferrer">Watch it now on YouTube.</A></TD></TR><TR><TD width="50.129533678756474%" height="250px"><H4 id="toc-hId-1855050978"><STRONG>What’s New blogpost</STRONG></H4>Intrigued by the teaser? Explore our "What’s New in SAP HANA Cloud in March 2026" blogpost for an in-depth look at the innovations and find valuable links to further demos and content.<BR /><BR /><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/what-s-new-in-sap-hana-cloud-march-2026/ba-p/14355960" target="_blank">Read it here!</A></TD><TD width="49.870466321243526%" height="250px"><A href="https://community.sap.com/t5/technology-blog-posts-by-sap/what-s-new-in-sap-hana-cloud-march-2026/ba-p/14355960" target="_blank"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="blogpost.png" style="width: 385px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394933i2EDE491865E96EAF/image-dimensions/385x287?v=v2" width="385" height="287" role="button" title="blogpost.png" alt="blogpost.png" /></span></A></TD></TR><TR><TD width="50.129533678756474%" height="250px"><A href="https://www.youtube.com/watch?v=pC1o1xRwLto&amp;list=PL3ZRUb1AKkpTDZQgENtRcupp6vsNg8NHN&amp;index=1" target="_blank" rel="noopener nofollow noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="playwebinar.png" style="width: 390px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394934i5B2B2EC202320051/image-dimensions/390x220?v=v2" width="390" height="220" role="button" title="playwebinar.png" alt="playwebinar.png" /></span></A></TD><TD width="49.870466321243526%" height="250px"><H4 id="toc-hId-1658537473">What's New Webinar</H4>Prefer watching over reading? Our 'What’s New' webinar is just for you! Join our Product experts for an in-depth view of the latest features. Available to watch anytime&nbsp;<A href="https://www.youtube.com/watch?v=pC1o1xRwLto&amp;list=PL3ZRUb1AKkpTDZQgENtRcupp6vsNg8NHN&amp;index=1" target="_blank" rel="noopener nofollow noreferrer">here</A>!</TD></TR></TBODY></TABLE><H3 id="toc-hId-1332941249">&nbsp;</H3><DIV class=""><HR /><SPAN>Don’t miss out on all the content and remember to&nbsp;</SPAN><A href="https://community.sap.com/topics/hana" target="_blank">follow us in the SAP HANA Community.</A></DIV><P>Remember to check our content following the # whatsnewinsaphanacloud tag:<SPAN>&nbsp;</SPAN><A href="https://community.sap.com/t5/tag/whatsnewinsaphanacloud/tg-p/board-id/technology-blog-sap" target="_blank">here</A><BR /><BR /><SPAN>Don’t forget to subscribe and follow SAP HANA Cloud on&nbsp;</SPAN><A href="https://www.youtube.com/playlist?list=PL3ZRUb1AKkpTDZQgENtRcupp6vsNg8NHN" target="_blank" rel="nofollow noopener noreferrer">YouTube</A><SPAN>&nbsp;to always stay up-to-date regarding the most recent innovations in SAP HANA Cloud.</SPAN><BR /><SPAN>&nbsp;</SPAN><BR /><SPAN>All the best,</SPAN><BR /><BR /><STRONG>Andrea on behalf of the SAP HANA Cloud team</STRONG></P><P><STRONG><A class="" href="https://community.sap.com/t5/c-khhcw49343/SAP+HANA+Cloud%25252C+SAP+HANA+database/pd-p/ada66f4e-5d7f-4e6d-a599-6b9a78023d84" target="_blank">#SAP HANA Cloud, SAP HANA database</A><SPAN>&nbsp;</SPAN>&nbsp;<SPAN>&nbsp;#</SPAN><A class="" href="https://community.sap.com/t5/c-khhcw49343/SAP+HANA+Cloud/pd-p/73554900100800002881" target="_blank">SAP HANA Cloud</A><SPAN>&nbsp;</SPAN>&nbsp;</STRONG></P><P><STRONG>#whatsnewinsaphanacloud</STRONG></P> 2026-04-08T12:46:34.453000+02:00 https://community.sap.com/t5/technology-blog-posts-by-sap/sap-hana-cloud-expert-guided-implementation-workshop-series/ba-p/14368941 SAP HANA Cloud: Expert-Guided Implementation Workshop Series 2026-04-08T16:32:37.714000+02:00 MichaelMoloney https://community.sap.com/t5/user/viewprofilepage/user-id/10058 <P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Blog Banner.png" style="width: 960px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395059i8D7C4C1A62872D6C/image-size/large?v=v2&amp;px=999" role="button" title="Blog Banner.png" alt="Blog Banner.png" /></span></SPAN></P><P>&nbsp;<BR /><SPAN>SAP HANA Cloud is a fully managed, in-memory cloud database service as part of the SAP Business Technology Platform (BTP). It delivers high-speed processing and real-time analytics, which is especially valuable for data-intensive applications. The platform supports multiple data models, including relational, graph, spatial, JSON, and document store, allowing developers to work with different types of data in one environment. It also includes built-in data virtualization and integration capabilities, enabling organizations to access and combine data from SAP and non-SAP sources.</SPAN></P><P><SPAN>SAP HANA Cloud provides a comprehensive environment for building intelligent, data-driven solutions. It supports advanced analytics, machine learning, and predictive capabilities directly within the database, which reduces data movement and accelerates insight generation. Developers can use familiar tools and languages such as SQL, Java, Node.js, and Python to create applications and services.</SPAN><BR /><SPAN>The platform also includes data lake functionality for storing and processing large volumes of less-frequently accessed data at a lower cost, while still allowing seamless querying alongside in-memory data. Its multi-tier storage approach helps organizations balance performance and cost by automatically managing where data resides. Overall, SAP HANA Cloud enables organizations to modernize their data landscape, support real-time decision-making, and drive digital transformation initiatives.<BR /><BR /></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAP HANA Cloud.png" style="width: 902px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395060iD7D851C58D50FC6D/image-size/large?v=v2&amp;px=999" role="button" title="SAP HANA Cloud.png" alt="SAP HANA Cloud.png" /></span></SPAN></P><P>&nbsp;</P><H4 id="toc-hId-2051535497" id="toc-hId-2051567266"><STRONG><span class="lia-unicode-emoji" title=":rocket:">🚀</span>&nbsp;Empower Your Data Journey: Introducing Our New SAP HANA Cloud Expert Guided Implementation Series&nbsp;</STRONG></H4><P>In today’s fast-paced digital landscape, speed of transformation is a must. Businesses across the globe are evolving to make faster, smarter, and more connected decisions by building intelligent, data-driven solutions using advanced analytics, machine learning, and predictive capabilities. To support this evolution, we’re excited to announce our renewed series of <A href="https://support.sap.com/en/offerings-programs/enterprise-support/enterprise-support-academy/expert-guided-implementation.html" target="_blank" rel="noopener noreferrer">Expert-Guided Implementation workshops</A> (EGI) from SAP Enterprise Support designed to help you upskill, modernize, and future-proof your business processes.&nbsp;Whether you're looking to modernize legacy systems, harness the power of cloud data, or unlock real-time insights through analytics, this workshop series offers targeted enablement for every stage of your development.&nbsp;</P><P><EM>*The following EGI sessions will run throughout the year, with quarterly updates to the schedule.&nbsp;<BR />Each session is limited to 30 individual customer participants. &nbsp;<BR />**Registration links below direct to SAP Learning content for SAP Enterprise Support, which requires a one-time registration with a valid S-user.<BR /><BR /></EM></P><H4 id="toc-hId-1855021992" id="toc-hId-1855053761"><STRONG>Configuration, Administration, Security and Monitoring topics for SAP HANA Cloud</STRONG></H4><P>In this live EGI session we will guide you through the SAP HANA Cloud capabilities as DBaaS, demonstrate the key features available in the latest quarterly release of the tool and show the benefits of using the administration tools for DB Monitoring, security and configuration. For details, please read the abstract&nbsp;<A href="https://dam.sap.com/mac/u/a/CPgnKWp?rc=10&amp;doi=SAP1271678&amp;includeRelatedAssets=true" target="_blank" rel="noopener noreferrer">here</A>.</P><P><U>Agenda</U>:&nbsp;</P><UL><LI>Introduction to SAP HANA Cloud</LI><LI>Overview of SAP BTP</LI><LI>Introduction and usage of Administration tools</LI><UL><LI>SAP HANA Cloud Central</LI><LI>SAP HANA Cockpit</LI><LI>SAP HANA Database Explorer</LI></UL><LI>Managing, Monitoring and Alert Notification in SAP HANA Cloud</LI><LI>Workload Management:</LI><UL><LI>Managing Tables</LI><LI>HANA NSE</LI></UL><LI>SAP HANA HDI Overview</LI><LI>Introduction and usage of Cloud Foundry CLI&nbsp;</LI><LI>Security Administration and User management</LI></UL><P><A href="https://learning.sap.com/live-sessions/egi-configuration-administration-security-and-monitoring-topics-for-sap-hana-cloud" target="_blank" rel="noopener noreferrer"><STRONG>Register Here</STRONG></A><STRONG>*&nbsp;</STRONG></P><P>&nbsp;</P><H4 id="toc-hId-1658508487" id="toc-hId-1658540256"><STRONG>SAP HANA Cloud Modeling</STRONG></H4><P>In this live EGI session, we will guide you through the process of modeling in SAP HANA Cloud. After the completion of the session, you will have the knowledge of calculation view usage and design in SAP HANA Cloud utilizing the SAP Business Application studio. Also, we showcase the core capabilities of SAP HANA Cloud for calculation view graphical modelling and provide help on about SQL Script procedures and implementing functions using the SAP Cloud Application Programming Model (CAP). For details, please read the abstract&nbsp;<A href="https://dam.sap.com/mac/u/a/YUzHFYd?rc=10&amp;doi=SAP1271679&amp;includeRelatedAssets=true" target="_blank" rel="noopener noreferrer">here</A>.</P><P><U>Agenda</U>:&nbsp;</P><UL><LI>Introduction to SAP BTP and SAP HANA Cloud</LI><LI>Usage of SAP Business Application Studio and Administration tools</LI><LI>Deploy SAP Business Application Studio</LI><LI>Introduction and modeling Calculation views</LI><LI>&nbsp;Modeling with SAP Business Application Studio and using Database Explorer</LI><LI>Modeling features</LI><LI>Generating restricted and calculated columns</LI><LI>SQL Script usage</LI><LI>Performance Analysis, Debug mode &amp; SQL Analyser</LI><LI>Overview of Best Practices</LI></UL><P><STRONG>&nbsp;</STRONG><A href="https://learning.sap.com/live-sessions/egi-sap-hana-cloud-modeling" target="_blank" rel="noopener noreferrer"><STRONG>Register Here</STRONG></A><STRONG>*&nbsp;</STRONG></P><P><STRONG>&nbsp;</STRONG></P><H4 id="toc-hId-1461994982" id="toc-hId-1462026751"><STRONG>SAP HANA Cloud Multiple Model Programming including Vector Engine and Knowledge Graph</STRONG></H4><P>In this live EGI session, we empower customers with the knowledge of SAP HANA Cloud multiple model programming using the latest concepts including vector engine, knowledge graph engine and retrieval augmented generation. After the completion of the workshop, customers will have the knowledge of multiple model engines and how to incorporate artificial intelligence and retrieval augmented generation capabilities.</P><P><U>Agenda</U>:&nbsp;</P><UL><LI>Introduction to SAP BTP and SAP HANA Cloud</LI><LI>Understand SAP HANA Cloud architecture and deployment options</LI><LI>Introduction to multiple model programming</LI><LI>Data Tiering considerations for multiple model programming</LI><LI>Overview of SAP Business Application Studio</LI><LI>Spatial data concepts in SAP HANA Cloud</LI><LI>Understanding spatial features and functions</LI><LI>Spatial data modeling and processing</LI><LI>Graph processing in SAP HANA Cloud</LI><LI>JSON document store in SAP HANA Cloud</LI><LI>Automated machine learning (AutoML) in SAP HANA Cloud</LI><LI>SAP HANA Cloud vector database</LI><LI>Capabilities and benefits of multiple model processing with vectors</LI><LI>SAP HANA Cloud knowledge graph engine</LI><LI>Knowledge graph and Retrieval Augmented Generation (RAG)</LI><LI>Real-world applications for Retrieval Augmented Generation</LI></UL><P><A href="https://learning.sap.com/live-sessions/egi-sap-hana-cloud-multiple-model-programming-including-vector-engine-and-knowledge-graph" target="_blank" rel="noopener noreferrer"><STRONG>Register Here</STRONG></A><STRONG>*&nbsp;</STRONG></P><P><STRONG>&nbsp;</STRONG></P><H4 id="toc-hId-1265481477" id="toc-hId-1265513246"><STRONG>Pro-code cloud application programming development through SAP Build and AI (Joule)</STRONG></H4><P>In this live EGI session we will empower you with the knowledge of cloud application programming development in SAP HANA Cloud. After the completion of the session, you will have the knowledge of CAP CDS development and design in SAP HANA Cloud and understand how to build and deploying cloud application projects from scratch and with reduced costs utilizing pro-code development using SAP Build Code with Joule. For details, please read the abstract&nbsp;<A href="https://dam.sap.com/mac/u/a/AT67pRJ?rc=10&amp;doi=SAP1271705&amp;includeRelatedAssets=true" target="_blank" rel="noopener noreferrer">here</A>.</P><P><U>Agenda</U>:</P><UL><LI>Introduction to SAP BTP and SAP HANA Cloud</LI><LI>Introduction to SAP Build Code and Prompt Engineering</LI><LI>CAP Architecture and SAP Business Application Studio features</LI><LI>Build and deploy a CAP project using SAP Business Application Studio</LI><LI>Modeling in SAP HANA Cloud using CAP CDS</LI><LI>Modeling in SAP HANA Cloud Optimization</LI><LI>Building Application using SAP Build Code and Joule</LI><LI>Modeling in SAP HANA Cloud Management and Administration</LI></UL><P><A href="https://learning.sap.com/live-sessions/egi-pro-code-cloud-application-programming-development-through-sap-build-and-ai-joule" target="_blank" rel="noopener noreferrer"><STRONG>Register Here</STRONG></A>*&nbsp;<BR /><BR /></P><H4 id="toc-hId-1068967972" id="toc-hId-1068999741">Learning Outcomes from the EGI Series:</H4><UL class="lia-list-style-type-circle"><LI><STRONG>Configuration, Administration, Security and Monitoring topics for SAP HANA Cloud</STRONG><STRONG>:</STRONG><BR />Master SAP HANA Cloud configuration, performance monitoring and secure user management using standard administration tools.</LI><LI><STRONG>SAP HANA Cloud Modeling:</STRONG><SPAN><BR />Develop Calculation views and SQL Script procedures within SAP Business Application Studio.</SPAN></LI><LI><STRONG>SAP HANA Cloud Multiple Model Programming including Vector Engine and Knowledge Graph:<BR /></STRONG>Implement advanced Vector Engine, Knowledge Graph, and Spatial Data capabilities to power Generative AI and Retrieval Augmented Generation<SPAN>&nbsp;</SPAN><SPAN>scenarios</SPAN></LI><LI><STRONG>Pro-code cloud application programming development through SAP Build and AI (Joule):<BR /></STRONG>Build and deploy end-to-end CAP applications efficiently using SAP Build Code and Joule</LI></UL><H4 id="toc-hId-872454467" id="toc-hId-872486236"><STRONG><BR />Who Should Attend?&nbsp;</STRONG></H4><P>This workshop series is ideal for developers, modelers, business analysts, system administrators, database administrators and SAP customers looking to transform their business processes. Whether you're just getting started or want to go deeper into SAP's modern toolset, there’s a session tailored for your needs.&nbsp;</P><P>&nbsp;</P><H4 id="toc-hId-1459969381" id="toc-hId-675972731">GET MORE CONTENT LIKE THIS!</H4><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="vm01.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395068i7ED97DA2E88BD5BD/image-size/large?v=v2&amp;px=999" role="button" title="vm01.jpg" alt="vm01.jpg" /></span></P><P>&nbsp;<SPAN>SAP Enterprise Support Value Maps — your go-to team for Foundational Success Plan support and empowerment — have a dedicated</SPAN><SPAN>&nbsp;</SPAN><STRONG>SAP Community Group</STRONG><SPAN>.</SPAN></P><P>As part of your SAP cloud subscription, you get access to:</P><UL><LI><STRONG>Expert-led resources</STRONG></LI><LI><STRONG>Tailored recommendations</STRONG></LI><LI><STRONG>Advisory services</STRONG></LI><LI>…all designed to help you accelerate innovation and success.</LI></UL><P><STRONG><BR /><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span>&nbsp;<A href="https://pages.community.sap.com/resources/enterprise-support-value-maps" target="_blank" rel="noopener noreferrer">Visit our Community Group</A></STRONG><BR />Sign in with your<SPAN>&nbsp;</SPAN><STRONG>S-user ID</STRONG><SPAN>&nbsp;</SPAN>or<SPAN>&nbsp;</SPAN><STRONG>Universal ID</STRONG>, then hit<SPAN>&nbsp;</SPAN><STRONG>“Subscribe”</STRONG><SPAN>&nbsp;</SPAN>to stay updated.</P><P>Looking to dive deeper into data-driven innovation?<BR />Within the group, explore the<SPAN>&nbsp;</SPAN><STRONG>Data &amp; Analytics Value Map</STRONG><SPAN>&nbsp;</SPAN>to connect with your Foundational Support team. Simply click<SPAN>&nbsp;</SPAN><STRONG>“Join Group”</STRONG>, and once inside, you can even<SPAN>&nbsp;</SPAN><STRONG>request a call</STRONG><SPAN>&nbsp;</SPAN>with a topic expert to get personalized guidance and enablement support.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="300917_Compass_R.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395079i19C200B88B63632A/image-size/small?v=v2&amp;px=200" role="button" title="300917_Compass_R.png" alt="300917_Compass_R.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H3 id="toc-hId-350376507">&nbsp;</H3><H3 id="toc-hId--647903174" id="toc-hId-153863002">Quicklinks</H3><UL><LI><A class="" href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-business-data-cloud-expert-guided-implementation-series/ba-p/14077002" target="_blank">SAP Business Data Cloud : Expert-Guided Implementation series</A></LI><LI><A class="" href="https://community.sap.com/t5/technology-blog-posts-by-sap/ensuring-a-smooth-sap-datasphere-deployment-the-value-of-continuous-quality/ba-p/14341788" target="_blank">Ensuring a Smooth SAP Datasphere Deployment: The Value of Continuous Quality Checks</A></LI><LI><A href="https://pages.community.sap.com/resources/enterprise-support-value-maps" target="_blank" rel="noopener noreferrer">SAP Enterprise Support Value Maps - Community Group</A></LI><LI><A href="https://learning.sap.com/enterprise-support" target="_blank" rel="noopener noreferrer">SAP Enterprise Support - Guided Learning</A></LI></UL> 2026-04-08T16:32:37.714000+02:00 https://community.sap.com/t5/technology-blog-posts-by-members/build-btp-cap-app-with-fiori-integration-part-2-implementing-end-to-end-app/ba-p/14369248 Build BTP CAP App with Fiori Integration – Part 2: Implementing End to End App 2026-04-09T10:05:19.668000+02:00 SuryaRamesh https://community.sap.com/t5/user/viewprofilepage/user-id/2066090 <P><STRONG>A quick Recall -</STRONG> So far we have completed the Pre-Requisites and set up the BTP Environment for creating/Deploying CAP Application. BTP Trail Account has been created and within Trail sub-account necessary cloud related roles have been assigned. Post that SAP HANA Cloud instance has been created and BAS Set up has been done.&nbsp;</P><P>PART 1 Link -&nbsp;<A href="https://community.sap.com/t5/technology-blog-posts-by-members/building-a-cap-app-with-fiori-integration-part-1-environment-amp-hana-cloud/ba-p/14367752" target="_blank">Building a CAP App with Fiori Integration – Part 1: Environment &amp; HANA Cloud Setup</A>&nbsp;</P><P>As a part of second episode in this CAP Application blog series, we are about to develop an end to end CAP Application with layers of validation of security in a detailed way. This blog helps beginner to build end to end CAP Application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Flowchart giving overview for complete Process" style="width: 615px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394975i29745BCA6E347BCA/image-dimensions/615x374?v=v2" width="615" height="374" role="button" title="Untitled Diagram.drawio (1).png" alt="Flowchart giving overview for complete Process" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Flowchart giving overview for complete Process</span></span></P><P>Ever struggled to deploy a CAP app with HANA + XSUAA + App router?.</P><P>I did. After multiple failures, here is a complete working guide <span class="lia-unicode-emoji" title=":backhand_index_pointing_down:">👇</span></P><P><STRONG>BACKEND BUILD :</STRONG></P><P>1. Navigate to BAS-&gt;Dev Space and Create new project from Template.</P><P><STRONG>After creating CAP Project Run these Below terminal Commands which has unique operation.</STRONG></P><P>a. This below terminal command to be added which will&nbsp;<SPAN>prepare the CAP project for a real-world cloud environment i.e. SAP BTP. <STRONG>add hana</STRONG> will switch database from SQLITE to HANA Cloud &amp; <STRONG>add xsuaa</STRONG> will enable authorization for the project. Also&nbsp;When we ran the command cds add xsuaa --for production then CAP automatically generates the security folder <STRONG>xs-security.json.</STRONG></SPAN></P><pre class="lia-code-sample language-bash"><code>cds add hana,xsuaa --for production</code></pre><P>b. Below terminal command will add blueprint for deployment.</P><pre class="lia-code-sample language-bash"><code>cds add mta</code></pre><P>c. Below terminal command will install libraries.</P><pre class="lia-code-sample language-bash"><code>npm install</code></pre><P>2. Select CAP Project Option and name the project and select options as below.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img1.png" style="width: 619px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395054i00E3D3335B1C2DA3/image-dimensions/619x260?v=v2" width="619" height="260" role="button" title="CAP Part2_img1.png" alt="CAP Part2_img1.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img2.png" style="width: 606px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395055i6229D457CCEC1DA3/image-dimensions/606x390?v=v2" width="606" height="390" role="button" title="CAP Part2_img2.png" alt="CAP Part2_img2.png" /></span></P><P>3. Click on Finish after selecting all the options.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img3.png" style="width: 603px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395056i296FCBF32198A255/image-dimensions/603x406?v=v2" width="603" height="406" role="button" title="CAP Part2_img3.png" alt="CAP Part2_img3.png" /></span></P><P>4. Once Project is created it will be available in the Workspace.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img4.png" style="width: 337px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395062i57B24532ED4A8507/image-dimensions/337x412?v=v2" width="337" height="412" role="button" title="CAP Part2_img4.png" alt="CAP Part2_img4.png" /></span></P><P>5. We can view the path of the project created using below Terminal command. (&nbsp;<STRONG>Note :&nbsp;</STRONG>Use <STRONG>Ctrl + ~</STRONG> to open terminal ).</P><pre class="lia-code-sample language-bash"><code>user: CRUDApp $ pwd</code></pre><P>Once this Terminal command is entered the response will come as&nbsp;<STRONG>/home/user/projects/CRUDApp.&nbsp;</STRONG></P><P>6. Now the Project is created. The Aim is to create service instance in Cloud Foundry space <STRONG>dev&nbsp;</STRONG>which I shown in <STRONG><A href="https://community.sap.com/t5/technology-blog-posts-by-members/building-a-cap-app-with-fiori-integration-part-1-environment-amp-hana-cloud/ba-p/14367752" target="_blank">PART 1</A>&nbsp;</STRONG>&nbsp;and through the service instance the linkage to HANA Cloud central DB Instance will be triggered with runtime HDI Container created. Through this HDI Container the Deployment data will be mapped to runtime DB.&nbsp;</P><P>Before getting into next point. Let me give a quick overview on different folder paths/ files in CAP Project that has been created. ( Refer to the workspace image from Point 4. )</P><P>a) <STRONG>db/</STRONG> -&nbsp;This is <STRONG>database schema&nbsp;</STRONG>where we will create CDS Entities/tables&nbsp;and it's relationships. It’s is the source of data structure.</P><P>b) <STRONG>app/</STRONG> - In this folder the front end Fiori Generator App will be mapped which has further navigations to Controllers and views. From here only we will write front end logic.</P><P>c) <STRONG>srv/</STRONG> - This is service folder where <STRONG>api services</STRONG> will be created from backend and if required custom logic can be enabled using node js in js file.&nbsp;</P><P>d) <STRONG>.vscode</STRONG> -&nbsp;<SPAN>This is a hidden folder containing configurations specific to&nbsp;</SPAN><STRONG>Visual Studio Code </STRONG>or BAS<SPAN>. It stores things like your launch configuration and recommended extensions for the project.</SPAN></P><P>e) <STRONG>mta.yaml</STRONG> -<SPAN>&nbsp;Multi-Target Application file is the&nbsp;provides&nbsp;<STRONG>instruction to cloud</STRONG></SPAN><SPAN>. It tells SAP BTP how to package and deploy your app, which database to create, which security services to bind, and how much memory to use.</SPAN></P><P>f)<STRONG> package.json</STRONG> - This is the Project Meta data which holds&nbsp;<STRONG>libraries to run project.&nbsp;</STRONG></P><P>Now let's continue with further steps from Backend.</P><P>7.&nbsp; Create a file&nbsp;<STRONG>schema.cds&nbsp;</STRONG>as below to&nbsp;<STRONG>/db&nbsp;</STRONG>folder and create Entity bookshop. This Entity is designed to store Book details. The same will be created as table in SAP HANA Cloud.</P><pre class="lia-code-sample language-abap"><code>namespace my.bookshop; entity Books { key ID : Integer; title : String; stock : Integer; author : String; }</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img5.png" style="width: 348px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395125iCF0B544B6286CFB1/image-dimensions/348x188?v=v2" width="348" height="188" role="button" title="CAP Part2_img5.png" alt="CAP Part2_img5.png" /></span></P><P>8. Create a file&nbsp;<STRONG>schema.cds&nbsp;</STRONG>as below to&nbsp;<STRONG>/srv&nbsp;</STRONG>folder. In this Service folder we are adding annotation&nbsp;<STRONG>@requires: 'Admin'</STRONG> which indicates Role required for Authorization.</P><pre class="lia-code-sample language-abap"><code>using { my.bookshop as my } from '../db/schema'; service CatalogService { @requires: 'Admin' // XSUAA Role Required entity Books as projection on my.Books; }</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img6.png" style="width: 311px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395165iDEE4A9D4ACF73953/image-dimensions/311x434?v=v2" width="311" height="434" role="button" title="CAP Part2_img6.png" alt="CAP Part2_img6.png" /></span></P><P><STRONG>FRONT END BUILD:</STRONG></P><P>1. Click Ctrl + Shift + P and select Open Fiori App Generator as shown below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img11.png" style="width: 584px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395188i61EEA414AFBEB3F4/image-dimensions/584x219?v=v2" width="584" height="219" role="button" title="CAP Part2_img11.png" alt="CAP Part2_img11.png" /></span></P><P>2. Since this is a basic app and henceforth Select <STRONG>List Report Template</STRONG> as below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img12.png" style="width: 462px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395192i09AA94CA979F9DF4/image-dimensions/462x304?v=v2" width="462" height="304" role="button" title="CAP Part2_img12.png" alt="CAP Part2_img12.png" /></span></P><P>3. Now select Data source as&nbsp;<STRONG>Local CAP Project&nbsp;</STRONG>and select CAP Project and OData service. After this select on<STRONG> Next</STRONG> button.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img13.png" style="width: 453px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395193i31D9EA7BDD46D718/image-dimensions/453x370?v=v2" width="453" height="370" role="button" title="CAP Part2_img13.png" alt="CAP Part2_img13.png" /></span></P><P>4. Give Name to App and Module.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img14.png" style="width: 427px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395196i32AE2E1D11E017A8/image-dimensions/427x343?v=v2" width="427" height="343" role="button" title="CAP Part2_img14.png" alt="CAP Part2_img14.png" /></span></P><P>5. Then&nbsp;<STRONG>Deployment configuration&nbsp;</STRONG>should be auto-picked as cloud foundry and If required fill Destination. For this app Im not creating Destination and henceforth selection the option as<STRONG> None.</STRONG>&nbsp;After this select Finish option which will create Fiori App in Project Folder.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img15.png" style="width: 385px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395197iE9668120201220E8/image-dimensions/385x405?v=v2" width="385" height="405" role="button" title="CAP Part2_img15.png" alt="CAP Part2_img15.png" /></span></P><P>&nbsp;</P><P><STRONG>VALIDATION :</STRONG></P><P>1. Create a file <STRONG>cat-service.js</STRONG><STRONG>&nbsp;</STRONG>as below to&nbsp;<STRONG>/srv&nbsp;</STRONG>folder.&nbsp;</P><pre class="lia-code-sample language-javascript"><code>const cds = require('@sap/cds') module.exports = cds.service.impl(async function() { const { Books } = this.entities; // Logic: Validation BEFORE creating a record this.before('CREATE', 'Books', req =&gt; { const { title } = req.data; if (!title || title.length &lt; 3) { // This is like an 'E' message in ABAP req.error(400, 'Title is too short! Minimum 3 characters required.'); } }) })</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img7.png" style="width: 416px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395168i17C6780FFCD1A41F/image-dimensions/416x402?v=v2" width="416" height="402" role="button" title="CAP Part2_img7.png" alt="CAP Part2_img7.png" /></span></P><P>2. As per above logic, we are adding some validation before SAVE using Node JS Function. As per this validation if Title length is less than 3 then error will be thrown. Similarly we can use other functions as well to perform business operation which triggers during save, After save etc.&nbsp;</P><P><STRONG>SECURITY:</STRONG></P><P>1. When the Environment was set up in&nbsp;<STRONG>BACKEND BUILD-&gt;1.a),&nbsp;</STRONG>we ran the command&nbsp;<STRONG>cds add xsuaa --for production&nbsp;</STRONG>which in turn created the folder&nbsp;<STRONG>xs-security.json.&nbsp;</STRONG></P><P>2. Now the aim is to deploy the app to production and create HTML5 App in BTP. So here we are adding a security layer which tells only Authorized user can access the data. While defining the service in <STRONG>BACKEND BUILD-&gt;8.&nbsp;</STRONG>where <STRONG>Admin</STRONG> role is annotated to <STRONG>books</STRONG> entity.&nbsp;</P><P>3. Lets create Approuter now and configure JSON to add necessary roles.&nbsp;</P><P>4. There are two options for adding Approuters.</P><P>a. Right click on&nbsp;<STRONG>mta.yaml&nbsp;</STRONG>file and select <STRONG>Create&nbsp;</STRONG><STRONG><SPAN>MTA Module From Template&nbsp;</SPAN></STRONG><SPAN>and then select&nbsp;<STRONG>Managed Approuter.&nbsp;</STRONG></SPAN></P><P><STRONG><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img8.png" style="width: 342px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395179i9C9DD6A360B12134/image-dimensions/342x365?v=v2" width="342" height="365" role="button" title="CAP Part2_img8.png" alt="CAP Part2_img8.png" /></span></SPAN></STRONG></P><P><STRONG><SPAN>b.</SPAN></STRONG> If Managed Approuter option is not showing, then below terminal command is a reliable 'Reset' button. It cleans up the MTA configuration and sets up a standalone router that works independently of external BTP subscriptions.&nbsp;</P><pre class="lia-code-sample language-bash"><code>cds add approuter</code></pre><P>5. Currently Im going with 4.b) with manual terminal command for adding Approuter. Once that is done then approuter will be added as below in&nbsp;<STRONG>app/&nbsp;</STRONG>folder.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img10.png" style="width: 320px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395187i4544B6FB50CE602F/image-dimensions/320x287?v=v2" width="320" height="287" role="button" title="CAP Part2_img10.png" alt="CAP Part2_img10.png" /></span></P><P>6. Add below JSON to folder <STRONG>xs-security.json</STRONG>&nbsp;in project&nbsp;which will define the role which is binded in <STRONG>service</STRONG> and <STRONG>yaml</STRONG>.&nbsp;</P><pre class="lia-code-sample language-json"><code>{ "xsappname": "my-bookshop", "scopes": [ { "name": "$XSAPPNAME.Admin", "description": "Admin" } ], "role-templates": [ { "name": "AdminRole", "scope-references": [ "$XSAPPNAME.Admin" ] } ], "attributes": [], "authorities-inheritance": false }</code></pre><P><STRONG>DEPLOYMENT:</STRONG></P><P>1. So till now we have built this CAP Application in<SPAN>&nbsp;"Vertical Stack" (Database → Logic → Security → Routing → UI).</SPAN></P><P>2. Now before final deployment lets test the things done till now is correct. Use below terminal command. If everything is fine then<SPAN class="">&nbsp;You see your database schema, custom logic, approuter config, and Fiori manifest listed.</SPAN></P><DIV class="">&nbsp;</DIV><pre class="lia-code-sample language-bash"><code>ls -R | grep -E "schema.cds|cat-service.js|xs-app.json|manifest.json"</code></pre><P>3.&nbsp; Now compile all the files to check if any error occurs. Use below terminal commands.</P><pre class="lia-code-sample language-bash"><code>cds compile db/ cds compile srv/ cds compile srv/ --to xsuaa</code></pre><P>&nbsp;Note: All these commands should not throw error to proceed with next steps.</P><P>4.&nbsp; After Sanity checks, run below command to login to terminal.&nbsp;<STRONG>Note:&nbsp;</STRONG>It will ask for Api Endpoint for first time during login. It can be found from BTP Cockpit -&gt; Overview -&gt; Cloud Foundry Environment -&gt; API End Point.</P><pre class="lia-code-sample language-bash"><code>cf login</code></pre><P>5. Now run Deployment command in terminal. This is done to test the app locally. Once testing is completed the app needs to be deployed to Production.</P><pre class="lia-code-sample language-bash"><code>cds deploy --to hana --profile hybrid</code></pre><P>6. If cds deploy is not working properly then define step by step process of creating service instance, HDI Containers etc. through terminal commands below. Note: cds deploy will create everything by default so dont use these in combination. use these terminal commands <STRONG>only if cds deploy is not working.&nbsp;</STRONG></P><pre class="lia-code-sample language-bash"><code>cf create-service hana hdi-shared my-cap-app cds bind --to my-cap-app cds env get requires.db --profile hybrid cds deploy --to hana --profile hybrid</code></pre><P>7. Run below commands to deploy the app to production.&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>mbt build</code></pre><P>&nbsp;</P><P>8.&nbsp;<SPAN>When finished, a new folder named&nbsp;<STRONG>mta_archives/</STRONG></SPAN><SPAN>&nbsp;will appear as below containing Project file.&nbsp;</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img24.png" style="width: 255px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395224i5F82399B1F44D6C6/image-dimensions/255x297?v=v2" width="255" height="297" role="button" title="CAP Part2_img24.png" alt="CAP Part2_img24.png" /></span></SPAN></P><P><SPAN>9. Now do a login again with below command. Give appropriate API Key and user details.</SPAN></P><pre class="lia-code-sample language-bash"><code>cf login</code></pre><P><SPAN>10. Run below command to&nbsp;<STRONG>Complete final HTML5 App deployment.&nbsp;</STRONG></SPAN></P><pre class="lia-code-sample language-bash"><code>cf deploy mta_archives/CRUDApp_1.0.0.mtar</code></pre><P><STRONG>Note</STRONG>: Sometimes Deployment will fail.&nbsp;<SPAN>To avoid these common pitfalls,&nbsp;&nbsp;</SPAN><STRONG>"Only include essential resources (HANA, XSUAA, Destination, and HTML5) in your<SPAN>&nbsp;</SPAN><CODE>mta.yaml</CODE><SPAN>&nbsp;</SPAN>and ensure your<SPAN>&nbsp;</SPAN><CODE>xsappname</CODE><SPAN>&nbsp;</SPAN>in<SPAN>&nbsp;</SPAN><CODE>xs-security.json</CODE><SPAN>&nbsp;</SPAN>is consistent throughout the project to prevent service plan unavailability and identity mismatch errors on Trial accounts."&nbsp;</STRONG>If something fails, make these changes and delete the service and redeploy. After redeployment dont forgot to add role collections again to make sure Approuters will not cause auth errors.&nbsp;</P><P><STRONG>TESTING</STRONG></P><P>1. Run below Terminal command to test the app locally.</P><pre class="lia-code-sample language-abap"><code>cds watch --profile hybrid</code></pre><P>&nbsp;2. After this the app will open in next screen to test it from web level. Note: Make sure your HANA DB Instance is running in HANA Cloud Central which will create entry in DB Level.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img16.png" style="width: 557px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395203i298B8BEFB7DE51AA/image-dimensions/557x228?v=v2" width="557" height="228" role="button" title="CAP Part2_img16.png" alt="CAP Part2_img16.png" /></span></P><P>3. Now while testing this app we can see the user login screen which will ask for mail and password for login. This is happening due to XSUAA and Approuter. While trying to make entry to the app it will show error&nbsp;<STRONG>forbidden&nbsp;</STRONG>as below.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img17.png" style="width: 504px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395204i638E84AE38C7AF68/image-dimensions/504x230?v=v2" width="504" height="230" role="button" title="CAP Part2_img17.png" alt="CAP Part2_img17.png" /></span></P><P>4. Now run this command below to create service Instance first. Even after cds deploy this is required because&nbsp;cds deploy only talks to the Database (HANA). It does not talk to the Security Service (XSUAA).&nbsp;In SAP BTP, the database (CRUDApp-db) and the security (XSUAA) are two completely separate buildings. This terminal logic is required to enable link.&nbsp;</P><pre class="lia-code-sample language-bash"><code>cf create-service xsuaa application CRUDApp-auth -c xs-security.json</code></pre><P>&nbsp;5. Post this navigate to&nbsp;<STRONG>BTP Cockpit -&gt; SubAccount -&gt; Security -&gt; Role Collections&nbsp;</STRONG>and click on&nbsp;<STRONG>Create&nbsp;</STRONG>Button as below.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img18.png" style="width: 536px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395205i4EE2BA9A2A973F06/image-dimensions/536x279?v=v2" width="536" height="279" role="button" title="CAP Part2_img18.png" alt="CAP Part2_img18.png" /></span></P><P>6. Create Role collection&nbsp;<STRONG>Bookshop_Admin_Group&nbsp;</STRONG>with its Description as below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img19.png" style="width: 552px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395206i955B3A6F307FB712/image-dimensions/552x216?v=v2" width="552" height="216" role="button" title="CAP Part2_img19.png" alt="CAP Part2_img19.png" /></span></P><P>7. Now Navigate to the Role collection&nbsp;<STRONG>Bookshop_Admin_Group&nbsp;</STRONG>and click on Edit. Open value help of Role and select the App name from&nbsp;<STRONG>Application Identifier&nbsp;</STRONG>dropdown. After selecting Role Admin which enables Authorization, click save. Follow below images sequentially.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img20.png" style="width: 556px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395219iC0048E562FA6F219/image-dimensions/556x183?v=v2" width="556" height="183" role="button" title="CAP Part2_img20.png" alt="CAP Part2_img20.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img21.png" style="width: 566px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395220i3EC4506F7B97D04C/image-dimensions/566x241?v=v2" width="566" height="241" role="button" title="CAP Part2_img21.png" alt="CAP Part2_img21.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img22.png" style="width: 554px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395221i39B220AB640360F1/image-dimensions/554x240?v=v2" width="554" height="240" role="button" title="CAP Part2_img22.png" alt="CAP Part2_img22.png" /></span></P><P>8. After saving, the role will be available in Role collection as below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP Part2_img23.png" style="width: 618px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395222i8B98AA7D8F87E44F/image-dimensions/618x170?v=v2" width="618" height="170" role="button" title="CAP Part2_img23.png" alt="CAP Part2_img23.png" /></span></P><P>9. Now refresh the app and try running, It will work !. Note: Sometimes Auth error will still occur if you test locally. In that case assign your URL to user <STRONG>Alice</STRONG> or deploy and test the app.&nbsp;</P><P>10. Also once deployed to HTML5 Apps or Dev space, the app can be directly tested from there as well.&nbsp;</P><P><STRONG>FINAL APP EXECUTION<span class="lia-unicode-emoji" title=":fire:">🔥</span>:</STRONG></P><P>1. Now, lets open the app as below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-01-EXE.png" style="width: 811px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395317iFFBA4BF36E7DE08D/image-dimensions/811x138?v=v2" width="811" height="138" role="button" title="CAP-01-EXE.png" alt="CAP-01-EXE.png" /></span></P><P>2. Lets create some incorrect entries as below.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-06-EXE.png" style="width: 788px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395326iA8CA3F8B887F69B1/image-dimensions/788x109?v=v2" width="788" height="109" role="button" title="CAP-06-EXE.png" alt="CAP-06-EXE.png" /></span></P><P>3. Validation Error occurs as per Node js logic for incorrect inputs.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-05-EXE.png" style="width: 601px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395328iE12F7C8BB2A732FC/image-dimensions/601x302?v=v2" width="601" height="302" role="button" title="CAP-05-EXE.png" alt="CAP-05-EXE.png" /></span></P><P>4. While creating valid records, Data gets created as below without any auth error/Forbidden as the custom role collection created and mapped to Admin Role.&nbsp;<STRONG>Note:&nbsp;</STRONG>Unique UUID will be generated for each record as per CAP Entity definition made. The UUID can be viewed in Cloud DB.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-07-EXE.png" style="width: 696px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395332i2F6CE96231751F53/image-dimensions/696x172?v=v2" width="696" height="172" role="button" title="CAP-07-EXE.png" alt="CAP-07-EXE.png" /></span></P><P>5. Now navigate to SAP HANA Cloud and click on ... dots. select option "<STRONG>OPEN IN SAP HANA Database Explorer".</STRONG></P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-02-EXE.png" style="width: 678px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395319iC64DFC8C4059D7AD/image-dimensions/678x344?v=v2" width="678" height="344" role="button" title="CAP-02-EXE.png" alt="CAP-02-EXE.png" /></span></STRONG></P><P>4. Once SAP HANA Database Explorer opens then login to cloud foundry Environment from there.</P><P>5. Now select the "+" icon and select HDI Containers options and then select app container specific to app name.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-03-EXE.png" style="width: 747px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395338i7D6BF0F6A07C6BDA/image-dimensions/747x220?v=v2" width="747" height="220" role="button" title="CAP-03-EXE.png" alt="CAP-03-EXE.png" /></span></P><P>7. From <STRONG>CRUDAPP-db</STRONG> HDI Container, Navigate to <STRONG>Tables</STRONG> and select <STRONG>open data</STRONG>.</P><P>8. The Data created from Fiori App is available in Cloud Table as below along with UUID auto-generated.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CAP-04-EXE.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395342i80ACAD6BA808949C/image-size/large?v=v2&amp;px=999" role="button" title="CAP-04-EXE.png" alt="CAP-04-EXE.png" /></span></P><P><STRONG>CONCLUSION:</STRONG></P><P>Hence the overall flow looks as below.</P><P>Fiori UI<BR />↓<BR />App router<BR />↓<BR />CAP Service<BR />↓<BR />HANA DB (HDI Container)</P><P>With this blog series we learned how to set up environment, enable cloud instance, create end to end CAP Full stack application which has capability to communicate with SAP HANA Cloud instance and create entries over there, enable App routers to CAP App and Enable validation while creating entries.&nbsp;</P><P>I hope this blog will be helpful for enthusiasts who are learning CAP !. In future I will create add-on series with steps to deploy this app to SAP Build work zone.&nbsp;</P> 2026-04-09T10:05:19.668000+02:00 https://community.sap.com/t5/technology-blog-posts-by-members/i-tricked-datasphere-into-running-my-custom-scaler-functions/ba-p/14359805 I tricked Datasphere into running my custom scaler functions 2026-04-09T10:20:07.454000+02:00 CLTGravesen https://community.sap.com/t5/user/viewprofilepage/user-id/768390 <H1 id="toc-hId-1663424298">Introduction - Welcome, once again.&nbsp;</H1><P>Hello, and welcome to an easter edition of my hit-series of blogposts, where I try to help my fellow developers get to grips with <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Datasphere/pd-p/73555000100800002141" class="lia-product-mention" data-product="16-1">SAP Datasphere</a>&nbsp;.</P><P>Easter is over, but today I've put on my Reverse-Easter-Bunny costume, and have dug up a few golden easter eggs for you.&nbsp;<BR />Even if you think the word "Scalar Functions" sounds like scary techno-babble, I still think there is something of values in here, that you might find useful.</P><P>And do not worry, if you are hoping for my usual sprinkling of sarcasm or was hoping I would make fun of SAP and their&nbsp;<EM>interesting</EM> design decisions, you will not be disappointed. My God, are we going to cry. I mean laugh. Laugh. Yes.&nbsp;</P><P>Today we will be going through the following:</P><OL><LI>What is a Database User Group, and why you should learn to love it.</LI><LI>How to re-enable SYS.DUMMY functionality (because shouldn't we?)</LI><LI>How to build and implement custom scalar functions across your Datasphere solution</LI><LI>Jail-break the Graphical View editor, so we can gas-light it into doing its f#!&amp;ing job.</LI></OL><P>Happy reading <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span>&nbsp;</P><H1 id="toc-hId-1466910793">1: Why you should always create a "Database User Group"&nbsp;</H1><P>So, if you have ever been in an hour-long townhall meeting, you might have mindlessly scrolled through the Datasphere documentation (Only me? Alright then), in hope of stumbling over something good.&nbsp;</P><P>On one such occasion, I came across <A href="https://help.sap.com/docs/SAP_DATASPHERE/9f804b8efa8043539289f42f372c4862/1097a470be40432e89f91288bdc14378.html?locale=en-US" target="_blank" rel="noopener noreferrer">how to create a database user group</A>, and thought myself:&nbsp;</P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><EM>"What the hell is that? Why should I care?"</EM></P><P>In the documentation, we get the following:</P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><EM><SPAN>"Users with an administrator role can create database user groups in&nbsp;</SPAN><SPAN class="">SAP Datasphere</SPAN><SPAN>&nbsp;to allow users to work in a sandboxed area in the underlying&nbsp;</SPAN><SPAN class="">SAP HANA Cloud</SPAN><SPAN>&nbsp;database, unattached to any space. These users can transfer an existing data warehouse implementation into the&nbsp;</SPAN><SPAN class="">SAP Datasphere</SPAN><SPAN>&nbsp;database or do any other work in&nbsp;</SPAN><SPAN class="">SAP HANA Cloud</SPAN><SPAN>&nbsp;and then make it available to one or more spaces as appropriate"</SPAN></EM></P><P>Which is a pretty boring few sentences, but here is the key value: You can create database objects, that can be accessed across your solution.&nbsp;<BR />This allows you to use the full suite (almost, let's not get ahead of ourselves) of HANA SQL functionality, which can offer a lot more programmability than Datasphere in general.&nbsp;</P><H2 id="toc-hId-1399480007">1.1: Setup your Database User Group&nbsp;&nbsp;</H2><P>You can follow the <A href="https://help.sap.com/docs/SAP_DATASPHERE/9f804b8efa8043539289f42f372c4862/4dc2ff03b37e482fb209dd08a9550826.html?locale=en-US" target="_blank" rel="noopener noreferrer">documentation</A> to create the "Admin" user for your group.&nbsp;<BR />Open the "Database Explorer", provide the password, and open the SQL console.</P><P><STRONG>Note:</STRONG> I've used CHR_GRA as the namespace in my examples, you can use whatever fits you.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_0-1774610390631.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/389743iF3644A5A9B87F707/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_0-1774610390631.png" alt="CLTGravesen_0-1774610390631.png" /></span></P><P>In your SQL console, you will now have to:</P><UL><LI>Create a non-admin user</LI><LI>Create a schema&nbsp;</LI></UL><pre class="lia-code-sample language-sql"><code>-- Step 1: Create User, Schema and role. CREATE USER DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;USER&gt; PASSWORD Password123 SET USERGROUP DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;; CALL "DWC_GLOBAL"."CREATE_USERGROUP_SCHEMA" ( SCHEMA_NAME =&gt; 'DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;SCHEMA_NAME&gt;', OWNER_NAME =&gt; 'DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;USER&gt;' );</code></pre><P><STRONG>Technical side-note:</STRONG> By default, HANA creates a unique schema for each user. So it's good practise to create a separate schema, that is independent of any user.&nbsp;</P><H2 id="toc-hId-1202966502">1.2: Switch user</H2><P>In the left side of the Database Explorer, right-click on your database and select "Add Database with Different User":</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_1-1774611005647.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/389744i6FA2E7B71D4EA291/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_1-1774611005647.png" alt="CLTGravesen_1-1774611005647.png" /></span></P><P>Use the user ID and password you created above.&nbsp;</P><P>Open a new SQL console, and validate that you are now connected to your user:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_2-1774611167970.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/389745iCFFD9CBCE0BAD4F0/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_2-1774611167970.png" alt="CLTGravesen_2-1774611167970.png" /></span></P><H2 id="toc-hId-1006452997">1.3: Cool... Now what?</H2><P>Now you can do whatever you want.&nbsp;<BR />You can create custom tables, views, functions and procedures in the schema you set up and expose it to the spaces in your solutions.&nbsp;</P><H1 id="toc-hId-680856773">2: Re-enabling SYS.DUMMY</H1><P>So, if you've ever read any of the documentation for HANA SQL, you'll see endless references to a table called DUMMY.&nbsp;</P><P>An example could be getting today's date</P><pre class="lia-code-sample language-sql"><code>SELECT current_date FROM sys.dummy;</code></pre><P>Which may seem odd, but the (somewhat simple) explanation is that HANA will not execute a query without a source.&nbsp;<BR />So, the table SYS.DUMMY only ever contains one row, so you can use it as a workaround, for cases where you don't want to query data, but needs to execute something else.&nbsp;</P><P>In <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Datasphere/pd-p/73555000100800002141" class="lia-product-mention" data-product="16-2">SAP Datasphere</a>&nbsp;, the above query will fail, if you try it in an SQL view:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_3-1774611678305.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/389747iC799F993A5F1AB9C/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_3-1774611678305.png" alt="CLTGravesen_3-1774611678305.png" /></span></P><P>But hell, sometimes you just want a query without a source. So, how can we re-establish it?&nbsp;</P><P>In our database your schema, we can create a dummy view, and expose it in our space:</P><pre class="lia-code-sample language-sql"><code>SET SCHEMA DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;SCHEMA_NAME&gt;; CREATE OR REPLACE VIEW "DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;SCHEMA_NAME&gt;"."DUMMY" AS SELECT "DUMMY" from "SYS"."DUMMY";</code></pre><P>Which creates a wrapper view.&nbsp;<BR />Why is that required? Because your spaces will always try to execute an SQL query inside it's own schema, and will not be able to find the SYS schema.&nbsp;</P><P>When the view is created, you'll have to grant access to your space by running the following SQL:</P><pre class="lia-code-sample language-sql"><code>CALL "DWC_GLOBAL"."GRANT_PRIVILEGE_TO_SPACE" ( OPERATION =&gt; 'GRANT', PRIVILEGE =&gt; 'SELECT', SCHEMA_NAME =&gt; 'DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;SCHEMA_NAME&gt;', OBJECT_NAME =&gt; '', SPACE_ID =&gt; '&lt;YOUR_SPACE&gt;');</code></pre><P>&nbsp;In your Datasphere space, you can now deploy the view, and you're back in action!</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_4-1774612856269.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/389753i8E793BD6FEA75C71/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_4-1774612856269.png" alt="CLTGravesen_4-1774612856269.png" /></span></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><EM>"But Christian, can't I just create a local table in my space and do the exact same thing?"</EM></P><P>Well yes. But I think this served as a nice example of how you can use your DB user group to access system information, that is not otherwise available to you.&nbsp;</P><H1 id="toc-hId-484343268">3: Implementing custom scalar functions&nbsp;</H1><P>Alrighty, so on to the real magic.&nbsp;</P><P>If you are not familiar with SQL development, a bit of background might be useful.&nbsp;</P><P>In SQL in general, and HANA SQL as well, you can build User-Defined Functions, that allow you to implement more complex SQL logic, such as control structures (loops) and logical operators, and execute dynamic SQL. HANA offers two kinds of User-Defined Functions that you can build.</P><OL><LI><A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/52715f71adba4aaeb480d946c742d1f6/b610dcddb55b47398320bd2e160efaa0.html?version=LATEST&amp;locale=en-US&amp;state=PRODUCTION" target="_blank" rel="noopener noreferrer">Table function</A>: Which returns a full view, that you can call from a SELECT statement.&nbsp;</LI><LI><A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/52715f71adba4aaeb480d946c742d1f6/985c78b07f304c17a660e3ba202dd70d.html?version=LATEST&amp;locale=en-US&amp;state=PRODUCTION" target="_blank" rel="noopener noreferrer">Scalar function</A>: Which are functions you can call within a view, and returns a single value for each row.<BR />When you create a "<A href="https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/3897f480b9404e6f82de9bba410f17c0.html" target="_blank" rel="noopener noreferrer">Calculated column</A>" in your views, you are using a scalar function. Functions such as IFNULL, COALESCE, LOWER and so on are all scalar functions, that you can use in your views.&nbsp;</LI></OL><P>The value of scaler functions is that they allow you to create re-usable custom logic, that can be utilized across your entire solution.&nbsp;<BR />In this post, I'll create two functions as a few examples, which should give you an idea of how to utilize scalar functions in your solution.&nbsp;</P><H2 id="toc-hId-416912482">3.1: Example 1 - Harmonization of amount columns&nbsp;</H2><P>One challenge we always encounter in a data warehouse is the standardization of data formats when combining data from several sources. An example that may be very common now with the introduction of Seamless Planning, is combining planning data with actuals data from an ERP system.&nbsp;</P><P>By default, measures from SAC will be decimals with 7 decimals; whereas actuals from wither BW or SAP will be a decimal with 2 decimals. When combining the numbers in Datasphere, it will do it's best, but it may lead to either a loss of precision, or an ungodly amount of decimals in your reports.&nbsp;</P><P>So, what if you want to enforce a consistent data format across your solution? Well, you could use a scalar function.&nbsp;</P><P>In this example, I have decided I want all my amounts to be a Decimal(17, 2). Why? Because I grew up with BW, and 17,2 just feels like the <EM>objectively&nbsp;</EM>correct format. You may disagree (and you would be&nbsp;<EM>objectively</EM> wrong) and choose another format.&nbsp;</P><P>So, open your Database Explorer, and open an SQL console, and make sure it's connected to the user your created in step 1.1.&nbsp;</P><P>First, set the correct schema:</P><pre class="lia-code-sample language-sql"><code>SET SCHEMA DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;YOUR_SCHEMA&gt;; </code></pre><P>Then you can create your function as below:</P><pre class="lia-code-sample language-sql"><code>CREATE OR REPLACE FUNCTION clean_amount_column ( in_amount DECIMAL ) returns out_amount decimal(17,2) -- Defines return type LANGUAGE SQLSCRIPT SQL SECURITY DEFINER -- Definer means it will use your DB user's rights, not whoever is using your report. READS SQL DATA -- Makes sure the function is READ-ONLY. Functions almost always are, but it will help the compiler optimize function calls. DETERMINISTIC -- Tells the compiler that the function will always return the same output, that means the results are cached for the runtime session, and can improve performance. as BEGIN DECLARE v_num DECIMAL(34,10); -- Null handling: If NULL, return 0. IF in_amount IS NULL THEN out_amount := 0; ELSE -- Convert to highest possible precision. Ensure we can handle scientific magnitude numbers. v_num := TO_DECIMAL(:in_amount, 34, 10); v_num := ROUND(v_num,2); -- Round to two decimals. out_amount := TO_DECIMAL(:v_num, 17, 2); -- Convert to final DECIMAL(17,2) END IF; END;</code></pre><P>A few notes on the script:</P><UL><LI><STRONG>CREATE OR REPLACE</STRONG>: If a function with that name, in that schema already exists, it will be overwritten. You may not want to accidently overwrite existing objects. In that case, you can use CREATE.&nbsp;</LI><LI><STRONG>SQL SECURITY DEFINER</STRONG>: This means that the function will run with the rights of your DB user, rather than the user calling. This may not be what you want, so change to Invoker if you need that instead.</LI><LI><STRONG>DETERMINISTIC</STRONG>: Is something you can use if you can promise the server that your function will always return the same result, given the same input, which improves performance, because results can be cached. Functions that require NOW() or TODAY() or CURRENT_DATE&nbsp;can <STRONG>not</STRONG>&nbsp;be deterministic.&nbsp;</LI></UL><P>When you have run the script, you should be able to find your function in your DB Schema:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_0-1775634707178.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394817i814D40E00BA3BAE9/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_0-1775634707178.png" alt="CLTGravesen_0-1775634707178.png" /></span></P><P>You can right-click and select "Generate SELECT Statement", and test your function.&nbsp;</P><pre class="lia-code-sample language-sql"><code>SELECT 12.747456 as Input, '12.76' as ExptectedOutput, "DWCDBGROUP#CHR_GRA#REPORTING"."CLEAN_AMOUNT_COLUMN"(12.764456).OUT_AMOUNT AS OUT_AMOUNT FROM DUMMY UNION SELECT 124545678.767456 as Input, 124545678.77 as ExptectedOutput, "DWCDBGROUP#CHR_GRA#REPORTING"."CLEAN_AMOUNT_COLUMN"(124545678.767456).OUT_AMOUNT AS OUT_AMOUNT FROM DUMMY UNION SELECT NULL as Input, 0.00 as ExptectedOutput, "DWCDBGROUP#CHR_GRA#REPORTING"."CLEAN_AMOUNT_COLUMN"(NULL).OUT_AMOUNT AS OUT_AMOUNT FROM DUMMY UNION SELECT '123.678' as Input, '123.68' as ExptectedOutput, "DWCDBGROUP#CHR_GRA#REPORTING"."CLEAN_AMOUNT_COLUMN"('123.678').OUT_AMOUNT AS OUT_AMOUNT FROM DUMMY</code></pre><P>I've tested with a few values, including NULL and even a string&nbsp;</P><TABLE border="1" width="100%"><TBODY><TR><TD width="33.333333333333336%" height="30px"><STRONG>INPUT</STRONG></TD><TD width="33.333333333333336%" height="30px"><STRONG>EXPTECTEDOUTPUT</STRONG></TD><TD width="33.333333333333336%" height="30px"><STRONG>OUT_AMOUNT</STRONG></TD></TR><TR><TD width="33.333333333333336%" height="30px"><P><EM>NULL</EM></P></TD><TD width="33.333333333333336%" height="30px">0</TD><TD width="33.333333333333336%" height="30px">0.00</TD></TR><TR><TD width="33.333333333333336%" height="30px">123.678</TD><TD width="33.333333333333336%" height="30px">123.68</TD><TD width="33.333333333333336%" height="30px">123.68</TD></TR><TR><TD width="33.333333333333336%" height="30px">12.747456</TD><TD width="33.333333333333336%" height="30px">12.76</TD><TD width="33.333333333333336%" height="30px">12.76</TD></TR><TR><TD width="33.333333333333336%" height="30px">124545678.767456</TD><TD width="33.333333333333336%" height="30px">124545678.77</TD><TD width="33.333333333333336%" height="30px">124545678.77</TD></TR></TBODY></TABLE><P>When you are happy with your function, you need to provide access to your spaces. To do this you will need to:</P><UL><LI>Create a public synonym for your function</LI><LI>Grant EXECUTE rights to your space to functions in your schema.&nbsp;</LI></UL><P>The following statement may not make sense, but the technical reasons why this works is way beyond the scope of this post. So you'll just have to trust me.&nbsp;<BR />If you want the technical breakdown; let me know, and I might include an appendix to this post at some point.&nbsp;</P><pre class="lia-code-sample language-sql"><code>-- Create a public synonym - DO NOT REPLACE any existing synonyms. -- If you're a puritan, you can always add a Z to your function and / or synonym. CREATE PUBLIC SYNONYM ZCLEAN_AMOUNT for DWCDBGROUP#CHR_GRA#REPORTING.clean_amount_column;</code></pre><P>The public synonym is the name your function will have in your views, so give it a name good name.&nbsp;</P><P>Get the ID of the space you want to give access to. Then run the following commands in an SQL console:</P><pre class="lia-code-sample language-sql"><code>GRANT SELECT, EXECUTE ON SCHEMA "DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;YOUR_SCHEMA&gt;" TO "&lt;SPACE_ID&gt;"."&lt;SPACE_ID&gt;::default" WITH GRANT OPTION; GRANT SELECT, EXECUTE ON SCHEMA "DWCDBGROUP#&lt;YOUR_NAMESPACE&gt;#&lt;YOUR_SCHEMA&gt;" TO &lt;SPACE_ID&gt; WITH GRANT OPTION;</code></pre><P><STRONG>Note:</STRONG> the format is important. The quotes ( " ) must be there, otherwise you'll get errors.&nbsp;</P><P>So, how do you implement it?</P><P>Back in Datasphere, go to the space you granted access to, and create an SQL view.&nbsp;<BR />You can now call your function by it's synonym, and feed it your inputs:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_1-1775636787029.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394847iA9A9D6E9AD9B83E2/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_1-1775636787029.png" alt="CLTGravesen_1-1775636787029.png" /></span></P><P><STRONG>Important note:</STRONG> Datasphere, however, will not correctly derive the return type of your custom scalar functions, but will inherit&nbsp; the datatype of your input.&nbsp;<BR />In my case, "Lines" is an integer, and the hard-coded values is a double, so I had to go in and manually change the format.&nbsp;</P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><EM>"But Christian, if I have to manually adjust the data type anyway, what is the value here?"</EM></P><P>Well, yeah, that is a pain. However, even so, I would still argue that things like consistent null-behaviour, string-conversions etc., still have value.&nbsp;<BR />Also, please remember that Datasphere dosen't know it actually supports customer scalar functions. This is basically me gaslighting it into running my functions, so a few quirks are to be expected.&nbsp;</P><H2 id="toc-hId-220398977">3.2: Example 2: Consistent Date-conversions</H2><P>Another colossal pain in the backend in any data modelling scenario is how to manage dates.<BR />One absolute banger of timewaster is to get the CALMONTH (YYYYMM) from a date. Year, month, week, etc. all have standard functions implemented, but CALMONTH does not.&nbsp;<BR />The formula is pretty simple, but so help me God, do I always manage to get it wrong, for some reason. (I am fully prepared to accept that the reason may be that I'm an idiot, but there is no reason to personal).</P><P>So, for this example, I'll show you another happy little easter egg: A scaler function can return several values, and can act like a class with different methods.&nbsp;</P><P>In this example, we'll take a basic SAP datestring (YYYYMMDD) and provide a single function, that can return year, month, calmonth, calweek, halfyear and quarter.&nbsp;<BR />You can append it as you prefer.&nbsp;</P><pre class="lia-code-sample language-sql"><code>SET SCHEMA DWCDBGROUP#&lt;YOUR_SCHEMA&gt;#&lt;YOUR_SCHEMA&gt;; CREATE OR REPLACE FUNCTION transform_sap_date ( in_datestring nvarchar(8) ) returns out_year nvarchar(4), --YYYY out_month nvarchar(2), -- MM out_calmonth nvarchar(6), --YYYYMM out_calweek nvarchar(6), -- YYYYWW out_quarter nvarchar(1), -- Q out_halfyear nvarchar(1) --H LANGUAGE SQLSCRIPT SQL SECURITY DEFINER READS SQL DATA DETERMINISTIC as BEGIN DECLARE lv_sql_date date; -- Null handling: If NULL, null. IF in_datestring IS NULL or length(in_datestring) != 8 THEN out_year := null; out_month := null; out_calmonth := null; out_calweek := null; out_quarter := null; out_halfyear := null; ELSE lv_sql_date := to_date(:in_datestring); out_year := to_nvarchar(year(:lv_sql_date)); out_month := lpad(month(:lv_sql_date),2,'0'); out_calmonth := concat(:out_year, :out_month); out_calweek := concat(:out_year, lpad(week(:lv_sql_date),2,'0')); out_quarter := left(ROUND( month(:lv_sql_date) / 3, 0, ROUND_UP),1); IF month(:lv_sql_date) &lt; 6 then out_halfyear := '1'; else out_halfyear := '2' ; end if; END IF; END; -- Create a public synonym - DO NOT REPLACE any existing synonyms. -- If you're a puritan, you can always add a Z to your function and / or synonym. CREATE PUBLIC SYNONYM ZDATE for DWCDBGROUP#&lt;YOUR_SCHEMA&gt;#&lt;YOUR_SCHEMA&gt;.transform_sap_date;</code></pre><P>You can now test your function. You can get each output by specifying it with a .&lt;IDENTIFYER&gt; in each column:</P><pre class="lia-code-sample language-sql"><code>SELECT '20260408' as InputDate, "ZDATE"('20260408').OUT_YEAR AS OUT_YEAR, "ZDATE"('20260408').OUT_MONTH AS OUT_MONTH, "ZDATE"('20260408').OUT_CALMONTH AS OUT_CALMONTH, "ZDATE"('20260408').OUT_CALWEEK AS OUT_CALWEEK, "ZDATE"('20260408').OUT_QUARTER AS OUT_QUARTER, "ZDATE"('20260408').OUT_HALFYEAR AS OUT_HALFYEAR FROM DUMMY</code></pre><P>So, .OUT_YEAR gives you the year, and so on. Which gives you the following result:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_0-1775639980398.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394887i09C087D3D8EBA36B/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_0-1775639980398.png" alt="CLTGravesen_0-1775639980398.png" /></span></P><P>Which is a great success!&nbsp;</P><P>So, in your view, you can now pass a date or a datestring to a function, and get whatever you need:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_0-1775641260415.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394900i540B202B25529C49/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_0-1775641260415.png" alt="CLTGravesen_0-1775641260415.png" /></span></P><P><STRONG>Note:</STRONG> Again, DSP gets confused about the datatype, and wants to give me a string(100):</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_1-1775641323314.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/394901i32BF9B84FD3CFBBC/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_1-1775641323314.png" alt="CLTGravesen_1-1775641323314.png" /></span></P><P>So you will have to change that, but you can't have it all.&nbsp;</P><H2 id="toc-hId-23885472">3.3: A few notes</H2><P>Alrighty! So now we've seen how to create and implement custom, reusable logic across your Datasphere solution.&nbsp;</P><P>But it is not without headaches.&nbsp;<BR />First and foremost, SQL artifacts can't be included in the transport packages, so you will have to repeat the process for each system in your landscape.&nbsp;</P><P>So, when transporting, the sequence is: (1) Make sure all the spaces are created, (2) create your DB group, schema and user, (3) Create or replace all the SQL objects, (4) Import your Datasphere views and models.</P><H1 id="toc-hId-468029331">4: Jailbreaking the Graphical Editor</H1><P>So, you may have noticed that up until now I've created SQL views to test my functions.&nbsp;<BR />The reason is quite simple: The Graphical editor has access to fewer functions than the SQL editor.</P><P>However, that is easily fixed, if you are willing to fiddle with the debug console a bit.&nbsp;</P><P><STRONG>Note:</STRONG> This works now, but technically it is a bit on the naughty side, so SAP may patch it out in the future.&nbsp;<BR />However, it they patch it with the same speed that the add new features, I'm guessing this should make it to at least 2027Q3 before they notice.&nbsp;</P><P>So, the "allowed functions" in the graphical viewer is loaded once as a static list, the first time the editor is opened.&nbsp;</P><P>When you "Validate" and "Deploy" your view, the functions are validated against the static list, before it is deployed. If a function is not in that list, the view will not deploy.&nbsp;</P><P>So, the obvious fix is to smack in a breakpoint when the list is loaded, manually add your functions, and then deploy the view as always.&nbsp;</P><P><STRONG>Note:</STRONG> This process must be repeated every time a view is opened, and&nbsp;<EM>must</EM> be done when the editor initially loads.&nbsp;</P><P>So, here is what you do.&nbsp;</P><OL><LI>Open the view you want to change, or click "New Graphical View"</LI><LI>Once the view has loaded open the development console for your browser (either press F12, or right-click -&gt; 'Inspect')&nbsp;</LI><LI>Go to 'Sources' and right-click the folder with your tenant name and 'Search in all files':<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_0-1775719480710.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395334iD6077E479BA0BEDB/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_0-1775719480710.png" alt="CLTGravesen_0-1775719480710.png" /></span><P>Then, search for the following:&nbsp;FUNCTION_NAME_TO_FUNCTION. This might take a minute or two. You'll get results that look something like this:<BR /><BR /></P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_1-1775719620671.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395340iA3AFB6E30F409DFC/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_1-1775719620671.png" alt="CLTGravesen_1-1775719620671.png" /></span><P>In the file with the most hits, click any to open up the chunk.&nbsp;</P></LI><LI>In the open chunk, locate a function that contains "class a", and place a breakpoint&nbsp;<EM>AFTER</EM> the end of that function:<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_2-1775719860753.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395344i9E44CCB1ECE1F7BD/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_2-1775719860753.png" alt="CLTGravesen_2-1775719860753.png" /></span></LI><LI>Refresh the page,&nbsp;but do <STRONG>not</STRONG>&nbsp;close the debugger.</LI><LI>When the debugger hits your breakpoint, find the console.&nbsp;</LI><LI>Locate your black trench-coat, 90s hacker glasses. Take a deep breath.</LI><LI>Mandatory step. Say "I've hacked the mainframe" out loud. You may also whisper, "I'm in", if you are currently in an open office setup.&nbsp;</LI><LI>In the console, you can type a.ALL to see an array of all the functions:<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_3-1775720140791.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395346i496EE07225E90A43/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_3-1775720140791.png" alt="CLTGravesen_3-1775720140791.png" /></span><P>You can now see all the info required for a function to be included.&nbsp;</P></LI><LI>(Optional step) Open one of the functions and inspect the elements. Please take special note that the documentation in a RAW-string HTML document.&nbsp;<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_4-1775720306984.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395352i64F9CE376FD142B0/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_4-1775720306984.png" alt="CLTGravesen_4-1775720306984.png" /></span><P>If you feel like it, you can either roll your eyes, do a facepalm or a similar display of "what the actual **bleep**".&nbsp;</P></LI><LI>From here, you can now push your functions to the class, and they will be legal in your graphical view.&nbsp;</LI></OL><pre class="lia-code-sample language-javascript"><code>a.ALL.push({Function: 'ZCLEAN_AMOUNT', InTypes: 'decimal', Inputs: 1, Return: 'decimal', definition: 'amount Converter (UDF)', items: [{"key": ""}], prepared: true})​</code></pre><P>Then, you also have to add the function to the&nbsp;FUNCTION_NAME_TO_FUNCTION dictionary:</P><pre class="lia-code-sample language-javascript"><code>a.FUNCTION_NAME_TO_FUNCTION['ZCLEAN_AMOUNT'] = {Function: 'ZCLEAN_AMOUNT', InTypes: 'decimal', Inputs: 1, Return: 'decimal', definition: 'amount converter (UDF)', items: [{"key": ""}], prepared: true}​</code></pre><P>I'm not sure why, but I'm sure there are good, complex, technical reasons why (<span class="lia-unicode-emoji" title=":upside_down_face:">🙃</span>).</P><UL><LI>Resume the script (F8) and let the view load finish:<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_5-1775720659445.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395353iFE20C814A1AFB2F6/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_5-1775720659445.png" alt="CLTGravesen_5-1775720659445.png" /></span></LI><LI>You can now close the debugger.&nbsp;</LI><LI>Your function is now legal, you can use it, deploy your view, and everything will compile and run without issue.&nbsp;<BR />And why shouldn't it? SQL views and Graphical views both compile to the same HANA server.&nbsp;<BR />The only reason graphical views behave differently is because SAP has actively restricted it. The only trick is to trick the graphical editor to not check.&nbsp;<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CLTGravesen_7-1775720960385.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/395355i208F0B0F9302F85E/image-size/medium?v=v2&amp;px=400" role="button" title="CLTGravesen_7-1775720960385.png" alt="CLTGravesen_7-1775720960385.png" /></span><BR /><STRONG>Note</STRONG>: In all fairness, the Graphical view has to translate a graph to an SQL query, so there has to be some logic / special handling.&nbsp;<EM>Buuuuuut</EM> the list has remained static for over a year, so at this point it is just negligence.</LI></UL><P>So, that's it!&nbsp;<BR />And please note you can add any number of functions while the debugger is open.&nbsp;<BR />Both your own, or any function from the <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-sql-reference-guide/sql-functions" target="_blank" rel="noopener noreferrer">function reference</A> that you need.&nbsp;<BR />Want to use JSON_QUERY functions for JSON extractions? No problem. Add it in, deploy, enjoy.&nbsp;</P><P><STRONG>Note:</STRONG> Be careful to add window functions, or aggregate functions, that are not supported. The view may compile and deploy, but it may behave oddly.&nbsp;</P><P>Unfortunately, you'll have to repeat this process every time you open a graphical view.<BR />Opening a view that contains a jail-break function, without adding it to the legal list, will result in an error, and prevent you from deploying.&nbsp;<BR /><BR /></P><H1 id="toc-hId-271515826">4: Conclusion</H1><P>So, congratulations for making it all the way through that. I've tried my best to hit a balance between technical details, without it becoming overwhelming.&nbsp;</P><P>If you've any questions or if anything was unclear, please leave a comment and I'll either reply or update the post, to improve clarity.&nbsp;</P><P>So, by now you've learned :</P><OL><LI>How to access the HANA Cloud tenant, and create custom SQL objects to implement reusable code.&nbsp;</LI><LI>Allow your spaces to consume said objects in your modelling</LI><LI>Jail-break the graphical view editor, to include missing functions, without waiting 6 years for a feature request.&nbsp;</LI></OL><P>Happy reading, happy coding and I hope you had a wonderful easter.</P> 2026-04-09T10:20:07.454000+02:00 https://community.sap.com/t5/technology-blog-posts-by-sap/stay-connected-with-the-hana-community-join-us-at-hana-tech-con-2026/ba-p/14354251 Stay Connected with the HANA Community: Join Us at HANA Tech Con 2026! 2026-04-09T16:23:33.509000+02:00 thomashammer https://community.sap.com/t5/user/viewprofilepage/user-id/122781 <P>HANA Tech Con 2026, part of the <STRONG>Code Connect</STRONG> event series, brings together developers, users, and partners who are passionate about HANA. More than just a technical event, HANA Tech Con focuses on collaboration and shared learning. Participants will have the chance to connect with experts and peers from around the world, discover new perspectives, and explore potential partnerships within the vibrant HANA ecosystem.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="thomashammer_0-1773997662736.jpeg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/386723iCF1EDC60AEAC6C38/image-size/large?v=v2&amp;px=999" role="button" title="thomashammer_0-1773997662736.jpeg" alt="thomashammer_0-1773997662736.jpeg" /></span></P><P>&nbsp;</P><P><STRONG>Learn from Experts and Real-World Experiences</STRONG></P><P>Industry experts will share their experience through technical sessions, and interactive demonstrations. These sessions highlight the latest HANA features, modern development approaches, and proven best practices.</P><P>Attendees will also get the chance to explore real-world use cases and see how HANA technologies are implemented in practice.</P><P><STRONG>Support the Event as a Sponsor</STRONG></P><P>Supporting the event offers a great opportunity to engage directly with a highly focused community of developers, partners, and SAP users.</P><P>Sponsors benefit from strong visibility throughout the event, including brand presence in key areas of the venue and recognition during major sessions. Companies can also promote their solutions through event communication channels and interact directly with attendees who are interested in HANA technologies.</P><P>For those who want to showcase their products or services, an optional booth space can be included as part of the sponsorship package.</P><P>Check all the benefits and sponsorship options here: <A href="https://hanatech.community/sponsors.html" target="_blank" rel="noopener nofollow noreferrer"><STRONG>LINK</STRONG></A></P><P class=""><STRONG>Registration will be opening soon!</STRONG></P><P class=""><SPAN>Mark your calendar: </SPAN>Registration opens on April 16, 2026.</P><P><SPAN>Tickets are free, so make sure to secure your spot as soon as registration goes live: they tend to go fast!</SPAN></P><P>&nbsp;</P><P><STRONG>Highlights from Last Year</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="thomashammer_1-1773997662757.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/386724i20F2F85C126EE293/image-size/large?v=v2&amp;px=999" role="button" title="thomashammer_1-1773997662757.png" alt="thomashammer_1-1773997662757.png" /></span></P><P>‌<span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span>‌<FONT color="#000000"> Follow the event on LinkedIn to stay up to date with the<BR />latest news on speakers, sessions, and announcements for HANA Tech Con 2026:&nbsp;</FONT><STRONG><A href="https://www.linkedin.com/company/hana-tech-con/" target="_blank" rel="noopener nofollow noreferrer">LINK</A></STRONG></P><P><STRONG>Stay Connected, and see you at HANA Tech Con 2026!</STRONG></P> 2026-04-09T16:23:33.509000+02:00