https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-Business-Application-Studio-blog-posts.xml SAP Community - SAP Business Application Studio 2026-02-25T15:00:42.768980+00:00 python-feedgen SAP Business Application Studio blog posts in SAP Community https://community.sap.com/t5/technology-blog-posts-by-members/creating-capm-application-with-node-js-by-using-s-4-hana-database-part-2/ba-p/14237984 CREATING CAPM APPLICATION WITH NODE.JS BY USING S/4 HANA DATABASE - Part 2 2025-10-13T08:11:54.622000+02:00 Divya_Mandava https://community.sap.com/t5/user/viewprofilepage/user-id/2235357 <P><FONT face="comic sans ms,sans-serif">Hello Buddies!!</FONT></P><P><FONT face="comic sans ms,sans-serif">Have you Subscribed to all our pre-requisites for the development?</FONT></P><P><FONT face="comic sans ms,sans-serif">No&nbsp;</FONT><span class="lia-unicode-emoji" title=":neutral_face:">😐</span><FONT face="comic sans ms,sans-serif">!!!</FONT></P><P><FONT face="comic sans ms,sans-serif">Don't worry let's set it up. Follow the link below!!</FONT></P><P><A title="Setup for Capm Development" href="https://community.sap.com/t5/technology-blog-posts-by-members/creating-capm-application-with-node-js-by-using-s-4-hana-database/ba-p/14208638" target="_blank">https://community.sap.com/t5/technology-blog-posts-by-members/creating-capm-application-with-node-js-by-using-s-4-hana-database/ba-p/14208638</A></P><P><STRONG><FONT face="comic sans ms,sans-serif">Welcome to next episode of CREATING CAPM APPLICATION WITH NODE.JS BY USING S/4 HANA DATABASE.</FONT></STRONG></P><P><FONT face="comic sans ms,sans-serif">In this Episode Lets Create an Capm Application by Using a Template, So that deployment configurations will be added automatically without manual errors.</FONT></P><P><FONT face="comic sans ms,sans-serif"><STRONG>Step1:</STRONG>&nbsp;Click on the light&nbsp;<STRONG>=&nbsp;</STRONG>icon and select&nbsp;<STRONG>Project from Template &gt; Cap Project.</STRONG>&nbsp;</FONT></P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_55-1757916882746.png" style="width: 438px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314120i227793EB648B0E04/image-dimensions/438x322?v=v2" width="438" height="322" role="button" title="Divya_Mandava_55-1757916882746.png" alt="Divya_Mandava_55-1757916882746.png" /></span></FONT></P><P>&nbsp;</P><P><FONT face="comic sans ms,sans-serif"><STRONG>Step2:</STRONG>&nbsp;Click on next and Fill the details like Project name, Runtime environment. I named my project as&nbsp;zcapm_hanadb.</FONT></P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_56-1757916882749.png" style="width: 485px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314121i5047FDC560D94343/image-dimensions/485x290?v=v2" width="485" height="290" role="button" title="Divya_Mandava_56-1757916882749.png" alt="Divya_Mandava_56-1757916882749.png" /></span></FONT></P><P>&nbsp;</P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_57-1757916882750.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314125iE6B7C1FD50907D4F/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_57-1757916882750.png" alt="Divya_Mandava_57-1757916882750.png" /></span></FONT></P><P>&nbsp;</P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_58-1757916882752.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314126i71A239661B19BF7F/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_58-1757916882752.png" alt="Divya_Mandava_58-1757916882752.png" /></span></FONT></P><P>&nbsp;</P><P>&nbsp;</P><P><FONT face="comic sans ms,sans-serif">Click on&nbsp;Finish. Hurray our app gets generated in few seconds.</FONT></P><P><FONT face="comic sans ms,sans-serif" color="#993366"><FONT color="#FF0000">Note:</FONT>&nbsp;Check whether you are subscribed to Hana cloud, which is already there in prerequisites blog, We have also created a instance for that.</FONT></P><P><FONT face="comic sans ms,sans-serif">Now make sure your Hana db instance is running.</FONT></P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_59-1757916882754.png" style="width: 480px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314127i1DDA94259E0E81F0/image-dimensions/480x119?v=v2" width="480" height="119" role="button" title="Divya_Mandava_59-1757916882754.png" alt="Divya_Mandava_59-1757916882754.png" /></span></FONT></P><P><FONT face="comic sans ms,sans-serif">It would take around 10 to 15 minutes to get to running status.</FONT></P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_60-1757916882756.png" style="width: 553px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314131iAC50CD1A5219868C/image-dimensions/553x134?v=v2" width="553" height="134" role="button" title="Divya_Mandava_60-1757916882756.png" alt="Divya_Mandava_60-1757916882756.png" /></span></FONT></P><P><FONT face="comic sans ms,sans-serif">Now let move to SAP BAS where our application got created.</FONT></P><P><FONT face="comic sans ms,sans-serif"><STRONG>Step3:</STRONG>&nbsp;Run the application as&nbsp;Right click on <STRONG>app&gt; Open in integrated Terminal &gt;&nbsp;Enter command&nbsp;CDS Watch,</STRONG> check whether all the node modules installed or not. Enter Command</FONT></P><P><FONT face="comic sans ms,sans-serif"><STRONG>npm install</STRONG></FONT></P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_61-1757916882759.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314133i56D29B25351E4D34/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_61-1757916882759.png" alt="Divya_Mandava_61-1757916882759.png" /></span></FONT></P><P>&nbsp;</P><P><FONT face="comic sans ms,sans-serif"><STRONG>Step4:&nbsp;</STRONG>Next enter the command <STRONG>npm install -g hana-cli</STRONG>.&nbsp;In this we are installing hana cloud Command line interface where we need to push our data into.</FONT></P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_62-1757916882763.png" style="width: 476px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314132i54837D2F45D0B9F1/image-dimensions/476x186?v=v2" width="476" height="186" role="button" title="Divya_Mandava_62-1757916882763.png" alt="Divya_Mandava_62-1757916882763.png" /></span></FONT></P><P>&nbsp;</P><P><FONT face="comic sans ms,sans-serif">Now lets work on our Project before we connect with Data Base.</FONT></P><P><FONT face="comic sans ms,sans-serif"><STRONG>Step5:</STRONG>&nbsp;In folder structure under&nbsp;<STRONG>db &gt;data-model.cds</STRONG>(I have re-named it on my own interest).Name should be&nbsp;<STRONG>filename.cds&nbsp;</STRONG></FONT></P><P><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_63-1757916882764.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314139i03D15EFEA62E76FD/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_63-1757916882764.png" alt="Divya_Mandava_63-1757916882764.png" /></span></FONT></P><P>&nbsp;</P><P><FONT face="comic sans ms,sans-serif">Lets create our Structure, In this there should be one Unique key for every entity you have created.</FONT></P><P><FONT face="comic sans ms,sans-serif"><STRONG>Code:</STRONG></FONT></P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>namespace zcapm_hanadb; entity Products { @title : 'Sales Order Number' key id: Integer; @title : 'Product Name' name: String; @title : 'Price' price: Decimal; @title : 'Description' description: String; @title : 'Stock left' stock: Integer; }</code></pre><P>&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Step 6:</STRONG>&nbsp;In folder structure under&nbsp;<STRONG>srv &gt;cat-service.cds</STRONG>(I have re-named it on my own interest).Name should be&nbsp;<STRONG>filename.cds</STRONG></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_64-1757916882765.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314137i8B00A60BA88DF7C5/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_64-1757916882765.png" alt="Divya_Mandava_64-1757916882765.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">In this case lets declare our function calls for get and Post. Just function names are declared in this section where we are about to call them in another file.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Important Note:&nbsp;</STRONG>In defining the cds function please remember two main things,</FONT></P><OL class="lia-align-left" style="text-align : left;"><LI><FONT face="comic sans ms,sans-serif">a) function(Get Call)</FONT></LI><LI><FONT face="comic sans ms,sans-serif">b) action (Post Call)</FONT></LI></OL><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Code:&nbsp;</STRONG></FONT></P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>using zcapm_hanadb from '../db/data-model'; service CatalogService{ entity Products as projection on zcapm_hanadb.Products; // get service call function fnCatalogGetService(name: String) returns String; // Post service call action fnCreateRecord(id: Integer, name: String, price: Decimal, description:String, stock: Integer) returns String; }</code></pre><P>&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Step 7:</STRONG>&nbsp;In this let's create one more file under&nbsp;<STRONG>srv&gt;cds-service.js</STRONG>&nbsp;(filename.js).&nbsp;</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">In this file we will write our node js logic for functions we have declared in&nbsp;cat-service.cds.</FONT></P><P class="lia-align-left" style="text-align : left;"><STRONG><FONT face="comic sans ms,sans-serif">Code:&nbsp;</FONT></STRONG></P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>const cds = require('@sap/cds'); const {Products} = cds.entities('zcapm_hanadb'); module.exports = cds.service.impl(async function() { //Get call this.on('fnCatalogGetService', async (req) =&gt; { const { name } = req.data; console.log(name, "Hello World"); // Post call this.on('fnCreateRecord', async (req) =&gt; { const { id, name, price, description, stock } = req.data; console.log("Hello World is working fine"); }) });</code></pre><P>&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Now we have created our very basic structure of entity and has given a service name under it. In order to utilize our service lets deploy our app to S/4 Hana DB and call data from it.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Command:&nbsp;cds build</STRONG> (Find there any errors in the terminal)</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_65-1757916882768.png" style="width: 486px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314138iADD7AFC451368428/image-dimensions/486x180?v=v2" width="486" height="180" role="button" title="Divya_Mandava_65-1757916882768.png" alt="Divya_Mandava_65-1757916882768.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>command:&nbsp;cds watch</STRONG> (Run the app).</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_66-1757916882772.png" style="width: 479px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314144i5FC1816229357EFD/image-dimensions/479x201?v=v2" width="479" height="201" role="button" title="Divya_Mandava_66-1757916882772.png" alt="Divya_Mandava_66-1757916882772.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><FONT color="#FF0000">Note:</FONT> <FONT color="#993366">If you found error message like in above image, then follow below steps.</FONT></FONT></P><OL class="lia-align-left" style="text-align : left;"><LI><FONT face="comic sans ms,sans-serif">First enter Ctrl + C (To End the process)</FONT></LI><LI><FONT face="comic sans ms,sans-serif">Click = &gt; View &gt; Command Palette.</FONT></LI></OL><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_67-1757916882775.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314145i06489FD385F7AA39/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_67-1757916882775.png" alt="Divya_Mandava_67-1757916882775.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Enter Stop port and select below one.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_68-1757916882778.png" style="width: 483px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314143iB729923621AE4F7A/image-dimensions/483x151?v=v2" width="483" height="151" role="button" title="Divya_Mandava_68-1757916882778.png" alt="Divya_Mandava_68-1757916882778.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Once it is done, now again enter the cds watch. You will find the screen like below where you you can find your service.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_69-1757916882784.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314149i11DDDE358DADD981/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_69-1757916882784.png" alt="Divya_Mandava_69-1757916882784.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Step 8:&nbsp; Lets connect to our app to S/4 Hana DB.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">On the top-left most corner&nbsp; where our project we have opened, there when you minimize it you will find SAP HANA PROJECTS. Open them.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_70-1757916882785.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314150iDFF9199A57837D34/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_70-1757916882785.png" alt="Divya_Mandava_70-1757916882785.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Step 9:&nbsp;Expand our project.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_71-1757916882788.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314151i27F28934D202A769/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_71-1757916882788.png" alt="Divya_Mandava_71-1757916882788.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Step 10:</STRONG>&nbsp;Under Database Connections we can find the same project name.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Click on the <STRONG>Green socket symbol</STRONG> to bind our project to <STRONG>HDI container</STRONG> (i.e., Hana DB container).</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_72-1757916882790.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314157i2ACDC253759FE424/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_72-1757916882790.png" alt="Divya_Mandava_72-1757916882790.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><UL class="lia-align-left" style="text-align : left;"><LI><STRONG><FONT face="comic sans ms,sans-serif">Bind to an HDI container</FONT></STRONG></LI></UL><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_73-1757916882792.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314155iEF288B1DC22FB57D/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_73-1757916882792.png" alt="Divya_Mandava_73-1757916882792.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><UL class="lia-align-left" style="text-align : left;"><LI><FONT face="comic sans ms,sans-serif"><STRONG>Click on new service instance, it will suggest you a name</STRONG>(you can rename it or use it as it is)</FONT></LI></UL><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_74-1757916882793.png" style="width: 445px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314156iF33F009D49E91A1E/image-dimensions/445x69?v=v2" width="445" height="69" role="button" title="Divya_Mandava_74-1757916882793.png" alt="Divya_Mandava_74-1757916882793.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_75-1757916882795.png" style="width: 450px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314161i23B3B7CB9DDA7A89/image-dimensions/450x118?v=v2" width="450" height="118" role="button" title="Divya_Mandava_75-1757916882795.png" alt="Divya_Mandava_75-1757916882795.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><FONT color="#FF0000">Note:</FONT> <FONT color="#993366">Make sure your Hana Cloud is running</FONT></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_76-1757916882799.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314162i09AF34AC7926B9AE/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_76-1757916882799.png" alt="Divya_Mandava_76-1757916882799.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_77-1757916882802.png" style="width: 455px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314163i6B4372F69D1621CE/image-dimensions/455x165?v=v2" width="455" height="165" role="button" title="Divya_Mandava_77-1757916882802.png" alt="Divya_Mandava_77-1757916882802.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">On clicking on top of Database Connections click on bind all.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_78-1757916882803.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314167iE41D79B8B580CB0A/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_78-1757916882803.png" alt="Divya_Mandava_78-1757916882803.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Next Click on Hana HD Container symbol which is on the top of project.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_79-1757916882805.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314168i1E89204D145F6C2D/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_79-1757916882805.png" alt="Divya_Mandava_79-1757916882805.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Mean while if you want to know what are all services got generated. Enter the command&nbsp;</FONT></P><P class="lia-align-left" style="text-align : left;"><STRONG><FONT face="comic sans ms,sans-serif">cf services</FONT></STRONG></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_80-1757916882809.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314169i4574C13C19477BA4/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_80-1757916882809.png" alt="Divya_Mandava_80-1757916882809.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_81-1757916882811.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314174iC2F02C2428B6EC8D/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_81-1757916882811.png" alt="Divya_Mandava_81-1757916882811.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">We can see our instance got reflected in sap BTP as well.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_82-1757916882812.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314173i291F34BA3C6651DE/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_82-1757916882812.png" alt="Divya_Mandava_82-1757916882812.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Application gets open here you can find your container with in built database with the instance we have created.</FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Step 11:</STRONG>&nbsp;Our service got binded in the HDI Container and let's deploy our app.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Click on the deploy icon(Rocket icon) under hana projects &gt; your project.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_84-1757916882816.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314180i0558A1FED686045B/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_84-1757916882816.png" alt="Divya_Mandava_84-1757916882816.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Our deployment looks like below screen.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_85-1757916882820.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314181iCEEDCB637DA683ED/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_85-1757916882820.png" alt="Divya_Mandava_85-1757916882820.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Under project &gt; db you can observe all our hana database files got created.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_86-1757916882822.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314179iA82437A2EAC1CC15/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_86-1757916882822.png" alt="Divya_Mandava_86-1757916882822.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Navigate to Hana db explorer, we see our app got deployed. Refresh the page.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_87-1757916882823.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314183iF183A5316412CD62/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_87-1757916882823.png" alt="Divya_Mandava_87-1757916882823.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_88-1757916882826.png" style="width: 481px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314184i0454355244B2B6C1/image-dimensions/481x161?v=v2" width="481" height="161" role="button" title="Divya_Mandava_88-1757916882826.png" alt="Divya_Mandava_88-1757916882826.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">As our structure is ready let’s add some data in it.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_89-1757916882827.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314182i68790D8A79E59F09/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_89-1757916882827.png" alt="Divya_Mandava_89-1757916882827.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Step 12:</STRONG>&nbsp;Right click on your entity and select&nbsp;import data. Filename should be same as entity name which we have maintained in&nbsp;db&gt;data-model.cds</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">File Data I Have Uploaded Here..</FONT></P><TABLE width="99%"><TBODY><TR><TD width="18%"><P><FONT face="comic sans ms,sans-serif">Id</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">name</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">price</FONT></P></TD><TD width="26%"><P><FONT face="comic sans ms,sans-serif">Description</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">stock</FONT></P></TD></TR><TR><TD width="18%"><P><FONT face="comic sans ms,sans-serif">1</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">Widget A</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">19.99</FONT></P></TD><TD width="26%"><P><FONT face="comic sans ms,sans-serif">A useful widget for various tasks</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">100</FONT></P></TD></TR><TR><TD width="18%"><P><FONT face="comic sans ms,sans-serif">2</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">Widget B</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">29.99</FONT></P></TD><TD width="26%"><P><FONT face="comic sans ms,sans-serif">An advanced widget with additional features</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">50</FONT></P></TD></TR><TR><TD width="18%"><P><FONT face="comic sans ms,sans-serif">3</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">Widget C</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">39.99</FONT></P></TD><TD width="26%"><P><FONT face="comic sans ms,sans-serif">A premium widget designed for expert users</FONT></P></TD><TD width="18%"><P><FONT face="comic sans ms,sans-serif">25</FONT></P></TD></TR></TBODY></TABLE><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_90-1757916882830.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314186iDF1303986900048D/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_90-1757916882830.png" alt="Divya_Mandava_90-1757916882830.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_91-1757916882831.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314188i49437615FEC10DCF/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_91-1757916882831.png" alt="Divya_Mandava_91-1757916882831.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">In Step3 it automatically reads the table from the data imported.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_92-1757916882833.png" style="width: 452px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314185i943FA45D8B769A23/image-dimensions/452x330?v=v2" width="452" height="330" role="button" title="Divya_Mandava_92-1757916882833.png" alt="Divya_Mandava_92-1757916882833.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_93-1757916882834.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314190iAF0496C3FFF03D1C/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_93-1757916882834.png" alt="Divya_Mandava_93-1757916882834.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Once you click on Review, this looks like below</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_94-1757916882835.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314191iDB9524F79FBED280/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_94-1757916882835.png" alt="Divya_Mandava_94-1757916882835.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Click on import to database</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_95-1757916882837.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314189i1486D774FAF1CA58/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_95-1757916882837.png" alt="Divya_Mandava_95-1757916882837.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Hurray! we don’t have any errors and it's successfully imported.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Now import it to our database table&nbsp;<STRONG>Review &gt;&nbsp;Import data.</STRONG></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_96-1757916882838.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314194iEBB0AC47063E633D/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_96-1757916882838.png" alt="Divya_Mandava_96-1757916882838.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_97-1757916882841.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314192i2655113F99F356C0/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_97-1757916882841.png" alt="Divya_Mandava_97-1757916882841.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Now right click and click on&nbsp;Open Data.&nbsp;</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_98-1757916882842.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314193iD7F0C67A28DBB35F/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_98-1757916882842.png" alt="Divya_Mandava_98-1757916882842.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">As our database is having the data now, we need to have scope to access it in our application.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Lets run the application command:&nbsp;<STRONG>cds watch --profile&nbsp; hybrid.</STRONG></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Here after we will be using this command as will compile the runtime dependencies.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_99-1757916882845.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314197i8E7A11D729930ADE/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_99-1757916882845.png" alt="Divya_Mandava_99-1757916882845.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_100-1757916882848.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314196iCBB5A67E05384A9A/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_100-1757916882848.png" alt="Divya_Mandava_100-1757916882848.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif" color="#FF0000">Error: Data is not loaded let's fix it up!!!</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">We need to add the shared key access for the cloud foundry</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Step 13:</STRONG>&nbsp;Go to btp cockpit and the service instance that we have created during deployment process, Copy it.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_101-1757916882850.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314195i670E4E3EB18CDABF/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_101-1757916882850.png" alt="Divya_Mandava_101-1757916882850.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_102-1757916882851.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314200i52C8801BB611F13C/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_102-1757916882851.png" alt="Divya_Mandava_102-1757916882851.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Copy the Bold letters as an Instance name and type in with the command in your app</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Command:&nbsp;<STRONG>cds bind -2 &lt;instanceName&gt;:SharedDevKey&nbsp;</STRONG>&nbsp;&nbsp;</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_103-1757916882853.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314198iC3F829A6FAE21B88/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_103-1757916882853.png" alt="Divya_Mandava_103-1757916882853.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_104-1757916882854.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314199iD648C3CDF6C7F8BE/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_104-1757916882854.png" alt="Divya_Mandava_104-1757916882854.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Instance key also gets appeared on top of hana DB explorer.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><STRONG>Step 14:</STRONG>&nbsp;Next run&nbsp;<STRONG>cds watch --profile hybrid</STRONG></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_105-1757916882856.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314202i05F4A6E47406A0C1/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_105-1757916882856.png" alt="Divya_Mandava_105-1757916882856.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Click on Products and Check your metadata is loaded or not.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Divya_Mandava_106-1757916882857.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/314203iFDA66BA083DA0086/image-size/medium?v=v2&amp;px=400" role="button" title="Divya_Mandava_106-1757916882857.png" alt="Divya_Mandava_106-1757916882857.png" /></span></FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Hurray!!! My data got loaded successfully.</FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">In next session lets perform CRUD Operations on S/4 Hana data from SAP Fiori app as Front end...Stay Tuned<span class="lia-unicode-emoji" title=":winking_face:">šŸ˜‰</span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><U>References:</U></FONT><BR /><BR /><FONT face="comic sans ms,sans-serif"><A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/" target="_blank" rel="noopener nofollow noreferrer">https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/</A></FONT><BR /><BR /><FONT face="comic sans ms,sans-serif"><A href="https://help.sap.com/fiori_bs2013/helpdata/en/a7/1564526ba1f25fe10000000a423f68/content.htm?no_cache=true" target="_blank" rel="noopener noreferrer">https://community.sap.com/t5/technology-q-a/creating-capm-application-with-node-js-by-using-s-4-hana...</A></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif"><A href="https://help.sap.com/fiori_bs2013/helpdata/en/a7/1564526ba1f25fe10000000a423f68/content.htm?no_cache=true" target="_blank" rel="noopener noreferrer">https://help.sap.com/fiori_bs2013/helpdata/en/a7/1564526ba1f25fe10000000a423f68/content.htm?no_cache...</A></FONT></P><P class="lia-align-left" style="text-align : left;"><BR /><FONT face="comic sans ms,sans-serif">Hope it’s helpful&nbsp;<span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></FONT></P><P class="lia-align-left" style="text-align : left;"><FONT face="comic sans ms,sans-serif">Thanks,</FONT><BR /><FONT face="comic sans ms,sans-serif">Divya MANDAVA.</FONT></P><P class="lia-align-left" style="text-align : left;">&nbsp;</P> 2025-10-13T08:11:54.622000+02:00 https://community.sap.com/t5/technology-blog-posts-by-members/sap-ui5-application-to-export-data-to-spreadsheet-from-sap-ui5-tree-table/ba-p/14249006 SAP UI5 application to Export Data to spreadsheet from SAP UI5 tree table (sap.ui.table.TreeTable) 2025-10-23T06:28:28.730000+02:00 sreevedavyasarangarajasre91 https://community.sap.com/t5/user/viewprofilepage/user-id/834934 <P><STRONG>Introduction</STRONG> :&nbsp;<BR /><SPAN>&nbsp; &nbsp; In this article, we are going to understand how to implement&nbsp;&nbsp;</SPAN><STRONG>export</STRONG><SPAN>&nbsp;functionality the</SPAN><STRONG><SPAN>&nbsp;</SPAN>sap.ui.table.TreeTable</STRONG><SPAN>&nbsp;table data to the&nbsp;</SPAN><STRONG>excel(Spreadsheet)</STRONG><SPAN>&nbsp;using&nbsp;&nbsp;</SPAN><STRONG>sap.ui.export.Spreadsheet</STRONG><SPAN>&nbsp;library. In this application, we are going to create an SAP UI5 free style application which has sample&nbsp;JSON&nbsp; data&nbsp; that has employees and their family details for the expense share percentage of the medical insurance (taken as an example) and that has been binded to the UI table and a toggle button has been added to trigger the export or downloading the excel data.</SPAN><BR /><BR /><STRONG>Procedure:&nbsp;</STRONG><BR />This is step by step guide to create a fiori application with SAP UI5 UI table and Export Button<STRONG><BR />Step 1: Create a Fiori Project</STRONG></P><P>To begin, create a new SAP Fiori project using the&nbsp;<STRONG>&nbsp;Fiori Generator Freestyle - Basic</STRONG>&nbsp;template. This will serve as the foundation for our application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sreevedavyasarangarajasre91_0-1761026930836.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/330059iEE3F334A4641AD01/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sreevedavyasarangarajasre91_0-1761026930836.png" alt="sreevedavyasarangarajasre91_0-1761026930836.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sreevedavyasarangarajasre91_1-1761026930838.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/330061iF1BDA0F0F094AF26/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sreevedavyasarangarajasre91_1-1761026930838.png" alt="sreevedavyasarangarajasre91_1-1761026930838.png" /></span></P><P>&nbsp;</P><P>Application Folder Structure:&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sreevedavyasarangarajasre91_2-1761026930840.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/330060iCB5EEBE655CB2AC3/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sreevedavyasarangarajasre91_2-1761026930840.png" alt="sreevedavyasarangarajasre91_2-1761026930840.png" /></span></P><P>&nbsp;</P><P><STRONG>Step 2 : Create a Dynamic Page , add UI Table Details and Add the sample JSON Data in controller&nbsp;</STRONG></P><P>&nbsp; In TreeTableView.view.xml, Add this code and add the Sample JSON data model object in the onInit() in TreeTableView.Controller.js .<BR /><BR />TreeTableView.view.xml</P><pre class="lia-code-sample language-markup"><code>&lt;mvc:View controllerName="com.example.treeexporttoexcel.controller.TreeTableView" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" xmlns:table="sap.ui.table" &gt; &lt;Page id="page" title="{i18n&gt;title}" &gt; &lt;content&gt; &lt;table:TreeTable id="employeeTreeTable" selectionMode="None" enableColumnReordering="false" rows="{ path : '/Employees', parameters :{ arrayNames:['Employees','FamilyMembers'] } }" &gt; &lt;table:extension&gt; &lt;OverflowToolbar&gt; &lt;Title text="{i18n&gt;title}" /&gt; &lt;ToolbarSpacer /&gt; &lt;ToggleButton id="export_btn" text="{i18n&gt;export_btn}" icon="sap-icon://excel-attachment" press="onExcelExport"/&gt; &lt;/OverflowToolbar&gt; &lt;/table:extension&gt; &lt;table:columns&gt; &lt;table:Column&gt; &lt;table:label&gt; &lt;Text text="{i18n&gt;employeeID}" /&gt; &lt;/table:label&gt; &lt;table:template&gt; &lt;Text text="{EmployeeID}" /&gt; &lt;/table:template&gt; &lt;/table:Column&gt; &lt;table:Column&gt; &lt;table:label&gt; &lt;Text text="{i18n&gt;employeeName}" /&gt; &lt;/table:label&gt; &lt;table:template&gt; &lt;Text text="{EmployeeName}" /&gt; &lt;/table:template&gt; &lt;/table:Column&gt; &lt;table:Column&gt; &lt;table:label&gt; &lt;Text text="{i18n&gt;designation}" /&gt; &lt;/table:label&gt; &lt;table:template&gt; &lt;Text text="{Designation} " /&gt; &lt;/table:template&gt; &lt;/table:Column&gt; &lt;table:Column&gt; &lt;table:label&gt; &lt;Text text="{i18n&gt;familyMemberName}" /&gt; &lt;/table:label&gt; &lt;table:template&gt; &lt;Text text="{MemberName}" /&gt; &lt;/table:template&gt; &lt;/table:Column&gt; &lt;table:Column&gt; &lt;table:label&gt; &lt;Text text="{i18n&gt;relation}" /&gt; &lt;/table:label&gt; &lt;table:template&gt; &lt;Text text="{Relationship}" /&gt; &lt;/table:template&gt; &lt;/table:Column&gt; &lt;table:Column&gt; &lt;table:label&gt; &lt;Text text="{i18n&gt;age}" /&gt; &lt;/table:label&gt; &lt;table:template&gt; &lt;Text text="{Age}" /&gt; &lt;/table:template&gt; &lt;/table:Column&gt; &lt;table:Column&gt; &lt;table:label&gt; &lt;Text text="{i18n&gt;expense}" /&gt; &lt;/table:label&gt; &lt;table:template&gt; &lt;Text text="{ExpenseShare}" /&gt; &lt;/table:template&gt; &lt;/table:Column&gt; &lt;/table:columns&gt; &lt;/table:TreeTable&gt; &lt;/content&gt; &lt;/Page&gt; &lt;/mvc:View&gt;</code></pre><P>TreeTable.controller.js</P><pre class="lia-code-sample language-javascript"><code>sap.ui.define([ "sap/ui/core/mvc/Controller", "sap/ui/model/json/JSONModel", "sap/m/MessageToast", "sap/ui/export/Spreadsheet" ], (Controller, JSONModel, MessageToast, Spreadsheet) =&gt; { "use strict"; return Controller.extend("com.example.treeexporttoexcel.controller.TreeTableView", { onInit() { var oView = this.getOwnerComponent(); var oDataModel = new JSONModel(); var aData = { "Employees": [ { "EmployeeID": "E001", "EmployeeName": "Ramesh", "Designation": "Manager", "FamilyMembers": [ { "MemberName": "Anitha", "Age": 35, "Relationship": "Wife", "ExpenseShare": 40 }, { "MemberName": "Rohith", "Age": 10, "Relationship": "Son", "ExpenseShare": 20 }, { "MemberName": "Ramanaiah", "Age": 65, "Relationship": "Father", "ExpenseShare": 20 }, { "MemberName": "Kamala", "Age": 60, "Relationship": "Mother", "ExpenseShare": 20 } ] }, { "EmployeeID": "E002", "EmployeeName": "Sumana", "Designation": "Developer", "FamilyMembers": [ { "MemberName": "Bhargav", "Age": 35, "Relationship": "Husband", "ExpenseShare": 20 }, { "MemberName": "Prasanna", "Age": 9, "Relationship": "Daughter", "ExpenseShare": 20 }, { "MemberName": "Ananda", "Age": 58, "Relationship": "Father", "ExpenseShare": 40 }, { "MemberName": "Srinidhi", "Age": 55, "Relationship": "Mother", "ExpenseShare": 20 } ] }, { "EmployeeID": "E003", "EmployeeName": "Manish", "Designation": "Auditor", "FamilyMembers": [ { "MemberName": "Bhumesh", "Age": 58, "Relationship": "Father", "ExpenseShare": 60 }, { "MemberName": "Rajeswari", "Age": 50, "Relationship": "Mother", "ExpenseShare": 40 } ] } ] } oDataModel.setData(aData); oView.setModel(oDataModel); }, }); }); </code></pre><P><STRONG>Step 3 : Implement the press event trigger of the Export To excel Button<BR /></STRONG>&nbsp; &nbsp;Add this logic in controller.js .&nbsp;"sap/ui/export/Spreadsheet" is the library should be used for excel export.<BR />_convertTreeForExport() is a recursive function to fetch the child records converts to flat structure and pushes to the export data where this export data is passed to the settings of the excel sheet data.<BR />TableView.controller.js</P><pre class="lia-code-sample language-javascript"><code> onExcelExport() { var oBundle = this.getOwnerComponent().getModel("i18n").getResourceBundle(); var oTable = this.byId("employeeTreeTable"); var oBinding = oTable.getBinding("rows"); var aData = oBinding.getModel().getProperty("/Employees"); var aExportData = this._convertTreeForExport(aData); var aCols = [ { label : oBundle.getText("employeeID"), property :"EmployeeID" }, { label : oBundle.getText("employeeName"), property :"EmployeeName" }, { label : oBundle.getText("designation"), property :"Designation" }, { label :oBundle.getText("familyMemberName"), property :"MemberName" }, { label : oBundle.getText("relation"), property :"Relationship" }, { label : oBundle.getText("age"), property :"Age" }, { label : oBundle.getText("expense"), property :"ExpenseShare" } ] var oSettings = { workbook: { columns: aCols, context: { sheetName: oBundle.getText("sheetName") } }, dataSource: aExportData, fileName: oBundle.getText("fileName"), worker: false }; var oSpreadsheet = new Spreadsheet(oSettings); oSpreadsheet.build().then(function () { MessageToast.show(oBundle.getText("successMessage")); }).finally(function () { oSpreadsheet.destroy(); }) }, _convertTreeForExport(aNodes, iLevel =0, aResult =[]){ // aNodes will have the tree table data // iLevel -&gt; current hierarchy depth initializes with 0 // aResult -&gt; collector array of the flattened data aNodes.forEach(oNode =&gt; { // taking shallow copy of each node to perform manipulations on the copy node without // disturbing the actual data node var oCopy = { ...oNode }; // deleting FamilyMembers nested structure to avoid recursion loops if not deleted it will throw // the maximum call stack exceeded error delete oCopy.FamilyMembers; oCopy.level = iLevel + 1; // creates a new field for visualize indentation parent, child, grandchild etc., oCopy.IndentedName = `${"".repeat(iLevel*4)}${oNode.name}` aResult.push(oCopy); if(oNode.FamilyMembers &amp;&amp; oNode.FamilyMembers.length &gt; 0){ this._convertTreeForExport(oNode.FamilyMembers, iLevel + 1, aResult); } }); return aResult }</code></pre><P><STRONG>Application Screen</STRONG>:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sreevedavyasarangarajasre91_3-1761027084786.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/330065iD2998D9246DD1A27/image-size/medium?v=v2&amp;px=400" role="button" title="sreevedavyasarangarajasre91_3-1761027084786.png" alt="sreevedavyasarangarajasre91_3-1761027084786.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sreevedavyasarangarajasre91_4-1761027084790.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/330066iA38049D75D1F41D9/image-size/medium?v=v2&amp;px=400" role="button" title="sreevedavyasarangarajasre91_4-1761027084790.png" alt="sreevedavyasarangarajasre91_4-1761027084790.png" /></span></P><P>&nbsp;</P><P>ExportData.xlsx</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sreevedavyasarangarajasre91_5-1761027084792.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/330064iEB0B7E12C7040BBA/image-size/medium?v=v2&amp;px=400" role="button" title="sreevedavyasarangarajasre91_5-1761027084792.png" alt="sreevedavyasarangarajasre91_5-1761027084792.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Git Link for reference<BR /><A href="https://github.com/RangarajasreeSV/tree-table-export-to-excel-ui5" target="_blank" rel="noopener nofollow noreferrer">https://github.com/RangarajasreeSV/tree-table-export-to-excel-ui5</A><BR /><BR /></P><P><STRONG>Conclusion:&nbsp;<BR /></STRONG>By following these steps, We can achieve the export functionality of the The SAP UI tree table data to the Excel spreadsheet.<BR /><BR /><BR />Thanks and Regards,<BR />Sree Vedavyasa Rangarajasree</P> 2025-10-23T06:28:28.730000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blog-posts-by-sap/ux-and-application-development-with-ai-at-asug-tech-connect-2025-a/ba-p/14252832 UX and application development with AI at ASUG Tech Connect 2025 a companion event to SAP TechEd 2025-10-24T18:39:30.067000+02:00 PeterSpielvogel https://community.sap.com/t5/user/viewprofilepage/user-id/543 <P>Read the post-event summary:&nbsp;<A href="https://community.sap.com/t5/enterprise-resource-planning-blog-posts-by-sap/asug-tech-connect-2025-summary-vibe-coding-ux-innovation-and-ai-everywhere/ba-p/14264755" target="_blank">https://community.sap.com/t5/enterprise-resource-planning-blog-posts-by-sap/asug-tech-connect-2025-summary-vibe-coding-ux-innovation-and-ai-everywhere/ba-p/14264755</A>&nbsp;</P><P>*****</P><P>This year, SAP TechEd has several options to allow you to learn about the latest SAP technologies and how to apply them to your organization. In addition to <A href="https://www.sap.com/events/teched/berlin.html" target="_blank" rel="noopener noreferrer">TechEd in Berlin</A> and the <A href="https://www.sap.com/events/teched/virtual.html" target="_blank" rel="noopener noreferrer">virtual</A> option, there are ā€œSAP TechEd On Tourā€ events in <A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/asug-tech-connect" target="_blank" rel="noopener nofollow noreferrer">Louisville</A>, <A href="https://events.masteringsap.com/sydney2025" target="_blank" rel="noopener noreferrer">Sydney</A>, and <A href="https://go4.events.sap.com/apj-savethedatetechedontourbangalore2025/en_us/home.html" target="_blank" rel="noopener noreferrer">Bangalore</A>. In this post, I’ll share the sessions on application development and user experience that we are presenting at ASUG Tech Connect in Louisville, Kentucky. As you would expect many have AI -assisted capabilities to make both business users and developers more productive.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PeterSpielvogel_0-1761323767225.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/332120i0FE9DE5752B30851/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="PeterSpielvogel_0-1761323767225.png" alt="PeterSpielvogel_0-1761323767225.png" /></span></P><P>&nbsp;</P><P>At ASUG Tech Connect, we have both lectures and hands-on workshops.</P><P><STRONG>Lectures </STRONG>are a chance to hear from SAP experts and have your questions answered in the room.</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=4d6f1642-85e2-4252-aaee-3af28873ec3b&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">Extensibility with ABAP Cloud and AI in SAP Cloud ERP</A> (Jens Weiler)<BR />Explore on-stack key user and developer tools in the ABAP Cloud development model, now enhanced with generative AI. Extend standard apps and manage custom ones in SAP Cloud ERP and explore transactional, analytical, and integration use cases like the extensibility AI assistant, queries for analytical SAP Fiori apps, and SQL services.<BR />Tuesday, November 4, 2025, 11:15 AM-12:05 PM</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=0691b1d5-cf70-45fd-bba8-b1043c308349&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">What’s Next: AI-First Innovations in SAP Cloud ERP and SAP Business Suite</A> (Ullas Holla, Peter Spielvogel)<BR />Get a fast-paced look at how SAP is embedding AI and delivering cross-suite innovations that break down silos and speed up decision-making. We’ll cover the latest highlights from releases of SAP Cloud ERP and SAP Business Suite—plus give you a sneak peek at what’s coming in 2026 and beyond.<BR />Tuesday, November 4, 2025, 3:30 PM-4:20 PM</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=3a567dd4-0c26-460b-b297-f600995503ef&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">Customer Show and Tell: From CDS View to Fiori Launchpad: Full-Stack Development with Eclipse ADT with Naturipe</A> (Brian Galloway, Dario Cruz)<BR />This session covers the end-to-end development workflow in the RISE with SAP S/4HANA Cloud, Private Edition environment using Eclipse ABAP Development Tools (ADT). It demonstrates how to define a data source and expose it via a CDS view, enabling consumption through SAP Fiori elements, Eclipse ADT, and Postman. A live demo illustrates the creation of a simple SAPUI5 application that consumes the same OData service and is deployed to the SAP Fiori Launchpad, showcasing full-stack integration from backend data modeling to frontend delivery.<BR />Wednesday, November 5, 2025, 8:00 AM-9:30 AM</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=49dcc5e0-c8c1-4a5d-b50b-0d207c4c9925&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">Using Generative AI to Accelerate SAP Fiori App Development</A> (Ullas Holla)<BR />AI changes everything, especially for developing business applications. See how SAP’s latest coding agents let you build SAP Fiori elements apps using a conversational interface. Create apps using Joule, including a CAP service, sample data, and SAPUI5 customizations.<BR />Wednesday, November 5, 2025, 4:10 PM-5:00 PM</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=c82cf156-8203-47a2-8515-1ca1ca2ba24b&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">Creating Better User Experiences with AI-Powered SAP Fiori Apps</A> (Peter Spielvogel)<BR />Discover how the latest AI features in SAP Fiori apps enhance user productivity and streamline onboarding. Starting with My Home and diving into commonly used SAP Fiori apps, see how AI simplifies information access, supports informed business decisions, and fosters seamless collaboration. Explore how conversational interactions are making SAP more intuitive than ever.<BR />Thursday, November 6, 2025, 4:15 PM-5:05 PM</P><P><STRONG>Hands-on workshops </STRONG>give you the opportunity to test the latest SAP innovations and gain access to the same tools and technologies we use to build apps for SAP S/4HANA.</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=f181974d-585f-43a9-97ef-30cd0574d949&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">Hands-on Lab: Get Started with ABAP Cloud for Classic ABAP Developers</A><BR />Familiar with classic ABAP development? Explore how similar development works with ABAP Cloud using the ABAP RESTful application programming model. Use ABAP Cloud to build cloud-ready business apps, services, and extensions that follow clean core principles by default—on SAP Business Technology Platform and in any edition of SAP S/4HANA.<BR />Tuesday, November 4, 2025, 1:10 PM-3:10 PM</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=2682f82f-fbb2-4989-a7f3-d6aa1548d32e&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">Hands-on Lab: Explore Joule for Developers, ABAP AI Capabilities</A><BR /><SPAN>Learn how to develop transactional applications using the ABAP RESTful application model in ABAP Cloud while leveraging Joule capabilities for ABAP developers.<BR /></SPAN>Wednesday, November 5, 2025, 8:00 AM-10:00 AM</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=aa78a571-9325-4161-a0b3-e9d87184b311&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">Hands-on Lab: Build On-Stack Extensions with ABAP Cloud in SAP Cloud ERP</A><BR />Discover how to build extensions, applications, and services with the ABAP Cloud development model, using the ABAP RESTful application programming model and generative AI. You can explore how to extend standard SAP applications, consume public SAP APIs, and build new apps and services from scratch while getting practical insights through exercises<BR />Wednesday, November 5, 2025, 1:00 PM-3:00 PM</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=fd8dd51b-0257-4fdf-b04e-7ba12e239d85&amp;shareLink=true" target="_blank" rel="noopener nofollow noreferrer">Hands-on Lab: Modernize Classic Extensions for Clean Core in SAP Cloud ERP Private</A><BR />Practice clean core extensibility in SAP Cloud ERP Private. Learn how to govern clean core development using the ABAP test cockpit, and how to use the ABAP Cloud development model and clean core extensibility principles to modernize your custom on-stack extensions.<BR />Thursday, November 6, 2025, 1:00 PM-3:00 PM</P><P><A href="https://events.asug.com/event/e7bd56fe-4c89-4e90-bc2c-ff75b4cc099b/agenda?session=5a05bb86-cbe4-4c70-86d0-60ba3d506617&amp;shareLink=true" target="_self" rel="nofollow noopener noreferrer">Discovery Workshop: Start Your AI Agent Journey by Exploring AI Agent Use Cases</A>&nbsp;<BR />In this discovery workshop, you will learn how AI Agents function and what makes a strong use case. You will identify and prioritize strategic AI Agent use cases for your business. For your selected use case, you will explore how AI Agent capabilities can address your specific business challenges and learn the next steps for designing and building an AI Agent using the SAP Agent Builder.<BR />Thursday November 6, 2025, 1:00 PM-3:00 PM</P><P>I hope you can join us.</P> 2025-10-24T18:39:30.067000+02:00 https://community.sap.com/t5/sap-learning-blog-posts/preparing-for-sap-c-cpe-here-s-how-i-m-studying-each-section-without/ba-p/14259621 Preparing for SAP C_CPE? Here’s How I’m Studying Each Section Without Feeling Overwhelmed 2025-11-04T15:23:22.635000+01:00 Chahat https://community.sap.com/t5/user/viewprofilepage/user-id/1574359 <P>Whenever I start learning something new, I like to have everything in order.<BR />Before I even open the first tutorial, I plan what I’ll study first, what comes next, and how I’ll track it.</P><P>Recently, I started preparing for the SAP C_CPE (SAP Certified Associate - Backend Developer -&nbsp;SAP Cloud Application Programming Model) certification. Since this exam covers a mix of BTP architecture, SAP BAS, CAP, Side by side extensions, Cloud Foundry &amp; Kyma Runtime&nbsp; it can easily feel like too much at once. So I created a simple structure to move step by step without feeling lost.</P><P>I began with the learning about BTP, and doing hands on by following SAP Learning Journeys, creating subaccount and adding entitlements and services (It gave me a very clear understanding of BTP architecture) and then Developing appliaction using high productivity tools of SAP BAS, Cloud Application Programming Model (CAP) because it’s the foundation of most topics in this certification. I’m spending around two weeks learning about CDS models, service layers and how everything connects in a CAP project. I’m following the official SAP Learning Journey<SPAN>&nbsp;</SPAN><A class="" title="https://learning.sap.com/certifications/sap-certified-associate-backend-developer-sap-cloud-programming-model" href="https://learning.sap.com/certifications/sap-certified-associate-backend-developer-sap-cloud-programming-model" target="_blank" rel="noreferrer noopener">https://learning.sap.com/certifications/sap-certified-associate-backend-developer-sap-cloud-program…...</A></P><P>My next focus is Cloud Foundry. I’ll spend about a week learning how to efficiently develop, run, and manage cloud-native applications on SAP BTP, Cloud Foundry Runtime.</P><P>After that, I’ll move to Side by side extention on BTP.&nbsp; This will cover&nbsp;deploying&nbsp; extension and integrating the app into SAP Build Work Zone.</P><P>The next stage is Developing Appliactions in Kyma Environment. I’ll take about two weeks to explore&nbsp;a comprehensive understanding of Kubernetes and&nbsp;to orchestrate the deployment of the applications in the cloud.&nbsp;</P><P>Finally, I’ll study Advanced Extensions with SAP Cloud SDK for about two more weeks. These are slightly advanced topics but very useful for understanding&nbsp;to&nbsp;develop and integrate Java, JavaScript, and TypeScript extension applications for SAP solutions like SAP S/4HANA Cloud Public Edition.</P><P>So in short, this will be my roadmap-</P><P><STRONG>Recommended Study Sequence</STRONG></P><P>Here’s the order I suggest, from foundational to more advanced :</P><P><STRONG>1.</STRONG><STRONG>Exploring SAP Business Technology Platform 5hrs (link :<SPAN>&nbsp;</SPAN><A class="" title="https://learning.sap.com/courses/exploring-sap-business-technology-platform" href="https://learning.sap.com/courses/exploring-sap-business-technology-platform" target="_blank" rel="noreferrer noopener">https://learning.sap.com/courses/exploring-sap-business-technology-platform)</A></STRONG></P><UL><LI>This gives you a broad overview of the entire platform (services, architecture, what BTP is). Good for building your base understanding.</LI><LI>So start here.</LI></UL><P><STRONG>2.Develop Full‑Stack Applications Using Productivity Tools in SAP Business Application Studio 8hrs (<A class="" title="https://learning.sap.com/learning-journeys/develop-full-stack-applications-using-productivity-tools-in-sap-business-application-studio" href="https://learning.sap.com/learning-journeys/develop-full-stack-applications-using-productivity-tools-in-sap-business-application-studio" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/develop-full-stack-applications-using-productivity-tools-in-sap-business-application-studio)</A></STRONG></P><P><STRONG>3.Develop Applications on SAP BTP, Cloud Foundry Runtime 4hrs(<A class="" title="https://learning.sap.com/learning-journeys/developing-applications-on-sap-btp-cloud-foundry-runtime" href="https://learning.sap.com/learning-journeys/developing-applications-on-sap-btp-cloud-foundry-runtime" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/developing-applications-on-sap-btp-cloud-foundry-runtime)</A></STRONG></P><UL><LI>The Cloud Foundry runtime is a major runtime environment in BTP. Understanding how to build and deploy there is critical.&nbsp;</LI></UL><P><STRONG>4.Build Side‑by‑Side Extensions on SAP BTP 8hrs (<A class="" title="https://learning.sap.com/learning-journeys/build-side-by-side-extensions-on-sap-btp" href="https://learning.sap.com/learning-journeys/build-side-by-side-extensions-on-sap-btp" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/build-side-by-side-extensions-on-sap-btp)</A></STRONG></P><UL><LI>After tooling and platform basics, you dive into extension scenarios (for example side-by-side extensions of S/4HANA using CAP). This aligns closely with CAP certification topics.</LI></UL><P><STRONG>5.Developing Applications in SAP BTP, Kyma Runtime 8hrs(<A class="" title="https://learning.sap.com/learning-journeys/developing-applications-in-sap-btp-kyma-runtime" href="https://learning.sap.com/learning-journeys/developing-applications-in-sap-btp-kyma-runtime" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/developing-applications-in-sap-btp-kyma-runtime)</A></STRONG></P><UL><LI>Kyma Runtime is more advanced (Kubernetes, microservices, event-mesh) and often sits on top of foundational knowledge.&nbsp;</LI></UL><P><STRONG>6.Develop Advanced Extensions with SAP Cloud SDK 11hrs (<A class="" title="https://learning.sap.com/learning-journeys/develop-advanced-extensions-with-sap-cloud-sdk" href="https://learning.sap.com/learning-journeys/develop-advanced-extensions-with-sap-cloud-sdk" target="_blank" rel="noreferrer noopener">https://learning.sap.com/learning-journeys/develop-advanced-extensions-with-sap-cloud-sdk)</A></STRONG></P><P>This is relatively specialized/advanced (SAP Cloud SDK, perhaps custom libraries, integrations). Once you’ve mastered the fundamentals above, you go here.</P><P>By the end of this plan, I’ll go through a short revision period with mock questions and quick notes from my learning.</P><P>This structured approach keeps my study plan clear and prevents me from feeling overwhelmed.<BR />I study for two to four hours a day which feels realistic, and the small milestones make it easier to stay consistent.</P><P>If you’re also preparing for C_CPE, it really helps to make your own sequence instead of jumping randomly between topics. The Learning Journeys are excellent resources, but having a personal roadmap makes a big difference.</P><P>I’d love to hear how others are preparing for this certification too.<BR />What topics are you finding most challenging so far and how are you managing the learning</P> 2025-11-04T15:23:22.635000+01:00 https://community.sap.com/t5/tooling-sap-build-blog-posts/develop-full-stack-abap-applications-in-sap-business-application-studio/ba-p/14264485 Develop Full-Stack ABAP Applications in SAP Business Application Studio 2025-11-11T09:36:43.801000+01:00 LauraEiraElias https://community.sap.com/t5/user/viewprofilepage/user-id/793763 <P>The SAP Business Application Studio provides several extensions designed to streamline the development of business applications for the SAP Intelligent Enterprise.</P><P>Among these extensions is the <STRONG>CDS Graphical Modeler</STRONG>, which enables SAP business developers to visually design Core Data Service (CDS) models. Previously, this extension was available for SAP Cloud Application Programming (CAP) development projects.</P><P>However, with the release of SAP BTP ABAP environment 2508 and SAP S/4HANA Cloud Public Edition 2508, corresponding to ABAP release 9.16, <STRONG>we have integrated the CDS Graphical Modeler with ABAP</STRONG>. This integration allows developers to create ABAP projects using the CDS Graphical Modeler to conveniently design ABAP-compliant CDS models for various scenarios in a remote ABAP system.</P><P>Ultimately, you can now build <STRONG>full-stack ABAP applications in SAP Business Application Studio</STRONG>. Once you've created an ABAP project, you can model business objects, generate ABAP CDS artifacts, integrate a user interface, and deploy your application to the appropriate environments, such as SAP BTP ABAP environment or SAP S/4HANA Cloud Public Edition.</P><P>Curious how this works? Check out our documentation on SAP Help Portal for detailed instructions: <A href="https://help.sap.com/docs/bas/developing-full-stack-abap-application-in-sap-business-application-studio-40adaba361e2469493d47bf9757e87c7/developing-full-stack-abap-application-in-sap-business-application-studio" target="_blank" rel="noopener noreferrer">Develop Full-Stack ABAP Applications in SAP Business Application Studio</A>.</P><P>But you’re short on time or just looking for a quick peek? Keep reading!&nbsp;<span class="lia-unicode-emoji" title=":winking_face:">šŸ˜‰</span><BR /><BR /></P><P><STRONG>1. Set Up Your Full-Stack ABAP Project:</STRONG></P><P>In the SAP Build Lobby, choose&nbsp;<STRONG>Create</STRONG>&nbsp;right above the project list and select&nbsp;<STRONG>Create</STRONG>&nbsp;from the drop-down menu. This opens the <STRONG>Create Project</STRONG> dialog.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Project creation screen with options for Application, Automated Process, and Business Site, highlighting Application with a &quot;Next&quot; button." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/338097iB0492A95FD78BB48/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Lobby_ProjectObjective.png" alt="Project creation screen with options for Application, Automated Process, and Business Site, highlighting Application with a &quot;Next&quot; button." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Project creation screen with options for Application, Automated Process, and Business Site, highlighting Application with a "Next" button.</span></span></P><P>In the&nbsp;<STRONG>Create Project</STRONG>&nbsp;dialog, select&nbsp;<STRONG>Application</STRONG>, click&nbsp;<STRONG>Next</STRONG>, select&nbsp;<STRONG>Full-Stack</STRONG>, advance with&nbsp;<STRONG>Next</STRONG>,&nbsp;and finally select&nbsp;<STRONG>Full-Stack ABAP (SAP Business Application Studio)</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="&quot;Full-Stack ABAP (SAP Business Application Studio)&quot; option is selected for creating a project with a &quot;Next&quot; button available." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/338100iBB2258CE34BD4209/image-size/large?v=v2&amp;px=999" role="button" title="Lobby_ProjectType.png" alt="&quot;Full-Stack ABAP (SAP Business Application Studio)&quot; option is selected for creating a project with a &quot;Next&quot; button available." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">"Full-Stack ABAP (SAP Business Application Studio)" option is selected for creating a project with a "Next" button available.</span></span></P><P>Advance with&nbsp;<STRONG>Next</STRONG> and specify the target ABAP system and configure the project details.<BR />Once the project is created, a <STRONG>Core Schema Notation Model</STRONG> is created in the remote ABAP system, and the remote ABAP package path is added to the workspace. The project then opens in the <STRONG>Storyboard</STRONG>.<BR /><BR /></P><P><STRONG>2. Model Your Application:</STRONG></P><P>From the <STRONG>Storyboard</STRONG>, you can model your ABAP application using the CDS Graphical Modeler to define and visualize your ABAP RESTful Application Programming Model (RAP) business objects, projections, and services relevant to your application development.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Storyboard offers options to create a business object, projection, service, or UI application with corresponding plus buttons." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/338101iF12DC88B69EC925A/image-size/large?v=v2&amp;px=999" role="button" title="GraphicalModeler_Storyboard.png" alt="Storyboard offers options to create a business object, projection, service, or UI application with corresponding plus buttons." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Storyboard offers options to create a business object, projection, service, or UI application with corresponding plus buttons.</span></span></P><P>&nbsp;<SPAN>Choose </SPAN><STRONG>+</STRONG><SPAN> in the </SPAN><STRONG>Create an entity</STRONG><SPAN> field to add the business object entities and define their relationship for the business service.</SPAN></P><P><STRONG>Note:</STRONG> Next to the Business Object modeler, you see your CSN file. This file resides on your ABAP system in the package you created previously. This file is used by the modeler to store your model. You should not edit this file manually since this can damage the integrity of the model.</P><P>Proceed with adding projections to specify which elements of a business object are exposed in the business service.</P><P>Add a business service and select which entities to expose in the service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Storyboard shows the relation of business objects, projections, and services and an option to create a new UI application." style="width: 997px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/338105iDBECCDDEF4D33B4F/image-size/large?v=v2&amp;px=999" role="button" title="GraphicalModeler.png" alt="Storyboard shows the relation of business objects, projections, and services and an option to create a new UI application." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Storyboard shows the relation of business objects, projections, and services and an option to create a new UI application.</span></span></P><P><SPAN>You are now all set to generate the ABAP backend artefacts from the modeled business objects, projections, and services. Close the Business Services modeler and return to the Storyboard.<BR /><BR /></SPAN></P><P><STRONG>3. Generate ABAP CDS Artifacts:</STRONG></P><P>Once you have modeled your ABAP application, you need to generate the ABAP development objects based on the data model created with the CDS Graphical Modeler, including DDIC tables, CDS views, metadata extensions, and service definitions.</P><P>From the <STRONG>Storyboard</STRONG>, choose <STRONG>Generate </STRONG>and follow the steps in the wizard to perform validation checks and complete the generation process.<BR />As a result, a RAP OData UI service is generated and available in the service catalog. On the ABAP side, the development objects are activated, and the service binding is published.<BR /><BR /></P><P><STRONG>4. Add a User Interface and Deploy Your Application:</STRONG></P><P>As a last step, you need to create a user interface for your RAP service by generating a&nbsp;SAP Fiori&nbsp;UI application that you can then deploy to an appropriate environment, such as SAP BTP ABAP Environment or SAP S/4HANA Cloud Public Edition.</P><P>From the <STRONG>Storyboard</STRONG>, choose <STRONG>+</STRONG> in the <STRONG>UI Applications</STRONG> field to open the SAP Fiori Generator wizard and provide the required inputs for your UI development. To deploy the application, choose <STRONG>Deploy</STRONG> from the <STRONG>Application Information</STRONG> tab.</P><P>&nbsp;</P><P>And that's it! You've successfully developed a full-stack ABAP application in SAP Business Application Studio—quickly and effortlessly in just a few steps.</P><P>What do you think of it? We would love to hear your thoughts! Share your feedback in the comments below.</P><P>&nbsp;</P> 2025-11-11T09:36:43.801000+01:00 https://community.sap.com/t5/sap-cap-blog-posts/send-email-in-sap-cap-after-deprecation-of-sap-cloud-sdk-mail-client/ba-p/14258127 Send Email in SAP CAP After Deprecation of @sap-cloud-sdk/mail-client 2025-11-13T05:30:34.813000+01:00 srk4 https://community.sap.com/t5/user/viewprofilepage/user-id/1576145 <H2 id="toc-hId-1763841412"><span class="lia-unicode-emoji" title=":rocket:">šŸš€</span> Introduction</H2><P>If you’ve recently upgraded your SAP CAP project, you might have noticed that the <CODE><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1862993">@Pa_Vi</a>-cloud-sdk/mail-client</CODE> package is now <STRONG>deprecated</STRONG>. This package was previously used to trigger emails from CAP applications via destinations on SAP BTP.</P><P>In this post, we’ll walk through a simple yet powerful alternative using <STRONG>Nodemailer</STRONG>, a Node.js-based email library, to send formatted HTML emails directly from CAP services — ideal for workflows such as <STRONG>failure notifications, approvals, or report generation alerts</STRONG>.</P><HR /><H2 id="toc-hId-1567327907">🧱 Prerequisites</H2><UL><LI>SAP CAP Project (Node.js-based)</LI><LI>Access to a Mail Server (Destination screenshot attached)</LI><LI>Basic knowledge of Node.js modules</LI><LI>Installed dependency:</LI></UL><PRE><CODE>npm install nodemailer axios @sap-cloud-sdk/connectivity</CODE></PRE><HR /><H2 id="toc-hId-1370814402"><span class="lia-unicode-emoji" title=":gear:">āš™ļø</span> Step 1: Set Up Nodemailer in CAP</H2><P>Create a utility file <CODE>srv/utils/mailService.js</CODE> and configure your mail transporter using the destination defined in SAP BTP.</P><P><STRONG>Authentication:</STRONG> OAuth2ClientCredentials</P><P>This means your mail destination uses a client ID and client secret to fetch an access token before sending mail — (Basic Authentication case we use username and password ).</P><PRE><CODE>const axios = require("axios"); const nodemailer = require("nodemailer"); const { getDestination } = require("@sap-cloud-sdk/connectivity"); async function sendEmail(mailService, to, subject, body) { try { // 1ļøāƒ£ Fetch destination details from BTP const destination = await getDestination({ destinationName: mailService.destination, }); if (!destination) { throw new Error("Destination not found."); } // 2ļøāƒ£ Extract required properties const host = destination.originalProperties.destinationConfiguration["mail.smtp.host"]; const port = destination.originalProperties.destinationConfiguration["mail.smtp.port"]; const user = destination.originalProperties.destinationConfiguration["mail.smtp.from"]; const tokenUrl = destination.tokenServiceUrl; const clientId = destination.clientId; const clientSecret = destination.clientSecret; const scope = destination.originalProperties.destinationConfiguration["scope"]; // 3ļøāƒ£ Get OAuth2 access token const tokenResponse = await axios.post( tokenUrl, new URLSearchParams({ client_id: clientId, client_secret: clientSecret, scope, grant_type: "client_credentials", }), { headers: { "Content-Type": "application/x-www-form-urlencoded" }, } ); const accessToken = tokenResponse.data.access_token; // 4ļøāƒ£ Create transporter for SMTP with OAuth2 const transporter = nodemailer.createTransport({ host, port: Number(port), secure: false, auth: { type: "OAuth2", user, accessToken, }, tls: { rejectUnauthorized: false, }, }); // 5ļøāƒ£ Mail details const mailOptions = { from: user, to, subject,<BR /> // text: "text message" use this when you want to send only text message html: body, }; // 6ļøāƒ£ Send mail await transporter.sendMail(mailOptions); console.log("āœ… Mail sent successfully"); return "Mail sent successfully"; } catch (err) { console.error("āŒ Mail send failed:", err.response?.data || err); throw new Error("Mail send failed: " + err.message); } } module.exports = { sendEmail };</CODE></PRE><HR /><H2 id="toc-hId-1174300897"><span class="lia-unicode-emoji" title=":envelope_with_arrow:">šŸ“©</span> Step 2: Create a Formatted HTML Template</H2><P>Here’s an HTML mail template for a simple <STRONG>Hello Message</STRONG>:</P><PRE><CODE>export const simpleHelloMailTemplate = (recipientName) =&gt; ` &lt;p&gt;Dear ${recipientName},&lt;/p&gt; &lt;p&gt; This is a &lt;b&gt;test email&lt;/b&gt; sent from the &lt;b&gt;SAP CAP Application&lt;/b&gt; using Nodemailer. &lt;/p&gt; &lt;p&gt; Best Regards,&lt;br&gt; Shahrukh &lt;/p&gt; `;</CODE></PRE><HR /><H2 id="toc-hId-977787392">🧠 Step 3: Trigger Email in CAP Event or Error Handler</H2><P>Now call this mail utility in your CAP event handler whenever a workflow or process fails or requires a notification:</P><PRE><CODE>import { sendEmail } from "./utils/mailService.js"; import { simpleHelloMailTemplate } from "./utils/mailTemplate.js"; this.on("sendEmail", async (req) =&gt; { try { const html = simpleHelloMailTemplate("SRK"); await sendEmail( { destination: "mail-service-destination" }, // your destination name "yourEmail@sap.com", "Hello Mail", html ); return "āœ… Mail sent successfully!"; } catch (err) { console.error("āŒ Mail sending failed:", err); req.error(500, "Mail Not Sent"); } });</CODE></PRE><HR /><H2 id="toc-hId-781273887"><span class="lia-unicode-emoji" title=":locked_with_key:">šŸ”</span> Step 4: Secure OAuth2 Credentials</H2><P>Since this setup already uses <STRONG>OAuth2 Client Credentials</STRONG> from the BTP destination, you don’t need to store or manage usernames/passwords. The client ID and client secret are securely stored within your destination configuration on BTP, and tokens are fetched dynamically at runtime.<BR /><BR /><STRONG>Attached Destination screenshot for reference</STRONG></P><P><span class="lia-unicode-emoji" title=":white_heavy_check_mark:">āœ…</span> <STRONG>No manual secret management required!</STRONG> Just make sure your CAP application is bound to the destination service instance so it can fetch credentials using the SAP Connectivity service.</P><HR /><H2 id="toc-hId-584760382"><span class="lia-unicode-emoji" title=":glowing_star:">🌟</span> Result</H2><P>Once implemented, you’ll receive a <STRONG>well-formatted email notification</STRONG> like this:</P><P><STRONG>Subject:</STRONG> Hello Mail</P><BLOCKQUOTE>Dear SRK,<BR />This is a <STRONG>test email</STRONG> sent from the <STRONG>SAP CAP Application</STRONG> using Nodemailer.<BR /><STRONG>Best Regards,</STRONG><BR />Shahrukh<BR /><BR />If you’ve received this message, your mail configuration is working perfectly! <span class="lia-unicode-emoji" title=":party_popper:">šŸŽ‰</span></BLOCKQUOTE><HR /><H2 id="toc-hId-388246877">🧩 Key Takeaways</H2><UL><LI><CODE><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1862993">@Pa_Vi</a>-cloud-sdk/mail-client</CODE> is deprecated — use <STRONG>Nodemailer</STRONG> with OAuth2 for modern email handling.</LI><LI>No need to manage passwords manually; BTP destinations handle tokens securely.</LI><LI>Integrate HTML mail templates for clear and professional messages.</LI><LI>Ideal for CAP event-driven notifications and failure alerts.</LI></UL><HR /><H2 id="toc-hId-191733372"><span class="lia-unicode-emoji" title=":light_bulb:">šŸ’”</span> Conclusion</H2><P>This approach gives you <STRONG>full control and flexibility</STRONG> over how emails are formatted, triggered, and secured within SAP CAP projects — without relying on deprecated packages. It’s lightweight, production-ready, and works seamlessly on <STRONG>SAP BTP Cloud Foundry</STRONG> environments using <STRONG>OAuth2-based authentication</STRONG>.</P><HR /><H3 id="toc-hId-124302586"><span class="lia-unicode-emoji" title=":label:">šŸ·</span>ļø Suggested Tags</H3><P>SAP CAP, SAP BTP, Email Integration, Workflow Automation, Nodemailer, CAPM, Cloud Application Programming Model, SAP Developers</P> 2025-11-13T05:30:34.813000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/joule-in-sap-build-code-can-now-create-freestyle-ui5-apps/ba-p/14264445 Joule in SAP Build Code can now create freestyle UI5 apps 2025-11-13T15:58:38.496000+01:00 AndreasKunz https://community.sap.com/t5/user/viewprofilepage/user-id/189706 <P>Last year, we&nbsp;<A href="https://community.sap.com/t5/technology-blog-posts-by-sap/joule-for-freestyle-sapui5-development-in-sap-build-code/ba-p/13650005" target="_blank">introduced the SAPUI5 extension for the Joule coding assistant in SAP Build Code</A> and <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/now-ai-helps-you-developing-sapui5-applications/ba-p/13649767" target="_blank">wrote about how to use it</A>. Over time, it has received more features, like the AI-supported <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/sapui5-meets-typescript-a-smooth-migration-journey-with-joule/ba-p/13958872" target="_blank">conversion of UI5 apps to TypeScript</A>&nbsp;and setting up new pages and the respective navigation.</P><P>The latest improvement, available from November 2025, lets you&nbsp;<STRONG>create new freestyle UI5 apps</STRONG> according to your requirements. The feature is not absolutely groundbreaking, as there are other tools doing a similar job like the <A href="https://github.com/ui5-community/generator-easy-ui5" target="_self" rel="nofollow noopener noreferrer">Easy-UI5 templates</A> and the recently published <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server/ba-p/14200825" target="_self">UI5 MCP Server</A>. But:</P><OL><LI>It brings the functionality right to the fingertips of developers using SAP Build Code—no other tools needed.</LI><LI>It extends the template capabilities beyond what the Easy-UI5 templates provide.</LI><LI>Implementing it within the Build Code Joule environment yielded interesting insights and further improvements. More on this in my <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/inside-joule-lessons-from-building-an-ai-coding-assistant-for-sap-build/ba-p/14264447" target="_self">other article</A>.</LI></OL><P>&nbsp;</P><H1 id="toc-hId-1635565993">The feature</H1><P>Joule makes specific features available using "slash commands". The new one is <FONT face="andale mono,times">/ui5-create-app</FONT>. When you open the Joule panel in SAP Build Code and start typing <FONT face="andale mono,times">/ui5</FONT>, you might see it suggested, as well as other UI5 features. But which commands appear depends on the context. While some are only available <EM>within</EM> UI5 apps, this new feature is only available when you are <EM>not</EM> in a UI5 app. It won't be available e.g. in a workspace which has a ui5.yaml at top-level, or when you have a UI5 controller open in the code editor!</P><P class="lia-align-center" style="text-align: center;">&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndreasKunz_0-1762783668270.png" style="width: 368px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/338077i84DC1A2BF1286B93/image-dimensions/368x637/is-moderation-mode/true?v=v2" width="368" height="637" role="button" title="AndreasKunz_0-1762783668270.png" alt="AndreasKunz_0-1762783668270.png" /></span></P><P>Try it in a workspace with a <A href="https://cap.cloud.sap/docs/about/" target="_self" rel="nofollow noopener noreferrer">CAP</A> project at root level, so you see some of its magic immediately: as soon as you finish typing the slash command or select it from the suggestion list, another suggestion list with sample prompts comes up. These are based on the actual data structures of the CAP project.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AndreasKunz_1-1762360829864.png" style="width: 470px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336598i81FF249A52996728/image-dimensions/470x310?v=v2" width="470" height="310" role="button" title="AndreasKunz_1-1762360829864.png" alt="AndreasKunz_1-1762360829864.png" /></span></P><P>This means you can simply select the desired entity and service, then the actual full prompt will automatically be entered into the field(but of course you can also write your own prompt!). This full prompt includes even more details than the short prompt in the suggestion list did.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AndreasKunz_2-1762360943920.png" style="width: 426px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336599iE4DE35FC0A4A5C5B/image-dimensions/426x146?v=v2" width="426" height="146" role="button" title="AndreasKunz_2-1762360943920.png" alt="AndreasKunz_2-1762360943920.png" /></span></P><P>Note that the prompt includes a concrete list of properties and the service URL. This information has been extracted from CAP using good old deterministic code—no Large Language Model (LLM) used. In fact, this is an area where AI would likely make up ("hallucinate") property names which do not actually exist. Acquiring all this information in advance in a deterministic way not only gives you the chance to review and adjust the prompt with little effort, but also leads to a more reliable functionality overall.</P><P>The paradigm: use LLMs (Large Language Models) where they excel—processing and "understanding" language—and use deterministic code for hard facts and well-defined operations, where possible.&nbsp;</P><P>The AI part starts soon enough, when you submit this prompt. It proposes a specific app setup, highlighting the key choices for you to review. For example, it will suggest a sensible name (if you didn't provide one) or suggest the best location inside the project structure (which it knows from its context).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AndreasKunz_3-1762361609611.png" style="width: 419px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336631iE19FE81A151525DB/image-dimensions/419x840?v=v2" width="419" height="840" role="button" title="AndreasKunz_3-1762361609611.png" alt="AndreasKunz_3-1762361609611.png" /></span></P><P>But you can do more than just review those <EM>parameters</EM>.&nbsp;A suggested version of the app has already been created behind the scenes, so you can scroll through the 30+ files listed in the box at the bottom and click those you want to preview. If the result already looks fine to you—perfect. Just press the "Accept Application" button and the app will be set up in your workspace.</P><H1 id="toc-hId-1439052488">Refining the app</H1><P>But of course you are free to continue the conversation and tweak the result. The LLM in Joule will put its true strength at work, mapping its understanding of your request to what the underlying template can do. No need to type "change parameter x to value y": LLMs also understand you when you are less formal and direct. Look at the below screenshot for an example: it responds almost too compassionately to the developer who is "hesitant about new technologies" and recreates the app with changed parameters—using JavaScript instead of TypeScript. The user did not even mention the programming language specifically, but still the LLM decided that changing it would be the best way to accommodate the app code to the user's preferences.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AndreasKunz_4-1762362503152.png" style="width: 453px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336633i0D1C4439BEED17A1/image-dimensions/453x307?v=v2" width="453" height="307" role="button" title="AndreasKunz_4-1762362503152.png" alt="AndreasKunz_4-1762362503152.png" /></span></P><P>At this stage, you can refine the setup of the initial app—within the limits imposed by the application template used behind the scenes, which only has limited degrees of freedom. We want this <EM>initial</EM> app to be robust and follow best-practice code. We also want those 30+ files to be created in <EM>one</EM> fast step. Hence the code is not written by AI, but by using predefined template files we are back in the world of traditional deterministic coding here. You have plenty of opportunity for using AI later on to extend the app from this solid starting point.</P><P>Joule is aware of its limits in this step, so it will not say "yes" to every request you throw at it. Asking for "a trillion tables" or other features beyond the template scope will be politely rejected.</P><P class="lia-align-center" style="text-align: center;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndreasKunz_5-1762362958997.png" style="width: 444px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336641i7605E4A29BE73A9E/image-dimensions/444x350?v=v2" width="444" height="350" role="button" title="AndreasKunz_5-1762362958997.png" alt="AndreasKunz_5-1762362958997.png" /></span></P><H1 id="toc-hId-1242538983">Accepting the app</H1><P>When the preview looks good and you have pressed the <span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndreasKunz_0-1762363122124.png" style="width: 120px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336642i611B7F59F8108180/image-dimensions/120x28?v=v2" width="120" height="28" role="button" title="AndreasKunz_0-1762363122124.png" alt="AndreasKunz_0-1762363122124.png" /></span>&nbsp;button, the job of this <FONT face="andale mono,times">/ui5-create-app</FONT> assistant is done. After app setup has finished (which may take a while because the dependencies need to be installed), it concludes with hints how to continue, including instructions on how to start the app in your respective workspace setup.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AndreasKunz_1-1762363265947.png" style="width: 433px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336644i28549BEB965E64F1/image-dimensions/433x492?v=v2" width="433" height="492" role="button" title="AndreasKunz_1-1762363265947.png" alt="AndreasKunz_1-1762363265947.png" /></span></P><P>The created application looks roughly like this, with a table and a detail form below. Note: only OData V4 services are supported at this time.</P><P class="lia-align-center" style="text-align: center;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndreasKunz_0-1762439788736.png" style="width: 852px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336941iA1EC68BDFAA86432/image-dimensions/852x529?v=v2" width="852" height="529" role="button" title="AndreasKunz_0-1762439788736.png" alt="AndreasKunz_0-1762439788736.png" /></span></P><P>You get this kind of UI when you specify an OData V4 service and entity. If you don't, then there is just a generic "Hello World" success page instead.</P><P>Of course this UI structure might not be exactly what is desired in the app or even requested in the prompt, but this is what the template can do. When an OData service and entity but no properties are requested, then the tool tries to detect existing properties. If this fails, the table will be empty (no columns at all)—but Joule's success message should then mention this.</P><H1 id="toc-hId-1046025478">After creation</H1><P>As the assistant suggests, please move to the other Joule assistants&nbsp;<FONT face="andale mono,times">/ui5</FONT> and <FONT face="andale mono,times">/ui5-create-page</FONT> for developing the app further. In order to create more apps, reset the conversation with the&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndreasKunz_2-1762363377944.png" style="width: 23px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/336645iB9B5AF8D09E44E81/image-dimensions/23x23?v=v2" width="23" height="23" role="button" title="AndreasKunz_2-1762363377944.png" alt="AndreasKunz_2-1762363377944.png" /></span>&nbsp;button at the top of the Joule pane.</P><P>Because&nbsp;<FONT face="andale mono,times">/ui5-create-app</FONT> <EM>knows</EM> that it cannot modify the app or re-create it, it will politely guide you to the options you have, no matter what your request is. It may even give instructions on how to achieve the given goal within a UI5 app, but it will not be able to modify the code and it will make this clear when needed.</P><H1 id="toc-hId-849511973">AI Learnings</H1><P>While there is not much more to say about this feature—simply try it!—there are some facts and learnings about its implementation! If you are curious, head over to the second part of this blog post:&nbsp;<A href="https://community.sap.com/t5/technology-blog-posts-by-sap/inside-joule-lessons-from-building-an-ai-coding-assistant-for-sap-build/ba-p/14264447" target="_self">Inside Joule: Lessons from building an AI coding assistant for SAP Build.</A></P> 2025-11-13T15:58:38.496000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/inside-joule-lessons-from-building-an-ai-coding-assistant-for-sap-build/ba-p/14264447 Inside Joule: Lessons from building an AI coding assistant for SAP Build 2025-11-13T16:00:38.750000+01:00 AndreasKunz https://community.sap.com/t5/user/viewprofilepage/user-id/189706 <H1 id="toc-hId-1635565995">Flashback: the feature</H1><P>This is a <EM>"making of"</EM> article about the implementation of the new&nbsp;<FONT face="andale mono,times">/ui5-create-app</FONT> slash command available within Joule in SAP Build Code. In short, this new feature enables a conversation between AI assistant and application developer about a new freestyle UI5 application to build, with a full-fledged best-practice application starting point as result.</P><P>To see screenshots of this feature in action and understand it better, feel invited to read <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/joule-in-sap-build-code-can-now-create-freestyle-ui5-apps/ba-p/14264445" target="_self">my previous blog post</A>.&nbsp;<SPAN>If you are just here for the background and AI-related learnings—go ahead!</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-1439052490">General considerations</H1><P>With open‑ended prompting, users aren’t restricted to predefined interactions. The user could ask for <EM>anything</EM>. In contrast to traditional programming, a prompt input field can’t be handled with a sprawling web of if/else logic trying to cover all possible use-cases. Attempting this will lead to a frustrating user experience where the user often gets an "I do not understand your request".</P><P>Some developers try to mimic this traditional programming pattern when crafting prompts and contexts for LLMs, telling an LLM "<EM>if the user asks for x, then answer y</EM>". Instead, as demonstrated below, tell the LLM what it <EM>can</EM> and <EM>cannot</EM> do and give it a goal to achieve. It's "smart" enough to figure out a suitable response to whatever the user will throw at it.</P><P>&nbsp;</P><H1 id="toc-hId-1242538985">A fundamental choice</H1><P>Looking at this specific feature in the specific environment, the implementation options on the table were (for a variety of reasons) these two:</P><UL><LI>Either just provide a system prompt (a prompt that is added behind the scenes in addition to what the user typed) without interfering with the specific prompts and replies entered during the conversation.</LI><LI>Or adopt a new way of creating an "agentic" multi-step execution plan. Similar to a guided activity, this would allow phases of data collection, possibly in different steps for different data, then an app creation step and so forth.</LI></UL><P>Surely "agentic" and "well-defined steps" sound good for app creation from a template, no? In fact, the initial implementation started like this, but it was soon apparent that this would neither provide the expected flexibility nor allow for a truly intelligent app creation experience. Defining phases in which to acquire specific information and having the application code created at a specific stage in this process did not feel right. The user would still feel like clicking through a traditional template creation process, as something specific was expected from the user at every stage, instead of giving the user the freedom to tweak every aspect at every stage. The true power of AI, on the other hand, would be totally underused.</P><P>But then again... just a system prompt and that's it? No file read access to explore the environment, no dynamically updated instructions? Is this enough for an intelligent coding assistant?</P><P>&nbsp;</P><H1 id="toc-hId-1046025480">Creating an "AI agent" out of nothing</H1><P>Consider the now common definition of an "AI agent" which has settled over the course of this year: it's nothing more than "<A href="https://www.researchgate.net/publication/395657404_An_LLM_Agent_Runs_Tools_in_a_Loop_to_Achieve_a_Goal_A_Comprehensive_Semantic_Framework_for_Defining_AI_Agents_and_Agentic_Systems_by_Simon_Willison_and_Leading_Research_Laboratories" target="_self" rel="nofollow noopener noreferrer"><EM>an LLM with tools, called in a loop to achieve a goal</EM></A>". The chat conversation provided by Joule can be our loop, an application template with its parameters is the tool and the goal of assisting the developer to create an app can be stated in the system prompt. Of course a real <EM>autonomous</EM> agent would require the loop to run without user interaction, but for this feature a loop involving the user is just right.</P><P>The system prompt used for this feature literally includes: "<EM>Y<SPAN>ou help users create new UI5 applications by analyzing&nbsp;</SPAN><SPAN>their requirements and filling the project template parameters. [...]&nbsp;</SPAN><SPAN>Your goal is to gather all necessary information to create a new UI5 application.&nbsp;</SPAN></EM><EM><SPAN>The application will be generated from a template which&nbsp;</SPAN></EM><SPAN><EM>has only one page and a hardcoded UI, but can optionally display data from an OData V4 service. [...]&nbsp;</EM></SPAN><EM><SPAN>You cannot create the application yourself, but the user will see a preview...</SPAN></EM><SPAN>". There you have it: the goal and the tool!</SPAN></P><P><SPAN>It then goes on with some behavioral hints and of course a detailed description of what exactly the template parameters do. Finally, it requests <EM>each reply</EM> to contain a JSON object with the best choice of template parameters according to the current understanding of the user request. The JSON object could look like this example:</SPAN></P><DIV><PRE><SPAN>{<BR /> </SPAN><SPAN> "appNamespace": "com.myorg.myapp",</SPAN> <BR /><SPAN> "basePath": "/path/to/workspace",</SPAN><SPAN><BR /> "createAppDirectory": true,<BR /> </SPAN><SPAN> "framework": "SAPUI5",</SPAN><BR /> <SPAN> "frameworkVersion": "1.136.0",</SPAN><BR /> <SPAN> "author": "John Doe",</SPAN><BR /> <SPAN> "oDataV4Url": "https://services.odata.org/TripPinRESTierService/(S(s5xrj1t51r41s3ooztsynysq))/",</SPAN><BR /> <SPAN> "oDataEntitySet": "Airports",</SPAN><BR /> <SPAN> "entityProperties": ["Name", "Address"],</SPAN><BR /> <SPAN> "runNpmInstall": true,</SPAN><BR /> <SPAN> "initializeGitRepository": true,</SPAN><BR /> <SPAN> "typescript": true</SPAN><BR /> <SPAN>}</SPAN></PRE></DIV><P><SPAN>This JSON object is removed from the LLM response before displaying it, then the application is generated with these parameters, so the user can accept it or request changes. In an environment where tools with a well-defined interface like MCP servers are not enabled, this JSON object as part of the conversation is how the integration with the templating tool is achieved. It's basically a use-case-tailored alternative to MCP.&nbsp; A note to make this very clear: this environment is <EM>not</EM> the official SAP Joule assistant running inside end-user applications, as it is now also being enabled for development by customers. Instead, it is a sort of predecessor implementation specifically available in SAP Build Code since spring 2024 and about to be replaced by advanced solutions. So do not draw conclusions about SAP Joule based on this article.</SPAN></P><P>Some of these parameters in the JSON object are more important than others with regards to the user explicitly influencing them or having to accept them. Whether the app code is generated as TypeScript or JavaScript is something the user should not be surprised with <EM>after</EM> accepting the app! On the other hand, the author name, which is only written into package.json, can be reliably defaulted to the logged-in user name and also very easily changed later on if needed. Hence, the parameter descriptions explain not only <EM>what</EM> they do, but also how much the user should be bothered with them. As result, Joule usually does not even mention half of the parameters, thus keeping the conversation focused.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AndreasKunz_0-1762953076854.png" style="width: 455px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339533i8B53DC0B3A50E913/image-dimensions/455x912/is-moderation-mode/true?v=v2" width="455" height="912" role="button" title="AndreasKunz_0-1762953076854.png" alt="AndreasKunz_0-1762953076854.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-849511975"><SPAN>How to stop the agent</SPAN></H1><P><SPAN>Regarding the state <EM>after</EM> the app was accepted, the prompt explains "</SPAN><EM><SPAN>AFTER the user has generated the application, you **MUST NOT** continue discussing parameters for generation, but rather [...] i</SPAN><SPAN>n particular by referring the user to the '/ui5' command for most requests or '/ui5-create-page'&nbsp;</SPAN><SPAN>for adding pages to the app, because they are much better than you in developing features, as they have the capability to automatically select a suitable context of files.</SPAN></EM><SPAN>".</SPAN></P><P><SPAN>This means the transition in the overall process between refining parameters and "no more changes possible" is not a hardcoded step or denoted by changing the system prompt, but rather explained up-front. That's enough. Can you talk Joule into proposing another set of parameters after the app was accepted? Maybe. But its <EM>normal</EM> behavior is just right: it will explain that the app can not be created again without restarting the conversation. Nevertheless, there are also non-AI guardrails in place to prevent the app from being generated again, thus causing trouble.</SPAN></P><P><SPAN>All in all, we shape Joule’s behavior by explaining the templating tool and its limits, by stating the goal and desired behavior towards this goal, and by explaining the general flow, in particular the state after app acceptance. This is enough to guide it to a suitable reaction for whatever the user requests.</SPAN></P><P><SPAN>Even if the user insists like this:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AndreasKunz_0-1762962593436.png" style="width: 457px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/339649i5AAFEF728BB75C51/image-dimensions/457x620/is-moderation-mode/true?v=v2" width="457" height="620" role="button" title="AndreasKunz_0-1762962593436.png" alt="AndreasKunz_0-1762962593436.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-652998470"><SPAN>Context, context, context!</SPAN></H1><P><SPAN>To make the entire feature really user-friendly, however, it is not sufficient to write a good prompt, but the context must also provide enough information to the LLM to allow for informed decisions. Hence, information like the list of project root files and folders, whether a Git repository is present, plus CAP service/entity/property info, and more, are gathered (e.g. using the <A href="https://www.npmjs.com/package/@sap-ux/project-access" target="_blank" rel="noopener nofollow noreferrer">@sap-ux/project-access</A>&nbsp;package). This knowledge is provided as prompt context behind the scenes or used in another way (like as content of the suggested prompts). This makes Joule aware of the environment it acts in, leading to better responses, like automatically avoiding app names that would conflict with existing folder names.</SPAN></P><P><SPAN>Agentic coding assistants like Cline, GitHub Copilot, Cursor etc. usually have the ability to read files and execute shell commands as needed to understand their environment. In this pure user request + LLM response environment this might have been a bit harder to build. Basically, more tools could have been defined, e.g. by describing other JSON object structures for invoking them. But control would not so easily return to the LLM until after the user has entered another prompt. Or, there could have been one "preprocessor" LLM request asking for needed files, like it is done for the other&nbsp;<FONT face="andale mono,times">/ui5*</FONT>&nbsp;commands.</SPAN></P><P><SPAN>But for a narrow scenario like app creation this wasn't necessary. Collecting the most relevant information up front not only provides sufficient context, but also improves performance and reliability by avoiding repeated tool calls and unpredictable LLM loops.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-456484965"><SPAN>In-response prompting</SPAN></H1><P><SPAN>The real-world context, however, changes over time. Specifically, once the app is created and accepted, there are new additional files present.</SPAN></P><P><SPAN>When developing the <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server/ba-p/14200825" target="_self">UI5 MCP server</A>, we observed that the agentic AI tool (e.g. Cline) using the MCP server often decided to inspect the new app directory tree after creation, causing several LLM roundtrips which cost time and tokens. Or it would run "npm install" again, even though it had already been executed. Or it would make specific coding errors very often in subsequent modifications. </SPAN></P><P><SPAN>To avoid this, we extended the response of the MCP server after creating the app. Normally, it contains just the success message. <A href="https://github.com/UI5/mcp-server/blob/a5a06382e0b3b8b39beaf1f40e95f2d887b3b50b/src/tools/create_ui5_app/createSuccessMessage.ts#L30-L66" target="_self" rel="nofollow noopener noreferrer">But now it includes</A> a full list of generated files, it states that "npm install" was already executed and it instructs how to prevent those coding errors. Basically, the MCP server response added further updated instructions to the conversation context. </SPAN></P><P><SPAN>Exactly the same principle was applied in this new Joule feature. While there is no autonomous agent loop in this case which would inspect the new files, the knowledge <EM>which</EM> files were created can be valuable for the conversation with the user. And while the<FONT face="andale mono,times">/ui5-create-app</FONT> command doesn't modify any code after app creation (thus avoiding the coding issues), facts like whether "npm install" was already executed, or whether the created UI5 Table in the MainView is lacking any columns, are useful for giving the user hints how to continue. Therefore, the context is extended by adding a hidden message to the conversation history.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-259971460"><SPAN>Traditional coding has its place(s)</SPAN></H1><DIV><DIV><SPAN>In addition to the process of context collection, deterministic coding is also used <EM>after</EM> the app has been accepted by the user for making the app consumption as smooth as possible. When inside a CAP project, it for example ensures that the <EM>cds-plugin-ui5</EM> is added as dependency. This allows the UI5 tooling, including TypeScript transpilation of the UI5 app when needed, to run as part of the "cds watch" or "npm start" script of the CAP project itself.</SPAN></DIV><DIV>&nbsp;</DIV><DIV><SPAN>Also, this dependency and all the UI5 app dependencies need to be installed. Unfortunately, there is a wide range of options and specific setups which might be used for dependency management in the already existing app. Probably&nbsp;<EM>npm</EM>? With or without workspaces? <EM>yarn</EM>? <EM>pnpm</EM>? Others? The code detects what is used and tries to cover the 95% case. The initial setup might not be complete in <EM>every</EM> scenario, but for most users it will ā€œjust work,ā€ providing a good developer experience.</SPAN></DIV><DIV><SPAN>AI is fine and all, but sometimes one has to go the extra mile and do some coding.</SPAN></DIV><DIV>&nbsp;</DIV></DIV><H1 id="toc-hId-63457955"><SPAN>Key takeaways</SPAN></H1><UL><LI><SPAN>Use deterministic code where reasonable (because the space of possibilities is bounded and a deterministic and quick result is beneficial) .</SPAN></LI><LI><SPAN>Use LLMs for language understanding or dealing with an unpredictable range of possible requests.</SPAN></LI><LI><SPAN>Don't try to "program" the LLM with an if/else prompt, but treat it like an intelligent human: state the goal, options and boundaries—and let it decide on its own.</SPAN></LI><LI><SPAN>Provide solid pre-collected context so the LLM can make good decisions reliably.</SPAN></LI></UL><P>&nbsp;</P><H1 id="toc-hId--133055550"><SPAN>P.S.:</SPAN></H1><P><SPAN>For those who prefer graphics over text to gain an understanding of something, here is a depiction of the overall information flow inside this feature.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AndreasKunz_0-1763130462734.png" style="width: 931px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340805i5BAE698E5DCD6369/image-dimensions/931x498/is-moderation-mode/true?v=v2" width="931" height="498" role="button" title="AndreasKunz_0-1763130462734.png" alt="AndreasKunz_0-1763130462734.png" /></span></P><P>&nbsp;</P> 2025-11-13T16:00:38.750000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/quickly-deploy-a-sample-cap-application-to-btp/ba-p/14259731 Quickly Deploy a Sample CAP Application to BTP 2025-11-15T08:50:59.556000+01:00 AminAlmarsafy https://community.sap.com/t5/user/viewprofilepage/user-id/157095 <H2 id="toc-hId-1763876994">Prerequisites</H2><P>Before you deploy your sample SAP Cloud Application Programming Model (CAP) app to SAP Business Technology Platform (BTP), ensure you have the following in place:</P><OL><LI><P><STRONG>BTP Account (Trial or Paid)</STRONG><BR />You’ll need a BTP global account with a sub-account in the Cloud Foundry environment.</P><UL><LI><P>You can register for a free trial at the SAP website. <SPAN class=""><SPAN class=""><A class="" href="https://developers.sap.com/group.btp-setup.html" target="_blank" rel="noopener noreferrer">BTP Trial</A></SPAN></SPAN></P></LI></UL></LI><LI><P><STRONG>Development Environment: SAP Business Application Studio or VS Code alternative + CLI tools &amp; MBT&nbsp;</STRONG></P><UL><LI><P>If using Business Application Studio, follow SAP’s onboarding tutorial: ā€œSet Up SAP Business Application Studio for Developmentā€. <SPAN class=""><SPAN class=""><A href="https://developers.sap.com/tutorials/appstudio-onboarding..html" target="_blank" rel="noopener noreferrer">Setup Business Application Studio</A></SPAN></SPAN></P></LI><LI><P>Otherwise you may use VS Code (or another IDE) with the following command-line tools:</P><UL><LI><P><STRONG>Cloud Foundry CLI (cf CLI)</STRONG> – Install instructions here: <A class="" href="https://docs.cloudfoundry.org/cf-cli/install-go-cli.html" target="_self" rel="nofollow noopener noreferrer">CF CLI</A></P></LI><LI><P><STRONG>Cloud MTA Build Tool (mbt)</STRONG> – Install and usage information here: <A class="" href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-developer-guide-for-cloud-foundry-multitarget-applications-sap-web-ide-full-stack/cloud-mta-build-tool-mbt?locale=en-US" target="_self" rel="noopener noreferrer">MBT</A></P></LI></UL></LI><LI><P>Make sure you’ve configured your CLI to target your BTP subaccount/space (cf api, cf login, cf target). <SPAN class=""><SPAN class=""><A class="" href="https://learning.sap.com/learning-journeys/developing-applications-on-sap-btp-cloud-foundry-runtime/interacting-with-the-sap-btp-cloud-foundry-runtime-via-the-cf-cli" target="_blank" rel="noopener noreferrer">CLI API &amp; Login</A></SPAN></SPAN></P></LI></UL></LI><LI><P><STRONG>HANA DB Instance (or Trial) for your DB</STRONG><BR />Your CAP app will typically require a database backend.</P><UL><LI><P>Get started with the HANA Cloud trial using this tutorial:&nbsp;&nbsp;<SPAN class=""><SPAN class=""><A class="" href="https://developers.sap.com/group.hana-cloud-get-started-1-trial.html" target="_blank" rel="noopener noreferrer">HANA Trial</A></SPAN></SPAN></P></LI></UL></LI></OL><P><SPAN class=""><SPAN class="">After completing all the prerequisites we can start build the application</SPAN></SPAN></P><P><SPAN class=""><SPAN class="">Start a Terminal in you IDE of choice</SPAN></SPAN></P><P><SPAN class=""><SPAN class="">generate the project</SPAN></SPAN></P><pre class="lia-code-sample language-bash"><code>cds init bookshop --add sample</code></pre><P>Add hana, mta, xsuaa and workzone</P><pre class="lia-code-sample language-bash"><code>cds add hana,mta,xsuaa,workzone --for production</code></pre><P>run npm install in all the applications, the sample bookshop has 2 Fiori Elements applications that we'll need to run npm i in their folder as well as in the project folder</P><pre class="lia-code-sample language-bash"><code>cd app/admin-books npm i cd ../browse npm i cd ../.. npm i</code></pre><P>now we can build the project</P><pre class="lia-code-sample language-bash"><code>mbt build</code></pre><P>if all goes well then we'll get an mtar file inside the mta_archive folder</P><P>before deploying we'll need to make sure that we're logged into cloud foundry</P><pre class="lia-code-sample language-bash"><code>cf login</code></pre><P>now we deploy</P><pre class="lia-code-sample language-bash"><code>cf deploy mta_archives/*.mtar</code></pre><P>and that is it you should now have a CAP service and 2 fiori elements applications deployed on BTP.</P><P>You can then create an instance of Work Zone and surface the application through it or build applications that use the cap application as its backend (This is what I intend to do in upcoming blogs)</P> 2025-11-15T08:50:59.556000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/the-art-and-science-of-sapui5-in-sap-build-insights-from-sap-teched-2025/ba-p/14269053 The Art and Science of SAPUI5 in SAP Build: Insights from SAP TechEd 2025 2025-11-17T05:35:29.369000+01:00 OliverGraeff https://community.sap.com/t5/user/viewprofilepage/user-id/4124 <P><SPAN>At SAP TechEd Berlin 2025, we had the opportunity to present ā€œThe Art and Science of SAPUI5 in SAP Build.ā€ The deep dive session explores how SAPUI5, SAP’s strategic UI framework, is transforming user experiences and developer efficiency across SAP. This blog post shares key takeaways from the session and questions from the audience.<BR /><STRONG>If you’ve missed it, watch the session recording in <A href="https://www.sap.com/events/teched/virtual/flow/sap/tev25/catalog-virtual/page/catalog/session/1752166265407001r3vW" target="_blank" rel="noopener noreferrer">AD106v | The art and science of SAPUI5 in SAP Build</A>.</STRONG></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Berlin.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340648iB3B47006232C8262/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="Berlin.png" alt="Berlin.png" /></span></SPAN></P><H1 id="toc-hId-1635711133"><SPAN><BR />The Art of SAPUI5 in SAP Fiori User Experience</SPAN></H1><P><SPAN>SAP’s approach to user experience (UX) centers on making applications easier and more enjoyable to use, helping users accomplish their tasks with greater efficiency and satisfaction. The framework enables the SAP Fiori design system to evolve seamlessly across SAP solutions, providing flexible tools for developers to efficiently build apps using SAP Build Code.</SPAN></P><H3 id="toc-hId-1697363066"><SPAN>SAP Web Components: Bridging Frameworks and Enhancing Extensibility</SPAN></H3><P><SPAN>SAP Web Components extend the capabilities of SAPUI5, to other programming model, such as Angular, React, or Vue. This interoperability supports a consistent and streamlined UX throughout the SAP portfolio. SAP Web Components can now also be easily consumed in SAPUI5 apps just like regular controls. Going forward, SAP plans to provide new UI elements as SAP Web Components, minimizing the effort required for adopting new standards and ensuring compliance with SAP guidelines and modern Web standards.</SPAN></P><H3 id="toc-hId-1500849561"><SPAN>SAPUI5 is leading is the Way in Accessibility</SPAN></H3><P><SPAN>SAPUI5 is at the forefront of accessibility, with recent implementations (SAPUI5 1.136 and UI5 Web Components 2.9.0) aligned to the latest Web Content Accessibility Guidelines (WCAG) 2.2. This commitment ensures that applications built with SAPUI5 are inclusive and accessible to users worldwide, meeting diverse needs and regulatory requirements.</SPAN></P><H1 id="toc-hId-1046170618"><SPAN><BR />The Science of SAPUI5 in SAP Build</SPAN></H1><P><SPAN>SAP Build is SAP’s unified solution to build apps and extensions, automations, agents and digital workspaces. SAP Build helps to increase developer productivity and to future-proof IT investments by leveraging proven technologies like SAPUI5, SAP Fiori elements, CAP and ABAP Cloud.</SPAN></P><H3 id="toc-hId-1107822551"><SPAN>Extending SAP standard apps with SAPUI5 flexibility and Clean Core</SPAN></H3><P><SPAN>SAPUI5 flexibility enables upgrade-safe, clean core extensions with intuitive low-code/no-code tools for different personas: end users, key users, and developers. New capabilities include consistent text changes for field labels and a ā€œWhat's Newā€ / ā€œUI Adaptation Tourā€ for key users. Developers creating adaptation projects benefit from a "Replace original tile option and coding efficiency with TypeScript and Joule.</SPAN></P><P><SPAN>The new SAPUI5 runtime repository accelerates patch updates, improves startup performance, and supports zero-downtime deployments.</SPAN></P><H3 id="toc-hId-911309046"><SPAN>Future-Proofing apps with UI5 best practices and UI5 linter</SPAN></H3><P><SPAN>Technical debt and legacy code can slow down innovation within SAP Fiori projects. Here the UI5 linter helps finding and fixing the usage of deprecated APIs and making your code is ready for upcoming SAPUI5 versions. </SPAN>The new SAPUI5 / OpenUI5 legacy-free version helps validating how compliant your code is to UI5 best practices, i.e. ensuring your code is state of the art and future-proof.</P><H3 id="toc-hId-714795541"><SPAN>AI-Powered Development: Joule Copilot and MCP server </SPAN></H3><P><SPAN>AI is revolutionizing SAPUI5 development. The Joule copilot accelerates app creation, view and control addition, code formatting, migration to TypeScript and much more. The UI5 MCP server enables agentic AI app development in SAP Build, combining generative AI with algorithmic logic if the UI5 linter.</SPAN></P><H1 id="toc-hId-260116598"><SPAN><BR />Key Takeaways</SPAN></H1><UL><LI><SPAN>SAPUI5 delivers a streamlined, consistent UX across SAP Business Suite, driving both user satisfaction and business outcomes.</SPAN></LI><LI><SPAN>SAP Build and SAPUI5 flexibility empower organizations to extend SAP standard apps efficiently, future-proofing their investments.</SPAN></LI><LI><SPAN>AI-powered tools accelerate development and let you future-proof your apps with UI5 best practices.</SPAN></LI></UL><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot 2025-11-14 at 13.00.20.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/340650iC451FC9D8A460C8C/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-11-14 at 13.00.20.png" alt="Screenshot 2025-11-14 at 13.00.20.png" /></span></SPAN></P><P>&nbsp;</P><H1 id="toc-hId-63603093"><SPAN>Selected questions from the audience</SPAN></H1><P><SPAN><STRONG>Q:</STRONG> Is Using VS code still recommended or the SAP Build for development</SPAN></P><P><SPAN><STRONG>A:&nbsp;</STRONG> In addition to the turnkey solution of SAP Build running on SAP BTP, </SPAN>SAP plans to focus on releasing development tools on the VS Code marketplace. VS Code is the number-one IDE worldwide, especially among web, cloud, and full-stack developers. Investing more in VS Code helps SAP meet developers where they are, making it easier for new developers to adopt SAP technologies (such as CAP, SAP BTP, SAPUI5, ABAP Cloud).<BR /><BR /></P><P><SPAN><STRONG>Q:</STRONG> New controls will be components from now on?</SPAN></P><P><SPAN><STRONG>A:</STRONG> Exactly, SAP plans to deliver most new UI components as Web Components, which can be use across any Web framework, including SAPUI5.<BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> How AI compatibilities work in more complex application</SPAN></P><P><SPAN><STRONG>A:</STRONG> Beyond Generative AI capabilities, agentic development tool (e.g. with the <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server/ba-p/14200825" target="_blank">UI5 MCP server</A>) offer impressive results for developing complex (fullstack) apps, from design up to deployment. You might want to check out <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/inside-joule-lessons-from-building-an-ai-coding-assistant-for-sap-build/ba-p/14264447" target="_blank">Inside Joule: Lessons from building an AI coding assistant for SAP Build</A> for an inside view.<BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> What is the benefit of using the Web Components from the example compared to sap.m.Input?</SPAN></P><P><SPAN><STRONG>A:</STRONG> Please continue using SAPUI5 controls if they fulfil your needs. There is no change to that. Most upcoming, new UI elements will be provided as Web Component, serving *all* technology stacks, including SAPUI5.<BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> What are Components bringing when compared to Classic controls if we are using UI5 only approach</SPAN></P><P><SPAN><STRONG>A:</STRONG> see above<BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> how will be the future scope of Fiori elements applications over ui5, do both will have same scope</SPAN></P><P><SPAN><STRONG>A:</STRONG> SAP Fiori elements is an option to develop SAPUI5 app more efficiently. SAP recommends using as much SAP Fiori elements as possible and as much freestyle SAPUI5 as needed. This is what we do in SAP as well. Check out the <A href="https://ui5.sap.com/1.141.0/test-resources/sap/fe/core/fpmExplorer/index.html#/overview/introduction" target="_blank" rel="noopener noreferrer">SAP Fiori Development Portal</A> on more details.<BR /><BR /></SPAN></P><P><STRONG>Q</STRONG><SPAN><STRONG>:</STRONG> What would be best approach to extend freestyle standard Fiori apps? Also, will adaptation projects have more extension powers?</SPAN></P><P><SPAN><STRONG>A:</STRONG> <A href="https://help.sap.com/viewer/UI5_Flex" target="_blank" rel="noopener noreferrer">SAPUI5 flexibility</A> to the strategic way to extend/adapt SAPUI5 apps. The UI5 team continues to invest a lot in this area, as it is top priority for many partners/customers. SAPUI5 flexibility covers freestyle SAPUI5 as well as apps built with SAP Fiori elements. Adaptation projects offer best capabilities to create future-proof app extensions.<BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> Will the Build Code Joule CoPilot also support the Vibe Coding with MCP in the future?</SPAN></P><P><SPAN><STRONG>A:</STRONG> Yes, SAP plans for vibe coding tools (incl. MCP servers) in SAP Build to empower business users to create application prototypes and start new SAP solutions without heavy coding knowledge.<BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> SAP develops SAPUI5 while promoting low-code tools like RAP, CAP, and key user adaptations. Isn’t it inconsistent to advance the core framework while encouraging less direct UI5 development?</SPAN></P><P><SPAN><STRONG>A:</STRONG> Key user adaptation as well as metadata- / annotation-driven apps on RAP/CAP (using SAP Fiori elements) all use SAPUI5 as their UI technology. Innovations ā€˜in the UI’ are built in SAPUI5, benefitting all these models. Also, there remains a strong use case for a freestyle SAPUI5 implementation approach for apps which cannot follow the patterns of SAP Fiori elements.<BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> As a partner, if we build an SAPUI5 application and deploy it to customer systems, can SAPUI5 flexibility be used to create customer specific adaption projects for it?</SPAN></P><P><SPAN><STRONG>A:</STRONG> This is planned for Q4/2025: <A href="https://roadmaps.sap.com/board?PRODUCT=73554900100800001361&amp;range=CURRENT-LAST#Q4%202025;INNO=000D3AAC9DD21FD0A6A548C104441945" target="_blank" rel="noopener noreferrer">Developer adaptation: enabling customer and partner applications for adaptation projects</A> (As always with forward-looking statements, this is subject to change.)<BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> The build errors just prove you are really building live and not faking it. </SPAN><span class="lia-unicode-emoji" title=":slightly_smiling_face:">šŸ™‚</span></P><P><SPAN><STRONG>A:</STRONG> Right. Not sure though whether Tommy enjoyed the moment <span class="lia-unicode-emoji" title=":winking_face:">šŸ˜‰</span><BR /><BR /></SPAN></P><P><SPAN><STRONG>Q:</STRONG> Now that CDS support UI annotations will UI5 become obsolete?</SPAN></P><P><SPAN><STRONG>A:</STRONG> Definitely not. SAPUI5 remains SAP’s strategic UI framework. SAP Fiori elements with its annotations is built on SAPUI5. The annotations control what SAPUI5 is showing.</SPAN></P> 2025-11-17T05:35:29.369000+01:00 https://community.sap.com/t5/technology-blog-posts-by-members/create-a-cap-application-with-sap-hana-cloud-from-scratch-and-deploy-to/ba-p/14270378 Create a CAP Application with SAP HANA Cloud from Scratch and Deploy to Cloud Foundry in SAP BTP 2025-11-19T12:24:37.057000+01:00 MaheshSirsat1708 https://community.sap.com/t5/user/viewprofilepage/user-id/1495997 <P><STRONG>Create a CAP Application with SAP HANA Cloud from Scratch and Deploy to Cloud Foundry</STRONG></P><P>This guide walks you through the complete lifecycle of building a CAP (Cloud Application Programming) application, connecting it to SAP HANA Cloud, and deploying it to SAP BTP Cloud Foundry.</P><P>&nbsp;</P><P><STRONG>1.Create SAP BTP Trial Account </STRONG></P><P>You need a trial account to access Cloud Foundry, SAP HANA Cloud, and all BAS development tools.</P><P>&nbsp;</P><P><STRONG>2. Subscribe to SAP Business Application Studio (BAS)</STRONG></P><P>If not subscribed:</P><OL><LI>Go to <STRONG>SAP BTP Cockpit → Instances and Subscriptions</STRONG></LI><LI>Subscribe to <STRONG>Business Application Studio</STRONG></LI></OL><P>&nbsp;</P><P><STRONG>3. Create CAP Project Skeleton (Using Template Wizard)</STRONG></P><P>Open BAS and press:</P><P><STRONG>Ctrl + Shift + P → Template Wizard</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_0-1763211188026.png" style="width: 715px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341554i3993176A4F10ACB7/image-dimensions/715x268?v=v2" width="715" height="268" role="button" title="MaheshSirsat1708_0-1763211188026.png" alt="MaheshSirsat1708_0-1763211188026.png" /></span></P><P>&nbsp;</P><P>Then follow these steps:</P><P><STRONG>3.1 Select Template</STRONG></P><UL><LI>Select: <STRONG>CAP Project Generator</STRONG></LI><LI>Click <STRONG>Next</STRONG></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_1-1763211188035.png" style="width: 792px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341556i63819F2D42A2C78B/image-dimensions/792x305?v=v2" width="792" height="305" role="button" title="MaheshSirsat1708_1-1763211188035.png" alt="MaheshSirsat1708_1-1763211188035.png" /></span></P><P>&nbsp;</P><P><STRONG>3.2 Provide Project Details</STRONG></P><UL><LI><STRONG>Project Name</STRONG> → Any name of your choice</LI><LI><STRONG>Choose Database</STRONG> → SQLite (default)</LI><LI><STRONG>Choose Deployment Target</STRONG> → Cloud Foundry</LI></UL><P><STRONG>Note:</STRONG><BR />Do <STRONG>not</STRONG> select SAP HANA Cloud here.<BR />We first deploy the application with SQLite, then add HANA later from terminal.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_2-1763211188038.png" style="width: 808px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341555i2438C022DD442EE1/image-dimensions/808x400?v=v2" width="808" height="400" role="button" title="MaheshSirsat1708_2-1763211188038.png" alt="MaheshSirsat1708_2-1763211188038.png" /></span></P><P>&nbsp;</P><P><STRONG>3.3 Choose Runtime Capabilities</STRONG></P><P>Select these productive services:</P><UL><LI>XSUAA</LI><LI>SAP BTP Connectivity Service</LI><LI>SAP BTP Destination Service</LI><LI>SAP BTP Application Router</LI></UL><P>Click <STRONG>Finish</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_3-1763211188042.png" style="width: 832px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341558i637385D60D1DCAAB/image-dimensions/832x557?v=v2" width="832" height="557" role="button" title="MaheshSirsat1708_3-1763211188042.png" alt="MaheshSirsat1708_3-1763211188042.png" /></span></P><P>This creates the complete folder structure including:</P><UL><LI>/db</LI><LI>/srv</LI><LI>/app</LI><LI>mta.yaml</LI><LI>Security and deployment artifacts</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_4-1763211188044.png" style="width: 626px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341557iE62AF70D55D19C84/image-dimensions/626x462/is-moderation-mode/true?v=v2" width="626" height="462" role="button" title="MaheshSirsat1708_4-1763211188044.png" alt="MaheshSirsat1708_4-1763211188044.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>4. Modify MTA Configuration</STRONG></P><P>Cloud Foundry sometimes fails when resource names contain dynamic interpolation (org/space).</P><P>Removing them ensures deployment simplicity.</P><P>Open mta.yaml and remove:</P><pre class="lia-code-sample language-abap"><code>-${org}-${space}</code></pre><P>from all resource names.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_5-1763211188053.png" style="width: 805px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341559i627892299805720D/image-dimensions/805x668?v=v2" width="805" height="668" role="button" title="MaheshSirsat1708_5-1763211188053.png" alt="MaheshSirsat1708_5-1763211188053.png" /></span></P><P>&nbsp;</P><P><STRONG>5. Create a Sample CAP Model</STRONG></P><P><STRONG>5.1 Define Database Schema</STRONG></P><P>Open /db/schema.cds:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_6-1763211188054.png" style="width: 792px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341560iB9DB9D0EC9B90F71/image-dimensions/792x310?v=v2" width="792" height="310" role="button" title="MaheshSirsat1708_6-1763211188054.png" alt="MaheshSirsat1708_6-1763211188054.png" /></span><STRONG>&nbsp;</STRONG></P><P><STRONG>5.2 Create Service Definition</STRONG></P><P>Open /srv/service.cds:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_7-1763211188057.png" style="width: 800px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341561i963DB326381F59F6/image-dimensions/800x378?v=v2" width="800" height="378" role="button" title="MaheshSirsat1708_7-1763211188057.png" alt="MaheshSirsat1708_7-1763211188057.png" /></span></P><P>Now, you have a simple end-to-end data + service model to validate local and cloud deployment.</P><P>&nbsp;</P><P><STRONG>6. Test the CAP Application Locally</STRONG></P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>cds w</code></pre><P>Now, CAP runs using <STRONG>SQLite</STRONG>, allowing quick testing without any external services.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_8-1763211188059.png" style="width: 819px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341562iB233AC76E44A3D8E/image-dimensions/819x172?v=v2" width="819" height="172" role="button" title="MaheshSirsat1708_8-1763211188059.png" alt="MaheshSirsat1708_8-1763211188059.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_9-1763211188063.png" style="width: 840px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341565iCF7BF7CEF9F8EC06/image-dimensions/840x401?v=v2" width="840" height="401" role="button" title="MaheshSirsat1708_9-1763211188063.png" alt="MaheshSirsat1708_9-1763211188063.png" /></span></P><P>&nbsp;</P><P><STRONG>&nbsp;</STRONG><STRONG>7. Deploy the CAP Application (SQLite Mode)</STRONG></P><OL><LI>Right-click <STRONG>mta.yaml → Build MTA Project</STRONG></LI><UL><LI>Or use:&nbsp;</LI></UL></OL><pre class="lia-code-sample language-abap"><code>mbt build</code></pre><P>&nbsp; &nbsp; &nbsp; &nbsp; 2. Login to Cloud Foundry<BR /><STRONG>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ctrl + Shift + P → CF Login</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_10-1763211188066.png" style="width: 796px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341563iD4221ED927318F5B/image-dimensions/796x545?v=v2" width="796" height="545" role="button" title="MaheshSirsat1708_10-1763211188066.png" alt="MaheshSirsat1708_10-1763211188066.png" /></span></P><P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3. Deploy the generated .mtar</P><OL><UL><LI>Right-click .mtar → <STRONG>Deploy MTA Archive</STRONG></LI><LI>Or use:</LI><LI>cf deploy yourfile.mtar</LI></UL></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_11-1763211188068.png" style="width: 808px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341564iD79AE9B0405CBAD7/image-dimensions/808x521?v=v2" width="808" height="521" role="button" title="MaheshSirsat1708_11-1763211188068.png" alt="MaheshSirsat1708_11-1763211188068.png" /></span></P><P>Your CAP app runs in Cloud Foundry with SQLite.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_12-1763211188071.png" style="width: 804px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341567iD0A5D438A28F1971/image-dimensions/804x374?v=v2" width="804" height="374" role="button" title="MaheshSirsat1708_12-1763211188071.png" alt="MaheshSirsat1708_12-1763211188071.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_13-1763211188078.png" style="width: 815px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341569i7384482A1FF44144/image-dimensions/815x446?v=v2" width="815" height="446" role="button" title="MaheshSirsat1708_13-1763211188078.png" alt="MaheshSirsat1708_13-1763211188078.png" /></span></P><P>Next, we will connect it to real SAP HANA Cloud</P><P>&nbsp;</P><P><STRONG>8. Create SAP HANA Cloud Instance</STRONG></P><P>Go to:</P><P><STRONG>SAP BTP Cockpit → Instances &amp; Subscriptions → Create</STRONG></P><P>Choose:</P><UL><LI><STRONG>Service:</STRONG> SAP HANA Cloud</LI><LI><STRONG>Plan:</STRONG> hana</LI><LI><STRONG>Environment:</STRONG> Cloud Foundry</LI><LI><STRONG>Instance Name:</STRONG> hanaDB</LI></UL><P>Set the DB <STRONG>administrator password</STRONG> → required for Data Explorer.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_37-1763212044767.png" style="width: 812px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341616i73CF9005761D119B/image-dimensions/812x483/is-moderation-mode/true?v=v2" width="812" height="483" role="button" title="MaheshSirsat1708_37-1763212044767.png" alt="MaheshSirsat1708_37-1763212044767.png" /></span></P><P>And press on Create instance.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_38-1763212044776.png" style="width: 829px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341615i85BC894E78731A9A/image-dimensions/829x114/is-moderation-mode/true?v=v2" width="829" height="114" role="button" title="MaheshSirsat1708_38-1763212044776.png" alt="MaheshSirsat1708_38-1763212044776.png" /></span></P><P>It will take estimated 10-15min</P><P>It creates the actual HANA database where CAP HDI containers will be deployed.</P><P>&nbsp;</P><P><STRONG>9. Subscribe to SAP HANA Cloud Tools</STRONG></P><P>Without this subscription, you cannot access the DB instance UI.</P><P>Go to:<BR /><STRONG>Instances &amp; Subscriptions → Subscribe → SAP HANA Cloud Tools</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_39-1763212044789.png" style="width: 820px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341617iFE4DE6127FC661D3/image-dimensions/820x525/is-moderation-mode/true?v=v2" width="820" height="525" role="button" title="MaheshSirsat1708_39-1763212044789.png" alt="MaheshSirsat1708_39-1763212044789.png" /></span></P><P><STRONG>Assign Roles</STRONG></P><P>Under <STRONG>Users</STRONG>, assign all required HANA Cloud roles.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_40-1763212044792.png" style="width: 805px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341618i1C6579B51E0F2CAF/image-dimensions/805x246/is-moderation-mode/true?v=v2" width="805" height="246" role="button" title="MaheshSirsat1708_40-1763212044792.png" alt="MaheshSirsat1708_40-1763212044792.png" /></span></P><P>Sign out → Sign in again.</P><P>&nbsp;</P><P><STRONG>10. Open SAP HANA Data Explorer</STRONG></P><P>Click the HANA instance → <STRONG>Open SAP HANA Database Explorer</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_41-1763212044799.png" style="width: 808px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341620iF3871331C45792B7/image-dimensions/808x322/is-moderation-mode/true?v=v2" width="808" height="322" role="button" title="MaheshSirsat1708_41-1763212044799.png" alt="MaheshSirsat1708_41-1763212044799.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_42-1763212044805.png" style="width: 828px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341619i711B3D612C721832/image-dimensions/828x379/is-moderation-mode/true?v=v2" width="828" height="379" role="button" title="MaheshSirsat1708_42-1763212044805.png" alt="MaheshSirsat1708_42-1763212044805.png" /></span></P><P>First login:</P><UL><LI>Username: <STRONG>DBADMIN</STRONG> (or the username shown under "Administrator")</LI><LI>Password: the one you entered during instance creation</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_43-1763212044807.png" style="width: 764px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341621iE24EF3F18E293978/image-dimensions/764x449/is-moderation-mode/true?v=v2" width="764" height="449" role="button" title="MaheshSirsat1708_43-1763212044807.png" alt="MaheshSirsat1708_43-1763212044807.png" /></span></P><P><STRONG>If you forgot your DB username</STRONG></P><P>Open:<BR /><STRONG>SAP HANA Cloud Administration → Overview</STRONG><BR />Your administrator username will be displayed there.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_44-1763212044810.png" style="width: 816px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341623iC7A2A9964208518C/image-dimensions/816x504/is-moderation-mode/true?v=v2" width="816" height="504" role="button" title="MaheshSirsat1708_44-1763212044810.png" alt="MaheshSirsat1708_44-1763212044810.png" /></span><STRONG>&nbsp;</STRONG></P><P>Now, You have direct access to schemas, HDI containers, and database objects.</P><P>&nbsp;</P><P><STRONG>11. Open HDI Container Section in SAP HANA Database Explorer</STRONG></P><P>Inside SAP HANA Database Explorer:</P><OL><LI>Click the <STRONG>ā€œ+ā€</STRONG> icon</LI><LI>Choose <STRONG>Cloud Foundry</STRONG></LI><LI>Log in to your CF environment</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_45-1763212044812.png" style="width: 767px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341622iEBCF5AC922B047CC/image-dimensions/767x706/is-moderation-mode/true?v=v2" width="767" height="706" role="button" title="MaheshSirsat1708_45-1763212044812.png" alt="MaheshSirsat1708_45-1763212044812.png" /></span></P><P>&nbsp;</P><OL><LI>From the list → choose <STRONG>Instance Type: HDI Container</STRONG></LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_46-1763212044815.png" style="width: 786px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341627i735E91669E2E8C74/image-dimensions/786x511/is-moderation-mode/true?v=v2" width="786" height="511" role="button" title="MaheshSirsat1708_46-1763212044815.png" alt="MaheshSirsat1708_46-1763212044815.png" /></span></P><P>At this stage, your CAP HDI container will <STRONG>NOT appear yet</STRONG>, because we have not created it.</P><P>&nbsp;</P><P><STRONG>12. Add HANA Support to CAP Application</STRONG></P><P>Run the following commands in BAS terminal:</P><pre class="lia-code-sample language-abap"><code>cds add hana npm i</code></pre><P><STRONG>What these commands do</STRONG></P><UL><LI><STRONG>cds add hana</STRONG></LI><UL><LI>Generates HANA-specific configuration</LI><LI>Creates HDI deployment artifacts</LI><LI>Prepares the project to run on SAP HANA instead of SQLite</LI></UL><LI><STRONG>npm i</STRONG></LI><UL><LI>Installs additional dependencies required for HANA runtime</LI></UL></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_47-1763212044816.png" style="width: 833px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341625i0DA1BD19BA26CE08/image-dimensions/833x202/is-moderation-mode/true?v=v2" width="833" height="202" role="button" title="MaheshSirsat1708_47-1763212044816.png" alt="MaheshSirsat1708_47-1763212044816.png" /></span></P><P>Now, your project is ready to connect and deploy models to an HDI container.</P><P>&nbsp;</P><P><STRONG>13. Update package.json for HANA Deployment</STRONG></P><P><STRONG>&nbsp;</STRONG>Open package.json → under "cds.requires" add:</P><pre class="lia-code-sample language-abap"><code>"db": { "kind": "hana" }</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_48-1763212044818.png" style="width: 815px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341626iF364C6679F6D6414/image-dimensions/815x316/is-moderation-mode/true?v=v2" width="815" height="316" role="button" title="MaheshSirsat1708_48-1763212044818.png" alt="MaheshSirsat1708_48-1763212044818.png" /></span></P><P>This tells CAP to use SAP HANA as the primary database in production.</P><P>&nbsp;</P><P><STRONG>14. Bind the CAP Project to Your HANA Instance</STRONG></P><P>In <STRONG>BAS → Cloud Foundry view</STRONG>:</P><OL><LI>Select your CAP app</LI><LI>Choose <STRONG>Bind to Service</STRONG></LI><LI>Pick your HANA DB instance hanaDB</LI></OL><P>This automatically creates a <STRONG>.env</STRONG> file containing:</P><UL><LI>HDI container name</LI><LI>Credentials</LI><LI>Database URLs</LI><LI>Service keys</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_49-1763212044820.png" style="width: 480px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341629i303D208D68C33D62/image-dimensions/480x604/is-moderation-mode/true?v=v2" width="480" height="604" role="button" title="MaheshSirsat1708_49-1763212044820.png" alt="MaheshSirsat1708_49-1763212044820.png" /></span></P><P><STRONG>Why we are doing this</STRONG></P><P>CAP needs this information to connect to SAP HANA for:</P><UL><LI>Local ā€œcds watchā€</LI><LI>Production deployment</LI></UL><P>Your project is now fully connected to SAP HANA Cloud.</P><P>&nbsp;</P><P><STRONG>15. Build Your CAP Project for Production</STRONG></P><P>Run:</P><pre class="lia-code-sample language-abap"><code>cds build –production</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_50-1763212044821.png" style="width: 771px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341630i80ED612A714344DE/image-dimensions/771x447/is-moderation-mode/true?v=v2" width="771" height="447" role="button" title="MaheshSirsat1708_50-1763212044821.png" alt="MaheshSirsat1708_50-1763212044821.png" /></span></P><P>HANA Cloud can now deploy your database schema properly.</P><P>&nbsp;</P><P><STRONG>16. Deploy to SAP HANA Cloud</STRONG></P><P>Run:</P><pre class="lia-code-sample language-abap"><code>cds deploy --production</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_51-1763212044822.png" style="width: 797px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341628i64A2B07207BD2D25/image-dimensions/797x462/is-moderation-mode/true?v=v2" width="797" height="462" role="button" title="MaheshSirsat1708_51-1763212044822.png" alt="MaheshSirsat1708_51-1763212044822.png" /></span></P><P>This:</P><UL><LI>Creates HDI container</LI><LI>Deploys CDS schema into HANA tables</LI><LI>Activates views, indexes, constraints</LI></UL><P>Your CAP application now uses SAP HANA Cloud as its primary DB.</P><P>&nbsp;</P><P><STRONG>17. Rebuild and Deploy the Entire CAP Application</STRONG></P><P>Again perform:</P><pre class="lia-code-sample language-abap"><code>mbt build</code></pre><P>Then deploy:</P><pre class="lia-code-sample language-abap"><code>cf deploy &lt;yourfile&gt;.mtar</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_52-1763212044825.png" style="width: 812px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341632i2892B1A34996DD82/image-dimensions/812x485/is-moderation-mode/true?v=v2" width="812" height="485" role="button" title="MaheshSirsat1708_52-1763212044825.png" alt="MaheshSirsat1708_52-1763212044825.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_53-1763212044828.png" style="width: 807px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341631iCB3A317D6F3CBA92/image-dimensions/807x228/is-moderation-mode/true?v=v2" width="807" height="228" role="button" title="MaheshSirsat1708_53-1763212044828.png" alt="MaheshSirsat1708_53-1763212044828.png" /></span></P><P>Our complete application (service + database) is deployed on Cloud Foundry using HANA.</P><P>&nbsp;</P><P><STRONG>18. Verify Schema Deployment in SAP HANA Cloud</STRONG></P><OL><LI>Open <STRONG>SAP HANA Data Explorer</STRONG></LI><LI>Click <STRONG>+</STRONG></LI><LI>Select <STRONG>Instance Type = HDI</STRONG></LI><LI>Choose your CAP application HDI container&nbsp; &nbsp;&nbsp;</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_54-1763212044831.png" style="width: 828px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341633i7DF0070B4CBBD556/image-dimensions/828x480/is-moderation-mode/true?v=v2" width="828" height="480" role="button" title="MaheshSirsat1708_54-1763212044831.png" alt="MaheshSirsat1708_54-1763212044831.png" /></span></P><P>&nbsp;</P><P>&nbsp; &nbsp; &nbsp; &nbsp; 5. Expand <STRONG>Tables</STRONG> and <STRONG>Views</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_55-1763212044834.png" style="width: 841px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341635iC35710D77B6F877C/image-dimensions/841x295/is-moderation-mode/true?v=v2" width="841" height="295" role="button" title="MaheshSirsat1708_55-1763212044834.png" alt="MaheshSirsat1708_55-1763212044834.png" /></span></P><P>You can verify that:</P><UL><LI>Tables are created</LI><LI>Data model is deployed correctly</LI></UL><P>&nbsp;</P><P><STRONG>19. Running CAP Application Locally Using HANA Cloud</STRONG></P><P>If you want to run locally via HANA:</P><OL><LI>Ensure .env exists</LI><LI>Rebind HDI container if needed</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_56-1763212044838.png" style="width: 798px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341636iC4C945CEB2F45A6D/image-dimensions/798x411/is-moderation-mode/true?v=v2" width="798" height="411" role="button" title="MaheshSirsat1708_56-1763212044838.png" alt="MaheshSirsat1708_56-1763212044838.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_57-1763212044841.png" style="width: 840px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341634i9CB213FBF63425CB/image-dimensions/840x439/is-moderation-mode/true?v=v2" width="840" height="439" role="button" title="MaheshSirsat1708_57-1763212044841.png" alt="MaheshSirsat1708_57-1763212044841.png" /></span></P><P>&nbsp;</P><OL><LI>Run:&nbsp; &nbsp; &nbsp;</LI></OL><pre class="lia-code-sample language-abap"><code>cds w</code></pre><P><STRONG>Successful connection check</STRONG></P><P>If logs show:</P><P>Connected to SAP HANA Cloud (hanaDB) . Then your HDI container is successfully connected.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_58-1763212044855.png" style="width: 794px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341638i8EA67CF9A2C2E3E0/image-dimensions/794x374/is-moderation-mode/true?v=v2" width="794" height="374" role="button" title="MaheshSirsat1708_58-1763212044855.png" alt="MaheshSirsat1708_58-1763212044855.png" /></span></P><P>&nbsp;</P><P><STRONG>20. Validate Deployment Using Postman</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MaheshSirsat1708_59-1763212044858.png" style="width: 822px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/341637iFD481AA8AF732F48/image-dimensions/822x257/is-moderation-mode/true?v=v2" width="822" height="257" role="button" title="MaheshSirsat1708_59-1763212044858.png" alt="MaheshSirsat1708_59-1763212044858.png" /></span></P><P>&nbsp;</P><P>This confirms:</P><UL><LI>Service is running</LI><LI>HANA DB is connected</LI><LI>Deployment is successful end-to-end</LI></UL><H1 id="toc-hId-1636369485"><STRONG>Conclusion</STRONG></H1><P><STRONG>In this blog, we have completed the following activities:</STRONG></P><UL><LI><P>Created a new CAP application using the BAS template wizard.</P></LI><LI><P>Performed an initial deployment using SQLite to verify application behavior.</P></LI><LI><P>Provisioned a SAP HANA Cloud instance and assigned all required role collections.</P></LI><LI><P>Enabled HANA support in the CAP project and generated HDI-related artifacts.</P></LI><LI><P>Bound the project to the HANA instance to establish secure database connectivity.</P></LI><LI><P>Built CDS artifacts for production and deployed them into the HDI container.</P></LI><LI><P>Rebuilt and deployed the full MTA application to SAP BTP Cloud Foundry using HANA as the primary database.</P></LI><LI><P>Verified successful deployment through SAP HANA Database Explorer and API testing.</P></LI></UL> 2025-11-19T12:24:37.057000+01:00 https://community.sap.com/t5/technology-blog-posts-by-members/don-t-wait-for-sap-unlocking-mcp-servers-in-bas-right-now/ba-p/14279283 Don't Wait for SAP: Unlocking MCP Servers in BAS Right Now 2025-11-27T21:09:21+01:00 Marian_Zeis https://community.sap.com/t5/user/viewprofilepage/user-id/61 <P>The<A href="https://modelcontextprotocol.io/docs/getting-started/intro" target="_self" rel="nofollow noopener noreferrer"> Model Context Protocol (MCP)</A> is currently one of the hottest topics in development, promising to accelerate workflows, especially in the SAP ecosystem. Many IDEs already support MCP servers, offering developers enhanced context and capabilities.</P><P>Unfortunately, in SAP Business Application Studio (a.k.a. SAP Build Code), you are currently limited to Joule. This is particularly frustrating given that MCP servers were heavily promoted at SAP TechEd, yet the native environment doesn't fully support them yet. This limitation is especially challenging if you are restricted to using BAS because local development with tools like VS Code is not allowed or possible in your corporate environment</P><P>In this blog post, I want to show you how to not only use MCP servers directly within BAS but also explore ways to develop with BAS from the "outside" using hybrid approaches.</P><H2 id="toc-hId-1765719388">What are MCP Servers?</H2><P>MCP servers provide the LLM client (like Claude, Cursor, or Copilot) with more context about your project and system, helping the developer work more effectively. Fortunately, there are already numerous MCP servers available for SAP.</P><P>You can learn more about the available SAP MCP servers in this blog post: <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-build-introduces-new-mcp-servers-to-enable-agentic-development-for/ba-p/14205602" target="_blank">SAP Build introduces new MCP Servers to enable age... - SAP Community </A></P><H2 id="toc-hId-1569205883">What Can You Do Directly in BAS?</H2><P>SAP Business Application Studio is based on the Open VS Code stack (Code-OSS), which allows us to install extensions from the Open VSX Registry. Even if an extension isn't available there, you can often install the VSIX file directly. Since BAS runs in a small virtual machine, we also have the ability to install CLI tools.</P><H3 id="toc-hId-1501775097">Cline Extension</H3><P>The first option is using the open-source extension <STRONG><A href="https://open-vsx.org/extension/saoudrizwan/claude-dev" target="_blank" rel="noopener noreferrer nofollow">Cline</A></STRONG>. This is also explained in the <A href="https://architecture.learning.sap.com/docs/ref-arch/e5eb3b9b1d/10" target="_self" rel="noopener noreferrer">SAP Architecture Center</A> on how to use <A href="https://github.com/SAP-samples/teched2025-AD160/tree/main/exercises/ex0#exercise-03-installation-of-an-ai-agent" target="_self" rel="nofollow noopener noreferrer">Cline with SAP AI Core and in a TechEd Hands-on Exercise</A>.</P><P>This extension gives you a coding agent directly within BAS that can not only answer questions but also modify code. Crucially, Cline supports MCP servers. You can install it easily via the Extensions Marketplace in BAS:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Marian_Zeis_7-1764272249776.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/346053i2E19A9DF735A7304/image-size/large?v=v2&amp;px=999" role="button" title="Marian_Zeis_7-1764272249776.png" alt="Marian_Zeis_7-1764272249776.png" /></span></P><P>Once the SAP MCP servers are installed globally (e.g., via <CODE>npm install -g sap-ux/fiori-mcp-server</CODE>), we can configure them in Cline. Below is my configuration example. The command points to the local node installation. You can find the exact path using the command <CODE>node -p "process.execPath"</CODE>. To find the location of the MCP server, you can run:</P><pre class="lia-code-sample language-bash"><code>echo "$(npm root -g)/@sap-ux/fiori-mcp-server"</code></pre><P>This configuration is saved in the <CODE>cline_mcp_settings.json</CODE> file, which you can access via "Configure MCP Server" in Cline's settings.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Marian_Zeis_8-1764272265356.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/346054iF68A92FEA202FDF1/image-size/large?v=v2&amp;px=999" role="button" title="Marian_Zeis_8-1764272265356.png" alt="Marian_Zeis_8-1764272265356.png" /></span></P><P>Here is my MCP config file:</P><pre class="lia-code-sample language-json"><code>{ "mcpServers": { "ui5-mcp": { "disabled": false, "timeout": 60, "type": "stdio", "command": "/home/user/.asdf-inst/installs/nodejs/22.13.1/bin/node", "args": [ "/home/user/.node_modules_global/lib/node_modules/@ui5/mcp-server/bin/ui5mcp.js" ] }, "fiori-mcp": { "disabled": false, "timeout": 60, "type": "stdio", "command": "/home/user/.asdf-inst/installs/nodejs/22.13.1/bin/node", "args": [ "/home/user/.node_modules_global/lib/node_modules/@sap-ux/fiori-mcp-server/dist/index.js" ], "autoApprove": [ "execute_functionality" ] }, "cap-mcp": { "disabled": false, "timeout": 60, "type": "stdio", "command": "/home/user/.asdf-inst/installs/nodejs/22.13.1/bin/node", "args": [ "/home/user/.node_modules_global/lib/node_modules/@cap-js/mcp-server/index.js" ] } } }</code></pre><P>&nbsp;</P><P>Cline allows you to flexibly use different models, including <A href="https://docs.cline.bot/provider-config/openai" target="_blank" rel="noopener noreferrer nofollow">OpenAI</A>, <A href="https://docs.cline.bot/provider-config/anthropic" target="_blank" rel="noopener noreferrer nofollow">Anthropic</A>, and <A href="https://docs.cline.bot/provider-config/sap-aicore" target="_blank" rel="noopener noreferrer nofollow">SAP AI Core</A>.</P><P>In this example, I want to disable the "Initial Load" of a Fiori Elements app. The Fiori Tools MCP Server supports this functionality. Even without explicitly telling the LLM client to use the MCP server, it automatically calls the appropriate tool to perform the action.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Marian_Zeis_9-1764272278493.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/346055i69DF1DEC16B9E5E1/image-size/large?v=v2&amp;px=999" role="button" title="Marian_Zeis_9-1764272278493.png" alt="Marian_Zeis_9-1764272278493.png" /></span></P><P>This is a great option to get started quickly and use various models and providers. However, in my experience, it can be quite slow compared to other LLM clients, and the overall experience is somewhat limited by being "just" an extension.</P><H3 id="toc-hId-1305261592">Claude Code</H3><P>Many model providers and LLM clients now offer CLI alternatives. Two notable examples are <A href="https://www.claude.com/product/claude-code" target="_blank" rel="noopener noreferrer nofollow">Claude Code</A>, <A href="https://cursor.com/cli" target="_blank" rel="noopener noreferrer nofollow">Cursor CLI</A>, or <A href="http://github.com/google-gemini/gemini-cli" target="_blank" rel="noopener noreferrer nofollow">Gemini CLI</A>. We can install these directly in BAS.</P><P>I'll use <STRONG>Claude Code</STRONG> as an example. The installation is straightforward:</P><pre class="lia-code-sample language-bash"><code>curl -fsSL https://claude.ai/install.sh | bash</code></pre><P>After installation, you need to authenticate. Once done, you can configure MCP servers. You can activate the tool simply by running <CODE>claude</CODE>. Once configured, you can use these MCP servers directly within your BAS terminal.</P><P>The configuration can be identical to the one used in Cline:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Marian_Zeis_10-1764272286719.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/346056iD9D3B767832BD875/image-size/large?v=v2&amp;px=999" role="button" title="Marian_Zeis_10-1764272286719.png" alt="Marian_Zeis_10-1764272286719.png" /></span></P><P>Here is an example using Claude Code to reactivate the Initial Load. Claude correctly utilizes the Fiori MCP Server to find the right tool and execute the change.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Marian_Zeis_11-1764272291633.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/346057iFF99A0F5278A33E9/image-size/large?v=v2&amp;px=999" role="button" title="Marian_Zeis_11-1764272291633.png" alt="Marian_Zeis_11-1764272291633.png" /></span></P><H2 id="toc-hId-979665368">Outside of BAS (Hybrid/Remote)</H2><P>Fortunately, we have the possibility to "break out" of the browser-based BAS and use a hybrid approach with a local IDE. SAP provides a way to do this via extensions. The documentation for this setup can be found here: <A href="https://help.sap.com/docs/bas/sap-business-application-studio/working-remotely?locale=en-US" target="_blank" rel="noopener noreferrer">Working Remotely with SAP Business Application Studio&lt;/a &gt;. </A></P><H3 id="toc-hId-912234582">VS Code and GitHub Copilot Chat</H3><P>This approach enables us to connect a local VS Code instance via SSH to our running BAS instance.</P><P>This gives us the best of both worlds: all BAS-exclusive extensions and capabilities, plus everything VS Code offers, including GitHub Copilot Chat and MCP servers.</P><P>If you follow the documentation, you will have GitHub Copilot available in your local VS Code, capable of using the integrated MCP servers and the model of your choice. This provides not only direct code editing capabilities but also very smart autocompletion.</P><P>Here is an example with GitHub Copilot Chat and MCP Server. In this case, although I explicitly mentioned the MCP server, it seems the tools were not automatically recognized, so the model used the parameter in the <CODE>manifest.json</CODE> directly.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Marian_Zeis_12-1764272300552.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/346058i72FC460F5847AD53/image-size/large?v=v2&amp;px=999" role="button" title="Marian_Zeis_12-1764272300552.png" alt="Marian_Zeis_12-1764272300552.png" /></span></P><P><SPAN class="">&nbsp;</SPAN></P><H3 id="toc-hId-715721077">Cursor</H3><P>Cursor is a very powerful tool with excellent integration of MCP servers. You can configure and use MCP servers directly in Cursor and use with any model together with BAS.</P><P>In theory, any Code-OSS based IDE that supports the necessary extensions can establish this connection. For those not bound to BAS, MCP servers can be configured and used directly in your own IDE, as almost every major IDE supports MCP servers by now.</P><H2 id="toc-hId-390124853">Conclusion</H2><P>While SAP Business Application Studio currently has some limitations regarding native MCP integration, there are several powerful workarounds.&nbsp;</P><P>It will be exciting to see what support will be available in BAS in the future.<BR />Will it be Cline, as shown in the TechEd demos, will Joule be upgraded, or will GitHub Copilot be included in BAS as announced in a TechEd session?<BR />After the announcement at the TechEd keynote, I had actually expected a quick solution.</P><P>Fortunately, I am not currently tied to BAS, and even if I were, I could fall back on the workarounds.</P> 2025-11-27T21:09:21+01:00 https://community.sap.com/t5/human-capital-management-blog-posts-by-sap/bridging-data-quality-gaps-in-sap-successfactors-tih-with-csvvalidationapp/ba-p/14283170 Bridging Data Quality Gaps in SAP SuccessFactors TIH with CSVValidationApp and Vibe Coding 2025-12-03T16:06:10.964000+01:00 DivyaTiwari https://community.sap.com/t5/user/viewprofilepage/user-id/17995 <DIV> <H3 id="toc-hId-1895545887"><STRONG>Introduction</STRONG></H3> <P>Data quality challenges in SAP SuccessFactors Talent Intelligence Hub (TIH) often go unnoticed until they impact user experience. When thousands of attributes are imported without proper validation, issues like HTML tags, broken formatting, and unescaped characters can disrupt Growth Portfolios and compromise analytics/employee experience. This blog introduces <STRONG>CSVValidationApp</STRONG>, a solution designed to bridge this gap using <STRONG>functional expertise and modern development practices like Vibe Coding</STRONG>—and opens the door for community collaboration on similar innovations.</P> <HR /> <H3 id="toc-hId-1699032382"><STRONG>Why This Matters</STRONG></H3> <P>&nbsp;<SPAN>SAP Talent Intelligence Hub is a strategic enabler for skills-based workforce planning. It helps organizations create dynamic career paths, leverage AI-driven skill recommendations, and empower employees through Growth Portfolios. These capabilities unlock smarter talent decisions and a more agile workforce.</SPAN></P> <DIV> <P>To fully realize these benefits, <STRONG>data integrity during imports is critical</STRONG>. According to <A href="https://help.sap.com/docs/successfactors-platform/using-talent-intelligence-hub/importing-entities?locale=en-US&amp;q=successfactors+attribute+import+talent+intelligence&amp;version=LATEST" target="_self" rel="noopener noreferrer">SAP Help Portal,</A> importing entities like attributes, tags, and behaviors into TIH requires strict adherence to structure and format. Common issues include:</P> <UL> <LI>Incorrect headers or missing mandatory fields in CSV files</LI> <LI>Improper encoding (non-UTF-8) causing character display errors</LI> <LI>Unescaped quotes or HTML tags in descriptions, which can truncate or break content</LI> <LI>Large file sizes impacting performance (recommended limit: 25,000 records per file)</LI> <LI>Incorrect date formats for proficiencyAssignedDate when updating Growth Portfolio attributes</LI> </UL> <P>These challenges can lead to incomplete or inaccurate data in the <STRONG>Attributes Library</STRONG> and <STRONG>Growth Portfolio</STRONG>, affecting AI-driven recommendations and user experience. Adding a validation step before import ensures clean, consistent data—reducing manual troubleshooting and enabling HR teams to focus on strategic initiatives.</P> </DIV> <H3 id="toc-hId-1502518877"><STRONG>My Perspective and Approach</STRONG></H3> <P>Having worked extensively across <STRONG>implementations, integrations, and functional solution design</STRONG> in SuccessFactors, I’ve seen how small data issues can create big challenges downstream. This experience shaped my approach: build a tool that doesn’t just validate data but actively improves it before it enters TIH.</P> <P>I chose <STRONG>Vibe Coding</STRONG> as the development approach because it accelerates delivery through real-time collaboration, instant previews, and iterative design—all within SAP Business Application Studio. This allowed me to focus on business logic and user experience rather than boilerplate coding, ensuring the solution was delivered quickly without compromising quality.</P> <HR /> <H3 id="toc-hId-1306005372"><STRONG>How CSVValidationApp Fits into the TIH Workflow</STRONG></H3> <P>CSVValidationApp acts as a <STRONG>data quality gatekeeper</STRONG> in the integration process. In the following example workflow after data is exported from Integration Center, the file passes through CSVValidationApp for cleansing and validation. Once clean, the data is transformed and mapped to TIH-compatible attributes before being imported back into the system.</P> <span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="DivyaTiwari_0-1764771625951.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348134iF204DFBBBA9998B1/image-size/medium?v=v2&amp;px=400" role="button" title="DivyaTiwari_0-1764771625951.png" alt="DivyaTiwari_0-1764771625951.png" /></span> <P>This workflow ensures that what enters TIH is not just valid but optimized for rendering and usability. The result? A clean, enriched skills library that supports AI-driven recommendations and future enhancements.</P> <HR /> <H3 id="toc-hId-1109491867"><STRONG>What Makes CSVValidationApp Powerful</STRONG></H3> <P>CSVValidationApp performs comprehensive checks tailored for SuccessFactors Integration Center requirements. It detects encoding issues, validates structure, identifies problematic characters, and removes HTML tags and entities. Beyond validation, it offers <STRONG>auto-correction</STRONG>, generating clean content with proper quoting and escaping. A preview feature and detailed statistics give administrators confidence before import.</P> <P>By automating these steps, CSVValidationApp transforms a tedious, error-prone process into a seamless experience—empowering HR teams to focus on strategic tasks rather than data cleanup.</P> <HR /> <H3 id="toc-hId-912978362"><STRONG>Looking Ahead: Unlocking the Full Potential of TIH</STRONG></H3> <P>SAP Talent Intelligence Hub is continuously evolving to help organizations stay ahead in a skills-based economy. Upcoming innovations include <STRONG>AI-driven skill inference</STRONG>, <STRONG>integration with external taxonomies</STRONG>, <STRONG>expanded APIs</STRONG>, and <STRONG>advanced analytics for workforce agility</STRONG>. These capabilities will empower HR teams to make smarter decisions and deliver personalized employee experiences.</P> <P>Clean, validated data is the foundation for these advancements. By ensuring data integrity from the start, organizations can confidently leverage AI recommendations, predictive insights, and future integrations without disruption.</P> <P>CSVValidationApp supports this vision by acting as a proactive data quality gatekeeper. Future enhancements will include <STRONG>AI-powered attribute correction suggestions</STRONG>, <STRONG>direct SAP API integration for one-click imports</STRONG>, and <STRONG>support for additional modules like Learning and Recruiting</STRONG>—making the process even more seamless and intelligent.</P> <HR /> <H3 id="toc-hId-716464857"><STRONG>Getting Started</STRONG></H3> <P>CSVValidationApp is built as an SAP Fiori application using SAP Business Application Studio. To run it locally, simply clone the ***REMOVED BY MODERATION***, install dependencies, and start the app.<BR /><BR />Here is an example screen shot from the application. The Attribute text file I validate below had many data rows with competency description such as:&nbsp;<BR /><EM>"1000009","de_DE","BUSINESS &amp; TRANSFORMATION..","&lt;p&gt;Sie planen Ihre Vorhaben, definieren herausfordernde Ziele und entscheiden mutig.&lt;/p&gt;&lt;p&gt;Herausforderungen im &amp;bdquo;VUCA&amp;ldquo;-Umfeld (Volatilit&amp;auml;t &amp;ndash; Unsicherheit &amp;ndash; Komplexit&amp;auml;t &amp;ndash; Ambiguit&amp;auml;t) begegnen Sie aktiv und entwickeln eine klare Vision f&amp;uuml;r Ihren Verantwortungsbereich.&lt;/p&gt;&lt;p&gt;&lt;a href= xyzurl target=_blank&gt;Kriterien und Verhaltensanker&lt;/a&gt; anzeigen.&lt;/p&gt;","COMPETENCY"</EM><BR /><BR /><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="result.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/348487iD76E0615EBEE0887/image-size/medium?v=v2&amp;px=400" role="button" title="result.png" alt="result.png" /></span></P> <P>&nbsp;<SPAN>This description gets corrected to:</SPAN></P> <P><EM>"1000009","de_DE","BUSINESS &amp; TRANSFORMATION..","Sie planen Ihre Vorhaben, definieren herausfordernde Ziele und entscheiden mutig. Bei der Umsetzung agieren Sie lƶsungsorientiert, bewerten Ergebnisse und Prozesse und nehmen notwendige Anpassungen vor. Herausforderungen im ā€žVUCA\"-Umfeld (VolatilitƤt - Unsicherheit - KomplexitƤt - AmbiguitƤt) begegnen Sie aktiv und entwickeln eine klare Vision für Ihren Verantwortungsbereich. ","COMPETENCY"</EM><BR /><BR /></P> </DIV> <DIV class=""> <DIV class=""> <DIV class=""> <DIV class=""> <DIV class=""> <DIV class=""> <DIV class=""><HR /> <H3 id="toc-hId-519951352"><STRONG>Final Thoughts &amp; Community Ask</STRONG></H3> </DIV> </DIV> </DIV> <DIV class=""> <DIV class=""> <P>Data quality may seem like a technical detail, but in reality, it’s a strategic enabler. By combining functional expertise with modern development practices, CSVValidationApp delivers a solution that not only solves today’s challenges but positions organizations for tomorrow’s opportunities.</P> <P>I’d love to hear from the SAP Community:</P> <UL> <LI>Have you built similar tools using <STRONG>Vibe Coding</STRONG> or other rapid development approaches?</LI> <LI>What other gaps do you see in <STRONG>data validation for SuccessFactors integrations</STRONG>, and how can we bridge them together?</LI> </UL> <P>Share your thoughts, examples, and ideas in the comments. Let’s collaborate to make data quality a strength, not a challenge.</P> </DIV> </DIV> </DIV> </DIV> </DIV> </DIV> 2025-12-03T16:06:10.964000+01:00 https://community.sap.com/t5/blog-posts-about-sap-websites/sap-business-application-studio-get-started-with-hands-on-amp-expert-guided/ba-p/14288915 SAP Business Application Studio: Get started with Hands-on & Expert Guided Videos 2025-12-11T14:55:01.257000+01:00 JenniferHauck https://community.sap.com/t5/user/viewprofilepage/user-id/14191 <P>Starting something new can sometimes feel intimidating, yet exciting, a little uncertain, but full of possibility. That’s exactly why we created our Sandbox System for Business Application Studio: a safe, playful space where beginners can explore freely and get a first feel for what SAP Business Application Studio is all about.</P><P><STRONG>How to?</STRONG></P><P><SPAN>Accessible with</SPAN> <SPAN>a valid</SPAN>&nbsp;<SPAN><A href="https://sap.com/learninghub" target="_blank" rel="noopener noreferrer">SAP Learning Hub subscription,</A></SPAN> you can access the <A href="https://learning.sap.com/practice-systems/sap-business-application-studio-sandbox" target="_blank" rel="noopener noreferrer">SAP Business Application Studio Sandbox</A> on the Learning Site.</P><P><STRONG>What Makes This Sandbox Perfect for Beginners?</STRONG></P><P><STRONG>A Zero-Risk Environment</STRONG></P><P>No breaking things. No messing anything up.</P><P>Everything in the sandbox is designed to be reset, replayed, and retried. It’s learning freedom at its best.</P><P><STRONG>Get started in a Minute with our Expert Guided Videos</STRONG></P><P>Instead of reading long explanations or memorizing theory, you jump straight into our easy-to-consume &nbsp;<A href="https://learning.sap.com/products/business-technology-platform/development/extensions" target="_blank" rel="noopener noreferrer">Expert-Guided Videos</A>!</P><P>You get to do hands-on on SAP Business Application Studio, not just read about it.</P><P><STRONG>Why This Matters</STRONG></P><P>Getting started with a new topic shouldn’t be stressful—it should feel like an invitation.</P><P>Our sandbox lets you:</P><UL><LI>build confidence,</LI><LI>get a true feel for the topic,</LI><LI>and decide if you want to dive deeper</LI></UL><P><A href="https://community.sap.com/topics/training-certification" target="_blank">SAP Learning Services</A> Topic Page&nbsp;<BR />Ask questions about <A href="https://answers.sap.com/tags/676305042803066886656318788802663" target="_blank" rel="noopener noreferrer">Training</A> and follow&nbsp;<BR />Read other <A href="https://blogs.sap.com/tags/676305042803066886656318788802663/" target="_blank" rel="noopener noreferrer">Training</A> blog posts and follow&nbsp;</P><P><STRONG>&nbsp;<EM>Happy Learning!</EM></STRONG></P> 2025-12-11T14:55:01.257000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/prompt-driven-development-building-full-stack-sap-cap-apps-from-user/ba-p/14288653 Prompt-Driven Development: Building Full-Stack SAP CAP Apps from User Stories 2025-12-11T15:10:42.876000+01:00 AnuradhaDhingan https://community.sap.com/t5/user/viewprofilepage/user-id/141341 <H1 id="toc-hId-861652541" id="toc-hId-1637534150"><FONT color="#3366FF"><STRONG><U>Introduction</U></STRONG></FONT></H1><UL><LI><SPAN>What if you could translate a business requirement into a functional, full-stack application with a single prompt?</SPAN></LI><LI><SPAN>How much faster could you deliver value if the foundational code and project scaffolding were generated for you in seconds?</SPAN></LI></UL><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><SPAN>This is the new reality powered by SAP Build Code and its integrated AI copilot, Joule. </SPAN></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><SPAN>As a turn-key environment on the SAP Business Technology Platform, it unifies the entire development lifecycle, from coding to deployment.</SPAN></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;">T<SPAN>his post demonstrates how to <STRONG>build a full-stack SAP CAP application directly from a user story</STRONG>, showcasing how </SPAN></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><SPAN>generative AI is fundamentally reshaping the developer experience.</SPAN></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;">&nbsp;</P><H1 id="toc-hId-665139036" id="toc-hId-1441020645"><FONT color="#3366FF"><STRONG><U>Business Requirement</U></STRONG></FONT></H1><P><STRONG>Build an SAP CAP application based on the requirements in the user story below:</STRONG></P><P><FONT size="4"><U><STRONG>User Story</STRONG></U></FONT></P><P><FONT size="2" color="#808080"><EM>As a contract administrator, I want to create and manage contracts and ā€˜parties involved’ information in the system, </EM></FONT></P><P><FONT size="2" color="#808080"><EM>so that I can effectively track and handle legal agreements and ā€˜parties involved’ interactions.</EM></FONT></P><P><FONT size="2" color="#808080"><EM>Contracts can cover a vast range of agreements, such as sales contracts, service agreements and employment contracts.</EM></FONT></P><P><FONT size="2" color="#808080"><EM>Party involved: A ā€˜party involved’ is an individual, organization, or entity that purchases goods, products, or services from another party, </EM></FONT></P><P><FONT size="2" color="#808080"><EM>typically a business or seller.</EM></FONT></P><P><FONT size="2" color="#808080"><EM>Common attributes of a contract might include:</EM></FONT></P><OL><LI><FONT size="2" color="#808080"><EM>Contract ID: A unique identifier for the contract.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Party involved Identification Number: A unique identification number for the party&nbsp;</EM><EM>involved.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Contract Type: The type of contract (e.g. sales, service, employment).</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Start Date: The date on which the contract becomes valid.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>End Date: The date on which the contract expires (if applicable).</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Status: The current status of the contract (draft, active, expired, terminated, etc.)</EM></FONT></LI></OL><P><FONT size="2" color="#808080"><EM>A typical ā€˜party involved’ has the following attributes:</EM></FONT></P><OL><LI><FONT size="2" color="#808080"><EM>Party involved Identification Number</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Party involved Name: It refers to the given name of a person or entity, or a label by which they are addressed or identified.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Party involved Address: It refers to a physical location where an individual, business, or entity is situated or can be reached.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Party involved Contact Information</EM></FONT></LI></OL><P><FONT size="2"><STRONG><FONT color="#808080"><EM>Acceptance Criteria</EM></FONT></STRONG></FONT></P><P><FONT size="2"><STRONG><FONT color="#808080"><EM>Scenario 1: List All Contracts</EM></FONT></STRONG></FONT></P><P><FONT size="2"><FONT color="#808080"><EM>Given I am logged into the contract management system, when I launch the SAP Fiori application to maintain contracts, </EM></FONT></FONT></P><P><FONT size="2"><FONT color="#808080"><EM>then I should be able to view the list of all the contracts in a list without pressing the GO button. </EM></FONT></FONT></P><P><FONT size="2"><FONT color="#808080"><EM>The list of all the contracts should have : Contract ID, Party involved Identification Number, Contract Type and Start Date.&nbsp;</EM></FONT></FONT></P><P><FONT size="2"><FONT color="#808080"><EM>The list of filters should include Contract Type, Contract Status and Start Date.</EM></FONT></FONT></P><P><FONT size="2"><STRONG><FONT color="#808080"><EM>Scenario 2: View Contract Details&nbsp;</EM></FONT></STRONG></FONT></P><P><FONT size="2" color="#808080"><EM>Given I am logged into the contract management system, when I select a specific contract from the list of SAP Fiori application, </EM></FONT></P><P><FONT size="2" color="#808080"><EM>then I should be able to view the contract details and parties involved information.</EM></FONT></P><P>&nbsp;</P><H1 id="toc-hId-468625531" id="toc-hId-1244507140"><FONT color="#3366FF"><STRONG><U>Joule's&nbsp;Generative AI-based SAP CAP App Development</U></STRONG></FONT></H1><H2 id="toc-hId-401194745" id="toc-hId-1177076354"><U><STRONG>Prerequisites</STRONG></U></H2><UL><LI><FONT face="arial,helvetica,sans-serif" size="4"><A href="https://developers.sap.com/tutorials/hcp-create-trial-account.html" target="_blank" rel="noopener noreferrer">Get a Free Account on SAP BTP Trial</A></FONT></LI><LI><FONT face="arial,helvetica,sans-serif" size="4"><A href="https://developers.sap.com/tutorials/build-code-setup.html" target="_blank" rel="noopener noreferrer">Setup SAP Build Code</A></FONT></LI></UL><H2 id="toc-hId-204681240" id="toc-hId-980562849"><STRONG>1. Create a New Project using SAP Build Lobby</STRONG></H2><P><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Create a Project" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351211i87BDA70DDC188CB9/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 5.40.40 PM.png" alt="Create a Project" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Create a Project</span></span></EM></P><P>&nbsp;</P><P><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Click the Application Tile" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351214i9BC9692EB86E74F0/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 5.46.37 PM.png" alt="Click the Application Tile" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Click the Application Tile</span></span></EM></P><P><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Full-Stack" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351215iC7280C15972A881D/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 5.49.33 PM.png" alt="Full-Stack" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Full-Stack</span></span></EM></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Full-Stack Node.JS" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351216i6BEC1E5D0431D7EA/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 5.51.11 PM.png" alt="Full-Stack Node.JS" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Full-Stack Node.JS</span></span></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Contract Management" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351218i4C57880D4CCA6CFB/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 5.52.32 PM.png" alt="Contract Management" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Contract Management</span></span></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Contract Management" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351219i5247708EE1A75E54/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 5.54.32 PM.png" alt="Contract Management" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Contract Management</span></span></P><P class="lia-indent-padding-left-30px" style="padding-left : 30px;"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Project Created" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351220i6C6FF5FDAEC7B56D/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 5.56.27 PM.png" alt="Project Created" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Project Created</span></span></P><H2 id="toc-hId-784049344"><STRONG>2. Build a Full-Stack CAP Application via Prompt</STRONG></H2><P>Click the created project to open it in&nbsp;SAP Business Application&nbsp;Studio</P><P>Open Joule From the Activity Bar and&nbsp;&nbsp;select the ’/cap-gen-app` slash command</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Generate a CAP Application" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351229iD088DFAA1B606C6E/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.07.06 PM.png" alt="Generate a CAP Application" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Generate a CAP Application</span></span></P><P><SPAN>Prompt the user story description(refer to&nbsp;Business Requirement section above) to Joule and click send.</SPAN></P><P><SPAN>Joule tackles complex tasks by breaking them into steps, each with a suggested prompt.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Diffrerent Steps" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351234iD1F58B85E80F1954/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.11.46 PM.png" alt="Diffrerent Steps" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Diffrerent Steps</span></span></SPAN></P><P><SPAN>To simplify the process and provide full context, replace the content of each step with the complete user story prompt. </SPAN></P><P><SPAN>Then, save and run to generate each step's artifacts.</SPAN></P><P><SPAN>Accept the Code.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Accept the Code" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351238i63CBEA016D695164/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.22.03 PM.png" alt="Accept the Code" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Accept the Code</span></span></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Generated Artifacts" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351239iD7DD8DA6C388231A/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.24.56 PM.png" alt="Generated Artifacts" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Generated Artifacts</span></span></SPAN></P><H2 id="toc-hId-204681240" id="toc-hId-587535839"><STRONG>3. Add UI to the Application</STRONG></H2><P>Create a new Fiori elements Application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Fiori Elements Application" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351240iC52EFDE00152E01D/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.28.33 PM.png" alt="Fiori Elements Application" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Fiori Elements Application</span></span></P><P>&nbsp;</P><H2 id="toc-hId-204681240" id="toc-hId-391022334"><STRONG>3. Preview the Application</STRONG></H2><P>Click run to preview the Application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Run the Application" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351243i7E6728275E11573E/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.30.29 PM.png" alt="Run the Application" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Run the Application</span></span></P><P><SPAN>The application’s preview is displayed.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Application Preview" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351245iE0FF0E118A2F4ACE/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.36.21 PM.png" alt="Application Preview" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Application Preview</span></span></SPAN></P><P><SPAN>Launch the contract management app.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Contract Management" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351252i364C1B389E3CE0BB/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.47.35 PM.png" alt="Contract Management" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Contract Management</span></span></SPAN></P><P><SPAN>Select a contract from the list to view its details.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Select Contract" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351279iACD86D3B3AF22307/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.55.24 PM.png" alt="Select Contract" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Select Contract</span></span></SPAN></P><P>&nbsp;</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Contract details" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/351281i3FFEE12C76D5E0D5/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2025-12-11 at 6.55.47 PM.png" alt="Contract details" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Contract details</span></span></SPAN></P><H1 id="toc-hId--2102363971" id="toc-hId-65426110"><FONT color="#3366FF"><STRONG><U>Conclusion</U></STRONG></FONT></H1><P>The journey from user story to a functional, full-stack application—once a multi-day endeavor—is now accomplished in minutes.</P><P>With SAP Build Code and its AI copilot, Joule, this dramatic acceleration signals a fundamental paradigm shift.</P><P>The developer's role is being elevated from the meticulous craft of writing code to the strategic art of guiding its creation.</P><P>Joule operates as the quintessential collaborator, executing the foundational groundwork to liberate developers to focus</P><P>on high-value business logic and innovation.</P><P>SAP Build Code is therefore more than a tool; it's the dawn of an era where the speed of technology finally</P><P>matches the ambition of business.</P><P>&nbsp;</P><H1 id="toc-hId-1967760006" id="toc-hId--131087395"><FONT color="#3366FF"><STRONG><U>Further Information</U></STRONG></FONT></H1><P><FONT face="arial,helvetica,sans-serif" size="4"><A title="SAP Build Code" href="https://pages.community.sap.com/topics/build-code" target="_blank" rel="noopener noreferrer">SAP Build Code</A></FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4">#SAPBuildCode #Joule #SAPBTP</FONT></P><P>&nbsp;</P><P><FONT face="arial,helvetica,sans-serif" size="4">______________________________________________________________________________________________</FONT></P><P>&nbsp;</P><P>&nbsp;</P><P><FONT face="arial,helvetica,sans-serif" size="4"><SPAN>Best Regards,</SPAN><BR /><SPAN>Anuradha Dhingan</SPAN></FONT></P><P><SPAN>&nbsp;</SPAN></P> 2025-12-11T15:10:42.876000+01:00 https://community.sap.com/t5/technology-blog-posts-by-sap/sap-fiori-tools-2601-update-mobile-device-preview-building-blocks-and-ai/ba-p/14292653 SAP Fiori tools 2601 update – Mobile Device Preview, Building Blocks, and AI-Driven Productivity 2025-12-17T17:29:22.331000+01:00 Christoph_Gollmick https://community.sap.com/t5/user/viewprofilepage/user-id/14530 <P>With the latest SAP Fiori tools update 2601, we continue our focus on improving developer productivity, openness, and real-world usability. This release brings meaningful enhancements across previewing applications, managing system connections, building SAP Fiori elements–based UIs, and accelerating development with AI-powered tooling. At the same time, we’ve continued to refine the fundamentals in security, modelling, and extensibility.</P><P><STRONG><SPAN>Preview SAP Fiori Apps on Real Mobile Devices</SPAN></STRONG></P><P><SPAN>When developing SAP Fiori applications, simulating a mobile experience in a desktop browser often isn’t enough to fully validate real-world behavior. Touch interactions, performance characteristics, and device-specific rendering can differ noticeably on physical phones and tablets.</SPAN></P><P><SPAN>To address this, SAP Fiori tools now supports previewing applications directly on real mobile devices when using <A href="https://www.npmjs.com/package/@sap/ux-ui5-tooling" target="_blank" rel="noopener nofollow noreferrer"><STRONG>@sap/ux-ui5-tooling</STRONG></A><STRONG> version 1.19.1 or higher</STRONG>. By creating a new run configuration and enabling <STRONG>Remote Access</STRONG>, developers can expose the local preview. When the run configuration is started, the terminal provides connection details, including a URL and a QR code, which can be opened directly on a phone or tablet to access the running app.</SPAN></P><P>This makes it significantly easier to validate layouts, navigation, and interactions exactly as end users will experience them without leaving the development environment.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Showcase for previewing a SAP Fiori elements app on iPhone" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353265i4031B8D916871BF9/image-size/large?v=v2&amp;px=999" role="button" title="mobile_preview_combined.png" alt="Showcase for previewing a SAP Fiori elements app on iPhone" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Showcase for previewing a SAP Fiori elements app on iPhone</span></span></P><P><STRONG>A New Connection Manager for SAP Systems in VS Code</STRONG></P><P><SPAN>Managing connections to remote SAP systems is a foundational task when working with SAP Fiori tools. With this release, we introduce the <A href="https://marketplace.visualstudio.com/items?itemName=SAPOSS.sap-ux-sap-systems-ext" target="_blank" rel="noopener nofollow noreferrer"><STRONG>Connection Manager</STRONG></A><STRONG> for SAP Systems</STRONG> as a dedicated Visual Studio Code extension. This new extension succeeds the previously integrated saved systems panel from the Application Modeler and provides a focused, extensible solution for handling system connections in Visual Studio Code</SPAN><SPAN>.</SPAN></P><P><SPAN>The Connection Manager allows developers to create, store, test, and edit connection information that can be reused by the SAP Fiori generator as well as by preview features in SAP Fiori tools. Storing passwords is optional, and if stored, they are protected by the security policies of your operating system's credential manager.</SPAN></P><P><SPAN>By making this capability standalone and open source, it is now accessible to other extensions such as the <A href="https://marketplace.visualstudio.com/items?itemName=SAPSE.service-catalog" target="_blank" rel="noopener nofollow noreferrer">Service Catalog</A> extension, and open for community contributions.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Connection Manager" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353266iA25DF67F5931F093/image-size/large?v=v2&amp;px=999" role="button" title="connection_manager.png" alt="Connection Manager" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Connection Manager</span></span></P><P><STRONG>Expanded Support for SAP Fiori Elements Building Blocks</STRONG></P><P><SPAN>SAP Fiori tools continues to enhance the support for the <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/introducing-the-sap-fiori-development-portal-your-gateway-to-rapid-sap/ba-p/14236768" target="_blank">building blocks</A> which shape the framework of SAP Fiori elements for OData V4 and its flexibility you can use. It makes it easier to create and adapt applications using a structured, metadata-driven approach while keeping flexibility in design. In this update, the Page Editor gains additional capabilities that improve developer convenience when working with custom pages and sections.</SPAN></P><P><SPAN>Developers can now add more building block types to their apps with the Page Editor, including rich text editors within custom sections, custom columns for table building blocks, and the page building block itself. Managing custom pages is also more intuitive, as building blocks can now be deleted directly from the editor. To support experimentation and iteration, undo and redo actions are now available when working on custom pages.</SPAN></P><P><SPAN>Together, these enhancements reduce friction when adapting applications and allow developers to work more confidently and efficiently with SAP Fiori elements–based UIs.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rich Text Editor building block support in Page Editor" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/353267i0B58E28F74D72B2D/image-size/large?v=v2&amp;px=999" role="button" title="rich_text.png" alt="Rich Text Editor building block support in Page Editor" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Rich Text Editor building block support in Page Editor</span></span></P><P><STRONG>Enhancements Across the AI-Toolchain</STRONG></P><P><SPAN>AI capabilities continue to evolve across SAP Fiori tools, with a strong focus on usability and enabling deeper end-to-end changes from within the tooling.</SPAN></P><P><SPAN>The <A href="https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/6845fedbb38c4da7a54a2c76081f3abb.html" target="_blank" rel="noopener noreferrer"><STRONG>Project Accelerator</STRONG></A> can now be launched directly from the SAP Fiori generator, streamlining the initial project creation flow. The previously required staging step has been removed, allowing new projects to be created directly in the selected workspace folder. For projects created using the Project Accelerator, the Application Modeler now offers advanced editing capabilities, such as creating new fields and properties end-to-end, updating the data model, exposing the service, and consuming the changes in the UI in one coherent flow.</SPAN></P><P><SPAN>AI support has also been extended to mock data generation. Developers can generate realistic mock data using AI directly in the Application Modeler, and this capability is available for all applications whenever the Project Accelerator is enabled.</SPAN></P><P><SPAN>In parallel, the <A href="https://www.npmjs.com/package/@sap-ux/fiori-mcp-server" target="_blank" rel="noopener nofollow noreferrer"><STRONG>MCP server for SAP Fiori</STRONG></A> continues to expand. The server now exposes <A href="https://www.npmjs.com/package/@sap-ux/create" target="_blank" rel="noopener nofollow noreferrer">@sap-ux/create</A> commands as CLI functionality, enabling reliable execution in MCP-supported workflows. App generation has been extended to support CAP Java projects, and a new ā€œsearch_docsā€ tool allows the LLM (Large Language Model) to query SAP Fiori elements documentation, annotations, SAP Fiori tools documentation, and SAP Fiori Development Portal resources to quickly find relevant guidance and code snippets.</SPAN></P><P><STRONG><SPAN>Continuous Improvements and Refinements</SPAN></STRONG></P><P><SPAN>Beyond the headline features, this release includes a range of continuous improvements that strengthen the overall development experience. Newly created CAP applications now use <STRONG>NPM workspaces by default</STRONG>, establishing best practices out of the box and enabling the use of <A href="https://www.npmjs.com/package/@sap/ux-ui5-tooling" target="_blank" rel="noopener nofollow noreferrer">@sap/ux-ui5-tooling</A> middlewares when previewing CAP-based applications.</SPAN></P><P><SPAN>The Application Modeler has been enhanced with additional SAP Fiori elements for OData V4 features, including support for hidden draft mode, improved configuration options for table create dialogs, and create support for custom fields in form sections. These additions give developers more control over application behavior without leaving the modeling environment.</SPAN></P><P><SPAN>Security and user management have also been strengthened. The ABAP Cloud connection type in the Connection Manager has been consolidated around <STRONG>re-entrance ticket authentication</STRONG>, moving away from service key–based authentication. This eliminates long-lived shared credentials and ties system access directly to the signed-in user, improving both security and maintainability.</SPAN></P><P><STRONG><SPAN>Looking Ahead</SPAN></STRONG></P><P><SPAN>We are already working on the next set of enhancements for SAP Fiori tools. Planned improvements include a rework and enhancement of OPA5 test generation, with added support for value help services and mock data generation. Project validation will be extended with new domain-specific ESLint rule sets, visualized directly in the Application Modeler, alongside support for ESLint 9.</SPAN></P><P><SPAN>Support for additional SAP Fiori elements building blocks, such as form and field, is also on the roadmap. On the AI side, we continue to improve the robustness and usefulness of responses from the MCP server, while the Project Accelerator will be extended to support RAP service creation.</SPAN></P><P>As always, we look forward to your feedback and contributions as we continue to evolve SAP Fiori tools together with the community.</P> 2025-12-17T17:29:22.331000+01:00 https://community.sap.com/t5/technology-blog-posts-by-members/how-to-use-the-new-google-ide-antigravity-with-sap-and-cap/ba-p/14297974 How to use the new Google IDE Antigravity with SAP (and CAP) 2025-12-26T22:11:07.435000+01:00 smarchesini https://community.sap.com/t5/user/viewprofilepage/user-id/125739 <P>We hear that with the new SAP ABAP Cloud on Visual Studio Code, more and more developers will move to the ā€œnewā€ IDE.<BR />We already know that Business Application Studio is a cousin of Visual Studio Code.<BR />Do you know who another cousin is?</P><div class="lia-spoiler-container"><a class="lia-spoiler-link" href="#" rel="nofollow noopener noreferrer">Spoiler</a><noscript> (Highlight to read)</noscript><div class="lia-spoiler-border"><div class="lia-spoiler-content"><STRONG><FONT color="#FF0000">Google Antigravity!</FONT></STRONG></div><noscript><div class="lia-spoiler-noscript-container"><div class="lia-spoiler-noscript-content">Google Antigravity!</div></div></noscript></div></div><P>In this brief blog post, I will present what it is, why you should use it, how to install all components, how to use it with SAP, and my final thoughts after an intensive weekend of use.<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="smarchesini_4-1766782828404.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356174i964065CB2D876C89/image-size/large?v=v2&amp;px=999" role="button" title="smarchesini_4-1766782828404.png" alt="smarchesini_4-1766782828404.png" /></span></P><P>This guide focuses on Windows and Node.js installation (no Java).&nbsp;<span class="lia-unicode-emoji" title=":warning:">āš ļø</span><BR />My personal impressions are from an Apple user perspective.&nbsp;<span class="lia-unicode-emoji" title=":call_me_hand:">šŸ¤™</span></P><H2 id="toc-hId-1767513545">What is Google Antigravity?</H2><P>Google Antigravity is a new IDE forked from Visual Studio Code.<BR />I started using it based on a colleague’s suggestion, mainly because:</P><UL><LI>Advanced agent-based development model</LI><LI>Google as a strong and reliable engineering brand</LI><LI>Support for running multiple agents in parallel</LI><LI>Unique planning and ā€œvibe codingā€ experience</LI><LI><U>Temporary free access to Gemini Pro and Opus models (only for this you should try it!)</U></LI></UL><P>Why not give it a try?</P><H3 id="toc-hId-1700082759">Download Antigravity</H3><P><A href="https://antigravity.google/download" target="_blank" rel="noopener nofollow noreferrer">Google Antigravity Download<BR /></A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="smarchesini_5-1766782896909.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356175i10838A6160B34176/image-size/medium?v=v2&amp;px=400" role="button" title="smarchesini_5-1766782896909.png" alt="smarchesini_5-1766782896909.png" /></span></P><H2 id="toc-hId-1374486535">If you have never used Visual Studio Code before</H2><P>The following steps help you get started if you are completely new to Visual Studio Code and Antigravity.</P><P>&nbsp;</P><H3 id="toc-hId-1307055749">1. Install Node.js</H3><P>Download the latest Node.js version and complete the installation:</P><P><A href="https://nodejs.org/en/download" target="_blank" rel="noopener nofollow noreferrer">Node.js — Download Node.jsĀ®</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="smarchesini_0-1766782619564.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356165i0E034DB75E2B6EA2/image-size/large?v=v2&amp;px=999" role="button" title="smarchesini_0-1766782619564.png" alt="smarchesini_0-1766782619564.png" /></span></P><P>&nbsp;</P><H3 id="toc-hId-1110542244">2. Install CDS Tools for CAP Development</H3><P>Install the CAP development kit globally:</P><PRE><CODE>npm i -g @sap/cds-dk</CODE></PRE><P>Note: the <CODE>-g</CODE> parameter installs the tool globally and only needs to be executed once.</P><H3 id="toc-hId-914028739">3. Install Cloud Foundry CLI</H3><P>The CF CLI is required for Cloud Foundry operations such as application deployment and service management.</P><P>You can download it from the SAP Development Tools page (Cloud tab):</P><P><A href="https://tools.hana.ondemand.com/#cloud" target="_blank" rel="noopener nofollow noreferrer">SAP Development Tools<BR /><BR /></A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="smarchesini_0-1766782697049.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356166i88BCD9BEA7C98935/image-size/large?v=v2&amp;px=999" role="button" title="smarchesini_0-1766782697049.png" alt="smarchesini_0-1766782697049.png" /></span></P><P>&nbsp;</P><P>Verify the installation:</P><PRE><CODE>cf -v</CODE></PRE><P>If Antigravity was already open during installation, restart it.</P><P>Install the Multi-Target Application plugin:</P><PRE><CODE>cf install-plugin multiapps</CODE></PRE><H3 id="toc-hId-717515234">5. Install Chocolatey and MTA Build Tool (MBT)</H3><P>Chocolatey is optional. I use it to install GNU Make, which is required by the MTA Build Tool during the build process.</P><P>Chocolatey installation guide:</P><P><A href="https://chocolatey.org/install#individual" target="_blank" rel="noopener nofollow noreferrer">Installing Chocolatey </A></P><P>Install the MTA Build Tool:</P><PRE><CODE>npm install -g mbt</CODE></PRE><P>Verify the installation:</P><PRE><CODE>mbt -v</CODE></PRE><H2 id="toc-hId-391919010">Configure Plugins and Marketplace for SAP in Antigravity</H2><P>Antigravity is based on an open-source ecosystem and does not have direct access to all official VS Code plugins. This requires a small configuration change.</P><P>From my perspective, the most important plugins are:</P><UL><LI>SAP Fiori Tools</LI><LI>CDS Tools</LI><LI>CAP Tools</LI><LI>SAPUI5 Extension</LI><LI>UI5 XML Support</LI><LI>Remote Access for SAP Business Application Studio</LI></UL><P>Go to <STRONG>File &gt; Preferences &gt; Antigravity Settings<BR /></STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="smarchesini_6-1766782949742.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356176i3A3929D896238155/image-size/large?v=v2&amp;px=999" role="button" title="smarchesini_6-1766782949742.png" alt="smarchesini_6-1766782949742.png" /></span></P><P><STRONG>&nbsp;</STRONG></P><P>Set the following values:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="smarchesini_7-1766782967303.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356179i0E5BC91E03F6DAFA/image-size/large?v=v2&amp;px=999" role="button" title="smarchesini_7-1766782967303.png" alt="smarchesini_7-1766782967303.png" /></span></P><P>&nbsp;</P><P><STRONG>Marketplace Item URL:</STRONG><BR /><A href="https://marketplace.visualstudio.com/items" target="_blank" rel="noopener nofollow noreferrer">https://marketplace.visualstudio.com/items </A></P><P><STRONG>Marketplace Gallery URL:</STRONG><BR /><A href="https://marketplace.visualstudio.com/_apis/public/gallery" target="_blank" rel="noopener nofollow noreferrer">https://marketplace.visualstudio.com/_apis/public/gallery<BR /></A></P><P><U>Please restart Antigravity after this change&nbsp;<span class="lia-unicode-emoji" title=":warning:">āš ļø</span><BR /><BR /></U>Install all your favorite plugins:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="smarchesini_8-1766783072474.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356183i975DB561254F329F/image-size/large?v=v2&amp;px=999" role="button" title="smarchesini_8-1766783072474.png" alt="smarchesini_8-1766783072474.png" /></span></P><P>&nbsp;</P><H2 id="toc-hId-195405505">Configure MCP Server</H2><P>At this point, I recommend configuring the MCP server with the Antigravity AI chat. Here I only describe the CAP MCP configuration, but if you want more info, this is the original post with the most important MCP servers: <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/sap-build-introduces-new-mcp-servers-to-enable-agentic-development-for/ba-p/14205602" target="_blank">SAP Build introduces new MCP Servers to enable age... - SAP Community</A>.</P><P>In the agent view, select the three dots (<STRONG>…</STRONG>) and choose <STRONG>MCP Servers<BR /><BR /></STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="smarchesini_1-1766782761320.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356167iE5430FCAC18D79C5/image-size/medium?v=v2&amp;px=400" role="button" title="smarchesini_1-1766782761320.png" alt="smarchesini_1-1766782761320.png" /></span><STRONG><BR /></STRONG>, then <STRONG>Manage MCP Servers</STRONG>,</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="smarchesini_2-1766782773955.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356168i597FA99C06E13CCE/image-size/medium?v=v2&amp;px=400" role="button" title="smarchesini_2-1766782773955.png" alt="smarchesini_2-1766782773955.png" /></span></P><P><BR />and finally <STRONG>View raw configuration</STRONG>.</P><P>Paste the following configuration:</P><PRE><CODE>{ "servers": { "cds-mcp": { "command": "npx", "args": ["-y", "@cap-js/mcp-server"], "env": {}, "type": "stdio" } }, "inputs": [] }</CODE></PRE><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="smarchesini_3-1766782790989.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/356169iB3E666C1F99C4E63/image-size/large?v=v2&amp;px=999" role="button" title="smarchesini_3-1766782790989.png" alt="smarchesini_3-1766782790989.png" /></span><BR /><U>Restart Antigravity to complete the setup.&nbsp;<span class="lia-unicode-emoji" title=":warning:">āš ļø</span></U></P><P>To learn more about MCP servers, refer to: <A href="https://community.sap.com/t5/technology-blog-posts-by-sap/mcp-a-comprehensive-guide/ba-p/14238053" target="_blank">MCP – A Comprehensive Guide </A></P><H2 id="toc-hId--1108000">Final Conclusion after Intensive Use</H2><P>Antigravity is still a young product. I had to restart it multiple times during my work, and I consumed the Gemini Pro and Opus credits fairly quickly.</P><P>Visual Studio Code still feels more stable, and SAP’s tooling is clearly more mature there. However, switching between the two is extremely easy, which makes experimentation low risk.</P><P>I did not fully experience the benefits of multi-model usage yet—this may be due to configuration or limited testing time. Still, I recommend exploring it and trying it out during your vibe coding sessions.</P><P>Let me know how your experience goes and what your impression is of this new IDE.<BR />Pro or Cons?&nbsp;</P><P>&nbsp;</P> 2025-12-26T22:11:07.435000+01:00 https://community.sap.com/t5/tooling-sap-build-blog-posts/using-cline-with-sap-ai-core-in-vs-code-a-complete-setup-guide/ba-p/14301572 Using Cline with SAP AI Core in VS Code: A Complete Setup Guide 2026-01-05T16:50:16.644000+01:00 sneha_govind https://community.sap.com/t5/user/viewprofilepage/user-id/1448156 <P>As SAP developers, we spend our days juggling multiple tools such as code editors, documentation pages, AI Launchpad, and API testing platforms. With information scattered across different places, a significant amount of time is lost switching between tabs instead of focusing on actual development. Now imagine if <STRONG>SAP’s GenAI capabilities were available right where you work</STRONG>, ready to support you the moment you need them.</P><P>That is exactly what <STRONG>Cline integrated with SAP AI Core</STRONG> delivers. Cline works like an <STRONG>AI coding partner inside your development environment</STRONG>, and when connected to SAP AI Core, it brings SAP’s GenAI Hub models directly into your workflow. There are no API calls to write and no dashboards to open. You simply type a prompt and receive <STRONG>instant, SAP-aware assistance</STRONG> for CAP, UI5, CDS, integrations, and more.</P><P>Setting it up is simple. Install two extensions and connect your SAP AI Core service key. In just a few minutes, your development environment transforms into an <STRONG>AI-enhanced workspace</STRONG> where you can generate code, debug faster, understand complex logic, and boost productivity without breaking your flow.</P><P>This blog walks you through that setup and helps you experience how <STRONG>seamless and powerful SAP development becomes when GenAI is built directly into your everyday tools</STRONG>.</P><P>Before you start using <STRONG>Cline</STRONG> with <STRONG>SAP AI Core</STRONG>, please ensure that your <STRONG>SAP GenAI Hub</STRONG> environment is already set up.<BR />If you have not completed the setup, please follow the links below:</P><UL><LI><STRONG>SAP AI Core provisioning</STRONG><BR /><A href="https://developers.sap.com/tutorials/ai-core-genaihub-provisioning..html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/ai-core-genaihub-provisioning..html</A></LI><LI><STRONG>SAP AI Launchpad provisioning</STRONG><BR /><A href="https://developers.sap.com/tutorials/ai-launchpad-provisioning..html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/ai-launchpad-provisioning..html</A></LI></UL><P><STRONG>Step 1: Install Cline Extensions in VS Code</STRONG></P><OL><LI>Open <STRONG>Visual Studio Code</STRONG></LI><LI>Go to the <STRONG>Extensions</STRONG> tab</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sneha_govind_8-1767627874698.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/358279i1218EBD5E04B27CE/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sneha_govind_8-1767627874698.png" alt="sneha_govind_8-1767627874698.png" /></span></P><OL><LI>Search for <STRONG>"Cline"</STRONG></LI><LI>You will see two extensions in the results</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sneha_govind_9-1767627874713.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/358280i882F155CECF9061E/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sneha_govind_9-1767627874713.png" alt="sneha_govind_9-1767627874713.png" /></span></P><OL><LI>Install both: <STRONG>Cline</STRONG> &amp; <STRONG>Cline for SAP AI Core</STRONG></LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sneha_govind_10-1767627874739.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/358281iC1E7EF8C282593B0/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sneha_govind_10-1767627874739.png" alt="sneha_govind_10-1767627874739.png" /></span></P><P>After installation, <STRONG>close and reopen VS Code</STRONG>.</P><P><STRONG>Step 2: Create or Use an SAP AI Core Instance</STRONG></P><P>Open your <STRONG>SAP BTP Subaccount</STRONG>.<BR />If you do not already have an SAP AI Core instance, create one by following the provisioning guide: <A href="https://developers.sap.com/tutorials/ai-core-genaihub-provisioning..html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/ai-core-genaihub-provisioning..html</A></P><P>Once the instance is created:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sneha_govind_11-1767627874754.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/358284i0DA4F7C823AB4E70/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sneha_govind_11-1767627874754.png" alt="sneha_govind_11-1767627874754.png" /></span></P><P>&nbsp;</P><OL><LI>Navigate to <STRONG>Instances and Subscriptions</STRONG></LI><LI>Locate your <STRONG>AI Core</STRONG> instance</LI><LI>Create a <STRONG>Service Key</STRONG></LI><LI>You will use the details from this service key to configure Cline</LI></OL><P>Example service key:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sneha_govind_12-1767627874762.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/358282i02C5876FCB5EAE70/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sneha_govind_12-1767627874762.png" alt="sneha_govind_12-1767627874762.png" /></span></P><P><STRONG>Step 3: Configure Cline With SAP AI Core Credentials<BR /><BR /></STRONG>In Cline,<BR />API Provider: SAP AI Core<BR />AI Core Client Id: &lt;take the info from key : clientid&gt;<BR />AI Core Client Secret: &lt; take the info from key : clientsecret&gt;<BR />AI Core Base URL: &lt;take the info from key : AI_API_URL&gt;<BR />AI Core Auth URL: &lt;take the info from key : url&gt;<BR />AI Core Resource Group: &lt;by default, group will be default. If you have any specific group please specify the name&gt;<BR />Orchestration Mode:&nbsp;If you have an&nbsp;extended&nbsp;service plan, the ā€œOrchestration Modeā€ checkbox will automatically appear<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Note: If <STRONG>Orchestration Mode</STRONG> is checked, you instantly get access to all models via the Harmonized API with no deployments, else you must deploy and manage each model separately.<BR />Model:&nbsp; Choose desired model from the ā€œdropdownā€<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sneha_govind_13-1767627874774.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/358283iDC070920D9E9B928/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sneha_govind_13-1767627874774.png" alt="sneha_govind_13-1767627874774.png" /></span></P><P><STRONG>Step 4: Verify That Cline Is Working</STRONG></P><OL><LI>Click the <STRONG>Cline</STRONG> icon in the VS Code sidebar</LI><LI>Type a test prompt, such as: <STRONG>ā€œWrite a 1-line JavaScript function.ā€</STRONG></LI><LI>Press <STRONG>Enter</STRONG></LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sneha_govind_14-1767627874784.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/358285i384E18690F407286/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sneha_govind_14-1767627874784.png" alt="sneha_govind_14-1767627874784.png" /></span></P><P>You should now see the response.<BR /><span class="lia-unicode-emoji" title=":party_popper:">šŸŽ‰</span> <STRONG>Cline is successfully connected to SAP AI Core!</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sneha_govind_15-1767627874794.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/358286iBE595E46602E371E/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="sneha_govind_15-1767627874794.png" alt="sneha_govind_15-1767627874794.png" /></span><BR /><BR />By integrating Cline with SAP AI Core, you now have a practical and efficient way to use SAP’s GenAI capabilities directly within your development workflow. This setup allows you to generate CAP service logic, refine CDS models, create UI5 components, validate integration flows, and troubleshoot code without jumping between multiple tools.</P><P>Using your AI Core service key, endpoints, and resource group, Cline securely connects to SAP’s GenAI Hub and gives you quick access to both Harmonized and model-specific APIs. This ensures that your prompts return consistent, SAP-relevant outputs that fit naturally into your existing project structure.</P><P>With everything configured and your first prompt tested, you can now explore different models, try more advanced scenarios, and make AI a reliable part of your daily SAP development routine. This simple addition can make your workflow faster, cleaner, and much more enjoyable.<BR /><BR />E2E information available in the attached blog -&nbsp;<A href="https://docs.cline.bot/provider-config/sap-aicore" target="_blank" rel="noopener nofollow noreferrer">https://docs.cline.bot/provider-config/sap-aicore</A>&nbsp;</P> 2026-01-05T16:50:16.644000+01:00 https://community.sap.com/t5/technology-blog-posts-by-members/accelerating-sapui5-migration-to-bas-a-practical-framework/ba-p/14314334 Accelerating SAPUI5 Migration to BAS: A Practical Framework 2026-02-12T08:43:37.222000+01:00 abap_Sap https://community.sap.com/t5/user/viewprofilepage/user-id/1866490 <P><STRONG>Introduction: </STRONG></P><P>SAP has transitioned its development paradigm from SAP Web IDE to SAP Business Application Studio (BAS), pushing developers to migrate from legacy UI5 to Fiori applications to the new environment. This paper outlines a structured and scalable methodology to migrate SAP UI5 applications from WEB IDE to BAS, focusing on connectivity, tooling and configuration challenges.</P><P><STRONG>Methodology:</STRONG></P><OL><LI>Log in to your BTP Account. Go into your space. Go to the Service Marketplace. Search for Business Application Studio. Open Business Application Studio Application.</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="abap_Sap_0-1770403434384.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369713iF197F23660D7110B/image-size/medium?v=v2&amp;px=400" role="button" title="abap_Sap_0-1770403434384.png" alt="abap_Sap_0-1770403434384.png" /></span></P><P>&nbsp;</P><P>Note: Pre-Requisite - Cloud Connector and Destination should be set up for connectivity with the S4.</P><P>2. Click on Create Dev Space. Give some Dev Space Name—select the SAP Fiori on the left. On the right side, under Additional SAP Extensions select HTML5 Application Template, Launchpad Module, Basic UI5 Template. Click on Create Dev Space.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="abap_Sap_1-1770403434392.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369715i018AB441FE7B60F3/image-size/medium?v=v2&amp;px=400" role="button" title="abap_Sap_1-1770403434392.png" alt="abap_Sap_1-1770403434392.png" /></span></P><P>3. Dev Space is created as shown below. It will take a few minutes to start. Once it's started, click on the Dev space. Here, I have named it ā€œDemoMigrationā€. It will open the Development workspace. Bookmark this URL for future use and easy navigation to Workspace.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="abap_Sap_2-1770403434397.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369714i8F504A36E2665CF9/image-size/medium?v=v2&amp;px=400" role="button" title="abap_Sap_2-1770403434397.png" alt="abap_Sap_2-1770403434397.png" /></span></P><P>4. For the first time, click on the menu on the top left and select the open folder. Search for Projects Folder. Click on OK.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="abap_Sap_3-1770403434406.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369717iBB5CEC9FD252F692/image-size/medium?v=v2&amp;px=400" role="button" title="abap_Sap_3-1770403434406.png" alt="abap_Sap_3-1770403434406.png" /></span></P><P>5. Click on Import on your Get Started page. It will prompt to start the migration. Select migration option. Below screen will appear. &nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="abap_Sap_4-1770403434413.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369716i023CD735A9A97B96/image-size/medium?v=v2&amp;px=400" role="button" title="abap_Sap_4-1770403434413.png" alt="abap_Sap_4-1770403434413.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="abap_Sap_5-1770403434417.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/369718i31B240F850C19990/image-size/medium?v=v2&amp;px=400" role="button" title="abap_Sap_5-1770403434417.png" alt="abap_Sap_5-1770403434417.png" /></span></P><P>6. Select Destination and Hostname and Client Details.</P><P><STRONG>Conclusion: </STRONG></P><P>Migrating SAP UI5 applications from SAP Web IDE to SAP Business Application Studio is more than a technical upgrade. It represents a strategic change towards a cloud-native and future ready development environment aligned with that of SAP’s roadmap. This blog outlined a well-structured migration methodology, which includes prerequisite connectivity set up, dev space configuration, project import and environment preparation within BAS. By following these steps, organizations can ensure a smooth transition while minimizing disruption to existing Fiori applications. This structured approach simplifies migration from WEB IDE to BAS. It supports scalable and cloud-aligned SAPUI5 development for public institutions and enterprises.</P><P>.</P><P>&nbsp;</P> 2026-02-12T08:43:37.222000+01:00 https://community.sap.com/t5/technology-blog-posts-by-members/part-1-creating-and-deploying-a-sap-cap-application-with-sap-hana-on-sap/ba-p/14314095 Part 1: Creating and Deploying a SAP CAP Application with SAP HANA on SAP BTP (Cloud Foundry) 2026-02-25T07:35:57.804000+01:00 yashbhosle789 https://community.sap.com/t5/user/viewprofilepage/user-id/1892526 <P><EM>Note: This blog is the <STRONG>First Part</STRONG> of series - Building and Deploying SAP CAP Applications on BTP: From Database to Work Zone</EM></P><P>&nbsp;</P><P><STRONG>Introduction</STRONG></P><P>SAP Cloud Application Programming Model (CAP) is often demonstrated through local examples, but its real value becomes clear when the application is deployed to SAP Business Technology Platform (BTP) and backed by a managed database.</P><P>In this blog, we will go through creating a basic SAP CAP application using the <STRONG>SAP Business Application Studio (BAS) CAP template</STRONG>, binding it to <STRONG>SAP HANA Cloud,</STRONG>&nbsp;and deploying it to <STRONG>SAP BTP using the Cloud Foundry runtime</STRONG>.</P><P>The goal here is not to build a complex application, but to establish a clean, working reference point. I start with a minimal CAP project to keep the focus on deployment rather than domain complexity.</P><P>This blog serves as a <STRONG>baseline</STRONG> for a series where the same CAP application will later be deployed using different databases and runtimes. The focus here is not application complexity, but establishing a clean, working reference point.</P><P>&nbsp;</P><P><STRONG>Pre-requisites:</STRONG></P><P>Please make sure that you have these before starting the development:</P><UL><LI>SAP BTP Account</LI><LI>Cloud Foundry instance</LI><LI>Active Hana Cloud Instance</LI><LI>SAP BAS / VSCode for development</LI><LI>If using BAS, have a dev space running</LI><LI>If using VSCode then make sure that you have installed Node.js and CLI installed</LI></UL><P>&nbsp;</P><P>Now, let’s start with the development.</P><P>&nbsp;</P><P><STRONG>Create a CAP Project from Template given in the BAS:</STRONG></P><P>SAP Business Application Studio provides a template for creating a CAP project with the required structure. The positives of using the template is that it automatically builds your Multi-Tenant Application file (mta.yaml) with the required deployment modules.</P><P>&nbsp;</P><P>Follow the following steps:</P><UL><LI>Open <STRONG>BAS</STRONG></LI><LI>Click on the <STRONG>Side Menu</STRONG> on the top-left corner</LI><LI>Click on <STRONG>File</STRONG></LI><LI>Click on <STRONG>New Project From Template</STRONG></LI><LI>Select <STRONG>CAP Project</STRONG></LI><LI>Configure the project as follows:<UL><LI><STRONG>Project Name</STRONG>: cap-hana-app</LI><LI><STRONG>Runtime</STRONG>: Node.js</LI><LI><STRONG>Database</STRONG>: SAP HANA Cloud</LI><LI><STRONG>Deployment Environment</STRONG>: Cloud Foundry</LI><LI><STRONG>Runtime Capabilities</STRONG>: XSUAA</LI></UL></LI><LI>Click on <STRONG>Finish</STRONG></LI></UL><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yashbhosle789_0-1771265545156.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/373190i1AB58ADFA9861458/image-size/medium?v=v2&amp;px=400" role="button" title="yashbhosle789_0-1771265545156.png" alt="yashbhosle789_0-1771265545156.png" /></span></P><P>CAP Project creation wizard with SAP HANA selected</P><P>&nbsp;</P><P>This will create a CAP project for you with mta.yaml automatically updated. The generated project follows standard CAP structure:</P><UL><LI>app – &nbsp;UI</LI><LI>db – Schema and data files</LI><LI>srv – Service Definition</LI></UL><P>&nbsp;</P><P>Now that the project is created, let’s get into development.</P><P>&nbsp;</P><P><STRONG>Development:</STRONG></P><P>Follow the following steps:</P><UL><LI>Define a Simple Data Model:</LI></UL><P class="lia-indent-padding-left-60px" style="padding-left : 60px;">If you have schema.cds under db/ folder, then update it with the following code snippet. If you do not have schema.cds, then create one.</P><pre class="lia-code-sample language-bash"><code>namespace com.mycompany.capapp; entity Products { key ID : UUID; name : String(100); description : String(500); price : Decimal(10, 2); stock : Integer; category : String(50); createdAt : Timestamp; modifiedAt : Timestamp; }</code></pre><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><UL><LI>Expose the Model via CAP Service:</LI></UL><P class="lia-indent-padding-left-60px" style="padding-left : 60px;">If you have service.cds under srv/ folder, then update it with the following code snippet. If you do not have service.cds, then create one.</P><pre class="lia-code-sample language-bash"><code>using com.mycompany.capapp from '../db/schema'; service CatalogService { entity Products as projection on capapp.Products; }</code></pre><P class="lia-indent-padding-left-60px" style="padding-left : 60px;">CAP automatically exposes this service as an OData endpoint without requiring manual REST configuration.</P><P>&nbsp;</P><UL><LI>Add Data:</LI></UL><P class="lia-indent-padding-left-60px" style="padding-left : 60px;">Run the following in the project terminal:</P><pre class="lia-code-sample language-bash"><code>cds add data --records 5</code></pre><P>&nbsp;</P><UL><LI>Run the Application locally:</LI></UL><P class="lia-indent-padding-left-60px" style="padding-left : 60px;">Run the following command:</P><pre class="lia-code-sample language-bash"><code>cds watch</code></pre><P class="lia-indent-padding-left-60px" style="padding-left : 60px;">You should be able to see the data in the <STRONG>Products</STRONG></P><P class="lia-indent-padding-left-60px" style="padding-left : 60px;">You can also use the SQLite as a database while running locally. Execute these before starting the application:</P><pre class="lia-code-sample language-bash"><code>cds build cds deploy</code></pre><P><STRONG>&nbsp;</STRONG></P><UL><LI>Add a Managed Approuter:</LI></UL><OL><LI>Right click on <STRONG>mta.yaml</STRONG></LI><LI>Click on Create <STRONG>MTA Module from Template</STRONG></LI><LI>Select <STRONG>Approuter Configuration</STRONG></LI><LI>Fill in the required details</LI><LI>Click <STRONG>Finish</STRONG></LI></OL><P>&nbsp;</P><P>This is important to view the data once deployed.</P><P>&nbsp;</P><P><STRONG>Prepare the Project for Deployment:</STRONG></P><P>Since we have created the project from the BAS Template, we already have the mta.yaml updated and deployment ready. This file already includes:</P><UL><LI>CAP Service Modules</LI><LI>SAP HANA HDI Container</LI><LI>Required Service Bindings</LI></UL><P>&nbsp;</P><P><STRONG>Build the CAP Project:</STRONG></P><P>First things first, install node modules. Run the following in the Terminal:</P><pre class="lia-code-sample language-bash"><code>npm i</code></pre><P>To build the project, you can either run the following in the terminal:</P><pre class="lia-code-sample language-bash"><code>mbt build</code></pre><P>or can do it manually:</P><UL><LI>Right click on <STRONG>mta.yaml</STRONG></LI><LI>Select <STRONG>Build MTA Project</STRONG></LI></UL><P>This will build your project for deployment. Watch-out at the project structure. You might see a new addition to the structure <STRONG>mta_archives</STRONG> which consists the <STRONG>mtar</STRONG> file of the project.</P><P>&nbsp;</P><P><STRONG>Deploy the Application:</STRONG></P><P>To deploy the application to your BTP using Cloud Foundry, you will have to login to Cloud Foundry. Run the following in Terminal:</P><pre class="lia-code-sample language-bash"><code>cf login</code></pre><P>This will ask for your subaccount credentials. Provide them and you will be logged in successfully. Remember to map the correct <STRONG>space</STRONG> and <STRONG>org</STRONG>.</P><P>Once you are logged in successfully, you are ready to deploy the application. Remember the file generated while building the CAP project, this is the same file that will be deployed.</P><P>Run the following command:</P><pre class="lia-code-sample language-bash"><code>cf deploy mta_archives/cap-hana-app_1.0.0.mtar</code></pre><P>or, you can just right click on <STRONG>cap-hana-app_1.0.0.mtar</STRONG> under <STRONG>mta_archives</STRONG> folder, and click on <STRONG>Deploy MTA Archive.</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yashbhosle789_1-1771266472799.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/373199iFD534F4F4F589993/image-size/medium?v=v2&amp;px=400" role="button" title="yashbhosle789_1-1771266472799.png" alt="yashbhosle789_1-1771266472799.png" /></span></P><P>Successful Cloud Foundry deployment</P><P>&nbsp;</P><P>During deployment:</P><UL><LI>HDI Container is created</LI><LI>Database schema is deployed</LI><LI>CAP Service is bound to the database automatically</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yashbhosle789_2-1771266472809.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/373200iD76C1135E451AE31/image-size/medium?v=v2&amp;px=400" role="button" title="yashbhosle789_2-1771266472809.png" alt="yashbhosle789_2-1771266472809.png" /></span></P><P>Confirm the Deployed Instances</P><P>&nbsp;</P><P><STRONG>Verify the Deployed Application:</STRONG></P><P>When the deployment is successful, you will get a application route. Copy the same and open it in the new tab of your browser and access the service endpoint: <STRONG>/catalog/Products</STRONG></P><P>If the deployment is successful, you can see the data displayed in a JSON format.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yashbhosle789_0-1771269609219.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/374382iF18B31DAA94E39B4/image-size/medium?v=v2&amp;px=400" role="button" title="yashbhosle789_0-1771269609219.png" alt="yashbhosle789_0-1771269609219.png" /></span></P><P>Browser showing the OData service response</P><P>&nbsp;</P><P><STRONG>Conclusion</STRONG></P><P class="">With that, we have successfully created a minimal SAP CAP application, connected it to SAP HANA Cloud, and deployed it to SAP BTP using the Cloud Foundry runtime. While the application itself is intentionally simple, the deployment pipeline we established here — from schema definition to MTA build to Cloud Foundry deployment — reflects a production-ready workflow that scales well as complexity grows.</P><P class="">The key takeaways from this exercise are that the BAS CAP template significantly reduces boilerplate by auto-generating the mta.yaml with the necessary modules and bindings, the HDI container handles schema deployment seamlessly, and CAP's convention-over-configuration approach means your OData service is ready without any manual REST wiring.</P><P class="">This baseline will serve as the foundation for the rest of this series, where we will explore deploying the same application with different databases, runtimes, and configurations — making it easier to understand the trade-offs of each approach. Stay tuned for the next part!</P><P>&nbsp;</P><P><STRONG>Next Steps</STRONG></P><P>In the upcoming blogs, we will focus on creating the same application using a <STRONG>PostgreSQL, Hyperscaler Option</STRONG>.</P> 2026-02-25T07:35:57.804000+01:00