https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-Build-Code-blog-posts.xml SAP Community - SAP Build Code 2024-05-20T17:00:37.219465+00:00 python-feedgen SAP Build Code blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-sap/upgrade-sap-business-application-studio-to-sap-build-code/ba-p/13661500 Upgrade SAP Business Application Studio to SAP Build Code 2024-04-08T13:42:39.212000+02:00 rupamaity https://community.sap.com/t5/user/viewprofilepage/user-id/9300 <P>Dear Community,</P><P>SAP Build Code was made generally available on March 27. Since then, we have been following your posts and comments on social media. We are excited to see so many of you trying out the&nbsp;<A href="https://community.sap.com/t5/application-development-blog-posts/test-drive-joule-s-generative-ai-features-in-sap-build-code-now/ba-p/13649882" target="_blank">Test Drive</A>&nbsp;and exploring SAP Build Code.</P><P>We are already hearing a lot of great feedback that we plan to work on in the coming months.</P><P>One such customer request was to be able to migrate an existing SAP Business Application Studio instance to SAP Build Code.</P><P>We have now made this possible!&nbsp;Read on to migrate your SAP Business Application Studio instance to SAP Build Code.</P><P>We start with a subaccount where you have SAP Business Application Studio on the “standard” plan. &nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_0-1712494036901.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92401iC986A9C19A39E473/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_0-1712494036901.png" alt="rupamaity_0-1712494036901.png" /></span></P><P><SPAN><STRONG>Note</STRONG> - This subaccount can contain various other SAP BTP services. For the purposes of this blog, we will keep those services untouched. </SPAN></P><P>Let's begin!</P><OL><LI>In your subaccount, go to <STRONG>Services &gt; Service Marketplace</STRONG> and look for the SAP Build Code service.</LI><LI>Select the “standard” plan, click the Actions button, and then click <STRONG>Create</STRONG>. <span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_4-1712494565598.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92405iE620F9FF7E504032/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_4-1712494565598.png" alt="rupamaity_4-1712494565598.png" /></span><DIV class="">&nbsp;</DIV><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_6-1712494671977.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92407iBC9F2D7D02D51541/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_6-1712494671977.png" alt="rupamaity_6-1712494671977.png" /></span><P>&nbsp;</P></LI><LI><SPAN><SPAN><SPAN>Navigate back to the Instances and Subscriptions page. You should now see a new SAP Build Code entry in the <STRONG>Application</STRONG> section</SPAN></SPAN></SPAN></LI><LI><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_7-1712494762663.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92408i0B585CBB2A77244A/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_7-1712494762663.png" alt="rupamaity_7-1712494762663.png" /></span>In your subaccount, go to <STRONG>Entitlements</STRONG> and search for SAP Business Application Studio. Add the build-code plan to your subaccount</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_3-1712494436229.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92404iADAE45FA5181EEA0/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_3-1712494436229.png" alt="rupamaity_3-1712494436229.png" /></span><SPAN>5. Go to <STRONG>Instances and Subscriptions</STRONG>, on the SAP Business Application Studio row, click on Actions [...]&nbsp;and select <STRONG>Update</STRONG>.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_8-1712494873572.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92409iA9A2E1446371C999/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_8-1712494873572.png" alt="rupamaity_8-1712494873572.png" /></span></P><P>&nbsp;</P><P>5. Select the “build-code” plan and click on <STRONG>Update Subscription</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_9-1712494916827.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92410iFC4FA08B3D1439C4/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_9-1712494916827.png" alt="rupamaity_9-1712494916827.png" /></span></P><P>6. And that’s it!&nbsp;<SPAN>Click on SAP Build Code to navigate to the SAP Build Lobby.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_0-1712501715880.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92431iB0A268CF312CB911/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_0-1712501715880.png" alt="rupamaity_0-1712501715880.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_10-1712494990985.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92411iABC8D35D4B39315D/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_10-1712494990985.png" alt="rupamaity_10-1712494990985.png" /></span></P><P>7. You can now start creating your projects with SAP Build Code.</P><P><STRONG>Note</STRONG>&nbsp; - If you want to access projects that you created in SAP Business Application Studio earlier, you can still do so via the Dev Space Manager.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="rupamaity_11-1712495051726.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92412i0B9FEA7114CA7880/image-size/large?v=v2&amp;px=999" role="button" title="rupamaity_11-1712495051726.png" alt="rupamaity_11-1712495051726.png" /></span></P><P>&nbsp;</P><P>We hope that this helps you make the move to SAP Build Code with ease.</P><P>We have many more great features coming up in the next few months, so keep an eye out for new releases.</P><P>And till then, happy coding!</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-04-08T13:42:39.212000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/customers-and-partners-are-using-sap-btp-to-innovate-and-extend-their-sap/ba-p/13656355 Customers and Partners are using SAP BTP to Innovate and Extend their SAP Applications 2024-04-08T19:45:22.343000+02:00 AaronGraber https://community.sap.com/t5/user/viewprofilepage/user-id/4059 <P>At SAPinsider EMEA 2023 Conference in Copenhagen, we met up with SAP BTP customers and partners to capture their inspiring stories.<BR /><BR /><STRONG>SAP BTP Customers</STRONG></P><UL><LI><A href="https://www.sap.com/assetdetail/2024/02/3016a8a8-ad7e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">Nordzucker</A>, one the world's leading sugar manufacturers and produces animal feed, molasses, fertilizers, and biofuels.&nbsp; Improved and simplified their maintenance processes with 2BM Mobile Work Order built with SAP BTP.&nbsp;<BR /><BR /></LI><LI><A href="https://www.sap.com/assetdetail/2024/02/c63231a9-ad7e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">delaware</A>, a global IT solutions and services provider, uses SAP BTP internally to create a real-time integration framework that delivered higher customer satisfaction and reduced costs. &nbsp;<BR /><BR /></LI><LI><A href="https://www.sap.com/assetdetail/2024/02/be4f5da4-ad7e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">Maxion Wheels</A>, the world's #1 wheel producer, leverages SAP BTP with SAP Datasphere to provide a single business data fabric for their sales, finance, inventory, and logistics departments.<BR /><BR /></LI><LI><A href="https://www.sap.com/assetdetail/2024/03/5ef58868-b47e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">Satair</A>, spare parts division of Airbus, has 4 hours to get a spare part to a plane to get it flying again, it uses SAP BTP as its Swiss army knife.</LI></UL><P><BR /><STRONG>SAP BTP Partners</STRONG></P><UL><LI><A href="https://www.sap.com/assetdetail/2024/04/344dfd9c-b57e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">2BM Software</A>, develops and sells maintenance, service and warehouse applications exclusively for SAP built with SAP BTP.<BR /><BR /></LI><LI><A href="https://www.sap.com/assetdetail/2024/02/361831a9-ad7e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">delaware</A>, a global IT solutions and services provider, helps customers solve their business needs of today and tomorrow using SAP BTP for integration, application development and automation, AI, and data and analytics.<BR /><BR /></LI><LI><A href="https://www.sap.com/assetdetail/2024/02/56c8d7c8-ad7e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">Precog</A>, helps customers get their SAP and Non-SAP application data out easily and into SAP BTP with SAP Datasphere to harmonize their data.<BR /><BR /></LI><LI><A href="https://www.sap.com/assetdetail/2024/03/4c0f1da7-b17e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">NTT Data</A>, delivers end to end processes, innovates new business models, and builds solutions for their customers with SAP BTP.&nbsp; NTT Data is the partner supporting Satair’s successful SAP BTP projects.</LI></UL><P><BR />Learn more about&nbsp;<A href="https://www.sap.com/products/technology-platform.html" target="_blank" rel="noopener noreferrer">SAP BTP</A>. Explore more&nbsp;<A href="https://www.sap.com/products/technology-platform/partners.html" target="_blank" rel="noopener noreferrer">SAP BTP partner stories</A>.<BR /><BR />If you are a partner, get more SAP BTP resources on&nbsp;<A href="https://partneredge.sap.com/en/products/btp/about.html" target="_blank" rel="noopener noreferrer">SAP PartnerEdge</A>.</P><P>&nbsp;</P><P>&nbsp;</P> 2024-04-08T19:45:22.343000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/enter-the-era-of-spatial-computing-for-enterprise-with-sap-build-code/ba-p/13662871 Enter the era of spatial computing for enterprise with SAP Build Code 2024-04-08T20:32:02.868000+02:00 sandeeptds https://community.sap.com/t5/user/viewprofilepage/user-id/39472 <H2 id="toc-hId-991605986">Introduction</H2><P>Since the advent of computers, engineers have continually sought to enhance human-computer interaction. We progressed from clicking buttons on a keyboard to the point-and-click method with a mouse, to utilizing our sense of touch. Throughout this evolution, we've unlocked more natural forms of interaction.</P><P>Apple recently introduced <SPAN><A href="https://www.apple.com/apple-vision-pro/" target="_blank" rel="noopener nofollow noreferrer">Apple Vision Pro</A></SPAN>, offering new and immersive ways to interact with digital elements in three dimensions with <SPAN>a user’s eyes, hands, and voice</SPAN>.</P><P>Enterprises worldwide are exploring the potential for building new experiences for their employees. Picture yourself taking a deep dive into your data, with charts covering your entire living room to infer insights or envision designing hardware components from multiple angles with agility to achieve unmatched precision.</P><P>The SAP BTP SDK for iOS, <SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/mobile-development-management-with-sap-build-code/ba-p/13575654" target="_blank">a part of the SAP Build Code</A></SPAN>, already accelerates app development for enterprise developers building for iPhone, iPad, and Apple Watch. With <A href="https://me.sap.com/softwarecenter/template/products/%20_APP=00200682500000001943&amp;_EVENT=DISPHIER&amp;HEADER=Y&amp;FUNCTIONBAR=N&amp;EVENT=TREE&amp;NE=NAVIGATE&amp;ENR=73554900100800000743&amp;V=MAINT&amp;TA=ACTUAL&amp;PAGE=SEARCH/SAP%20BTP%20SDK%20FOR%20IOS" target="_self" rel="noopener noreferrer">the 24.4 release</A>, developers have the same seamless capability while building for Apple Vision Pro. Developers can now build native experiences for their business processes on visionOS by securely interacting with their enterprise data through SAP Mobile Services on SAP BTP, making their essential SAP systems ready for the future.</P><P>&nbsp;</P><H2 id="toc-hId-795092481">SAP BTP SDK for iOS Capability Overview</H2><P>Developers who have previously used SAP BTP SDK for iOS are familiar with its <SPAN><A href="https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/index.html" target="_blank" rel="noopener noreferrer">frameworks</A></SPAN>. Some of these frameworks have now been enhanced to provide fundamental support to developers for building native apps for Apple Vision Pro.</P><P><STRONG>SAPFoundation</STRONG>: Configure the authentication mechanism of the app, securely communicate with SAP and 3rd Party systems over the network, and cache necessary information on the device.</P><P><STRONG>SAPFioriFlows</STRONG>:&nbsp; Customize the end-user onboarding experience common to most enterprise apps by leveraging the <SPAN><A href="https://experience.sap.com/fiori-design-ios/article/onboarding-2/" target="_blank" rel="noopener noreferrer">SAP Fiori for iOS design guidelines</A></SPAN>. For in-app screens, be sure to check out the “<SPAN><A href="https://developer.apple.com/design/human-interface-guidelines/designing-for-visionos" target="_blank" rel="noopener nofollow noreferrer">Designing for visionOS</A></SPAN><SPAN>”</SPAN> guide published by Apple.</P><P><STRONG>SAPOData</STRONG>: Create apps on Apple Vision Pro that interact with enterprise OData APIs for apps running in online mode. You can rest assured about your enterprise data being safe as all the on-device data is persisted in a Secure Store.</P><P><STRONG>SAPCommon</STRONG>: Leverage fundamental capabilities used by developers and other frameworks, like logging and error handling.</P><P>You can see all of these frameworks at play by using the SAP BTP SDK Assistant for iOS shipped with the 24.4 release to create a starting application with the code for user-onboarding already in place. For example, you can configure Optic ID for the app passcode right out of the box.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sandeeptds_0-1712662145137.png" style="width: 772px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93622i1E722522B127AED7/image-dimensions/772x513?v=v2" width="772" height="513" role="button" title="sandeeptds_0-1712662145137.png" alt="sandeeptds_0-1712662145137.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sandeeptds_1-1712662198263.png" style="width: 773px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93623iB2E2DE8A48C168FA/image-dimensions/773x435?v=v2" width="773" height="435" role="button" title="sandeeptds_1-1712662198263.png" alt="sandeeptds_1-1712662198263.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sandeeptds_2-1712662233802.png" style="width: 793px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93624iE169A365DAAE0BA7/image-dimensions/793x446?v=v2" width="793" height="446" role="button" title="sandeeptds_2-1712662233802.png" alt="sandeeptds_2-1712662233802.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId-598578976">Spatial Apps by SAP</H2><P><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/apple-vision-pro-is-available-sap-mobile-start-v1-10-is-ready/ba-p/13583357" target="_blank">SAP Mobile Start</A></SPAN> has been <SPAN><A href="https://apps.apple.com/de/app/sap-mobile-start/id1540195902?l=en-GB&amp;platform=vision" target="_blank" rel="noopener nofollow noreferrer">available in the App Store for Apple Vision Pro</A></SPAN> since its launch in February, bringing an enterprise user’s content, tasks and apps to the infinite canvas of Apple Vision Pro. Under the hood, SAP Mobile Start is built using the SAP BTP SDK for iOS, serving as a testament to the kind of experiences developers can now build themselves, too!</P><P>SAP Analytics Cloud is <SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-launches-sap-analytics-cloud-on-apple-vision-pro-on-day-one/ba-p/13632467" target="_blank">also available</A></SPAN>, allowing SAP Analytics Cloud users to experience their mobile-ready stories on Apple Vision Pro.</P><P>&nbsp;</P><H2 id="toc-hId-402065471">Next Steps</H2><P>Get ready to explore the possibilities of building spatial enterprise applications for Apple Vision Pro with the latest SAP BTP SDK for iOS 24.4 release. Download Xcode 15.2 or later to run the apps built with the SDK on an Apple Vision Pro simulator now!</P><P>Stay tuned for more blog posts and tutorials in the <SPAN><A href="https://community.sap.com/" target="_blank">SAP Community.</A></SPAN></P><P>&nbsp;</P><H2 id="toc-hId-205551966">Important Links</H2><UL><LI><SPAN><A href="https://www.sap.com/products/technology-platform/developer-tools.html" target="_blank" rel="noopener noreferrer">What is SAP Build Code?</A></SPAN></LI><LI><SPAN><A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/guides/index.html" target="_blank" rel="noopener noreferrer">What is SAP Mobile Services?</A></SPAN></LI><LI><SPAN><A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/guides/getting-started/ios/creating-an-app.html" target="_blank" rel="noopener noreferrer">What is SAP BTP SDK for iOS?</A></SPAN></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-sdk-for-ios-24-4-0-is-now-available/ba-p/13663931" target="_self">Overview of SAP BTP SDK for iOS 24.4</A></LI><LI><SPAN><A href="https://www.sap.com/partners/find/apple.html#new" target="_blank" rel="noopener noreferrer">SAP and Apple Partnership</A></SPAN></LI></UL> 2024-04-08T20:32:02.868000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-build-code-speed-up-your-development-with-generative-ai-assistant-joule/ba-p/13660954 SAP Build Code - Speed up your development with Generative AI Assistant - Joule 2024-04-09T06:16:00.322000+02:00 abhishekmodi https://community.sap.com/t5/user/viewprofilepage/user-id/7118 <P>&nbsp;</P><H2 id="toc-hId-991547306">Introduction</H2><P>The newly released SAP Build Code has Joule AI integrated to speed up the development. The AI assistant can be used to generate application logic, data models, fiori apps, test scripts, sample data, service definitions and so on. The assistant can even put the code for intelligent checks automatically in cases where it is not called out implicitly in the requirements. For example, in the tutorial - <A href="https://developers.sap.com/tutorials/build-code-test-drive.html" target="_blank" rel="noopener noreferrer">SAP BUILD Code Test Drive</A> - Joule automatically puts a check to see if customer has enough points to redeem. This ensures the comprehensive validation is in place for the application logic and is extremely helpful. However, it is always recommended to review the generated code to make sure it intends to do exactly as told.&nbsp;</P><H2 id="toc-hId-795033801">SAP BUILD Code - Joule capabilities</H2><P>Joule AI saves a lot of time by understanding the context and generating the code on the fly. It reduces the common errors like misspelling, missing symbols etc. that can take time to fix.&nbsp;</P><P>Within the Business application studio - click on the diamond button on BAS toolbar to launch Joule. The next screen will be listing various contexts with which Joule can be used - keep in mind it is generating a CAP application behind the scenes hence the artifact categories:</P><OL><LI><STRONG>Data Model and Service Creation</STRONG> - This will help to create the entire data model by narrating the overall business scenario to Joule. The data model includes service creation as well as in oData v2/v4 services.</LI><LI><STRONG>Sample data</STRONG> - This generates sample data using Joule. This utility is extremely helpful when we do not have connectivity to destination system or just getting started with a prototype. After generating the test data, it can even be edited and appended further if needed.</LI><LI><STRONG>Application Logic</STRONG> - This category generates codes for business logic as in validations, special rules, error handling, Please note that it may create additional checks on the basis of it's understanding on business logic, hence it is important to review the generated code.</LI><LI><STRONG>Unit Test</STRONG> - This category generates the unit test cases for the applications. This is very useful to test the apps quickly after making enhancements later on. Joule automatically creates the test cases based on scenario narrations.</LI><LI><STRONG>SAP Fiori UI</STRONG> - This category generates the Fiori app. For example, I used the below prompt to create a full fledged drill down app for navigating across entire schema:</LI></OL><P>After running the prompt, Joule displays the sample code or the project files in a window called Joule Staging Area. Drag it upwards in case it is hidden.&nbsp;</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-05 at 2.14.03 PM.png" style="width: 490px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92225iEE6284C8DF3750AF/image-dimensions/490x602?v=v2" width="490" height="602" role="button" title="Screenshot 2024-04-05 at 2.14.03 PM.png" alt="Screenshot 2024-04-05 at 2.14.03 PM.png" /></span></SPAN></P><P>&nbsp;</P><H2 id="toc-hId-598520296"><SPAN>Quirks</SPAN></H2><P><SPAN>What is graphical modeler doesn't open or shows a blank window? Try clearing browser cache or opening BAS&nbsp; in incognito window.</SPAN></P><H2 id="toc-hId-402006791"><SPAN>What else can I do with Joule within SAP BUILD Code?</SPAN></H2><P><SPAN>Joule can be launched with a specific CAP aspect as scope - so that it intends to do exactly as in the scope. For example, if the chosen scope is data model it can only create data models and not Fiori apps. However to create entire application at one go, it can be launched as Fiori Tools by typing below in command bar:&nbsp;</SPAN></P><P><SPAN>Fiori tools AI: Show Fiori tools Joule.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 10.11.57 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92289i440B2BBAA01BFBB7/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-06 at 10.11.57 AM.png" alt="Screenshot 2024-04-06 at 10.11.57 AM.png" /></span></SPAN></P><P><SPAN>OR</SPAN></P><P>Start Guide Center tool from command as below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 10.10.45 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92288iAA7224254277C5D1/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-06 at 10.10.45 AM.png" alt="Screenshot 2024-04-06 at 10.10.45 AM.png" /></span></P><P>This brings up Guides on left hand toolbar as below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 10.12.58 AM.png" style="width: 558px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92290i8BE19B313D0802EC/image-dimensions/558x834?v=v2" width="558" height="834" role="button" title="Screenshot 2024-04-06 at 10.12.58 AM.png" alt="Screenshot 2024-04-06 at 10.12.58 AM.png" /></span></P><P>Click on "Generative AI-Powered Development" Guide to show all the scopes. Under SAP Fiori UI -&gt; Create an SAP Fiori Application Directly from Your Business Requirements -&gt; Click button Open Joule.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 10.15.41 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92291iE1347DB6EBBFAAB3/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-06 at 10.15.41 AM.png" alt="Screenshot 2024-04-06 at 10.15.41 AM.png" /></span></P><P>This opens Joule under Fiori tools context where it can generate the entire application - please note that it will replace the entire workspace or any existing CAP applications. This context of Joule tool intends to translate business requirements directly to the code under specific prompt conditions:</P><UL class="lia-list-style-type-square"><LI>Request should contain a single app only</LI><LI>Query should be only for generating SAP Fiori elements app</LI><LI>No second app can be added to existing project</LI><LI>Joule can generate automatically below items&nbsp;<BR /><UL><LI>Entities and entity labels</LI><LI>Entity properties and property labels</LI><LI>Entity associations (1:1 and 1:n)</LI><LI>Entities with code lists based on the explicit values in the user input</LI><LI>Value help based on 1:1 associations and code lists</LI><LI>Criticality highlighting for eligible properties in code lists</LI><LI>A single list report/object page application with one or two object pages</LI></UL></LI></UL><UL><LI>List Report Features<UL><LI>Filter fields</LI><LI>Table</LI><LI>Multiple views for a table</LI><LI>Initial data load</LI></UL></LI><LI>Object Page Features<UL><LI>Section tabs</LI><LI>Form sections and fields</LI><LI>Table sections</LI><LI>Navigation from table section to second object page</LI></UL></LI></UL><P>Any other deviation from above UI structure is not supported by Joule and this seems obvious with other floorplans since they can be implemented in a number of ways. This might seem a rigid output however below are few examples that are worked are are time savers for simple apps:</P><UL><LI>Start simple - "<STRONG><EM>Create a simple fiori application to show numbers from 1 to 10</EM></STRONG>"</LI></UL><P style=" padding-left : 30px; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 2.55.05 PM.png" style="width: 658px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92312i07F972FDFD41BF97/image-dimensions/658x751?v=v2" width="658" height="751" role="button" title="Screenshot 2024-04-06 at 2.55.05 PM.png" alt="Screenshot 2024-04-06 at 2.55.05 PM.png" /></span></P><UL><LI>Try Northwind - "<EM><STRONG>Create a fiori application displays the list of all products from&nbsp; &nbsp;</STRONG></EM><A href="https://services.odata.org/V3/OData/OData.svc/Products" target="_blank" rel="noopener nofollow noreferrer"><EM><STRONG>https://services.odata.org/V3/OData/OData.svc/Products</STRONG></EM>"</A></LI></UL><P style=" padding-left : 30px; ">In this case, it did not make the external connection to Northwind and also did not create any service but it did create the data model and the UI:</P><P style=" padding-left : 30px; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 3.18.54 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92313i97F29ECD5A245F66/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-06 at 3.18.54 PM.png" alt="Screenshot 2024-04-06 at 3.18.54 PM.png" /></span></P><UL><LI><SPAN>Try a complex app - "<EM><STRONG>Create an app showing the list of incidents. Each incident has a title, description, processor and status, such as “new”, “open”, “resolved”, “canceled”."</STRONG></EM> This creates a drilldown app with List Report navigating to a simple object page.</SPAN></LI></UL><P style=" padding-left : 30px; "><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 3.27.51 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92317i973D86513A1280E8/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-06 at 3.27.51 PM.png" alt="Screenshot 2024-04-06 at 3.27.51 PM.png" /></span></SPAN></P><P style=" padding-left : 30px; "><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 3.27.58 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92318iCC631F580245251D/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-06 at 3.27.58 PM.png" alt="Screenshot 2024-04-06 at 3.27.58 PM.png" /></span></SPAN></P><P style=" padding-left : 30px; "><SPAN>Even it generated a create screen:</SPAN></P><P style=" padding-left : 30px; "><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 3.29.44 PM.png" style="width: 495px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92319i8A7C1CE573388B24/image-dimensions/495x320?v=v2" width="495" height="320" role="button" title="Screenshot 2024-04-06 at 3.29.44 PM.png" alt="Screenshot 2024-04-06 at 3.29.44 PM.png" /></span></SPAN></P><P>Loved the fact that these apps ran out of the box without any errors and is much more than the boilerplate code!</P><H2 id="toc-hId-205493286">How can I make Joule work on UI other than List Report and Object floorplans?</H2><P>To create a free style app or modify the existing app, activate the Joule and open a SAPUI5 view or a controller file.&nbsp;</P><H4 id="toc-hId-267145219">Enhancing or editing existing app</H4><P>Navigate to the Explorer and locate the SAPUI5 project under app/assets/&lt;projectname&gt;. Now click on Joule to launch it in SAPUI5 context. it will look like below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-06 at 5.26.55 PM.png" style="width: 979px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92326i65663F695AC9C3A7/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-06 at 5.26.55 PM.png" alt="Screenshot 2024-04-06 at 5.26.55 PM.png" /></span></P><P>Below prompts will do exactly as intended:</P><P>&nbsp;</P><TABLE border="1" width="100%"><TBODY><TR><TD width="50%"><STRONG>Prompt</STRONG></TD><TD width="50%"><STRONG>Output</STRONG></TD></TR><TR><TD width="50%">Perform syntax check on the entire project&nbsp;</TD><TD width="50%">The syntax of your project files seems to be correct. Both the JavaScript and JSON files are well-structured and don't contain any syntax errors.</TD></TR><TR><TD width="50%">Add a new fragment to show current time in the header of objectpage</TD><TD width="50%">It gave the detailed explanation of files and places where code needs to be changed. After accepting the code for each file the fragment needs to be manually added to header section via page map to display the current time on object page.&nbsp;</TD></TR><TR><TD width="50%">What does this project do?</TD><TD width="50%">It gives the detailed explanation of the code - great for reverse engineering the business requirements from existing code!</TD></TR><TR><TD width="50%">What are the various enhancements that can be done in this project?</TD><TD width="50%">It suggested enhancements like error handling, Improving the custom fragment, enhancing user interaction, more features like filter or sort, performance improvements, unit tests, improving accessibility, documentation etc.</TD></TR></TBODY></TABLE><P>&nbsp;</P><H2 id="toc-hId--187533724">Creating a full stack Fiori App</H2><P>Finally, let's try to create a full stack application with a prompt that will create the data models, services, sample data and a fiori application. Type Cmd/Win + Shift + P and launch New Project from Template:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-08 at 11.43.54 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93048iD22047F2736B55AE/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-08 at 11.43.54 PM.png" alt="Screenshot 2024-04-08 at 11.43.54 PM.png" /></span>&nbsp;Choose Full Stack Project and provide the project name and click on Finish button. Wait for the project to load in the workspace completely and then click on Joule button.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-08 at 11.47.13 PM.png" style="width: 734px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93049iEC035945EB88A60D/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-08 at 11.47.13 PM.png" alt="Screenshot 2024-04-08 at 11.47.13 PM.png" /></span></P><P>Click on Open Guide button and expand the context - Create an SAP Fiori Application Directly from Your Business requirements. Click on Open Joule button to launch the assistant.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-08 at 11.48.30 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93050i917316F96630B264/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-08 at 11.48.30 PM.png" alt="Screenshot 2024-04-08 at 11.48.30 PM.png" /></span></P><P>Enter the below prompt to create a personal finance management app:</P><P><EM><STRONG>I want to create an SAP Fiori application that satisfies the requirements from the following user story:</STRONG></EM></P><P><EM><STRONG>Description</STRONG></EM><BR /><EM><STRONG>As an individual seeking financial organization and control, I aim to develop a personal budget management application. This application will empower users to efficiently monitor and manage their finances by tracking and categorizing income and expenses</STRONG></EM></P><P><EM><STRONG>Transaction:</STRONG></EM><BR /><EM><STRONG>Below are the attributes of a transaction:</STRONG></EM></P><P><EM><STRONG>1. Date: The date of the income receipt or expense payment.</STRONG></EM><BR /><EM><STRONG>2. Description: A brief description of the income source or expense category.</STRONG></EM><BR /><EM><STRONG>3. Source/Payee: Name of the entity providing income or receiving payment for expenses.</STRONG></EM><BR /><EM><STRONG>4. Category: This can be income, groceries, utilities, housing, transportation, healthcare, dining out, entertainment, shopping, travel, savings, insurance, education, gift, donation and miscellaneous</STRONG></EM><BR /><EM><STRONG>5. Amount: The monetary value associated with the income or expense transaction.</STRONG></EM></P><P><EM><STRONG>Acceptance Criteria:</STRONG></EM><BR /><EM><STRONG>Scenario 1: View Budget Overview Given I am logged into the personal budget management system, when I launch the application, then I should be able to view a report with below fields:</STRONG></EM></P><UL><LI><EM><STRONG>Date</STRONG></EM></LI><LI><EM><STRONG>Description</STRONG></EM></LI><LI><EM><STRONG>Category</STRONG></EM></LI><LI><EM><STRONG>Amount</STRONG></EM></LI></UL><P>Now Joule will start creating the entire full stack application using LLMs. This will take a few minutes. Once it is ready - examine Joule staging area to check the contents of the project. Click on Accept files to proceed with creation. This will take a few minutes to complete the operation.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Untitled 15.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93051iEECD4599CB7E437F/image-size/large?v=v2&amp;px=999" role="button" title="Untitled 15.jpg" alt="Untitled 15.jpg" /></span>We can check the explorer view once below message is shown:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Untitled 16.jpg" style="width: 671px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93052i6D6355FD60A21815/image-dimensions/671x151?v=v2" width="671" height="151" role="button" title="Untitled 16.jpg" alt="Untitled 16.jpg" /></span>&nbsp;</P><P>Expand the project folder -&gt; app -&gt; db -&gt; data and click on [ProjectName]-Transactions.csv file to launch in the editor. Observe how Joule has created realistic data for income and expenses categories. Turn on Mock Data if it is off and add a few more rows under income, utilities and other categories of expenses.&nbsp;</P><P>Click on Run Configurations icon and arrow to launch the application.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-08 at 11.55.24 PM.png" style="width: 677px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93053i9EC04EA175B49537/image-dimensions/677x165?v=v2" width="677" height="165" role="button" title="Screenshot 2024-04-08 at 11.55.24 PM.png" alt="Screenshot 2024-04-08 at 11.55.24 PM.png" /></span></P><P>The project preview now opens in a new tab:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-08 at 11.58.12 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93094i042C7A63BEBD542F/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-08 at 11.58.12 PM.png" alt="Screenshot 2024-04-08 at 11.58.12 PM.png" /></span></P><P>Click on the tile to launch the app:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-09 at 12.03.23 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93095i723492451C12B287/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-09 at 12.03.23 AM.png" alt="Screenshot 2024-04-09 at 12.03.23 AM.png" /></span></P><P>Click on gear icon to launch settings dialog and Group by Name - save this as default variant:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-09 at 12.04.29 AM.png" style="width: 311px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93096i1483A7FC41E23F89/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-09 at 12.04.29 AM.png" alt="Screenshot 2024-04-09 at 12.04.29 AM.png" /></span></P><P>Now the personal finance app is ready to report by categories:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-09 at 12.05.42 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93097iF03D280F21770F69/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-09 at 12.05.42 AM.png" alt="Screenshot 2024-04-09 at 12.05.42 AM.png" /></span></P><P>Hence we can see that Joule AI can speed up the full stack application development and can save a lot of developer's time by not just providing the actual code but additional checks and logic.&nbsp;</P><P>&nbsp;</P> 2024-04-09T06:16:00.322000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-sdk-for-android-24-4-0-is-now-available/ba-p/13662616 SAP BTP SDK for Android 24.4.0 is now available 2024-04-09T09:28:15.522000+02:00 sandeeptds https://community.sap.com/t5/user/viewprofilepage/user-id/39472 <P>&nbsp;</P><TABLE><TBODY><TR><TD width="208"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sandeeptds_0-1712587538896.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92886i558EF1210108F809/image-size/medium?v=v2&amp;px=400" role="button" title="sandeeptds_0-1712587538896.png" alt="sandeeptds_0-1712587538896.png" /></span><P>&nbsp;</P></TD><TD width="393"><P>The new version of SAP BTP SDK for Android – version 24.4.0 is now available.</P><P>You can download the latest version of the SDK either from the&nbsp;<A href="https://me.sap.com/softwarecenter/template/products/%20_APP=00200682500000001943&amp;_EVENT=DISPHIER&amp;HEADER=Y&amp;FUNCTIONBAR=N&amp;EVENT=TREE&amp;NE=NAVIGATE&amp;ENR=73555000100200020851&amp;V=MAINT&amp;TA=ACTUAL&amp;PAGE=SEARCH/SDK%20FOR%20AND%2024.4" target="_blank" rel="noopener noreferrer">Software Center&nbsp;</A>or the<A href="https://developers.sap.com/trials-downloads.html?search=SAP+BTP+SDK+for+Android" target="_blank" rel="noopener noreferrer">&nbsp;downloads section on develeopers.sap.com</A></P></TD></TR></TBODY></TABLE><P>The SAP BTP SDK for Android team brings some exciting new features to you with this new release.</P><P>In this blog, we will highlight some of the cool features that come with the new upgrade. To get a detailed overview of all the features released, please visit our&nbsp;<A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/about/releases/android/whats-new.html" target="_blank" rel="noopener noreferrer">user documentation</A>&nbsp;and our<A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/reference/android/reference.html" target="_blank" rel="noopener noreferrer">&nbsp;API reference documentation</A>.</P><P>&nbsp;</P><H2 id="toc-hId-991603883">Highlights</H2><H3 id="toc-hId-924173097"><STRONG>SDK Versioning Format</STRONG></H3><P>The <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-sdk-for-android-7-1-0-is-now-available/ba-p/13580088" target="_blank">previous major release</A> of SAP BTP SDK for Android was 7.1. However, with our first release of 2024, we want to align the product versioning across the entire SAP Mobile Services suite. The SAP BTP SDK for Android will now follow the Year.Month.Patch format, where 'Patch' will be used for incremental updates. Therefore, this release version is 24.4.0 because we are releasing it in April 2024. Please see this SAP Note (<A href="https://me.sap.com/notes/3426373" target="_blank" rel="noopener noreferrer">3426373</A>) for our releases planned for 2024.</P><P>&nbsp;</P><H3 id="toc-hId-727659592"><STRONG>Security</STRONG></H3><P><STRONG>Restrict URLs</STRONG></P><P>The "Restrict URLs" feature offers enterprises a crucial security enhancement by preventing the opening of harmful URLs within their apps. This capability safeguards users from phishing attacks, protects against malware, ensures compliance with industry standards, and enhances overall user trust. For example, an application with notes functionality can help end-users avoid opening malicious URLs present in the notes.</P><P><STRONG>Restrict Print Feature</STRONG></P><P>The "Restrict Print" feature equips enterprises with a vital control measure to restrict print functionality within applications. This feature helps prevent unauthorized printing, enhancing data security, and maintaining compliance with privacy regulations. For instance, an app can utilize this feature to restrict the printing of sensitive customer information stored in a table, offering an additional layer of protection against unauthorized dissemination.</P><H3 id="toc-hId-531146087"><STRONG>&nbsp;</STRONG></H3><H3 id="toc-hId-334632582"><STRONG>SAP Fiori</STRONG></H3><P><STRONG>Jetpack Compose Controls</STRONG></P><P>Notable enhancements have been made to some of the controls. These include resetting selections in ListPicker, persisting selection even after a DropdownMenu is closed, and supporting alternative calendars. Additionally, the release introduces new controls such as FioriNativeFileViewer, allowing users to view PDFs, text, images, and media files, and FioriAttachment for selecting files or capturing images.</P><P><STRONG>Jetpack Compose Fiori Flow</STRONG></P><P>Use a built-in laser scanner instead of the camera to scan the onboarding QR code. Add illustrations on the onboarding screens and customize the sign-in user avatar.</P><P><STRONG>XML-View Based Controls</STRONG></P><P>Similar to the Jetpack Compose controls, the ListPicker supports resetting of selections and a circular progress indicator when loading items. Additionally, illustrations can be added to the onboarding screens.</P><H3 id="toc-hId-138119077"><STRONG>&nbsp;</STRONG></H3><H3 id="toc-hId--58394428"><STRONG>OData</STRONG></H3><P>You can now use Kotlin to write the OData client code. Additionally, with the 24.4 release you can also define default values for key properties and use the singleton entity.</P><H3 id="toc-hId--254907933">&nbsp;</H3><H3 id="toc-hId--451421438"><STRONG>Wizard</STRONG></H3><P><STRONG>Iguana</STRONG></P><P>You can now use Android Studio Iguana with SAP BTP SDK for Android 24.4.</P><P><STRONG>OData v4 Sample Service</STRONG></P><P>Starting from the 24.4 release, when you build a sample application using the Wizard or configure the sample service in your server-side config on Mobile Services, the v4 version of OData will be used. Therefore, the app generated by the wizard will build a scaffolding app for a v4 OData endpoint rather than a v2 one.</P><P>&nbsp;</P><H3 id="toc-hId--647934943"><STRONG>Raise A Request</STRONG></H3><P>If you have feature ideas that the SDK should support, please raise an improvement request <A href="https://influence.sap.com/sap/ino/#/campaign/2279" target="_blank" rel="noopener noreferrer">here</A>: <A href="https://influence.sap.com/sap/ino/#/campaign/2279" target="_blank" rel="noopener noreferrer">https://influence.sap.com/sap/ino/#/campaign/2279</A>.</P><P>&nbsp;</P><H3 id="toc-hId--919679817"><STRONG>Feature Summary</STRONG></H3><P>This blog highlights some of the features released with the new version of SAP BTP SDK for Android – 24.4.0. For details, please check the important links section.</P><UL><LI>New Versioning Format</LI><LI>Additional App Management Features (Restrict URL, Restrict Print)</LI><LI>New Fiori Horizon Controls on Jetpack Compose and XML based Views</LI><LI>Supporting Android Studio Iguana</LI><LI>Use Kotlin for Offline OData</LI></UL><H3 id="toc-hId--1116193322">&nbsp;</H3><H3 id="toc-hId--1312706827"><STRONG>Important Links</STRONG></H3><UL><LI><A href="https://www.sap.com/registration/trial.f47300f6-63b8-4f22-b189-dbadd3c903d6.html?id=0050000000391432024&amp;external-site=aHR0cHM6Ly9kZXZlbG9wZXJzLnNhcC5jb20vdHJpYWxzLWRvd25sb2Fkcy5odG1sP3NlYXJjaD1hbmRyb2lk" target="_blank" rel="noopener noreferrer">SAP BTP SDK for Android 24.4.0</A> (<A href="https://launchpad.support.sap.com/?sap-ui-language=en-IN&amp;sap-ui-theme=sap_fiori_3&amp;help-theme=horizon" target="_blank" rel="noopener noreferrer">Software Center</A>)</LI><LI><A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/about/releases/android/whats-new.html" target="_blank" rel="noopener noreferrer">Documentation</A></LI><LI><A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/reference/android/reference-kotlin.html" target="_blank" rel="noopener noreferrer">API Reference</A></LI></UL><H3 id="toc-hId--1509220332">&nbsp;</H3><H3 id="toc-hId--1705733837"><STRONG>Acknowledgement</STRONG></H3><P>A huge kudos to the spectacular team that worked tirelessly, right from conceptualizing the improvements, to defining, designing, building, and eventually delivering them.</P> 2024-04-09T09:28:15.522000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-sdk-for-ios-24-4-0-is-now-available/ba-p/13663931 SAP BTP SDK for iOS 24.4.0 is now available 2024-04-10T09:23:26.946000+02:00 sandeeptds https://community.sap.com/t5/user/viewprofilepage/user-id/39472 <P>&nbsp;</P><TABLE><TBODY><TR><TD width="208"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="sandeeptds_0-1712662670171.png" style="width: 152px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93626i17B56FAB74E8AAB4/image-dimensions/152x159?v=v2" width="152" height="159" role="button" title="sandeeptds_0-1712662670171.png" alt="sandeeptds_0-1712662670171.png" /></span></TD><TD width="393"><P>The new version of SAP BTP SDK for iOS 24.4.0 is now generally available.</P><P>You can download the latest version of the SDK either from the&nbsp;<A href="https://me.sap.com/softwarecenter/template/products/%20_APP=00200682500000001943&amp;_EVENT=DISPHIER&amp;HEADER=Y&amp;FUNCTIONBAR=N&amp;EVENT=TREE&amp;NE=NAVIGATE&amp;ENR=73554900100800000743&amp;V=MAINT&amp;TA=ACTUAL&amp;PAGE=SEARCH/SAP%20BTP%20SDK%20FOR%20IOS" target="_self" rel="noopener noreferrer">Software Center&nbsp;</A>or the&nbsp;<A href="https://developers.sap.com/trials-downloads.html?search=SAP+BTP+SDK+for+iOS" target="_blank" rel="noopener noreferrer">downloads section on develeopers.sap.com</A></P></TD></TR></TBODY></TABLE><P>With this latest release, the SAP BTP SDK for iOS team has brought some exciting new features for you to explore.</P><P>In this blog, we will highlight the new upgrade's offerings. Please visit our documentation and API reference to get a detailed overview of all the features released.</P><H2 id="toc-hId-991636614">&nbsp;</H2><H2 id="toc-hId-795123109">Highlights</H2><P>&nbsp;</P><H3 id="toc-hId-727692323"><STRONG>SDK Versioning Format</STRONG></H3><P>The <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-sdk-for-ios-10-0-is-now-available/ba-p/13580066#:~:text=Release%20announcement%3A%20SAP%20BTP%20SDK,10.0%20is%20now%20generally%20available.&amp;text=With%20this%20latest%20release%2C%20the,highlight%20the%20new%20upgrade's%20offerings." target="_blank">previous major release</A> of SAP BTP SDK for iOS was 10.0. However, with our first release of 2024, we want to align the product versioning across the entire SAP Mobile Services suite. The SAP BTP SDK for iOS will now follow the Year.Month.Patch format, where 'Patch' will be used for incremental updates. Therefore, this release version is 24.4.0 because we are releasing it in April 2024. Please see this SAP Note (<A href="https://me.sap.com/notes/3426373" target="_blank" rel="noopener noreferrer">3426373</A>) for our releases planned for 2024.</P><P>&nbsp;</P><H3 id="toc-hId-531178818"><STRONG>Support for Apple visionOS</STRONG></H3><P>The era for spatial computing for enterprise is here. With the 24.4 release, developers can seamlessly build applications that run natively on visionOS. Developers who have previously used SAP BTP SDK for iOS are familiar with the SDK's frameworks. Some of these frameworks have now been enhanced to provide fundamental support to developers for building native applications for visionOS. For a detailed overview, please check out <A href="https://community.sap.com/t5/technology-blogs-by-sap/enter-the-era-of-spatial-computing-for-enterprise-with-sap-build-code/ba-p/13662871" target="_self">this blog</A>.</P><H3 id="toc-hId-334665313">&nbsp;</H3><H3 id="toc-hId-138151808"><STRONG>SAP Fiori</STRONG></H3><P>This release includes several additions and enhancements to SAP Fiori &amp; SAP Fiori Flows. You can visually communicate errors, successes, or empty states through FUIIllustratedMessage. The Welcome screen now offers optional legal agreement information, facilitating user consent before onboarding, and provides easy access to Terms of Service through a new TextView.</P><P>The release also includes enhancements to the Checkout Indicator, Linear Progress Indicator, and the introduction of two new UICollectionViewLayouts for card layouts, enhancing user experience and interface design flexibility.</P><P>In terms of design, Color System Enhancements, aligned with Apple’s system-provided colors, and the introduction of Material Chrome for navigation elements ensure consistency and adherence to established design principles.</P><H3 id="toc-hId--58361697">&nbsp;</H3><H3 id="toc-hId--254875202"><STRONG>OData</STRONG></H3><P>In 24.4.0's OData Library, managing data is now smoother with support for OData singleton and default values for key properties. Querying data becomes easier with the support for Date function.</P><H3 id="toc-hId--451388707">&nbsp;</H3><H3 id="toc-hId--647902212"><STRONG>Raise A Request</STRONG></H3><P>If you have feature ideas that the SDK should support, please raise an improvement request <A href="https://influence.sap.com/sap/ino/#/campaign/2279" target="_blank" rel="noopener noreferrer">here</A>: <A href="https://influence.sap.com/sap/ino/#/campaign/2279" target="_blank" rel="noopener noreferrer">https://influence.sap.com/sap/ino/#/campaign/2279</A>.</P><H3 id="toc-hId--919647086">&nbsp;</H3><H3 id="toc-hId--1116160591"><STRONG>Feature Summary</STRONG></H3><P>This blog highlights some of the features released with the new version of SAP BTP SDK for iOS – 24.4.0. For details, please check the important links section.</P><UL><LI>New Versioning Format for the SDK</LI><LI>Support for building native&nbsp;visionOS apps</LI><LI>Enhanced and New Fiori Horizon Controls</LI><LI>OData Improvements</LI></UL><P>&nbsp;</P><H3 id="toc-hId--1312674096"><STRONG>Important Links</STRONG></H3><UL><LI><A href="https://www.sap.com/registration/trial.f47300f6-63b8-4f22-b189-dbadd3c903d6.html?id=0050000000409082024&amp;external-site=aHR0cHM6Ly9kZXZlbG9wZXJzLnNhcC5jb20vdHJpYWxzLWRvd25sb2Fkcy5odG1sP3NlYXJjaD1TQVArQlRQK1NESytmb3IraU9T" target="_blank" rel="noopener noreferrer">SAP BTP SDK for iOS 24.4.0 Download</A> (<A href="https://me.sap.com/softwarecenter/template/products/%20_APP=00200682500000001943&amp;_EVENT=DISPHIER&amp;HEADER=Y&amp;FUNCTIONBAR=N&amp;EVENT=TREE&amp;NE=NAVIGATE&amp;ENR=73554900100800000743&amp;V=MAINT&amp;TA=ACTUAL&amp;PAGE=SEARCH/SAP%20BTP%20SDK%20FOR%20IOS" target="_blank" rel="noopener noreferrer">Software Center</A>)</LI><LI><A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/about/releases/ios/whats-new.html" target="_blank" rel="noopener noreferrer">Documentation</A></LI><LI><A href="https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/index.html" target="_blank" rel="noopener noreferrer">API Reference</A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/enter-the-era-of-spatial-computing-for-enterprise-with-sap-build-code/ba-p/13662871" target="_self">SAP BTP SDK for iOS visionOS Capabilities</A></LI></UL><P>&nbsp;</P><H3 id="toc-hId--1509187601"><STRONG>Acknowledgement</STRONG></H3><P>A huge kudos to the spectacular team that worked tirelessly, right from conceptualizing the improvements, to defining, designing, building, and eventually delivering them.</P> 2024-04-10T09:23:26.946000+02:00 https://community.sap.com/t5/technology-blogs-by-members/unlocking-full-stack-potential-using-sap-build-code-part-1/ba-p/13667300 Unlocking Full-Stack Potential using SAP build code - Part 1 2024-04-16T12:53:38.653000+02:00 jenifer_ranjani https://community.sap.com/t5/user/viewprofilepage/user-id/149737 <P><U><STRONG>Introduction</STRONG></U></P><P><SPAN>Last year at TechEd, SAP unveiled Build Code, and now it's accessible to the users through trial accounts, offering them a firsthand experience of its generative AI capabilities. SAP Build Code stands as a cornerstone in the realm of SAP Cloud Application Programming Model (CAP), SAP Fiori, mobile, and SAPUI5 development. Tailored to enhance the application development journey on SAP BTP.... it integrates coding, testing, and application management seamlessly. Leveraging SAP Business Application Studio alongside essential services and SDKs on SAP BTP, SAP Build Code simplifies and accelerates the development process.</SPAN></P><P>At its core lies Joule, the AI copilot of SAP, facilitating the automatic generation of application code, data models, services, and sample data. This integration ensures adherence to the best practices delineated in the SAP BTP Developer's Guide. With AI-based code generation optimized for Java and JavaScript, SAP Build Code offers a comprehensive solution for coding, testing, integrations, and application lifecycle management.</P><P>Recently I got a chance to do a test drive on build code and I have tried out a full stack use case. In part 1 we will create a simple CAP and UI App using Joule and we'll deploy it to the BTP subaccount. We will test, create a managed app router configuration, and access the UI and service endpoints successfully.&nbsp;</P><P>Check out the&nbsp;SAP documentation to know more about the&nbsp;<A href="https://help.sap.com/docs/build_code" target="_self" rel="noopener noreferrer">SAP Build Code.</A></P><P><U><STRONG>Now Let's get into action!!!</STRONG></U></P><UL><LI>As an initial step setup the Build code subscription in your BTP account. Follow this blog to achieve that.</LI><LI>Inside your service marketplace under subscription hit on the SAP build code and click the goto application.<P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_0-1712851835524.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95210iA31316099C95A3A0/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_0-1712851835524.png" alt="jenifer_ranjani_0-1712851835524.png" /></span></P></LI><LI>Inside your service marketplace under subscription hit on the SAP build code and click the goto application.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_0-1713262113333.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96995i1B9A99BAC9C844D8/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_0-1713262113333.png" alt="jenifer_ranjani_0-1713262113333.png" /></span></P><P>&nbsp;</P><UL><LI>Inside the build lobby, hit the create button and select Build apps and then Build code</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_1-1713262113355.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96997iB09FDE8E865FBA30/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_1-1713262113355.png" alt="jenifer_ranjani_1-1713262113355.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_2-1713262113365.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96996iBE86CF3E906CC785/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_2-1713262113365.png" alt="jenifer_ranjani_2-1713262113365.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_3-1713262113372.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96998iD53B05712D29A739/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_3-1713262113372.png" alt="jenifer_ranjani_3-1713262113372.png" /></span></P><P>&nbsp;</P><UL><LI>We are going to build a full stack application use case here so hit the full stack option and fill in the basic details and hit create.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_4-1713262113379.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96999i4D0F315A0898F3D0/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_4-1713262113379.png" alt="jenifer_ranjani_4-1713262113379.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_5-1713262113386.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97000i7F9B36DFACEFC32D/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_5-1713262113386.png" alt="jenifer_ranjani_5-1713262113386.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_6-1713262113402.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97003i6160488739CE9539/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_6-1713262113402.png" alt="jenifer_ranjani_6-1713262113402.png" /></span></P><UL><LI>Click on your newly created project which will be available in the Build lobby, this opens up your BAS IDE and You can also look for your projects in this path “/home/user/projects” if you are not able to locate it when you launch the BAS.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_7-1713262113403.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97001iB578BEDF2CC0B928/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_7-1713262113403.png" alt="jenifer_ranjani_7-1713262113403.png" /></span></P><UL><LI>Your storyboard shows the project's partial skeleton with a service and no model exists right now.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_8-1713262113408.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97002i08C8E63533F04C68/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_8-1713262113408.png" alt="jenifer_ranjani_8-1713262113408.png" /></span></P><UL><LI>So far we have created a project using your Build code now lets make use of SAP Joule – the copilot to generate other technical artifacts.</LI><LI>As described in the introduction, we will give a simple text-based prompt to Joule as below, and let's anticipate the surprises it has in store.</LI><LI>Click on the Joule icon on the left side panel and provide the prompt now.. to create simple entities with a few fields also let's mention data types of them.</LI></UL><P><U><STRONG>Prompt</STRONG> </U>– “Create an employee details app with 2 entities “Project allocation” and “Employee Info”.&nbsp;<BR />Project allocation entity should have the following fields cust_Activitycode of type String and size 20, cust_Allocation of type decimal,cust_CTC of type decimal,cust_Closuredate of type Date,cust_Costcenter of type String,cust_Costcontrolmanager of type String,cust_Enddate of type Date,cust_Initiationdate of type Date,cust_Jobcode of type String,cust_Jobtitle of type String,cust_ProjectID of type String,cust_ProjectLocation of type String,cust_Projectname of type String.</P><UL><LI>Employee Info entity should have the following fields startDate of type Date, endDate of type Date, seqNumber of type Integer,userId of type String, company of type String,costCenter of type String, countryOfCompany of type String”</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_9-1713262113418.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97005i6EAE658C8949E931/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_9-1713262113418.png" alt="jenifer_ranjani_9-1713262113418.png" /></span></P><UL><LI>On click on generate, in a few seconds you’ll get your data model ready based on your prompt like below.. Jaw-dropping isn’t it? Accept it as such and now you can see new two entities under the DB section of your storyboard.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_10-1713262113425.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97004i0844BD9A3CCEF1DA/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_10-1713262113425.png" alt="jenifer_ranjani_10-1713262113425.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_11-1713262113432.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97006iE88E108915B34CAD/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_11-1713262113432.png" alt="jenifer_ranjani_11-1713262113432.png" /></span></P><UL><LI>Lets load some sample / mock data into the models for our further testing. Click on the Open Editor drop-down and select Sample data, select your entity and click Add.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_12-1713262113440.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97008i9C5A6D918140C636/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_12-1713262113440.png" alt="jenifer_ranjani_12-1713262113440.png" /></span></P><UL><LI>Click on Import and repeat the same for the second entity.. The sample data was generated by the Build code itself and we haven’t fed any inputs yet.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_13-1713262113445.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97007i7B3141161097C26E/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_13-1713262113445.png" alt="jenifer_ranjani_13-1713262113445.png" /></span></P><UL><LI>Validate the cells and in case of corrections click on the enhance option, now we are going to make use of the Joule copilot to correct the data generated..</LI></UL><P><STRONG>Prompt</STRONG> – “Correct the custCTC and custAllocation data in projectallocation table to two decimal precisions”</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_14-1713262113455.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97009i85844D598391B848/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_14-1713262113455.png" alt="jenifer_ranjani_14-1713262113455.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_15-1713262113460.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97010iAEF6510118576706/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_15-1713262113460.png" alt="jenifer_ranjani_15-1713262113460.png" /></span></P><UL><LI>Now, joule has generated the sample data based on your prompt and the decimal places are rectified. Accept the changes and the rectified data reflects in your project allocation data model.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_16-1713262113463.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97011iA1595C4862C3E753/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_16-1713262113463.png" alt="jenifer_ranjani_16-1713262113463.png" /></span></P><UL><LI>Analyse the data and proceed further to test your CAP output.</LI><LI>Now lets run the app locally to see the output of the service… Open the terminal and provide the “cds serve” command or you can click on the play icon on the top right corner.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_17-1713262113471.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97012i9517379743FAE3C6/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_17-1713262113471.png" alt="jenifer_ranjani_17-1713262113471.png" /></span></P><UL><LI>Upon running the local run the mock data is accessible as below when the entities are hit from the browser, the same works positive when tested via Postman.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_18-1713262113476.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97014i136B72231C627113/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_18-1713262113476.png" alt="jenifer_ranjani_18-1713262113476.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_19-1713262113481.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97015i1570E5F1C82AFD9B/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_19-1713262113481.png" alt="jenifer_ranjani_19-1713262113481.png" /></span></P><UL><LI>Let's quickly create a UI app based on the Fiori elements template … Click on Add under the UI section and then fill in as below.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_20-1713262113484.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97013iAD240DD447041718/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_20-1713262113484.png" alt="jenifer_ranjani_20-1713262113484.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_21-1713262113488.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97016iFC155D9DD755693C/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_21-1713262113488.png" alt="jenifer_ranjani_21-1713262113488.png" /></span></P><UL><LI>Select template based and proceed next…</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_22-1713262113493.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97017i5CB0E2EDBD0E1DED/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_22-1713262113493.png" alt="jenifer_ranjani_22-1713262113493.png" /></span></P><UL><LI>Select List report page … we’ll explore Custom page in part two of the blog.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_23-1713262113498.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97018i872572D610865FD1/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_23-1713262113498.png" alt="jenifer_ranjani_23-1713262113498.png" /></span></P><UL><LI>Select the data model from our CAP app… here im going with project allocation. Click on Generate.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_24-1713262113502.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97020iC1ABEE17AECA1DC0/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_24-1713262113502.png" alt="jenifer_ranjani_24-1713262113502.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_25-1713262113503.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97019i36CEBDB1B0465D12/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_25-1713262113503.png" alt="jenifer_ranjani_25-1713262113503.png" /></span></P><UL><LI>Run the application, and you’ll be able to see the output as a list report page as below.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_26-1713262113512.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97021iD2F91831A554CE0A/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_26-1713262113512.png" alt="jenifer_ranjani_26-1713262113512.png" /></span></P><UL><LI>Now lets deploy your app to the subaccount.. Your app will not be having mta file so provide “cds add mta” command in the terminal.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_27-1713262113517.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97024i89F6725C259A5797/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_27-1713262113517.png" alt="jenifer_ranjani_27-1713262113517.png" /></span></P><UL><LI>Right click on the mta file and select build.. once the mtar is generated, deploy your application to your subaccount…</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_28-1713262113526.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97023i26C32F4A4B79F1AF/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_28-1713262113526.png" alt="jenifer_ranjani_28-1713262113526.png" /></span></P><UL><LI>Select your cloud foundry settings.. here I have logged in to my global account using my credentials.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_29-1713262113528.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97022i50CFFDB056836871/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_29-1713262113528.png" alt="jenifer_ranjani_29-1713262113528.png" /></span></P><UL><LI>Before deployment, make sure that you have subscribed to the HANA cloud instance if not you might face issues during deployment.</LI><LI>Once deployed, your CAP application route is available, and you can quickly test it out from Postman.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_30-1713262113536.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97025i1D50069F7DEB6BAC/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_30-1713262113536.png" alt="jenifer_ranjani_30-1713262113536.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_31-1713262113542.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97026i8C50F24FD4220CDD/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_31-1713262113542.png" alt="jenifer_ranjani_31-1713262113542.png" /></span></P><UL><LI>Now, the UI app should be available post-deployment… Ohoooo Nooo! We forgot to add an approuter to our application to access the app via Build Work zone standard edition… Let's add that now and then do the rebuild, deployment.</LI><LI>Right click on the mta.yaml and select “Create MTA module from template”</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_32-1713262113549.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97027iCA6C12A2D3E56CE4/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_32-1713262113549.png" alt="jenifer_ranjani_32-1713262113549.png" /></span></P><UL><LI>Select the approuter type as ‘Managed approuter’…and click on create.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_33-1713262113552.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97028i92C16E0387F92FA5/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_33-1713262113552.png" alt="jenifer_ranjani_33-1713262113552.png" /></span></P><UL><LI>Your mta.yaml should automatically get updated with the needed configurations that are used by the SAP Build Work Zone, standard edition.</LI><LI>Build your project again and then redeploy… You should find the UI app under the HTML5 Applications</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_34-1713262113560.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97029i8A34573D94355C8C/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_34-1713262113560.png" alt="jenifer_ranjani_34-1713262113560.png" /></span></P><UL><LI>Open the deployed application route and hit go you should find the results from our full stack app which is built out of Build Code.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jenifer_ranjani_35-1713262519165.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97037iCF7C0B96B29C7D86/image-size/medium?v=v2&amp;px=400" role="button" title="jenifer_ranjani_35-1713262519165.png" alt="jenifer_ranjani_35-1713262519165.png" /></span></P><P><U><STRONG>Conclusion</STRONG></U></P><P>We have explored a full stack scenario covering the creation of CAP, a UI app using SAP Joule co-pilot on Build code. In the next part we'll add application logic to the cap app, consume data from external services and&nbsp;configure the portal site using the build work zone standard edition.</P><P>Thank you for going through the blog. Stay Tuned for the next part! <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></P><P>&nbsp;</P><P>&nbsp;</P> 2024-04-16T12:53:38.653000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/consuming-sap-with-sap-build-apps-connectivity-options-for-low-code/ba-p/13666667 Consuming SAP with SAP Build Apps - Connectivity options for low-code development - part 2 2024-04-16T13:51:25.397000+02:00 LudoNoens https://community.sap.com/t5/user/viewprofilepage/user-id/15040 <P>This blog post is the second in a series of posts that cover the connectivity options available for SAP Build Apps to interface with SAP systems. In case you've missed it, part 1 of the series can be found <A title="Consuming SAP with SAP Build Apps - Connectivity options for low-code development - part 1" href="https://community.sap.com/t5/technology-blogs-by-sap/consuming-sap-with-sap-build-apps-connectivity-options-for-low-code/ba-p/13604697" target="_blank">here</A>. The series will cover connecting SAP Build Apps with the following:</P><OL><LI>CAP-based services</LI><LI>S/4HANA systems</LI><LI>ABAP systems</LI></OL><P>The format of this post is similar to a tutorial. However, I'll provide more comprehensive details, tips and the opportunity for you to provide feedback. Based on the feedback we will be able to adjust and enhance this post and future parts of the series, and might even be able to improve the products involved as well.&nbsp;Just like in real-world scenarios, we will start with a very basic app and gradually enhance it.&nbsp;</P><P>&nbsp;</P><H1 id="toc-hId-862640484">Introduction</H1><P>Before we get into the details of setting up connections between SAP Build Apps and SAP Systems, I intend to introduce SAP technology components in each post that are relevant for the use cases covered in the series.&nbsp;</P><H2 id="toc-hId-795209698">IAS</H2><P>SAP Identity Authentication Service (IAS) is a cloud service for authentication, single sign-on, and user management in SAP cloud and on-premise applications.&nbsp;<SPAN>It can act as an identity provider or be used as a proxy to integrate with an existing single sign-on infrastructure.&nbsp;</SPAN><SPAN>IAS offers the following features:</SPAN></P><DIV class=""><DIV class=""><UL><LI><SPAN>Authentication:&nbsp;</SPAN><SPAN>Standardized methods, flexible options, and password policies</SPAN></LI><LI><SPAN>Integration:&nbsp;</SPAN><SPAN>Flexible scenarios with existing identity providers and corporate IdPs</SPAN></LI><LI><SPAN>User experience:&nbsp;</SPAN><SPAN>Customizable look-and-feel, self-service capabilities, and invitation workflows</SPAN></LI><LI><SPAN class="">Security:<SPAN>&nbsp;</SPAN></SPAN><SPAN class="">Risk-based authentication, two-factor authentication, and delegated authentication</SPAN></LI></UL></DIV></DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="IAS.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96895i73675218ACE71387/image-size/large?v=v2&amp;px=999" role="button" title="IAS.png" alt="IAS.png" /></span></P><H1 id="toc-hId-469613474">&nbsp;</H1><H1 id="toc-hId-273099969">Use case B : Control access to the CAP service through Roles</H1><P>For this use case, we will enhance the previously&nbsp;created basic CAP project in <FONT color="#FF00FF"><STRONG>SAP Build Code</STRONG></FONT>&nbsp;and introduce Roles to control access to the service.&nbsp;Depending on the user’s Role, the access and capabilities are controlled. As SAP Build Apps uses IAS for authentication, the configuration&nbsp;is a bit more complicated. Follow along the steps below to learn how to get this set up.</P><H2 id="toc-hId-205669183">Creating Roles</H2><P>We go back to the Storyboard in SAP Build Code (or SAP Business Application Studio, depending on your subscription) and select the menu Open Editor. Select User Roles. This will open the <STRONG>Authorization Editor</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_0-1712826726186.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95004i57B0CE5E472C970C/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_0-1712826726186.png" alt="LudoNoens_0-1712826726186.png" /></span></P><P>First, let’s create a role called ProductsViewer, allowing the user to read the product list. Select the + button to add a new role, configure as shown below and save it.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_1-1712826842186.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95005iC724A36D572C3754/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_1-1712826842186.png" alt="LudoNoens_1-1712826842186.png" /></span></P><P>Select the ProductsViewer role and select your service for the Service Assignments. Click Add Service Entities and toggle the Assigned button for Component "Products" to On. For the Privileges, keep the default "Read". Select Save. The ProductsViewer should now be configured as follows:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_2-1712827358137.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95021i41A76E6C7BEC6C87/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1712827358137.png" alt="LudoNoens_2-1712827358137.png" /></span></P><P>We will add another role called ProductsManager, allowing full access to the data. We could go even further into details on which actions a user is allowed to perform (e.g. Read, Update, Delete). But to keep this example short, we’ll just give the manager full access.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_0-1712894031435.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95423i5C2905D4D620624F/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1712894031435.png" alt="LudoNoens_0-1712894031435.png" /></span></P><P>To apply this Role-based access control to the service, we will have to redeploy it. Follow the steps as mentioned previously to deploy the CAP-based service.</P><P>After successful redeployment, you will find 2 new Role Collections in your BTP subaccount's cockpit. The names of the Role Collections were automatically generated and contain the roles we had specified in the Authorization Editor.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_1-1712896023131.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95430i48A0B10FF5AA9B75/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_1-1712896023131.png" alt="LudoNoens_1-1712896023131.png" /></span></P><H2 id="toc-hId-9155678">&nbsp;</H2><H2 id="toc-hId--187357827">Informing the user in case data access is denied</H2><P>Before we move on and run the UI application, let's add a small enhancement in SAP Build Apps to inform the user when data access is denied. Without this enhancement the user will be left in the dark in case the products list is not showing up.</P><P>Go to the SAP Build Apps designer and select the UI CANVAS tab. Switch from VIEW to VARIABLES. Go to DATA VARIABLES and select the ProductsList we have added in the previous blog post. At the bottom of the page, open the logic canvas by selecting the "Add logic to HOME PAGE". Now drag and drop "Dialog | Alert" onto the canvas. Connect the failure output node (bottom connector) of "Data | Get record collection" to the input node of "Dialog | Alert".</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_0-1713237525866.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96879i48C044ED9A890ABA/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1713237525866.png" alt="LudoNoens_0-1713237525866.png" /></span></P><P>Select the alert dialog and change the title. For this example use case, I am going to make the assumption that in case of any failure, the reason is that the user doesn't have access to the service data. There could actually be other reasons, but we'll ignore this here. Change the Dialog title to "Access denied". For the Dismiss button label, you can use the default "Ok". In my case, I've changed it to "Understood". For the dialog message, bind a formula as shown below and save your changes. Besides the message "You do not have access to the products list.", the formula will output the technical error message.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_2-1713168595806.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96475i0FE6B0AC6D64B064/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1713168595806.png" alt="LudoNoens_2-1713168595806.png" /></span></P><H2 id="toc-hId--383871332">Quick preview of the UI app</H2><P>We are actually <STRONG>not</STRONG> <STRONG>done</STRONG> configuring the Role Collections for your user at this point. So let us try the enhancement. If we would run the app now, it should inform us that access is denied.&nbsp;</P><P>In SAP Build Apps, select the LAUNCH tab and select "Open preview portal".</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_4-1713172356910.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96508iF4C5BD961B20A864/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_4-1713172356910.png" alt="LudoNoens_4-1713172356910.png" /></span></P><H2 id="toc-hId--580384837">&nbsp;</H2><H2 id="toc-hId--776898342">Assigning Roles to users</H2><P>To provide the user access to the data service, we now have to ensure the user has the required Roles assigned. For this, we have 2 options:</P><OL class="lia-list-style-type-lower-alpha"><LI>Assign Role Collections to the Custom IdP (IAS) user in the BTP Cockpit.</LI><LI>Create a Group in the custom IdP; assign users to this group; and map this Group to a Role Collection in the BTP Cockpit. This is a better option in case you are planning to expose the data to a larger group of users.<BR /><BR /></LI></OL><H2 id="toc-hId--626157490">Assign Role Collection to the Custom IdP user in the BTP Cockpit</H2><P>Assigning the role collection to the custom IdP user works best for the developer use case, where a limited set of users is to be provided access to the data offered through the service. You'll basically have to apply this for each user / developer in your team.</P><P>Go to the BTP subaccount cockpit and navigate to the Security &gt; User tab. As you are using two identity providers, you will see your user for the Identity Provider “Custom IAS tenant” and “Default identity provider”. SAP Build Apps makes use of the “Custom IAS tenant”. Therefore, we need to ensure this user is assigned to the necessary Role Collection. Depending on your use case, you can assign yourself the “manager” or “viewer” role, as defined for your service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_0-1713184880937.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96603i3EA4D6ECBEA7849E/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1713184880937.png" alt="LudoNoens_0-1713184880937.png" /></span></P><P>Note that without assigning a Role Collection to your user, you will not have access to the data. You will still be able to connect to the destination and check the entity types exposed; but you will not see any data and receive a 403 error, indicating you have no permission to access the data itself. In case you run into this, and you've updated the Role Collections assigned to your user, then please log out and log in again to ensure&nbsp; the new Roles take effect.&nbsp;</P><H2 id="toc-hId--822670995">Mapping a Group in Custom IAS tenant to a Role Collection in the BTP Cockpit</H2><P>As mentioned, this option is more suitable when managing access for larger group of users.</P><P>Go to the BTP subaccount cockpit and navigate to the Security &gt; Trust Configuration tab. Open the link to the Custom IAS tenant.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_3-1712897437843.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95439i7778BFE372EAEDE5/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_3-1712897437843.png" alt="LudoNoens_3-1712897437843.png" /></span></P><P>On the overview page, open the link to the Host Name of Identity Authentication Tenant. This brings you to the administration page of the SAP Cloud Identity Service.&nbsp;Assuming you have set up a user here, navigate to Users &amp; Authorizations &gt; Groups.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_5-1712897639878.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95443i47291B9270437E4B/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_5-1712897639878.png" alt="LudoNoens_5-1712897639878.png" /></span></P><P>Select the “+ Create” button to create a new Group. Provide a Name, Display Name and description.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_0-1712899584090.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95447i9AFFAC66B6E3D52B/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_0-1712899584090.png" alt="LudoNoens_0-1712899584090.png" /></span></P><P>Once the group is created, select it to manage the users of the group. Select the “+ Add” button. You can easily pick users known in the system.</P><P>Follow the same steps to create a new Group for Managers who have full access.</P><P>Now that you’ve set up Groups in SAP Cloud Identity Services, go back to the BTP subaccount cockpit and navigate to the tab Security &gt; Role Collections. Select the Role Collection you want to assign to the IAS Group. Select the “Edit” button, so you can make changes. In the section User Groups, you can select the Identity Provider “Custom IAS tenant” and enter the exact name of the Group, as defined in IAS.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_1-1712899941211.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95451iBFE27102B0BA3897/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_1-1712899941211.png" alt="LudoNoens_1-1712899941211.png" /></span></P><P>Save your changes. The mapping will also be reflected in the Role Collections overview.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_2-1712900163718.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95454iC8E19F3AE88D423B/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1712900163718.png" alt="LudoNoens_2-1712900163718.png" /></span></P><H2 id="toc-hId--1019184500">&nbsp;</H2><H2 id="toc-hId--1215698005">Testing the newly added access control</H2><P>To test the access control, please assign only the 'Viewer' Role Collection to your user. Take note that there are two ways to do this: in SAP Cloud Identity Services and in the BTP subaccount cockpit.&nbsp;</P><P>Log out and log in again to ensure your changes are used in the system. Please note that&nbsp;<SPAN class="">changes in Role Collections assigned to custom IdP users can take some time to propagate. If you notice your changes have not taken effect yet, please have some patience.</SPAN></P><P>The app we have created so far only allows users to view a product list. To make changes or add new entries, we can use the data functionality built into SAP Build Apps.&nbsp;Open SAP Build Apps, navigate to the Data tab and select the Products OData integration. Select BROWSE REAL DATA.</P><P>If you don't see data for the Products entity, then you've probably missed a step described above.</P><P>Select an entry and make changes to the name and the price. Then, select SAVE RECORD.&nbsp;</P><P>Having the Viewer role, you will not be able to change or add entries. Your request will fail with status code 403.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_2-1713239859797.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96889iF94914FAC081EE55/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1713239859797.png" alt="LudoNoens_2-1713239859797.png" /></span></P><P>When you add the Administrator role collection to your user, you will be able to change and add records. But again, please note that you'll have to log out and log in again, and have some patience before these changes take effect.</P><P>Note that we have not (yet) deployed any UI application at this point. We have been running our app in the context of SAP Build Apps.</P><H2 id="toc-hId--1412211510">Summary – use case B</H2><P>Without writing a single line of code, we have added Role-based access control to the CAP-based service. With this in place, authentication to the platform is not enough for users to access the data we have exposed through the service. We have added Roles to the user by assigning platform Role Collections to the Custom IdP user or mapping the Custom IdP group to a specific Role Collection. Depending on platform Roles assigned, a user will be able to perform specific actions on the data. The service is still made available to platform users through a BTP destination and it is discoverable for SAP Build Apps. In SAP Build Apps, we have added an integration to the CAP service through the destination. The destination forms the bridge between the CAP-based service and the applications consuming it.<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_2-1713267280552.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97059iCF3F85AE4670DB98/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1713267280552.png" alt="LudoNoens_2-1713267280552.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId--1315322008">What's next</H1><P>In the <A title="Consuming SAP with SAP Build Apps - Mobile Apps for iOS and Android" href="https://community.sap.com/t5/technology-blogs-by-sap/consuming-sap-with-sap-build-apps-mobile-apps-for-ios-and-android/ba-p/13667638" target="_blank">next blog post</A>, we will create dedicated mobile apps that can consume the data service we have enhanced in this post. For authentication, we will be adding SAP Mobile Services into the solution diagram.</P> 2024-04-16T13:51:25.397000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/top-picks-innovations-highlights-from-sap-business-technology-platform-q1/ba-p/13673350 Top Picks: Innovations Highlights from SAP Business Technology Platform (Q1/2024) 2024-04-17T20:29:36.355000+02:00 Stephanie_Stang https://community.sap.com/t5/user/viewprofilepage/user-id/10354 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture2.png" style="width: 601px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97703i2728CE24056724B0/image-size/large?v=v2&amp;px=999" role="button" title="Picture2.png" alt="Picture2.png" /></span></P><P><SPAN>As spring season arrived, we find ourselves already immersed in Q2 2024. So let´s pause for a moment to explore the&nbsp;SAP BTP (Business Technology Platform) innovations we had released in the first quarter of 2024.</SPAN></P><P><SPAN>Take a break and enjoy reading the blog for a closer look on the Q1 2024 highlights of our recent deliveries and an outlook of what´s up next on the SAP BTP product roadmap.</SPAN></P><H3 id="toc-hId-1121637149"><EM>SAP BTP Innovation Highlights Q1 2024</EM></H3><H4 id="toc-hId-1054206363">Application Development and Automation:</H4><UL><LI>At TechEd 2023 in November we announced SAP Build Code. Excited to share that <A href="https://www.sap.com/products/technology-platform/developer-tools.html" target="_self" rel="noopener noreferrer">SAP Build Code</A> is generally available to all developers. With the help of our copilot Joule,&nbsp;<SPAN>SAP Build Code provides&nbsp;</SPAN>AI-based code generation<SPAN>, optimized for Java and JavaScript application development. It is providing a turn-key environment for coding, testing, integrations, and application lifecycle management. Tailored for SAP development, SAP Build Code utilizes the favorite SAP programming models and frameworks and enables to seamlessly connect to S/4HANA and other applications with pre-built integrations. The guided development experience helps as well using best practices. ​In addition SAP Build Code encourages fusion development to use a mix of traditional coding and low-code development. Excited to try out the SAP Build Code offering? Check out the <A href="https://community.sap.com/t5/technology-blogs-by-sap/announcing-general-availability-of-sap-build-code-speed-up-development-with/ba-p/13646073" target="_self">blog post</A> of&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/730384">@bhagat_nainani</a>&nbsp;to get more information on features, test drive tutorial, developer quotes and many more.</SPAN></LI><LI><SPAN>SAP Build Process Automation got a new governance capability within the Control Tower: Environments. An Environment, is a virtual space within your SAP Build Process Automation subscription where you can run and deploy projects.&nbsp;&nbsp;It includes&nbsp;triggers and workflow definitions, as well as resources such as Agents producing automation jobs and workflow instances. In the default environment, users can access artifacts based on their security level. Creating shared environments&nbsp;to increase the security of deployed projects and the corresponding artifacts and resources is also possible. Check out more on Environments in the <A href="https://community.sap.com/t5/sap-builders-blog-posts/sap-build-process-automation-introducing-environments/ba-p/13574458" target="_self">blog post</A> of&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/188699">@Alex-Fortin</a>.</SPAN></LI><LI>And one more highlight on the datacenter side for SAP Build Process Automation: Switzerland (Zurich) Azure EU Access is available since mid of Q1 as a new region running on Azure for use with enterprise accounts.&nbsp;</LI></UL><H4 id="toc-hId-857692858">Integration:</H4><UL><LI><FONT face="arial,helvetica,sans-serif" size="3"><FONT face="arial,helvetica,sans-serif" size="3">With Q1 the Advanced Event Mesh adapter with Cloud Integration capability within SAP Integration Suite got available. It enables developers to exchange&nbsp;</FONT></FONT>events and messages with SAP Integration Suite, advanced event mesh brokers. Receive messages from queues or topic subscriptions in brokers of SAP Integration Suite, advanced event mesh through the AdvancedEventMesh receiver adapter or send messages to queues or topics in brokers of SAP Integration Suite, advanced event mesh through the AdvancedEventMesh sender adapter is now possible. Check out the new <A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/configure-advanced-event-mesh-sender-adapter" target="_self" rel="noopener noreferrer">sender</A> and <A href="https://help.sap.com/docs/integration-suite/sap-integration-suite/configure-advanced-event-mesh-receiver-adapter" target="_self" rel="noopener noreferrer">receiver</A> adapter.&nbsp;</LI><LI>With Q1 the creation of custom service-oriented architecture (SOA) messages using WSDL got released. It is an extension of mapping functionalities within the Integration Advisor capability of SAP Integration Suite and offers supports the WSDL format as input for custom message definitions and is an option for use in customer-proprietary SOA messages and customer-extended SOA messages.&nbsp;</LI></UL><H4 id="toc-hId-661179353">Data and Analytics:</H4><UL><LI>Combining the<FONT face="arial,helvetica,sans-serif"> power of large la</FONT>nguage models (LLMs) with company-specific, real-time data and business process know-how, all integrated in the multi-model database? This is now possible with the SAP HANA Cloud vector engine. The vector engine includes key capabilities like similarity search, complex query support, readiness for real-time analysis, vector storage scalability. Adding the vector engine you can recognize that&nbsp;<SPAN>SAP HANA Cloud acts as the default database in SAP’s generative AI solution strategy. Learn more on capabilities, practical use cases, etc. on the <A href="https://www.sap.com/assetdetail/2023/12/08854b59-9f7e-0010-bca6-c68f7e60039b.html" target="_self" rel="noopener noreferrer">announcement post</A>, the <A href="https://community.sap.com/t5/technology-blogs-by-sap/vectorize-your-data-sap-hana-cloud-s-vector-engine-for-unified-data/ba-p/13579558" target="_self">blog post</A> of&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/38259">@shabana</a>&nbsp;&nbsp;and don´t miss to watch the <A href="https://dam.sap.com/mac/app/p/video/asset/preview/Mfbuu9K?ltr=a&amp;rc=10" target="_self" rel="noopener noreferrer">video</A>.</SPAN></LI><LI>And the next availability of some announcements from TechEd 2023: Just Ask -&nbsp; our&nbsp;next-generation natural language query (NLQ) powered by AI. <SPAN>The user simply types the question in natural language into the search field and receives the required insights. The system generates charts that show the data you asked for, so you can easily understand the data.</SPAN>&nbsp;Just Ask supports <A href="https://www.sap.com/products/technology-platform/cloud-analytics.html" target="_self" rel="noopener noreferrer">SAP Analytics Cloud</A> acquired data models and <A href="https://www.sap.com/products/technology-platform/datasphere.html" target="_self" rel="noopener noreferrer">SAP Datasphere</A> models in its first release. Want to see how simple it is? Watch the&nbsp;<A href="https://www.sap.com/assetdetail/2024/02/7c9c5bd1-a97e-0010-bca6-c68f7e60039b.html" target="_self" rel="noopener noreferrer">video</A> and don´t miss the <A href="https://community.sap.com/t5/technology-blogs-by-sap/initial-release-of-sap-analytics-cloud-just-ask/ba-p/13583721" target="_self">blog post</A> of&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/205297">@francois_imberton</a>.&nbsp;</LI></UL><H4 id="toc-hId-464665848">Artificial Intelligence:</H4><UL><LI>Also Artificial Intelligence (AI), one of the hottest topics at the moment provides innovation highlights in Q1. Starting with new features for <A href="https://discovery-center.cloud.sap/index.html#/serviceCatalog/document-information-extraction?region=all" target="_self" rel="nofollow noopener noreferrer">Document Information Extraction</A>.&nbsp;<SPAN>Users can now combine header fields with different setup types in the same schema, get an improved version of the conversion of country specific unit of measure values into ISO format for invoice documents, extract purchase order numbers that are available on-line item field level from invoice documents and get better models for the extraction of standard document types.&nbsp;</SPAN></LI></UL><H4 id="toc-hId-268152343">Cross SAP BTP:&nbsp;</H4><UL><LI>Maybe you have already seen the recent enhancements on contract-to-billing traceability to the&nbsp;SAP BTP Cockpit? The SAP BTP Cockpit comes up with a new "Usage Analytics" page introducing an entirely new user interface and a brand-new look and feel. In addition the "Entitlements" page got enhanced. Incorporating new commercial information and additional capabilities for increased transparency to improve the understanding of entitlments and allowing to take cost-cutting measures, where needed, are just two of them.&nbsp;Check out the <A href="https://community.sap.com/t5/technology-blogs-by-sap/enhancing-costs-usage-and-contract-transparency/bc-p/13639445/emcs_t/S2h8ZW1haWx8dG9waWNfc3Vic2NyaXB0aW9ufExUU0c3OFkwVVg5RzlafDEzNjM5NDQ1fFNVQlNDUklQVElPTlN8aEs?sap-outbound-id=402BB1573F64026AA1A4BCDF66AC71FF3A580CBA" target="_self">blog post</A> of&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/186674">@keren_rotenberg</a>&nbsp;to get more information on the new usage analytics and entitlements pages.</LI><LI>Customer have already been waiting for it in the area of Identity and Access Management and in Q1 it got released: The Custom Certificate Authority support for SAP Secure Login Service on AWS. Integration of own Public Key Infrastructure (PKI) by connecting to a cloud-based private Custom Certificate Authority hosted on AWS to the SAP Secure Login Service is now possible.&nbsp;<SPAN>After successful authentication of the end user, your private CA issues an X.509 certificate. And the SAP Secure Login Service then returns this X.509 certificate to the Secure Login Client on the end user desktop. Read more in the <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-secure-login-service-for-sap-gui-now-supports-custom-certificate/ba-p/13666599" target="_self">blog post</A> of&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/5013">@Martina_K</a>.&nbsp;</SPAN></LI><LI><SPAN>Last but not least: Enabling the configuration and security analysis (CSA) functionality of SAP Cloud Application Lifecycle Management for operations to collect a comprehensive set of technical configuration data from Identity Authentication has been relased in Q1. It&nbsp;</SPAN>reduces manual administration efforts for user management and identity provider settings and increase transparency for Identity Authentication security configuration in a central landscape management tool. <A href="https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/configuration-security-analysis/csa-content.html" target="_self" rel="noopener noreferrer">Read more.</A>&nbsp;</LI></UL><H3 id="toc-hId--57443881">&nbsp;</H3><H3 id="toc-hId--253957386"><EM><STRONG>SAP BTP Innovation Highlights - outlook:</STRONG></EM></H3><P><SPAN>&nbsp;</SPAN>Please find here my personal innovation highlights outlook coming up:<SPAN><BR /></SPAN></P><UL><LI>Application Development and Automation:<SPAN>&nbsp;</SPAN><A href="https://roadmaps.sap.com/board?PRODUCT=67837800100800007077&amp;PRODUCT=73554900100800003081&amp;PRODUCT=73554900100800003832&amp;PRODUCT=73554900100800004334&amp;PRODUCT=73555000100800002781&amp;range=CURRENT-LAST#;INNO=139B28CB2E8C1EDEABE88AC09E53A39A" target="_self" rel="noreferrer noopener">Generating a business service of ABAP RESTful application programming model</A></LI><LI>Application Development and Automation: <A href="https://roadmaps.sap.com/board?PRODUCT=67837800100800007077&amp;PRODUCT=73554900100800003081&amp;PRODUCT=73554900100800003832&amp;PRODUCT=73554900100800004334&amp;PRODUCT=73555000100800002781&amp;range=CURRENT-LAST#;INNO=3F83C264AF571EDE85B57541EEC34FB4" target="_self" rel="noopener noreferrer">Enhanced integration of HTML5 application from other SAP BTP subaccounts</A></LI><LI>Integration:<SPAN>&nbsp;</SPAN><A href="https://roadmaps.sap.com/board?PRODUCT=000D3A47875C1EDB98A8A910864AC24B&amp;q=release&amp;range=CURRENT-LAST#;INNO=7FECA36531611EEEA0BFA24CC4692E99" target="_self" rel="noreferrer noopener">Release of pending adapters for use in Edge Integration Cell</A></LI><LI>Integration:<SPAN>&nbsp;</SPAN><A href="https://roadmaps.sap.com/board?PRODUCT=000D3A47875C1EDB98A8A910864AC24B&amp;range=CURRENT-LAST#Q2%202024;INNO=C1FBB5A935A51EDDA5E7942074F76CBC" target="_self" rel="noreferrer noopener">Event Mesh as new capability for SAP Integration Suite</A></LI><LI>Data and Analytics:&nbsp;<A href="https://roadmaps.sap.com/board?PRODUCT=67838200100800006884&amp;range=CURRENT-LAST#;INNO=57EA73B3B1E91EEE8E8BB2F9E519B05B" target="_blank" rel="noopener noreferrer">Repointing a model in a story for SAP Analytics Cloud</A></LI><LI>Data and Analytics: <A href="https://roadmaps.sap.com/board?PRODUCT=73554900100800002881&amp;range=CURRENT-LAST#Q2%202024;INNO=8B240203E7BF1EEE9CB9062F28FB9CF2" target="_self" rel="noopener noreferrer">Support for large instances of SAP HANA Cloud, SAP HANA database</A></LI><LI>Artificial Intelligence: <A href="https://roadmaps.sap.com/board?q=generative&amp;range=2023Q4-2025Q4#;INNO=BBC1CE8DBE581EEE97DC82D42D1D1A20" target="_self" rel="noopener noreferrer">Generative AI command generation</A></LI><LI>Artificial Intelligence: <A href="https://roadmaps.sap.com/board?FT=GEN_AI&amp;PRODUCT=42F2E964FAAF1EDA9FF753E17F3000E5&amp;range=2024Q2-2024Q2#;INNO=BB157EE7EE621EEE9CCFA069CB405445" target="_self" rel="noopener noreferrer">Automatic refinement of prompts using generative AI</A></LI><LI>Cross SAP BTP: <A href="https://roadmaps.sap.com/board?PRODUCT=73554900100800001901&amp;range=CURRENT-LAST#Q2%202024;INNO=DB6161B0D4561EEE91E66EE49BFBD805" target="_self" rel="noopener noreferrer">SAP Cloud Transport Management service: transport of changes from SAP Build Apps</A></LI><LI>Cross SAP BTP: <A href="https://roadmaps.sap.com/board?BA=42F2E964FAAF1EDB80C512AD4FEB20ED&amp;range=CURRENT-LAST#;INNO=03013803B70B1EEE9B810FBE72C718A4" target="_self" rel="noopener noreferrer">Identity and Access Management: Support for application specific groups in Identity Directory and Identity Provisioning</A></LI></UL><P>Check out all&nbsp;<SPAN>upcoming innovations in our&nbsp;</SPAN><A href="https://roadmaps.sap.com/" target="_blank" rel="noopener noreferrer">SAP Road Map Explorer</A><SPAN>&nbsp;to learn more.</SPAN></P><H3 id="toc-hId--450470891">Check out more on innovation highlights:</H3><UL><LI>Follow the&nbsp;<A href="https://roadmaps.sap.com/board?range=FIRST-LAST&amp;sap-outbound-id=F84338300454061B469DD99EFA855784D1EE0293&amp;PRODUCT=42F2E964FAAF1EDA9FF753E17F3000E5#Q1%202022" target="_blank" rel="noopener noreferrer">Roadmap Explorer</A>, which is updated on a regular basis to always stay on top of the latest innovations&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Stephanie_Stang_0-1713354062654.png" style="width: 16px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97588i07BDCE74017566DA/image-dimensions/16x16?v=v2" width="16" height="16" role="button" title="Stephanie_Stang_0-1713354062654.png" alt="Stephanie_Stang_0-1713354062654.png" /></span></LI><LI>Subscribe to our monthly&nbsp;<A href="https://www.sap.com/cmp/nl/sap-cp-newsletter/" target="_blank" rel="noopener noreferrer">newsletter</A>&nbsp;to get all SAP BTP product news&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Stephanie_Stang_1-1713354062672.png" style="width: 19px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97587i7334F3AF78F99B3F/image-dimensions/19x19?v=v2" width="19" height="19" role="button" title="Stephanie_Stang_1-1713354062672.png" alt="Stephanie_Stang_1-1713354062672.png" /></span></LI><LI>Check out the next blog post beginning of Q3/2024 summarizing the highlights of the previous quarter&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Stephanie_Stang_2-1713354062676.png" style="width: 22px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97589iE29D4D0B2CE0DE58/image-dimensions/22x22?v=v2" width="22" height="22" role="button" title="Stephanie_Stang_2-1713354062676.png" alt="Stephanie_Stang_2-1713354062676.png" /></span></LI><LI>If you want to be up to date on the latest SAP BTP news and innovations check out the new monthly&nbsp;<A href="https://www.youtube.com/playlist?list=PLWV533hWWvDkLRKiY-2aVnlXu5CpERDf9" target="_blank" rel="noopener nofollow noreferrer">SAP Innobytes video series.&nbsp;</A>Also want to get a recap on what´s new in SAP BTP then check out the What´s New in SAP BTP quarterly series&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Stephanie_Stang_3-1713354062669.png" style="width: 16px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97591iD344E509D866CB55/image-dimensions/16x16?v=v2" width="16" height="16" role="button" title="Stephanie_Stang_3-1713354062669.png" alt="Stephanie_Stang_3-1713354062669.png" /></span></LI><LI>Mark your calendar for the latest&nbsp;<A href="https://www.sap.com/about/events.html" target="_blank" rel="noopener noreferrer">SAP events</A>&nbsp;coming up&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Stephanie_Stang_4-1713354062679.png" style="width: 14px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97592i2818A7D0E1DE692C/image-dimensions/14x14?v=v2" width="14" height="14" role="button" title="Stephanie_Stang_4-1713354062679.png" alt="Stephanie_Stang_4-1713354062679.png" /></span></LI></UL><P><STRONG>&nbsp;</STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Stephanie_Stang_5-1713354062675.png" style="width: 16px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97590i4E4C116A8175FF08/image-dimensions/16x16?v=v2" width="16" height="16" role="button" title="Stephanie_Stang_5-1713354062675.png" alt="Stephanie_Stang_5-1713354062675.png" /></span>&nbsp;<SPAN>Read other&nbsp;</SPAN><A href="https://blogs.sap.com/tags/8077228b-f0b1-4176-ad1b-61a78d61a847/" target="_blank" rel="noopener noreferrer">SAP Business Technology Platform blog posts</A><SPAN>&nbsp;and check the&nbsp;</SPAN><A href="https://community.sap.com/topics/business-technology-platform" target="_blank">SAP Business Technology Platform Topic Page&nbsp;</A><SPAN>where you can also ask questions. Feel free to follow my profile&nbsp;</SPAN><SPAN class="">stephanie.stang</SPAN><SPAN>&nbsp;to not miss my next personal view of innovation highlights for SAP BTP for Q2 2024.</SPAN></P> 2024-04-17T20:29:36.355000+02:00 https://community.sap.com/t5/technology-blogs-by-members/enabling-support-for-existing-cap-projects-in-sap-build-code/ba-p/13676571 Enabling Support for Existing CAP Projects in SAP Build Code 2024-04-19T23:39:08.716000+02:00 MioYasutake https://community.sap.com/t5/user/viewprofilepage/user-id/789 <P><SPAN>The following article is an English translation of an article I posted <A href="https://qiita.com/tami/items/aa5a90ea99e1f648f197" target="_self" rel="nofollow noopener noreferrer">here</A>.</SPAN></P><P><SPAN>In SAP Build Code, currently only projects created with SAP Build's lobby or low-code templates are supported. If you try clicking the Joule icon in a project created with the </SPAN>cds init<SPAN> command, you'll receive a "Not Available" message. </SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MioYasutake_2-1713561141035.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99117i6B931887BFFB0B33/image-size/medium?v=v2&amp;px=400" role="button" title="MioYasutake_2-1713561141035.png" alt="MioYasutake_2-1713561141035.png" /></span></P><P><SPAN>However, the logic generation and test code generation features of Build Code are quite useful, and I wanted to try using them with existing projects.</SPAN></P><H2 id="toc-hId-992645788"><SPAN>In a Nutshell</SPAN></H2><P><SPAN>By adding the following configuration to package.json, Joule can be enabled for existing code as well. Note, however, that this method is only effective for CAP Node.js and does not support Java.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code> "lcap": true</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId-796132283">Steps&nbsp;</H2><H3 id="toc-hId-728701497">1. Create a project</H3><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>cds init &lt;project_name&gt;</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>At this point, Joule is not yet enabled.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MioYasutake_2-1713561141035.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99117i6B931887BFFB0B33/image-size/medium?v=v2&amp;px=400" role="button" title="MioYasutake_2-1713561141035.png" alt="MioYasutake_2-1713561141035.png" /></span></P><H3 id="toc-hId-532187992">2.&nbsp;<SPAN>Add Configuration to </SPAN>package.json</H3><P><SPAN>Add the following setting. </SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code> "lcap": true</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>The complete configuration will look like this:</SPAN></P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MioYasutake_1-1713561689637.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99118i2553578272AE558A/image-size/medium?v=v2&amp;px=400" role="button" title="MioYasutake_1-1713561689637.png" alt="MioYasutake_1-1713561689637.png" /></span></P><H3 id="toc-hId-335674487">3. Install dependency</H3><P><SPAN>Install the </SPAN><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1387241">@Sap</a>/low-code-event-handler<SPAN> module. The template-generated code will use this module as illustrated in the following example.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>/** * Code is auto-generated by Application Logic, DO NOT EDIT. * @version(2.0) */ const LCAPApplicationService = require('@sap/low-code-event-handler'); const books_Logic = require('./code/books-logic'); class CatalogService extends LCAPApplicationService { async init() { this.after('CREATE', 'Books', async (results, request) =&gt; { await books_Logic(results, request); }); return super.init(); } } module.exports = { CatalogService };</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H3 id="toc-hId-139160982">4. Confirm Activation of Joule</H3><P>Refresh your browser and open Joule. (If you do not refresh, it will remain in the original state)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MioYasutake_2-1713561901565.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99119i488164366846E6DA/image-size/medium?v=v2&amp;px=400" role="button" title="MioYasutake_2-1713561901565.png" alt="MioYasutake_2-1713561901565.png" /></span></P><P>After this, I added a data model with cds add tiny-sample, generated application logic via Joule, and deployed to Cloud Foundry to confirm that it functions correctly.</P><H2 id="toc-hId--186435242"><SPAN>Point of Caution</SPAN></H2><P><SPAN>Joule cannot be used with existing .js files. If you try opening Joule for event handlers that are already present, the "Open Guide" screen appears instead of Joule, and support for this source is not available.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MioYasutake_6-1713562249962.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99122iF2901BECD0BADE4A/image-size/large?v=v2&amp;px=999" role="button" title="MioYasutake_6-1713562249962.png" alt="MioYasutake_6-1713562249962.png" /></span></P><P><SPAN>If you add logic from the Graphical Modeler, it will overwrite the existing source. Therefore, if there are existing sources, they need to be backed up.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MioYasutake_7-1713562298896.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99123i8B1C4900F5AE8EB3/image-size/large?v=v2&amp;px=999" role="button" title="MioYasutake_7-1713562298896.png" alt="MioYasutake_7-1713562298896.png" /></span></P><H2 id="toc-hId--382948747">Conclusion</H2><P><SPAN>By simply adding a configuration to </SPAN>package.json<SPAN>, Joule can be activated for existing CAP Node.js projects, making it a more useful tool for pro-code developers. </SPAN></P> 2024-04-19T23:39:08.716000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/what-s-new-in-mobile-development-kit-client-24-4/ba-p/13667946 What’s new in Mobile development kit client 24.4 2024-04-23T10:28:24.247000+02:00 Jitendra_Kansal https://community.sap.com/t5/user/viewprofilepage/user-id/3305 <P>I am happy to announce that a new release of the Mobile Development Kit(MDK) is now available for all Mobile Services customers. It can be downloaded from the <A href="https://launchpad.support.sap.com/?sap-support-employee=true#/softwarecenter/template/products/_APP=00200682500000001943&amp;_EVENT=NEXT&amp;HEADER=Y&amp;FUNCTIONBAR=Y&amp;EVENT=TREE&amp;NE=NAVIGATE&amp;ENR=73555000100800001081&amp;V=MAINT&amp;TA=ACTUAL/MOBILE%20DEVELOPMENT%20KIT%20CLIENT" target="_blank" rel="noopener noreferrer">SAP Software Center&nbsp;</A><SPAN>and the community</SPAN>&nbsp;<A href="https://developers.sap.com/trials-downloads.html?search=Mobile%20development%20kit" target="_blank" rel="noopener noreferrer">Download page</A>. Additionally, the SAP Mobile Services Clients available on the App Store and Google Play have been updated with this new release.<BR /><BR />SAP Mobile Development Kit enables developers and technical business users to build multi-channel applications. It allows you to build your application once, in an integrated development environment (SAP Business Application Studio/ VSCode extension) and run it natively on Mobile (Android &amp; iOS) and as a web application (online) in the browser. This release includes the following:</P><UL><LI><STRONG>New UI enhancements</STRONG><UL><LI><A href="#FioriToolbar" target="_self" rel="nofollow noopener noreferrer">Fiori Toolbar</A></LI><LI><A href="#ControlAboveTab" target="_self" rel="nofollow noopener noreferrer">Support additional Controls above Tabs</A></LI><LI><A href="#MultipleBackNav" target="_self" rel="nofollow noopener noreferrer">Multiple Back Navigation</A></LI></UL></LI><LI><STRONG>API &amp; Syntax enhancements</STRONG><UL><LI><A href="#LP" target="_self" rel="nofollow noopener noreferrer">Enhance List Picker Return Value</A>&nbsp;</LI><LI><A href="#AppName" target="_self" rel="nofollow noopener noreferrer">ClientAPI function to return MDK Application Name</A></LI><LI><A href="#WriteToPath" target="_self" rel="nofollow noopener noreferrer">WriteToFilePath property for OData DownloadMedia and Download-Stream actions</A>&nbsp;</LI></UL></LI><LI><A href="#SimplifiedQRCode" target="_self" rel="nofollow noopener noreferrer">Support Simplified QR Code for Onboarding in Android Client</A></LI><LI><A href="#MDKBAS" target="_self" rel="nofollow noopener noreferrer">MDK editor enhancements</A><UL><LI><A href="#Toggle" target="_self" rel="nofollow noopener noreferrer">Go to code Toggle</A>&nbsp;</LI><LI><A href="#destination" target="_self" rel="nofollow noopener noreferrer">Connect or sync an SSO based mobile destination</A></LI></UL></LI></UL><H2 id="toc-hId-991755814"><STRONG>Fiori Toolbar</STRONG></H2><P>We have introduced a new SAP Fiori style Toolbar in MDK that allows the developers to do things such as customize the buttons, helper texts, overflow button and enable or disable the toolbar based on their business requirement.&nbsp;For more information, refer to&nbsp;<A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/guides/features/fiori-ui/mdk/toolbars.html" target="_blank" rel="noopener noreferrer">Toolbars</A>.</P><P>The buttons in the toolbar are automatically positioned based on the number of buttons defined. For instance:</P><UL><LI>One toolbar item:</LI><UL><LI>On phone: stretches across the toolbar</LI><LI>On tablet: Item is aligned to the right</LI></UL><LI>Two toolbar items:</LI><UL><LI>On phone - Items are placed on either side of the layout, left and right.</LI><LI>On tablet - Items are aligned to the right. However, on Android tablets, if the&nbsp;HelperText&nbsp;is defined, the items are placed on either side of the layout.</LI></UL><LI>Three or more toolbar items:</LI><UL><LI>On phone - Only two items will be displayed, aligned to the right while the rest will be pushed into the overflow button.</LI><LI>On tablet - If there are three toolbar items, then all three items will be displayed and aligned to the right. In cases where there are more than three items, the excess items will be pushed into the overflow button.</LI></UL></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Fiori Toolbar with one, two and more than two buttons on iOS" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97731iEFDBCADEA328C927/image-size/large?v=v2&amp;px=999" role="button" title="FioriToolbar_iOS.png" alt="Fiori Toolbar with one, two and more than two buttons on iOS" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Fiori Toolbar with one, two and more than two buttons on iOS</span></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Fiori Toolbar with one, two and more than two buttons on Android" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97728i56FC7E15C0D2B315/image-size/large?v=v2&amp;px=999" role="button" title="FioriToolbar_Android.png" alt="Fiori Toolbar with one, two and more than two buttons on Android" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Fiori Toolbar with one, two and more than two buttons on Android</span></span></P><P>&nbsp;Additionally, we have introduced <A href="https://help.sap.com/doc/3642933ef2e1478fb1578ef2acba4ae9/Latest/en-US/reference/apidoc/classes/pageproxy.html#getfioritoolbar" target="_blank" rel="noopener noreferrer">getFioriToolbar</A> API. This returns the FioriToolbarProxy instance of the associated Fiori toolbar of that page</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>Context.getPageProxy().getFioriToolbar();</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>If you have used MDK toolbar in your application, you can migrate your app with new Fiori Toolbar in SAP Business Application Studio. (Right click <STRONG>Application.app</STRONG>&gt;<STRONG>MDK:Migrate</STRONG>).</P><H2 id="toc-hId-795242309"><STRONG>Support additional Controls above Tabs</STRONG></H2><P>MDK now supports additional controls above the Tab Bar in addition to the Header controls. You can now add any controls and extensions above the Tab Bar. The area of the tabs is a fixed size based on the number of the controls rendered on page load. Changing visibility of controls or using controls that expand in place should be avoided at this time.</P><P><STRONG>Note:</STRONG> While users have the flexibility to choose the type and number of controls to be placed above the tab bar, we highly recommend avoiding overcrowding, as it does reduce the tab page's body area on the screen.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Object Header, Button Table and Form Cell List Picker controls above Tab Bar in iOS and Android clients" style="width: 668px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97772i61C9ADF20F50C98A/image-dimensions/668x690?v=v2" width="668" height="690" role="button" title="ControlsAboveTab.png" alt="Object Header, Button Table and Form Cell List Picker controls above Tab Bar in iOS and Android clients" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Object Header, Button Table and Form Cell List Picker controls above Tab Bar in iOS and Android clients</span></span></P><H2 id="toc-hId-598728804">&nbsp;<STRONG>Multiple Back Navigation</STRONG></H2><P>A new property&nbsp;<A href="https://help.sap.com/doc/3642933ef2e1478fb1578ef2acba4ae9/Latest/en-US/reference/schemadoc/Action/ClosePage.schema.html#navigatebacktopage" target="_blank" rel="noopener noreferrer">NavigateBackToPage</A>&nbsp;is added in the&nbsp;<A href="https://help.sap.com/doc/3642933ef2e1478fb1578ef2acba4ae9/Latest/en-US/reference/schemadoc/Action/ClosePage.schema.html" target="_blank" rel="noopener noreferrer">ClosePage</A> Action.This property will allow the users to navigate back to the defined page. This property accepts name of the target page as the input (target page name is assigned to the&nbsp;_Name&nbsp;property of the page). If you have multiple pages opened with the same name in the navigation stack, the NavigateBackToPage reference will return to the most recent occurrence of the specified page name.<BR /><BR /><STRONG>Note:</STRONG> OnReturning events bound to pages between the current page and the page specified by the NavigateBackToPage property are not triggered.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>{ "_Type": "Action.Type.ClosePage", "ActionResult": { "_Name": "MultiBack" }, "NavigateBackToPage": "StartingPage", "OnFailure": "/MDKApp/Actions/BackNavigation/MultiBack_Failure.action" }</code></pre><P>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId-402215299"><STRONG>Enhance List Picker Return Value</STRONG></H2><P>When selecting an item in the List Picker Form Cell control, &nbsp;there are times that the return value needed to be a unique value but that there were also other values needed from the selected record.&nbsp;To access the additional values in the entity set, a second read call was needed to be performed which caused extra efforts for developers.</P><P>List picker form cell control’s&nbsp;<STRONG>getValue()</STRONG>&nbsp;API and&nbsp;<STRONG>#Value</STRONG>&nbsp;has been enhanced to include the entire bound data object for the returned values. This bound data object is stored in the&nbsp;BindingObject&nbsp;property of the selected items.<BR /><BR />Accessing BindingObject property via</P><UL><LI><STRONG>JavaScript property accessor</STRONG>: context.getValue()[0].BindingObject;</LI><LI><STRONG>Evaluate Target path</STRONG>: context.evaluateTargetPath(“#Control:ListPicker/#Value#0/BindingObject”);</LI></UL><P>This will allow you to get additional information about the selected items including the&nbsp;DisplayValue&nbsp;and&nbsp;ReturnValue.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code>[ { "BindingObject": { "@odata.editLink": "ProductCategories('0cfeaf26-4cc0-4a26-b088-9a2b5b444db9')", "@odata.id": "ProductCategories('0cfeaf26-4cc0-4a26-b088-9a2b5b444db9')", "@odata.readLink": "ProductCategories('0cfeaf26-4cc0-4a26-b088-9a2b5b444db9')", "@odata.type": "#ESPM.ProductCategory", "Category": "0cfeaf26-4cc0-4a26-b088-9a2b5b444db9", "CategoryName": "Portable Players", "MainCategory": "TV, Video &amp; HiFi", "MainCategoryName": "TV, Video &amp; HiFi", "NumberOfProducts": 5 }, "DisplayValue": "Portable Players", "ReturnValue": "0cfeaf26-4cc0-4a26-b088-9a2b5b444db9" } ]</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Note</STRONG>: BindingObject&nbsp;property will only be available for list pickers that are data bound via&nbsp;Target.</P><H2 id="toc-hId-205701794"><STRONG>ClientAPI function to return MDK Application Name</STRONG></H2><P>You can now be able to retrieve the <STRONG>_Name</STRONG> property for the MDK application via:</P><UL><LI><STRONG>Target Path</STRONG>: #Application/#AppData/AppName</LI><LI><STRONG>Client API</STRONG>: <A href="https://help.sap.com/doc/3642933ef2e1478fb1578ef2acba4ae9/Latest/en-US/reference/apidoc/interfaces/iclientapi.html#getappname" target="_blank" rel="noopener noreferrer">getAppName()</A>;<BR />This <EM>_Name</EM> property is defined in the <EM>Application.app</EM> in MDK metadata project.</LI></UL><H2 id="toc-hId-9188289"><STRONG>WriteToFilePath property for OData DownloadMedia and DownloadStream actions</STRONG></H2><P>A new property&nbsp;<A href="https://help.sap.com/doc/3642933ef2e1478fb1578ef2acba4ae9/Latest/en-US/reference/schemadoc/definitions/DownloadOptions.schema.html#writetofilepath" target="_blank" rel="noopener noreferrer"><STRONG>WriteToFilePath</STRONG></A>&nbsp;is introduced in the&nbsp;DownloadOptions&nbsp;property for the <A href="https://help.sap.com/doc/3642933ef2e1478fb1578ef2acba4ae9/Latest/en-US/reference/schemadoc/Action/ODataService/DownloadMedia.schema.html" target="_blank" rel="noopener noreferrer"><STRONG>DownloadMedia</STRONG></A> and&nbsp; <A href="https://help.sap.com/doc/3642933ef2e1478fb1578ef2acba4ae9/Latest/en-US/reference/schemadoc/Action/ODataService/DownloadStream.schema.html" target="_blank" rel="noopener noreferrer"><STRONG>DownloadStream</STRONG></A>&nbsp;actions. This property allows you to specify either the full or relative file path of the destination where the downloaded data should be stored. If a relative file path is specified, the file is stored in the path relative to the platform's internal documents folder. On iOS, this property must be defined to download larger files in the background. Please note that this property is supported only on iOS and Android platforms.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code>{ "_Type": "Action.Type.ODataService.DownloadStream", "ActionResult": { "_Name": "Products_DownloadStream" }, "OnFailure": "/MDKApp/Actions/Products/Products_StreamFailure.action", "OnSuccess": "/MDKApp/Rules/Products/Products_OpenDocument.js", "Target": { "Service": "/MDKApp/Services/SampleServiceV4.service", "EntitySet": "Products", "ReadLink": "{@odata.readLink}" }, "Properties": [ "Picture" ], "DownloadOptions": [ { "WriteToFilePath": "/MDKApp/Rules/Products/Products_relativePath.js" } ] }</code></pre><P>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId--187325216"><STRONG>Support Simplified QR Code for Onboarding in Android Client</STRONG></H2><P>The Onboarding process in MDK clients support QR codes, including <STRONG>In-App Scanning Code</STRONG> and <STRONG>Apple and Android Launch App Code with URI Scheme</STRONG>, which are available in the Mobile Services admin UI. These QR codes are relatively dense, as they contain extensive configuration details required for onboarding process. Devices with lower camera resolutions frequently encounter challenges when attempting to scan such dense QR codes. To address this issue, MDK client allows the users to scan simplified onboarding QR codes. <STRONG>This feature is currently available for Android only. </STRONG></P><P>A simplified QR code ideally contains a single URL that serves as the gateway to access detailed onboarding configuration information stored on the SAP Mobile Services. Thus, significantly reducing the underlying information in the QR codes.</P><P>Generating a simplified QR code feature is currently not available in the Mobile Services admin UI. You can use any QR Code generation tool to manually convert the following JSON object into a simplified QR code:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code> { "schema": "2.0", "mobileServicesHost": "&lt;my-ms-mdk-app.hana.ondemand.com&gt;" } </code></pre><P>&nbsp;</P><P>&nbsp;</P><P>Replace &lt;my-ms-mdk-app.hana.ondeomand.com&gt; with your server domain name from the&nbsp;<STRONG>APIs</STRONG>&nbsp;tab in your Mobile Services app in the cockpit (Do not include the https:// prefix). When users scan the resulting onboarding QR code, MDK will retrieve the full onboarding configuration from the specified Mobile Services host and proceed with the user onboarding.</P><H2 id="toc-hId--383838721">Go to code Toggle</H2><P>In addition to existing features of switch from graphical editor to text editor and vice versa, we have introduced an additional option to easily toggle between text and graphical files. There is an icon located on the top right of the editor bar.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BASToggle.gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97727iEBB1B86DBD296F32/image-size/large?v=v2&amp;px=999" role="button" title="BASToggle.gif" alt="BASToggle.gif" /></span></P><H2 id="toc-hId--580352226"><STRONG>Connect or sync an SSO based mobile destination</STRONG></H2><P>This improvement is applicable when the SAP Business Application Studio and Mobile Services are not in the same subaccount.You can now easily connect to such SSO enabled mobile services destination configured in a different BTP subaccount than your BAS subaccount.<BR /><BR /><U><STRONG>Note</STRONG></U>:<STRONG>&nbsp;Cross Context SSO setting under Security in your app configuration on mobile services admin UI must be enabled in order to use this feature.</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Security configuration in SAP Mobile Services Admin UI" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97726i61B028123FBF653A/image-size/large?v=v2&amp;px=999" role="button" title="CrossContextSSO.png" alt="Security configuration in SAP Mobile Services Admin UI" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Security configuration in SAP Mobile Services Admin UI</span></span></P><P>When connecting to an SSO enabled destination while creating a project or syncing an existing destination, you would need to input passcode by clicking on the given link.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Passcode screen in SAP Business Application Studio" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/97730i8BDBC94F0F7FDC60/image-size/large?v=v2&amp;px=999" role="button" title="passcode.png" alt="Passcode screen in SAP Business Application Studio" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Passcode screen in SAP Business Application Studio</span></span><STRONG>New to MDK development?</STRONG><BR /><BR />Follow <A href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/guides/getting-started/mdk/overview.html#tutorials" target="_blank" rel="noopener noreferrer">these tutorials</A> to get started and learn more about Mobile development kit!<BR /><BR />I am looking forward to your feedback/comments.</P> 2024-04-23T10:28:24.247000+02:00 https://community.sap.com/t5/application-development-blog-posts/create-full-stack-app-use-entity-drafts-use-joule-to-create-action-code/ba-p/13676527 Create full-stack app, use entity drafts, use Joule to create action code. 2024-04-24T10:50:40.906000+02:00 lukcad https://community.sap.com/t5/user/viewprofilepage/user-id/888780 <P><STRONG>Goals:</STRONG></P><P><STRONG>1--</STRONG>&nbsp;create one Full-Stack application for management orders based on model from Northwind service&nbsp;<A href="http://services.odata.org/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>http://services.odata.org</SPAN></A></P><P><STRONG>2--</STRONG><SPAN>&nbsp;</SPAN><SPAN>enhance application to meet the business requirements</SPAN><SPAN> manually to avoid impact of Low Code generator for custom code.</SPAN></P><P><STRONG>3--</STRONG> enhance application by new logic using Joule with Low code generator</P><P><STRONG>4--</STRONG> test code that no regression in code by using Low code generator and Joule.</P><P><STRONG>Minimal </STRONG><STRONG>Business requirements:</STRONG></P><P><SPAN>1-- Main list of </SPAN><SPAN>orders </SPAN><SPAN>should have at least</SPAN><SPAN> these columns: Order ID, Order Created, City, Country, Status</SPAN></P><TABLE><TBODY><TR><TD><P>Order ID</P></TD><TD><P>&nbsp;value of Order ID</P></TD></TR><TR><TD><P>Order Created</P></TD><TD><P>&nbsp;value of the Creation Date</P></TD></TR><TR><TD><P>Ship City</P></TD><TD><P>&nbsp;value of shipment City</P></TD></TR><TR><TD><P>Ship Country</P></TD><TD><P>&nbsp;value of Shipment Country</P></TD></TR><TR><TD><P>Ship Status</P></TD><TD><P>&nbsp;Calculated: criticality + value ( shipped or not)</P></TD></TR></TBODY></TABLE><P><SPAN>2</SPAN><SPAN>-- Each record can be editable on</SPAN><SPAN> Details page and have two sections</SPAN><SPAN> `</SPAN><SPAN>Order Header</SPAN><SPAN>`</SPAN><SPAN> which contains general information about order</SPAN> <SPAN>and `Order Items` which is list of item positions in orders.</SPAN></P><P>3-- Each position `Order items` has columns:</P><TABLE><TBODY><TR><TD><P>Product</P></TD><TD><P>Editable (chosen from list)</P></TD></TR><TR><TD><P>Quantity</P></TD><TD><P>Editable value of quantity</P></TD></TR><TR><TD><P>Unit price</P></TD><TD><P>Read only:&nbsp; should be taken from Unit Price of Product</P></TD></TR><TR><TD><P>Discount</P></TD><TD><P>Editable value of discount</P></TD></TR><TR><TD><P>Cost</P></TD><TD><P>Calculated field: (Quantity * Unit Price - Discount)</P></TD></TR><TR><TD><P>Status Product</P></TD><TD><P>Calculated: criticality + value (Active or Discontinued)</P></TD></TR></TBODY></TABLE><P>4-- For additional enhancement you can add action `Loyalty`</P><UL><LI>in this version action will return the information pop-up with total cost per current order.</LI></UL><P><STRONG>Prerequisites:</STRONG></P><P>As a developer to go through steps of this article:</P><UL><LI>you have an account in SAP BTP.</LI><LI>you know SAP BTP and know how to create dev Full-Stack environment.</LI><LI>you have GitHub where you can save your project</LI><LI>you added application SAP Build Code to your subaccount</LI><LI>you know how to develop CAP and UI by Fiori elements</LI><LI>you understand CDS and know about any consequences if model in CDS should be changed.</LI><LI>you have heard about `Joule`.</LI></UL><P><STRONG>Creating project for </STRONG><STRONG>orders</STRONG></P><P>In this document, you will create project according to our goals and the business requirements, steps will be like these:</P><UL><LI>Prepare project</LI><UL><LI>creating project</LI></UL><LI>Generate components of project</LI><UL><LI>generate data model and data by Joule</LI><LI>generate FIORI UI</LI></UL><LI>Implement business requirements</LI><UL><LI>enhance data model</LI><LI>create persistence model for development</LI><LI>modify FIORI pages</LI><LI>modify srv/service.js</LI></UL><UL><LI>create srv/code/orderdetails_draft_create_logic.js</LI><LI>create srv/code/orderdetails_draft_update_logic.js</LI></UL><UL><LI>manual testing business requirements</LI></UL><LI>Add additional functionality(action)</LI><UL><LI>add action</LI><LI>commit to GitHub version 1.0.0</LI><LI>generate data logic of action by Joule</LI><LI>testing action</LI><LI>commit to GitHub version 1.0.1</LI></UL></UL><P><STRONG>Preparation of project</STRONG></P><P>Go to SAP BTP and open tool `SAP Build Code` which you previously adjusted by Booster or by documentation.</P><P>Go to `Lobby` of your applications and create new application with name `zorders` (you can use your name).</P><P>Use this road map to create project:</P><P>Create -&gt; Build Application -&gt; SAP Build Code -&gt; Full-Stack Application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_0-1713550070760.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99029iE74724AF19977D2A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_0-1713550070760.png" alt="lukcad_0-1713550070760.png" /></span></P><P>Once project is prepared in your Lobby, open it by hitting Name from list of projects:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_1-1713550070761.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99027iB14B55CB4FE6310F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_1-1713550070761.png" alt="lukcad_1-1713550070761.png" /></span></P><P>You will have opened SAP build tool with generated application which you will develop:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_2-1713550070761.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99028iF1562086A919AF33/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_2-1713550070761.png" alt="lukcad_2-1713550070761.png" /></span></P><P>Before go with `Joule` I recommend use GitHub to save your versions (if something wrongly generated and you did accept it you will be able to restore everything to save time):</P><P><SPAN>we add our project to GitHub by creating repository, in this example it is `</SPAN><SPAN>zorders</SPAN><SPAN>`</SPAN></P><P>Preparation is done.</P><P><STRONG>Generate components of project</STRONG></P><P><STRONG>Generate </STRONG><STRONG>model</STRONG><STRONG> and data by Joule</STRONG></P><P><SPAN>For generating model u</SPAN><SPAN>se this road map:</SPAN></P><P>Go to Joule -&gt;Open Guide-&gt;Data Model and Service Creation</P><TABLE><TBODY><TR><TD><P><SPAN>Past</SPAN><SPAN>e</SPAN><SPAN> for Joule:</SPAN></P></TD><TD><P><SPAN>create model from Northwind service which is placed on</SPAN><SPAN>&nbsp;</SPAN><A href="http://services.odata.org/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>http://services.odata.org</SPAN></A></P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_3-1713550070762.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99031i9E2E982B5DADD366/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_3-1713550070762.png" alt="lukcad_3-1713550070762.png" /></span></P><P>Once Joule is finished, you have to accept changes and you can verify your model by CDS Graphical Modeler:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_4-1713550070763.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99030iD0713AFD16BC4E68/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_4-1713550070763.png" alt="lukcad_4-1713550070763.png" /></span></P><P>For generating data use this road map:</P><P>Joule-&gt;Open Guide-&gt;Sample Data-&gt;Generate Sample Data</P><TABLE><TBODY><TR><TD><P>Tell to Joule:</P></TD><TD><P>Generate sample data for model.</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_5-1713550070764.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99032i3AE143B1339668AA/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_5-1713550070764.png" alt="lukcad_5-1713550070764.png" /></span></P><P>once sample data are generated by Joule, and you accept it, you will find all of those into Sample Data editor (you can open it later on by command palette: <STRONG>PT&nbsp; Open Sample Data Editor</STRONG>)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_6-1713550070765.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99035iC114E891B74547C6/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_6-1713550070765.png" alt="lukcad_6-1713550070765.png" /></span></P><P>make one record manually with empty value for `ShippedDate` in `Orders` entity.</P><P>open terminal and run `<STRONG>cds w</STRONG>`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_7-1713550070766.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99034i96AF3D3DF7C1FA7A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_7-1713550070766.png" alt="lukcad_7-1713550070766.png" /></span></P><P>Open proposed link, usually it is&nbsp;<A href="http://localhost:4004/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>http://localhost:4004</SPAN></A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_8-1713550070767.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99033i57CD5D8C6D219184/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_8-1713550070767.png" alt="lukcad_8-1713550070767.png" /></span></P><P>Check that there are data, try open any service, for example Orders:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_9-1713550070767.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99038i4EB7D4B41E396DC8/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_9-1713550070767.png" alt="lukcad_9-1713550070767.png" /></span></P><P><SPAN>Model </SPAN><SPAN>and data are </SPAN><SPAN>prepared by Joule and verified by you.</SPAN><SPAN> You can go to the next step to generate UI by `Fiori elements`.</SPAN></P><P><STRONG>Genera</STRONG><STRONG>te Fiori </STRONG><STRONG>UI</STRONG></P><P>On this step you generate UI.</P><P>Use this road map:</P><P><SPAN>Open Palette-&gt;FIORI: </SPAN><SPAN>Open Application Generator</SPAN></P><P>Choose `Worklist Page`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_10-1713550070768.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99036i7FC5A28E3DED242F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_10-1713550070768.png" alt="lukcad_10-1713550070768.png" /></span></P><P><SPAN>choose template&nbsp; </SPAN><SPAN>List Report </SPAN><SPAN>Page -&gt; Use local CAP project</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_11-1713550070769.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99037i9A37B3BBAD340576/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_11-1713550070769.png" alt="lukcad_11-1713550070769.png" /></span></P><P>Press Next</P><P><SPAN>Choose main entity </SPAN><SPAN>`Orders` and Navigation entity `orderDetails`</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_12-1713550070769.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99041i97AB253A9548C730/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_12-1713550070769.png" alt="lukcad_12-1713550070769.png" /></span></P><P>Press next</P><P>Give these parameters:</P><TABLE><TBODY><TR><TD><P>Module name</P></TD><TD><P>orders</P></TD></TR><TR><TD><P>Application title</P></TD><TD><P>Orders</P></TD></TR><TR><TD><P>Description</P></TD><TD><P><SPAN>Orders </SPAN><SPAN>management</SPAN></P></TD></TR><TR><TD><P>Allow FLP configuration</P></TD><TD><P>Yes</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_13-1713550070770.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99040i78AA6E38C19313CA/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_13-1713550070770.png" alt="lukcad_13-1713550070770.png" /></span></P><P>Press next</P><P>Give these parameters for FLP:</P><TABLE><TBODY><TR><TD><P>Semantic Object</P></TD><TD><P>zmlorders</P></TD></TR><TR><TD><P>Action</P></TD><TD><P>Management</P></TD></TR><TR><TD><P>Title</P></TD><TD><P><SPAN>Orders </SPAN><SPAN>Management</SPAN></P></TD></TR></TBODY></TABLE><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_14-1713550070771.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99039i88AD9915FA8D257E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_14-1713550070771.png" alt="lukcad_14-1713550070771.png" /></span></P><P>Press Finish</P><P>Finally you should be able for app/products by opening context menu choose `Show Page Map`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_15-1713550070771.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99044i6ED15F6F1D86CEB7/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_15-1713550070771.png" alt="lukcad_15-1713550070771.png" /></span></P><P>Verify application, by start prepared run configuration or start cds server via terminal.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_16-1713550070772.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99042iB32823254DCA9449/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_16-1713550070772.png" alt="lukcad_16-1713550070772.png" /></span></P><P>This Home will be opened for our application:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_17-1713550070773.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99043i3825037CD351ED2E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_17-1713550070773.png" alt="lukcad_17-1713550070773.png" /></span></P><P><SPAN>Open our Fiori application `</SPAN><SPAN>Orders</SPAN><SPAN>`</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_18-1713550070774.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99047iC0B10FE2A88896C4/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_18-1713550070774.png" alt="lukcad_18-1713550070774.png" /></span></P><P>Open details for order:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_19-1713550070775.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99046i27DF643A0538F19F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_19-1713550070775.png" alt="lukcad_19-1713550070775.png" /></span></P><P>Our application contains all needing components of application to start implementation of business requirements.</P><P><STRONG>Implement business requirements</STRONG></P><P><SPAN>On this phase you have</SPAN><SPAN> to implement </SPAN><SPAN>the </SPAN><SPAN>business requirements:</SPAN></P><P><SPAN>1-- Main list of </SPAN><SPAN>orders </SPAN><SPAN>should have at least</SPAN><SPAN> these columns: Order ID, Order Created, City, Country, Status</SPAN></P><TABLE><TBODY><TR><TD><P>Order ID</P></TD><TD><P>&nbsp;value of Order ID</P></TD></TR><TR><TD><P>Order Created</P></TD><TD><P>&nbsp;value of the Creation Date</P></TD></TR><TR><TD><P>Ship City</P></TD><TD><P>&nbsp;value of shipment City</P></TD></TR><TR><TD><P>Ship Country</P></TD><TD><P>&nbsp;value of Shipment Country</P></TD></TR><TR><TD><P>Ship Status</P></TD><TD><P>&nbsp;Calculated: criticality + value ( shipped or not)</P></TD></TR></TBODY></TABLE><P><SPAN>2</SPAN><SPAN>-- Each record can be editable on</SPAN><SPAN> Details page and have two sections</SPAN><SPAN> `</SPAN><SPAN>Order Header</SPAN><SPAN>`</SPAN><SPAN> which contains general intormation about order</SPAN> <SPAN>and `Order Items` which is list of item positions in orders.</SPAN></P><P>3-- Each position `Order items` has columns:</P><TABLE><TBODY><TR><TD><P>Product</P></TD><TD><P>Editable (chosen from list)</P></TD></TR><TR><TD><P>Quantity</P></TD><TD><P>Editable value of quantity</P></TD></TR><TR><TD><P>Unit price</P></TD><TD><P>Read only:&nbsp; should be taken from Unit Price of Product</P></TD></TR><TR><TD><P>Discount</P></TD><TD><P>Editable value of discount</P></TD></TR><TR><TD><P>Cost</P></TD><TD><P>Calculated field: (Quantity * Unit Price - Discount)</P></TD></TR><TR><TD><P>Status Product</P></TD><TD><P>Calculated: criticality + value (Active or Discontinued)</P></TD></TR></TBODY></TABLE><P>4-- For additional enhancement you can add action `Loyalty`</P><UL><LI>in this version action will return the information pop-up with total cost per current order.</LI></UL><P><STRONG>enhance data model </STRONG></P><P>On level data model we need to apply so named materialized calculated fields. fields that we add as extension to our data model and those will be recalculated and saved in database each time when values in record were changed. This is most effective way to keep calculated fields in database.</P><P>We need according to business requirements 3 calculated fields:</P><P>Into `db/schema.cds` file we add these 3 calculated fields using extend of the correspondent database:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> /** * * Products has crtiticality positive if it is not discontinued */ extend Products with { criticality : Integer = (case when Discontinued = False then 3 else 2 end ) stored; ProductStatus : String(15) = (case when Discontinued = False then 'Active' else 'Discontinued' end ) stored; } /** * * Orders has crtiticality positive if it is shipped */ extend Orders with { criticality : Integer = (case when ShippedDate is not null then 3 else 2 end ) stored; ShipStatus : String(15) = (case when ShippedDate is not null then 'Shipped' else 'Not' end ) stored; } /** * Cost per each element is needing to easily calculate total price */ extend OrderDetails with { cost : Decimal(10,4) = ( UnitPrice * Quantity - Discount ) stored; }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_20-1713550070775.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99045iC6E89C9F281BF385/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_20-1713550070775.png" alt="lukcad_20-1713550070775.png" /></span></P><P>&nbsp;</P><P>You can open SQL Preview of schema.cds file and check how it looks like on DB level:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_21-1713550070777.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99049i8433A5E8FA6197D0/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_21-1713550070777.png" alt="lukcad_21-1713550070777.png" /></span></P><P>Preview CDS on service layer after added fields:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_22-1713550070778.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99051i495559DE071BC549/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_22-1713550070778.png" alt="lukcad_22-1713550070778.png" /></span></P><P><STRONG>create persistence model for development</STRONG></P><P>Use persistence data base instead of `in-memory` for this example.</P><P>You should add this JSON fragment into `package.json` of project to cluster of settings under `cds/requires`:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code> , "[development]": { "db": { "kind": "sqlite", "credentials": { "url": "zorders.sqlite" } } }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_23-1713550070779.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99048i59BA87C3548AF99E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_23-1713550070779.png" alt="lukcad_23-1713550070779.png" /></span></P><P>And run this command in terminal to create your persistence in the SQLite based database.</P><P style=" text-align : left; padding-left : 30px; "><STRONG>cds deploy</STRONG></P><P>You will find that database for persistence is appeared in your project.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_24-1713550070780.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99054i9EB12AF17419DBB3/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_24-1713550070780.png" alt="lukcad_24-1713550070780.png" /></span></P><P>&nbsp;</P><P><STRONG>modify FIORI pages</STRONG></P><P>Execute `Show Page Map` by using context menu for folder `app/orders`</P><P>Delete third Page, we need only two pages:</P><UL><LI>List Report</LI><LI>Object Page</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_25-1713550070780.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99053iAEF5B3007C17F817/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_25-1713550070780.png" alt="lukcad_25-1713550070780.png" /></span></P><P>Open page `List Report` in Edit mode and for Columns of Table add these fields and remove not necessary.</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Field:</P></TD><TD><P>Label:</P></TD></TR><TR><TD><P>OrderID</P></TD><TD><P>Order ID</P></TD></TR><TR><TD><P>OrderDate</P></TD><TD><P>Order Created</P></TD></TR><TR><TD><P>ShipCIty</P></TD><TD><P>Ship City</P></TD></TR><TR><TD><P>ShipCountry</P></TD><TD><P>Ship Country</P></TD></TR><TR><TD><P>ShipName</P></TD><TD><P>Ship Name</P></TD></TR><TR><TD><P>ShipStatus</P></TD><TD><P>Ship Status</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_26-1713550070781.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99052iBB2DA9C6653BF378/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_26-1713550070781.png" alt="lukcad_26-1713550070781.png" /></span></P><P>For `Ship Status` set Criticality to `criticality` field.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_27-1713550070782.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99056iF27AEB723A009EF9/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_27-1713550070782.png" alt="lukcad_27-1713550070782.png" /></span></P><P>Return to `Page Map` and start Edit `Object Page`</P><P>Rename Section `General Information` to `Order Header`</P><P>Add section `Order Items` by using `Add Table Section` with parameters:</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>&nbsp;Label</P></TD><TD><P>Order Items</P></TD></TR><TR><TD><P>Value Source</P></TD><TD><P>orderDetails</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_28-1713550070782.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99055i4AC7753790AC329F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_28-1713550070782.png" alt="lukcad_28-1713550070782.png" /></span></P><P>You should have 2 sections added:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_29-1713550070783.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99057iD5456F1DBC06DF0E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_29-1713550070783.png" alt="lukcad_29-1713550070783.png" /></span></P><P>Open Section `Order Header` and change fields in Fields of Form :</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Field:</P></TD><TD><P>Label:</P></TD></TR><TR><TD><P>OrderId</P></TD><TD><P>Order ID</P></TD></TR><TR><TD><P>OrderDate</P></TD><TD><P>Order Created</P></TD></TR><TR><TD><P>RequiredDate</P></TD><TD><P>Order Required</P></TD></TR><TR><TD><P>ShippedDate</P></TD><TD><P>Order Shipped</P></TD></TR><TR><TD><P>ShipVia</P></TD><TD><P>Ship Via</P></TD></TR><TR><TD><P>Freight</P></TD><TD><P>Freight</P></TD></TR><TR><TD><P>ShipName</P></TD><TD><P>Ship Name</P></TD></TR><TR><TD><P>ShipAddress</P></TD><TD><P>Ship Address</P></TD></TR><TR><TD><P>ShipCity</P></TD><TD><P>Ship City</P></TD></TR><TR><TD><P>ShipRegion</P></TD><TD><P>Ship Region</P></TD></TR><TR><TD><P>ShipPostalCode</P></TD><TD><P>Ship Postal Code</P></TD></TR><TR><TD><P>ShipCountry</P></TD><TD><P>Ship Country</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_30-1713550070783.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99058i10CA186C7CDB483A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_30-1713550070783.png" alt="lukcad_30-1713550070783.png" /></span></P><P>Open Section `Order Items` and add fields in columns of Table:</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Field:</P></TD><TD><P>Label:</P></TD><TD><P>Text</P></TD><TD><P>Restriction</P></TD><TD><P>Text Arragement</P></TD><TD><P>criticality</P></TD></TR><TR><TD><P>product_ID</P></TD><TD><P>Product</P></TD><TD><P>product/ProductName</P></TD><TD><P>&nbsp;</P></TD><TD><P>Text Only</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>Quantity</P></TD><TD><P>Quantity</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>UnitPrice</P></TD><TD><P>Unit Price</P></TD><TD><P>&nbsp;</P></TD><TD><P>Read only</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>Discount</P></TD><TD><P>Discount</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>cost</P></TD><TD><P>Cost</P></TD><TD><P>&nbsp;</P></TD><TD><P>Read Only</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>ProductStatus</P></TD><TD><P>Product Status</P></TD><TD><P>&nbsp;</P></TD><TD><P>Read Only</P></TD><TD><P>&nbsp;</P></TD><TD><P>product/criticality</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_31-1713550070784.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99059iEEC9D58827DA0D0E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_31-1713550070784.png" alt="lukcad_31-1713550070784.png" /></span></P><P>For field Product you should make more adjustments to let user choose Product by name from value help name with two additional fields `Unit Price` and `Discontinued`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_32-1713550070785.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99060iB8E5A3FF91AB6CCC/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_32-1713550070785.png" alt="lukcad_32-1713550070785.png" /></span></P><P>If you now start use this application and go to for modification of product in position of order (section&nbsp; `Order Items` ), you will have inconsistency for `Unit Price` after saving, even you will be able to see correct price by dropdown list `out` determination.</P><P>As example of wrong behavior of currently achieved UI:</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Before your change:</P></TD><TD><P>What is wrong?</P></TD></TR><TR><TD><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_33-1713550070785.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99062iA6AB2FC4BC38ADF5/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_33-1713550070785.png" alt="lukcad_33-1713550070785.png" /></span></TD><TD>&nbsp;</TD></TR><TR><TD><P>After your change of product:</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_34-1713550070786.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99061i0D2A910FB8CA6A06/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_34-1713550070786.png" alt="lukcad_34-1713550070786.png" /></span><P>&nbsp;</P><P>&nbsp;</P></TD><TD><P>Unit price has not changed together with product during editing `Order Items`, so Cost is wrong as well</P></TD></TR></TBODY></TABLE><P>&nbsp;</P><P>It will be not acceptable by customer.</P><P>So what you can do with it, we have to extend manually code in srv/service.js and create in folder `srv/code` files with manual methods of our code, you can't use here Joule in this piece of programming currently, because we create code witch suppose to interact with drafts records of table `OrderDetails`.</P><P>This is what you can do:</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>-- modify</P><P><STRONG>srv/service.js</STRONG></P></TD><TD><P>you add new two event handlers here to feel modification of&nbsp; `<STRONG>OrderDerails.drafts</STRONG>` (notice name of entity with draft information against service looks like adding suffix `.drafts`)</P></TD></TR><TR><TD><P>-- add</P><P><STRONG>srv/code/orderdetails_draft_create_logic.js</STRONG></P></TD><TD><P>your custom code for creating draft record, here your code does simple set up of filed `Discount` if it is null.</P></TD></TR><TR><TD><P>-- add</P><P><STRONG>srv/code/orderdetails_draft_update_logic.js</STRONG></P></TD><TD><P>your custom code for updating draft record, here your code does modification of `UnitPrice` according to chosen `Product`</P></TD></TR></TBODY></TABLE><P><STRONG>modify srv/service.js</STRONG></P><P>Put this code into your file:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> /** * Code is auto-generated by Application Logic, DO NOT EDIT. * @version(2.0) */ const LCAPApplicationService = require('@sap/low-code-event-handler'); const orders_Loyalty_Logic = require('./code/orders-loyalty-logic'); const orderdetails_draft_update_Logic = require('./code/orderdetails_draft_update_logic'); const orderdetails_draft_create_Logic = require('./code/orderdetails_draft_create_logic.js'); class NorthwindSrv extends LCAPApplicationService { async init() { this.on('Action1', 'Orders', async (request, next) =&gt; { await orders_Loyalty_Logic(request); return next(); }); this.before(['UPDATE'], 'OrderDetails.drafts', async (request) =&gt; { await orderdetails_draft_update_Logic(request); }); this.before(['CREATE'], 'OrderDetails.drafts', async (request) =&gt; { await orderdetails_draft_create_Logic(request); }); return super.init(); } } module.exports = { NorthwindSrv };</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_35-1713550070786.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99063i0B78E5FE3C3113A5/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_35-1713550070786.png" alt="lukcad_35-1713550070786.png" /></span></P><P><STRONG>create srv/code/orderdetails_draft_create_logic.js</STRONG></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> /** * This initiate default value of Discount to avoid null for new records * @Before(event = { "CREATE" }, entity = "NorthwindSrv.OrderDetails.drafts") * {Object} req - User information, tenant-specific CDS model, headers and query parameters */ module.exports = async function (req) { // Your code here if (!req.data.Discount) { req.data.Discount = 0 } }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_36-1713550070787.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99065i981D993B31D00B08/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_36-1713550070787.png" alt="lukcad_36-1713550070787.png" /></span></P><P><STRONG>create srv/code/orderdetails_draft_update_logic.js</STRONG></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code> /** * This changes UnitPrice in draft record to expose it when record is applied * @Before(event = { "UPDATE" }, entity = "NorthwindSrv.OrderDetails.drafts") * {Object} req - User information, tenant-specific CDS model, headers and query parameters */ module.exports = async function(req) { // Your code here if (req) { if (req.data) { if (req.data.product_ID) { const northSrv = await cds.connect.to("NorthwindSrv"); let prod_id = req.data.product_ID let sqlprod = SELECT.from`Products`.where` ID=${prod_id}` let productstm = await northSrv.get(sqlprod) req.data.UnitPrice = productstm[0].UnitPrice } } } }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_37-1713550070787.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99064i0933D9B1C7F53EBD/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_37-1713550070787.png" alt="lukcad_37-1713550070787.png" /></span></P><P><STRONG>manual testing</STRONG><STRONG> business requirements</STRONG></P><P>Now you can go and test application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_38-1713550070788.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99067i1A74735D58AA311A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_38-1713550070788.png" alt="lukcad_38-1713550070788.png" /></span></P><P>You can see that all fields in list and Ship Status should Shipped with criticality level 3 (green)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_39-1713550070789.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99070iE91E7C983342E459/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_39-1713550070789.png" alt="lukcad_39-1713550070789.png" /></span></P><P>You add new order without pointing shipment date:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_40-1713550070790.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99068i68F5FB02ABAD0310/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_40-1713550070790.png" alt="lukcad_40-1713550070790.png" /></span></P><P>&nbsp;</P><P>As a result of adding new record which is not not shipped (date of shipment was not entered) you can see that orders has `Ship status` with value Not and criticality 2 (orange).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_41-1713550070790.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99069i8837C8647DC19E3A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_41-1713550070790.png" alt="lukcad_41-1713550070790.png" /></span></P><P>&nbsp;</P><P>You can add new order Item in Edit mode by pressing `Create` for section `Order Items` and you see that `Discount` has value by default 0:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_42-1713550070791.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99073iCEF0A25FFC975569/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_42-1713550070791.png" alt="lukcad_42-1713550070791.png" /></span></P><P>You can change product `Chai` to `Chef Anton's Cajun Seasoning` which has different unit price:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_43-1713550070791.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99074iAC43EC44F83926B4/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_43-1713550070791.png" alt="lukcad_43-1713550070791.png" /></span></P><P>After saving your change of product you can find that `Order Items` has modified product with proper Unit Price:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_44-1713550070792.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99072iD4597CD5022E88EC/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_44-1713550070792.png" alt="lukcad_44-1713550070792.png" /></span></P><P><STRONG>Add additional functionality(action).</STRONG></P><P>We will add action which will be used in future to let manager of orders press action `Loyalty` to understand total cost of order and add any another information (this will be added by another document, so here just for understanding approach will be added in information message after pressing action just simple total cost of order which will be dynamically calculated by code which Joule will be able to generate).</P><P><STRONG>add action</STRONG></P><P>Open `srv/service.cds` by `CDS Graphical Modeler` and for `Orders` entity choose `Add Action `</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_45-1713550070792.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99075i0FF520B36FF1ED7F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_45-1713550070792.png" alt="lukcad_45-1713550070792.png" /></span></P><P>Add `Action1` and choose details for action to set up return type to `LargeString`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_46-1713550070793.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99078iFC1591B4CCF15B82/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_46-1713550070793.png" alt="lukcad_46-1713550070793.png" /></span></P><P>If you look at `srv/service.cds` file of your project you will find where and how your action has been added.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_47-1713550070794.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99077i274559CE6DA9F672/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_47-1713550070794.png" alt="lukcad_47-1713550070794.png" /></span></P><P>Open for folder app/orders context menu and choose `Show Page Map` and open `Object page` for edit mode</P><P>and go to sections `Order header` and `Actions` of Form</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_48-1713550070795.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99080i8F85FD7C7F90370E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_48-1713550070795.png" alt="lukcad_48-1713550070795.png" /></span></P><P>Add action `Northwind.Action1`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_49-1713550070795.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99079iFA8DC6EB6AF7EE75/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_49-1713550070795.png" alt="lukcad_49-1713550070795.png" /></span></P><P>Change Label of action from `Action1` to `Loyalty`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_50-1713550070796.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99081iD6FA3B6A83BA6FD6/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_50-1713550070796.png" alt="lukcad_50-1713550070796.png" /></span></P><P>Go back to Graphical representation of `srv/service.cds` and start applying logic to Action1.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_51-1713550070797.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99083iCFABE1C83A472B55/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_51-1713550070797.png" alt="lukcad_51-1713550070797.png" /></span></P><P>Add application logic with name `orders-loyalty-logic`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_52-1713550070798.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99082i178CBF82702EF398/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_52-1713550070798.png" alt="lukcad_52-1713550070798.png" /></span></P><P>And open code editor for implementation logic</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_53-1713550070798.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99084i38542004F0134885/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_53-1713550070798.png" alt="lukcad_53-1713550070798.png" /></span></P><P>You are in position where you can ask Joule to find for you code to implement your idea.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_54-1713550070799.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99085i44073CC3AB76E390/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_54-1713550070799.png" alt="lukcad_54-1713550070799.png" /></span></P><P><STRONG>commit your project to GitHub with version 1.0.0</STRONG></P><P>&nbsp;</P><P><STRONG>generate data logic of action by Joule</STRONG></P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Tell to Joule:</P></TD><TD><P>select all rows from `OrderDetails` that associated to selected `ID` from `Orders`. and then calculate sum of by field `cost` as `totalcost`. show result into `info` pop-up.</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_55-1713550070800.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99088iFBD71730B41BA685/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_55-1713550070800.png" alt="lukcad_55-1713550070800.png" /></span></P><P>You should just slightly change code which Joule is generated, use order ID from parameter of request instead of selection:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> /** * * (event = { "Action1" }, entity = "NorthwindSrv.Orders") * {Object} req - User information, tenant-specific CDS model, headers and query parameters */ module.exports = async function(req) { const tx = cds.transaction(req); const orderID = req._params[0].ID; // req.data.ID; const orderDetails = await tx.run( SELECT .from('NorthwindSrv.OrderDetails') .where({ order_ID: orderID }) ); let totalCost = 0; for (const detail of orderDetails) { totalCost += detail.cost; } req.info(`The total cost of order ${orderID} is ${totalCost}`); }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_56-1713550070801.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99086iE98E66AE7F6D68F3/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_56-1713550070801.png" alt="lukcad_56-1713550070801.png" /></span></P><P><STRONG>testing action</STRONG></P><P>run your application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_57-1713550070802.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99090iE993390A8B708EC8/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_57-1713550070802.png" alt="lukcad_57-1713550070802.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_58-1713550070803.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99089iEA84A908CA4D6746/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_58-1713550070803.png" alt="lukcad_58-1713550070803.png" /></span></P><P>go to details, find in `Order header` link 'Loyalty`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_59-1713550070803.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99091iCEA88CF698A2A1D0/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_59-1713550070803.png" alt="lukcad_59-1713550070803.png" /></span></P><P>press loyalty, you should have `Information` message about total cost of order.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_60-1713550070804.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99093iB78CDD353F44DEA6/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_60-1713550070804.png" alt="lukcad_60-1713550070804.png" /></span></P><P><STRONG>commit your project to GitHub with version 1.0.1</STRONG></P><P>Thank you,</P><P>you have ready-to-use simplified application for management orders.</P><P>Main take aways from this example:</P><UL><LI>the DB model can be enhanced by materialized calculation fields.</LI><LI>on level Fiori pages you can provide value help with out determinations to modify related data.</LI><LI>how you can modify related data in draft records.</LI><LI>how to add action and expose result of action to pop-up.</LI><LI>how to use Joule for creating model, samples of data and for generating code.</LI></UL><P>&nbsp;</P><P>Happy programming!</P><P>Yours sincerely,</P><P>Mikhail.</P><P>PS: you can find code on GitHub here:</P><P><A href="https://github.com/lukcad/zorders.git" target="_blank" rel="noopener nofollow noreferrer">https://github.com/lukcad/zorders.git</A></P> 2024-04-24T10:50:40.906000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/consuming-sap-with-sap-build-apps-mobile-apps-for-ios-and-android/ba-p/13667638 Consuming SAP with SAP Build Apps - Mobile Apps for iOS and Android 2024-04-24T11:00:11.784000+02:00 LudoNoens https://community.sap.com/t5/user/viewprofilepage/user-id/15040 <P>This blog post is the third in a series of posts that cover the connectivity options available for SAP Build Apps to interface with SAP systems. The series will cover connecting SAP Build Apps with the following:</P><OL><LI>CAP-based services</LI><LI>S/4HANA systems</LI><LI>ABAP systems</LI></OL><P>The format of this post is similar to a tutorial. However, I'll provide more comprehensive details, tips and the opportunity for you to provide feedback. Based on the feedback we will be able to adjust and enhance this post and future parts of the series, and might even be able to improve the products involved as well.&nbsp;<BR /><BR /></P><H1 id="toc-hId-862670183">Introduction </H1><P>Before we get into the details of setting up connections between SAP Build Apps and SAP Systems, I intend to introduce a couple of SAP technology components in each post that are relevant for the use cases covered in the series.&nbsp;<BR /><BR /></P><H2 id="toc-hId-795239397">SAP Mobile Services</H2><P>The use case described in this blog post makes use of <A title="SAP Mobile Services Documentation - Introduction" href="https://help.sap.com/doc/f53c64b93e5140918d676b927a3cd65b/Cloud/en-US/docs-en/guides/index.html" target="_blank" rel="noopener noreferrer">SAP Mobile Services</A> to authenticate the mobile apps we will be running on our devices.</P><P>SAP Mobile Services is a collection of services on SAP Business Technology Platform that enables mobile application development, configuration and management. It is a cloud-based offering complemented by various development tools such as the native SDKs for iOS and Android, the mobile development kit (MDK) or SAP Mobile Cards. <SPAN>The overall objective is to deliver reusable services, which can be leveraged in mobile app development projects. W</SPAN>e have recently added integration with SAP Mobile Services in SAP Build Apps.</P><P>In the context of SAP Build Apps in this blog post, we will be using the server features related to security: enterprise authentication and enterprise app management. SAP Mobile Services authenticates your mobile users with Cloud Identity Services and provides access to integrations and SAP BTP services within your mobile applications. For the mobile apps, SAP Build Apps will use some portions of the SAP SDKs that allow for easy authentication through SAP Mobile Services.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mobile-services-feature-overview-build-apps.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99771i60753103E3A7D35B/image-size/large?v=v2&amp;px=999" role="button" title="mobile-services-feature-overview-build-apps.png" alt="mobile-services-feature-overview-build-apps.png" /></span></P><H2 id="toc-hId-598725892">Build service</H2><P>SAP Build Apps offers a build service that allows you to build your web application and mobile applications for iOS and Android in the cloud, without the need to install the required tools on your local machine. After building your web application, you can deploy the app to SAP Business Technology Platform. For the mobile apps, you can download the IPA (iOS) and APK (Android) file and install the app on your mobile device(s).</P><P>As you might be aware, Apple has restricted the building of iOS apps to Apple hardware. With the SAP Buiild Apps build service, non-Apple hardware users can still build iOS apps, provided these users have access to specific files required for signing the apps.</P><P>Note: although SAP Mobile Services offers a reuse service for "Cloud Build Service for CI" as shown in the diagram above, SAP Build Apps does not make use of this and offers a separate Build service, dedicated for building SAP Build Apps client apps.<BR /><BR /></P><P>&nbsp;</P><H1 id="toc-hId-273129668">Use case C : Consume the CAP service in a mobile app on the iOS and Android platforms</H1><P>For this use case, we will make use of the previously created basic CAP service in <FONT color="#FF00FF"><STRONG>SAP Build Code</STRONG></FONT>. We will be creating dedicated mobile apps for the iOS and Android platforms to consume this service. In the first post in this series, I've already highlighted that you can <STRONG>preview</STRONG>&nbsp;your app on a mobile device using the SAP Build Apps client app that is available for download in the public app stores for <A title="SAP Build Apps Preview - iOS app" href="https://apps.apple.com/us/app/sap-build-apps-preview/id1585856868" target="_blank" rel="noopener nofollow noreferrer">iOS</A> and <A title="SAP Build Apps Preview - Android app" href="https://play.google.com/store/apps/details?id=com.sap.appgyver.preview.release&amp;hl=en&amp;gl=US&amp;pli=1" target="_blank" rel="noopener nofollow noreferrer">Android</A>. But you can't use this to publish your own apps. We offer you a way to build your own apps in the cloud. There is no need to install tooling on your own machines to accomplish this.</P><H2 id="toc-hId-205698882">Solution diagram</H2><P>Let's first take a quick look at what we need to change in our solution overview to accommodate for mobile apps. Building upon the solution diagram created in the <A title="Consuming SAP with SAP Build Apps - Connectivity options for low-code development - part 2" href="https://community.sap.com/t5/technology-blogs-by-sap/consuming-sap-with-sap-build-apps-connectivity-options-for-low-code/ba-p/13666667" target="_blank">previous blog post</A>, we now add <STRONG>SAP Mobile Services</STRONG>. The design time environment of SAP Build Apps will register the application with SAP Mobile Services. End users install our mobile app on their device. The mobile app authenticates with the Identity Authentication service (IAS). SAP Mobile Services handles the token exchange with Authorization and Trust Management (XSUAA) and acts as a proxy to provide access to the BTP destination. Only users who have the correct Roles assigned will be able to access the data provided in the CAP-based data service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_3-1713944850590.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100970i7AB144AAFA2DBA66/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_3-1713944850590.png" alt="LudoNoens_3-1713944850590.png" /></span></P><H2 id="toc-hId-9185377">Developing the mobile apps</H2><P>Before we start, as a teaser, let me show you a few screenshots of the iOS app we will be creating. An animated recording is available at the end of this blog post.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="screencaptures_bloga.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100917i02FD1CB9828D5EE3/image-size/large?v=v2&amp;px=999" role="button" title="screencaptures_bloga.png" alt="screencaptures_bloga.png" /></span></P><P>Let's get started building this mobile app. </P><P>Open <STRONG>SAP Build Apps</STRONG>, and navigate to the Launch tab. Select the "Open build service" button on the Build your app tile.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_0-1713776904935.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99827i0276B426863475ED/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1713776904935.png" alt="LudoNoens_0-1713776904935.png" /></span></P><P>You will now see three options. In this blog we will focus on the mobile apps. We'll take a look at web app in one of the next posts.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_1-1713777192990.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99832i6D3126A1A28943A0/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_1-1713777192990.png" alt="LudoNoens_1-1713777192990.png" /></span></P><H2 id="toc-hId--187328128">Building the Android app</H2><P>The easiest mobile build is for Android. Select Configure under Android Mobile/Tablet.</P><H3 id="toc-hId--254758914">Android keystore</H3><P>Your first task is to create and upload an Android keystore. The Android platform requires that all APKs (Android application package) are digitally signed with a certificate before they are installed on a device or updated.</P><P>To create a new keystore, you'll need a CLI tool called&nbsp;<STRONG>keytool</STRONG>, which is part of the Java Development Kit (JDK). Instead of downloading this JDK from our competitor and agreeing to all kinds of legal fine print, you could also download this from the <A title="SAP Development Tools" href="https://tools.eu1.hana.ondemand.com/#cloud" target="_blank" rel="noopener nofollow noreferrer">SAP Development Tools site</A>&nbsp;(look for the SAP JVM package for your machine). However, this package is rather large. If you don't want to install anything on your local machine, we have an even better option: your Dev Space in <STRONG>SAP Build Code</STRONG> ! This Dev Space contains various developer tools out-of-the-box, and a key feature is that you can actually run them directly in this cloud environment. Simply go back to SAP Build Code (or SAP Business Application Studio) and open the terminal.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_0-1713840423953.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100241iDF8247ECA283114C/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_0-1713840423953.png" alt="LudoNoens_0-1713840423953.png" /></span></P><P>Generate the keystore from the Command Line, using the following (adapt file name and alias to your own preferences):<BR /><BR /></P><PRE>keytool -genkey -v -keystore blogdemoapp.keystore.jks -alias blogdemoapp -keyalg RSA -keysize 2048 -validity 10000</PRE><P>Answer the questions asked by the keytool and note the password, which we need to provide later on in the SAP Build Apps build configuration UI.</P><P>Once completed, you will have a keystore file stored in your Dev Space. Navigate to the (File) Explorer, find the keystore file and right-click on it. Select Download, to store the file on your local machine.</P><P>Going back to SAP Build Apps, upload the keystore file and provide the password. The alias is optional and you can leave it blank. Select NEXT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_2-1713777418871.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99834i5661DF222ABAAC35/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1713777418871.png" alt="LudoNoens_2-1713777418871.png" /></span></P><H3 id="toc-hId--451272419">Android application bundle</H3><P>In the Bundle Settings, select APK for the build scheme. Provide a package identifier in the form of a reverse domain name.&nbsp;Provide a display name for the app, which will be visible on your device's home screen. Select NEXT.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_0-1713777523682.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99835iA98C1EFFAE26061C/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1713777523682.png" alt="LudoNoens_0-1713777523682.png" /></span></P><H3 id="toc-hId--647785924">Image Assets</H3><P>In the Image Assets tab, we can <U>optionally</U> upload images for the application icon, the splash screen and notification icon. This allows you to apply your personal or company's branding to the app. The application icon will be visible on your device's home page. When opening up the app, users will briefly see a splash screen, which can be used as introduction or welcome page. This is where we can show the splash screen image.</P><P>For the icon image, I've actually used a Generative AI service (in my case Microsoft Copilot). Feel free to get creative yourself, or use some other image generation service. The images have to be in PNG format and provided in various sizes to support all the various device form factors and display resolutions available in the market. There are various online tools available to help you create these images from a source image. Search for "icon splash android generator" to find one that suits your needs.</P><P>Recommendation: keep your images as small as possible. The splash screen is a nice to have, but will only be visible to the user for a very short period of time.</P><P>After uploading all required images, click NEXT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_1-1713777578744.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99836i7B1BBC1B0BB03AF8/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_1-1713777578744.png" alt="LudoNoens_1-1713777578744.png" /></span></P><H3 id="toc-hId--919530798">Application permissions</H3><P>On the Permissions tab, you can configure application permissions that your app might require. For our demo, we will skip this and click NEXT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_2-1713777651247.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99837iABBB3BD2E600060D/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1713777651247.png" alt="LudoNoens_2-1713777651247.png" /></span></P><H3 id="toc-hId--1116044303">Mobile Services connection</H3><P>Last but not least, we have to configure the Mobile Services connection. Your app will be interfacing with a specific instance of SAP Mobile Services, available in your subaccount. We need to provide the endpoint for this particular instance. Otherwise your app will not know where Mobile Services can be found. Click the Enable SAP Mobile Services button and log in.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_4-1713777735701.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99839iCEAF4AB08CBF1295/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_4-1713777735701.png" alt="LudoNoens_4-1713777735701.png" /></span></P><P>Select the API endpoint for your subaccount. In case you are not sure which one this is, you can check the Overview page on your subaccount's BTP cockpit. Once the endpoint is selected, you will need to log in.</P><P>After a successful log in, you will be able to pick the Organization in the dropdown list, followed by the Space.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_5-1713777763341.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99840i3BE9DE1E68DA67B3/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_5-1713777763341.png" alt="LudoNoens_5-1713777763341.png" /></span></P><P>Once this is configured, you again click on the&nbsp;Enable SAP Mobile Services button. During this process, SAP Build Apps will register your app with SAP Mobile Services.&nbsp;</P><P>Selecting NEXT will bring you back to the Build page.<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_7-1713777918652.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99846i813F0843736290D3/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_7-1713777918652.png" alt="LudoNoens_7-1713777918652.png" /></span></P><H3 id="toc-hId--1312557808">Build for Android</H3><P>Now that we are done configuring the Android build, let's request the build service to produce an APK for us. Click the BUILD button.&nbsp; On the next page, select the client runtime version and provide a version code and version name.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_1-1713845495731.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100255iBDFF21D744FED488/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_1-1713845495731.png" alt="LudoNoens_1-1713845495731.png" /></span></P><P>Once you click the BUILD button, a request to build an APK for your app will be sent and queued. Builds can take some time. We are in the process of significantly speeding this up.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_2-1713845658145.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100256iA6E79ED25AADD9F8/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_2-1713845658145.png" alt="LudoNoens_2-1713845658145.png" /></span></P><P>&nbsp;</P><P>Once the build is done, you can click the DOWNLOAD button to retrieve the APK file and store it on your local machine.</P><H3 id="toc-hId--1509071313">Installing the app on your device</H3><P>For installing the APK onto your device, there are various options (and challenges), depending on what device you have and the PC you are using. In general, you'll need to connect your device to your PC and transfer the file over for example a USB connection. To help transfer the file, you can for example use Android File Transfer. Once the APK file is transferred onto the device, open a file explorer app such as My Files. Select the APK file and open with Package Installer. Once this is done, find your app in the applications list.</P><P>Note: you might run into various challenges when your device is managed (by your company), security settings that are set tight, or Developer Options are turned off.</P><P>Tip: when accessing your device, make sure the screen is unlocked.</P><P>Below is a capture of the app running on a Samsung phone. Please refer to the iOS app for a recording in better quality.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_2-1713932740842.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100892iB9388210AE7FE30A/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_2-1713932740842.png" alt="LudoNoens_2-1713932740842.png" /></span></P><P>&nbsp;</P><H2 id="toc-hId--1412181811">Building the iOS app</H2><P>Compared to the Android build, this task is less easy. This is due to restrictions defined by Apple. The main challenge is in getting the correct certificate and profile to be able to install the app on your device.</P><P>Select the CONFIGURE button on the Build page to configure iOS Mobile/Tablet builds.</P><H3 id="toc-hId--1902098323">Certificates</H3><P>The most tricky part in this process is on the Certificates tab. You need to provide an iOS Distribution Certificate. Take note that an iOS Developer Certificate will NOT work.</P><P>More details on how to get a certificate can be found on the Apple Developer site:&nbsp;<A href="https://developer.apple.com/help/account/create-certificates/create-enterprise-distribution-certificates" target="_blank" rel="noopener nofollow noreferrer">https://developer.apple.com/help/account/create-certificates/create-enterprise-distribution-certificates</A></P><P>If you don't have an iOS Developer account or you are not part of an iOS Enterprise Developer program, then you could ask a colleague to add you to an existing program, or register your device's UDID and provide you with the certificate and provisioning profile (see next step).&nbsp;</P><P>Once done, click NEXT.</P><P>Note: certificates have an expiry date. Your app will no longer start once the certificate is expired.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_0-1713861374042.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100392iC635D6B935589727/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1713861374042.png" alt="LudoNoens_0-1713861374042.png" /></span></P><H3 id="toc-hId--2098611828">Bundle Settings</H3><P>There are two build schemes you can choose from: App Store distribution or Ad Hoc distribution. For development and testing purposes as covered in this blog post, we will use the Ad Hoc distribution. The distribution is limited to a specified set of registered devices. The app will refuse to install on other devices.</P><P>Provide the Display Name of the app. The name will be visible on your device's Home Screen.</P><P>Provide a bundle identifier in the form of a reverse domain name. This is a unique identifier for your application. Take note that the provisioning profile has to include the app's bundle identifier as well.</P><P>Next is another challenge that requires you to navigate the Apple Developer site: getting the Ad Hoc provisioning profile. More details are on Apple's Developer site:&nbsp;<A href="https://developer.apple.com/help/account/manage-provisioning-profiles/create-an-ad-hoc-provisioning-profile" target="_blank" rel="noopener nofollow noreferrer">https://developer.apple.com/help/account/manage-provisioning-profiles/create-an-ad-hoc-provisioning-profile</A>.</P><P>You can skip the URL scheme and lock screen orientation. Select NEXT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_1-1713863377851.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100426i279C160E2744E20B/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_1-1713863377851.png" alt="LudoNoens_1-1713863377851.png" /></span></P><H3 id="toc-hId-1999841963">Image Assets</H3><P>For the app's icon, I am going to use exactly the same image that I've created for Android. For the iOS splash screen I've also used Microsoft's Copilot and enhanced it further with an image editor. For iOS, you'll need different PNG image sizes compared to Android. For the icons you can easily find image converter tools online. For the splash screen I've actually manually resized the original image. When uploading the images, SAP Build Apps will check whether the image is in the correct format and pixel dimensions.</P><P>Once done, click NEXT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_2-1713864016899.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100434iAE6651EA8584ACDC/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1713864016899.png" alt="LudoNoens_2-1713864016899.png" /></span></P><H3 id="toc-hId-1803328458">Usage strings</H3><P>We will not change anything here. Click NEXT.</P><H3 id="toc-hId-1606814953">Mobile Services</H3><P>This will be a repeat of the Android configuration. We now need to configure the connection between the mobile app and SAP Mobile Services. Your app will be interfacing with a specific instance of SAP Mobile Services, available in your subaccount. We need to provide the endpoint for this particular instance. Otherwise your app will not know where Mobile Services can be found. Click the Enable SAP Mobile Services button and log in.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LudoNoens_4-1713864835754.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100443iFBDF3458BA1811F2/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_4-1713864835754.png" alt="LudoNoens_4-1713864835754.png" /></span></P><P>Select the API endpoint for your subaccount. In case you are not sure which API endpoint this is, you can check the Overview page on your subaccount's BTP cockpit (see also the tip provided on screen). Once the endpoint is selected, you will need to log in (if you have not done so already).</P><P>After a successful log in, you will be able to pick the Cloud Foundry Organization in the dropdown list, followed by the Space.</P><P>Once this is configured, you again click on the&nbsp;Enable SAP Mobile Services button. During this process, SAP Build Apps will register your app with SAP Mobile Services.&nbsp;On the login screen of the app (see screenshot shared at the beginning of this blog post), you will see the identification of the app as it was registered in SAP Mobile Services. In my case: buildApps94767.</P><P>Selecting NEXT will bring you back to the Build page.<BR /><BR /></P><H3 id="toc-hId-1578485139">Build for iOS</H3><P>Now that we are done configuring the iOS build, let's request the build service to produce an IPA for us. Click the BUILD button.&nbsp; On the next page, select Ad Hoc, the client runtime version and provide a version and short version.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_5-1713865194071.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100444i2BFF0B964EF7CF58/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_5-1713865194071.png" alt="LudoNoens_5-1713865194071.png" /></span></P><P>Once you click the BUILD button, a request to build an IPA for your app will be sent and queued. Builds can take some time. We are in the process of significantly speeding this up.<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_0-1713871373165.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100511i2AA21EAEC33A66C7/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_0-1713871373165.png" alt="LudoNoens_0-1713871373165.png" /></span></P><P>Once the build is done, you can click the DOWNLOAD button to retrieve the IPA&nbsp;file and store it on your local machine.<BR /><BR /></P><H3 id="toc-hId-1381971634">Installing the app on your device</H3><P>For installing the IPA onto your device, there are various options, depending on what device you have and the PC you are using. In general, you'll need to connect your device to your PC and transfer the file over a USB connection. On Mac OS, you can use Finder and select your device. You can then drag and drop the IPA file onto the Finder view and the app will automatically be installed. Once this is done, find your app on your device's home screen. </P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="RPReplay_Final1713873118a.gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100517i1DC2C4194FB833E2/image-size/large?v=v2&amp;px=999" role="button" title="RPReplay_Final1713873118a.gif" alt="RPReplay_Final1713873118a.gif" /></span></P><P>&nbsp;</P><H2 id="toc-hId-1478861136">Summary – use case C</H2><P>In this use case we have created dedicated mobile apps for the iOS and Android platforms. Building the app in the cloud is relatively easy, as you don't need to install any tools on your local development machine. For iOS apps, getting the correct certificate and provisioning profile can be a challenge though.</P><P>By customising the app's icons and splash screens, you are able to apply your own branding.</P><P>SAP Build Apps registers the application with SAP Mobile Services. Using the mobile app, end users authenticate with IAS. SAP Mobile Services handles the token exchange with XSUAA and acts as a proxy to provide access to the BTP destination. Only users who have the correct Roles assigned will be able to access the data provided in the CAP-based data service.</P><P>&nbsp;</P><H1 id="toc-hId-1575750638">What's next</H1><P>In the next blog post, we will deploy the web application to SAP Build Work Zone.</P> 2024-04-24T11:00:11.784000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/5-easy-apps-that-can-be-created-right-away-using-joule-ai-assistant/ba-p/13680151 5 Easy apps that can be created right away using Joule AI Assistant 2024-04-26T03:36:30.013000+02:00 abhishekmodi https://community.sap.com/t5/user/viewprofilepage/user-id/7118 <P>This blog aims to:</P><UL><LI>Show how easy it is to create a working prototype using Joule AI</LI><LI>Create MVP in minutes using Joule AI</LI><LI>Explore the generated code</LI><LI>Explore some simple use cases</LI></UL><P>The GitHub links for source code are provided as well to study the code as it is generated by the AI assistant. If any of the below areas sound like a real use case then the project created is a great way to kickstart the dev activity. Again - we want to explore how much of code can be generated right away from the prompt that can serve as working MVP (Minimum Viable Product) as well.&nbsp;</P><P>Let's get started.</P><P>Open SAP Build Code - BAS and Press&nbsp;<SPAN>Win+Shift+P or Cmd+Shift+P to access the command pallet -&gt; New Project from Template. Click on the tile - Full-Stack Project.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-23 at 2.08.01 PM.png" style="width: 111px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/100687iAD367D120E921635/image-dimensions/111x113?v=v2" width="111" height="113" role="button" title="Screenshot 2024-04-23 at 2.08.01 PM.png" alt="Screenshot 2024-04-23 at 2.08.01 PM.png" /></span></SPAN></P><P>In the subsequent screens, fill the values for project specific details and click on Finish button. Once the template project loads completely, click on the Joule icon to launch the contexts on right hand side panel. Choose SAP Fiori UI -&gt; Create an SAP Fiori Application Directly from your Business Requirements and click on Open Joule button. Follow the below prompts for specific use cases.</P><H2 id="toc-hId-993386657"><SPAN>1. Use Case - Office Library App</SPAN></H2><H4 id="toc-hId-1055038590"><SPAN>Goal</SPAN></H4><P>To maintain the list of all books, journals and magazines within a small office library.</P><H4 id="toc-hId-858525085"><SPAN>Prompt</SPAN></H4><P><EM>"Create an app to maintain list of all books in office library with entities books and authors, where each book is linked to its author."</EM></P><H4 id="toc-hId-662011580"><SPAN>Output</SPAN></H4><P>We can see some famous books have been automatically added as mock data by Joule AI. It has author as separate entity as well, hence there is an association created automatically.&nbsp;</P><P><A href="https://github.com/amodi00/OfficeLibraryApp.git" target="_blank" rel="noopener nofollow noreferrer">Here</A> is the source code on git for reference.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 7.43.27 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102021i531C0601BE98FCC4/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-25 at 7.43.27 PM.png" alt="Screenshot 2024-04-25 at 7.43.27 PM.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 7.43.43 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102022iACEE0526A23CA6CD/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-25 at 7.43.43 PM.png" alt="Screenshot 2024-04-25 at 7.43.43 PM.png" /></span></P><H2 id="toc-hId-207332637"><SPAN>2. Use Case - Incident Tracking App</SPAN></H2><H4 id="toc-hId-268984570"><SPAN>Goal</SPAN></H4><P>To facilitate an app for customers to report incidents for technical issues</P><H4 id="toc-hId-72471065"><SPAN>Prompt</SPAN></H4><P><EM>"Create an app where customers can report incidents. Each incident includes replacement items, and each replacement is linked to a product, which has its own entity"</EM></P><H4 id="toc-hId--124042440"><SPAN>Output</SPAN></H4><P>The mock data generated in this case resembles very closely to real life incidents. This is again a great example of hierarchical data where the AI assistant has created automatically along with relevant association.&nbsp;</P><P><A href="https://github.com/amodi00/IncidentTrackingApp.git" target="_blank" rel="noopener nofollow noreferrer">Here</A> is the source code on git for reference.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 7.53.28 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102024i487A339DFF2B0C2A/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-25 at 7.53.28 PM.png" alt="Screenshot 2024-04-25 at 7.53.28 PM.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 7.53.42 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102023i1E7E464452F4845E/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-25 at 7.53.42 PM.png" alt="Screenshot 2024-04-25 at 7.53.42 PM.png" /></span></P><H2 id="toc-hId--578721383"><SPAN>3. Use Case - Payment Tracker App</SPAN></H2><P>To provide an app for external users - outside to organization to track their payments against their own invoice numbers (external invoice numbers)</P><H4 id="toc-hId--517069450"><SPAN>Prompt</SPAN></H4><P><EM>"Create an app to track the list of external invoices and payments made against them. Each invoice can have several line items which is linked to a product, which has its own entity.</EM>"</P><H4 id="toc-hId--1211300050"><SPAN>Output</SPAN></H4><P><SPAN>This is meant to be used by external users such as freight vendors who can login to system to check the status of their invoices. Since this is autogenerated MVP code, it won't be actually connected to the system to pull the statuses however it is a great code to start with.&nbsp;</SPAN></P><P><SPAN><A href="https://github.com/amodi00/PaymentTrackerApp.git" target="_blank" rel="noopener nofollow noreferrer">Here</A> is the source code on git for reference.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 8.04.34 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102026i2EE1295B0945319C/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-25 at 8.04.34 PM.png" alt="Screenshot 2024-04-25 at 8.04.34 PM.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 8.10.56 PM.png" style="width: 509px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102027i95F9156BC09870F6/image-dimensions/509x442?v=v2" width="509" height="442" role="button" title="Screenshot 2024-04-25 at 8.10.56 PM.png" alt="Screenshot 2024-04-25 at 8.10.56 PM.png" /></span></P><H2 id="toc-hId--821007541"><SPAN>4. Use Case - Employee Feedback App&nbsp;</SPAN></H2><H4 id="toc-hId--1604327060"><SPAN>Goal</SPAN></H4><P><SPAN>To create an app for the employees to log complaints and suggestions.&nbsp;</SPAN></P><H4 id="toc-hId--1800840565"><SPAN>Prompt</SPAN></H4><P><SPAN><EM>"Create an app to register complaints and suggestions from employee for an office floor</EM>"</SPAN></P><H4 id="toc-hId--1997354070"><SPAN>Output</SPAN></H4><P><SPAN><A href="https://github.com/amodi00/FeedbackApp.git" target="_blank" rel="noopener nofollow noreferrer">Here</A> is the source code on git for reference.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 8.20.04 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102030iD38D042A2EA05F57/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-25 at 8.20.04 PM.png" alt="Screenshot 2024-04-25 at 8.20.04 PM.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 8.20.23 PM.png" style="width: 412px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102029iC8466158DE878052/image-dimensions/412x539?v=v2" width="412" height="539" role="button" title="Screenshot 2024-04-25 at 8.20.23 PM.png" alt="Screenshot 2024-04-25 at 8.20.23 PM.png" /></span></P><H2 id="toc-hId--1607061561"><SPAN>5. Use Case - Survey App</SPAN></H2><H4 id="toc-hId-1904586216"><SPAN>Goal</SPAN></H4><P><SPAN>To survey for a cafeteria in office to get an opinion on overall quality of service.</SPAN></P><H4 id="toc-hId-1708072711"><SPAN>Prompt</SPAN></H4><P><SPAN><EM>"Create an app to survey the quality of food in office cafeteria. The survey should include questions about quality, serving size, staff friendliness, weight time and overall experience.</EM>"</SPAN></P><H4 id="toc-hId-1511559206"><SPAN>Output</SPAN></H4><P><SPAN>Check out the generated source code <A href="https://github.com/amodi00/SurveyApp" target="_blank" rel="noopener nofollow noreferrer">here</A>.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 12.37.43 PM.png" style="width: 354px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101965iA62379CD93CFD433/image-dimensions/354x410?v=v2" width="354" height="410" role="button" title="Screenshot 2024-04-25 at 12.37.43 PM.png" alt="Screenshot 2024-04-25 at 12.37.43 PM.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-04-25 at 12.37.26 PM.png" style="width: 590px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/101966i07834F221414E824/image-dimensions/590x270?v=v2" width="590" height="270" role="button" title="Screenshot 2024-04-25 at 12.37.26 PM.png" alt="Screenshot 2024-04-25 at 12.37.26 PM.png" /></span></P><H4 id="toc-hId-1315045701"><SPAN>Conclusion</SPAN></H4><P><SPAN>Joule AI can help kickstart the MVP creating entities, associations, screens and mock data based on the context or user story provided. It may not provide the full end to end solution and the idea is not to provide full solution to a given use case since the definition varies a lot but to aid the developer to speed up the development activity.</SPAN></P><P><SPAN><a href="https://community.sap.com/t5/c-khhcw49343/SAP+Build+Code/pd-p/73555000100800004372" class="lia-product-mention" data-product="1208-1">SAP Build Code</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/Joule/pd-p/d0136351-8a9c-4881-aebc-bf414b785998" class="lia-product-mention" data-product="1207-1">Joule</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/Artificial+Intelligence/pd-p/c3c3a408-33ea-4c2a-ae6f-05461e76982d" class="lia-product-mention" data-product="307-1">Artificial Intelligence</a>&nbsp;</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-04-26T03:36:30.013000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sapphire-2024-user-experience-and-application-development-sessions/ba-p/13684064 Sapphire 2024 user experience and application development sessions 2024-04-26T23:47:59.397000+02:00 PeterSpielvogel https://community.sap.com/t5/user/viewprofilepage/user-id/543 <P>I’m excited to return to SAP Sapphire for the first time in several years. As always, Sapphire is about showcasing SAP’s latest innovations. There will be lots to see across the full portfolio, especially all the new AI uses cases that help you make better, more informed business decisions. In this blog post, I will focus on the sessions that highlight user experience and application development, both of which contain varying levels of AI, as SAP is infusing artificial intelligence into most of our solutions.</P><P>To deliver a great user experience in SAP /4HANA, we focus on developing simple, intuitive applications using our own tools. We also make these technologies available to customers and partners. We have been making updates across our portfolio of tools and technologies for professional developers:</P><UL><LI>SAPUI5 – added <A href="https://community.sap.com/t5/technology-blogs-by-sap/joule-for-freestyle-sapui5-development-in-sap-build-code/ba-p/13650005" target="_blank">Joule as a helper to write freestyle SAPUI5 applications or custom pages</A></LI><LI>SAP Fiori elements – unlocks <A href="https://community.sap.com/t5/technology-blogs-by-sap/unlocking-efficiency-and-simplicity-a-look-into-the-new-features-of-sap/ba-p/13645297" target="_blank">efficiency and simplicity for creating apps</A></LI><LI>SAP Fiori tools – introduces <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-tools-2403-introduces-gen-ai-capability-and-more/ba-p/13650594" target="_blank">generative AI capabilities</A></LI><LI>SAP Business Application Studio – <A href="https://community.sap.com/t5/technology-blogs-by-sap/product-updates-for-sap-business-application-studio-march-2024-edition/ba-p/13648823" target="_blank">includes many new features to make development easier</A></LI></UL><P><STRONG>AI improves the user experience</STRONG></P><P>At Sapphire, we will be showing some easier ways to find information in your apps, summarize it, and share it with your peers. Please visit the demo stations and expert stations to see the latest released functionality, along with some cool prototypes available to early adopters.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Natural language filtering in SAP Fiori elements apps is one of the AI innovations we will preview at SAP Sapphire 2024." style="width: 624px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102531i82A1654666962DFD/image-size/large?v=v2&amp;px=999" role="button" title="naturallanguagefiltering.png" alt="Natural language filtering in SAP Fiori elements apps is one of the AI innovations we will preview at SAP Sapphire 2024." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Natural language filtering in SAP Fiori elements apps is one of the AI innovations we will preview at SAP Sapphire 2024.</span></span></P><P>&nbsp;</P><P><EM>Natural language filtering in SAP Fiori elements apps is one of the AI innovations we will preview at SAP Sapphire 2024.</EM></P><P><STRONG>AI improves developer productivity</STRONG></P><P>For developers, some tasks require great creativity and technical skill to build an app that meets all the user requirements and ideally is fun to use. Artificial intelligence can perform some of the mundane tasks, freeing developers to focus on understanding the user requirements, creating the business logic, and determining how to deliver an engaging experience. We have new <A href="https://www.sap.com/products/technology-platform/developer-tools.html" target="_blank" rel="noopener noreferrer">AI capabilities in SAP Build Code</A> and <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-tools-2403-introduces-gen-ai-capability-and-more/ba-p/13650594" target="_blank">SAP Fiori tools</A>, including the ability to create an app directly from a business requirements document. One of our co-innovation partners told us this would save them several days at the start of every project. You can hear more about this and more in the sessions I have listed below.</P><P>&nbsp;</P><P><STRONG>Key UX and application development sessions at SAP Sapphire 2024</STRONG></P><P>If you are looking for more topics beyond UX and app dev, you can find them in the <A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US" target="_blank" rel="noopener noreferrer">session catalog</A>.</P><TABLE><TBODY><TR><TD width="174"><P><STRONG>Session # </STRONG></P><P><STRONG>Day / Time</STRONG><STRONG>&nbsp;</STRONG></P></TD><TD width="282"><P><STRONG>Title</STRONG></P><P><STRONG>Abstract </STRONG></P></TD><TD width="168"><P><STRONG>Presenter(s)</STRONG></P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=121857&amp;schid=522107" target="_blank" rel="noopener noreferrer">ASUG pre-conference session</A></P><P>Monday, June 3</P><P>8:00am – 5:00pm</P></TD><TD width="282"><P><STRONG>Unleashing the Power SAP BTP: Maximizing Your SAP Investment Through Innovation and Transformation</STRONG></P><P>Understand how SAP Business Technology Platform (BTP) provides tools and solutions to address critical business and technology areas like integration, data and analytics, low-code/no-code customizations, and AI.</P></TD><TD width="168"><P>Many SAP experts</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=121971&amp;schid=522756" target="_blank" rel="noopener noreferrer">BTP118</A></P><P>Tuesday, June 4</P><P>10:30am – 10:50am</P></TD><TD width="282"><P><STRONG>Discover generative AI code-based development from SAP Build Code</STRONG></P><P>See how AI in SAP Build Code is used to generate app logic, data models, and test scripts. Learn all about SAP Build Code, including how it connects smoothly to enterprise systems</P></TD><TD width="168"><P>Steve Day, SAP</P><P>Dimitri Lerner, Henkel</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=122298&amp;schid=522744" target="_blank" rel="noopener noreferrer">TRE306</A></P><P>Tuesday, June 4</P><P>11:00am – 11:20am</P></TD><TD width="282"><P><STRONG>AI-augmented development and its impact on your IT organization</STRONG></P><P>AI-augmented development aids software engineers in designing, coding, and testing applications. With rising business demands, teams face backlogs and the need for efficiency.</P></TD><TD width="168"><P>Yaad Oren, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=122046&amp;schid=522467" target="_blank" rel="noopener noreferrer">BAI200</A></P><P>Tuesday, June 4</P><P>11:30am – 11:50am</P></TD><TD width="282"><P><STRONG>Achieve real-world results with SAP Business AI solutions</STRONG></P><P>Join SAP leaders to uncover how AI delivers real-world results across your business functions reliably and responsibly. Get an update on SAP's AI strategy and learn how companies that have embraced AI.</P></TD><TD width="168"><P>Philipp Herzig, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=122413&amp;schid=522816" target="_blank" rel="noopener noreferrer">TRE321</A></P><P>Tuesday, June 4</P><P>11:30am – 11:50am</P></TD><TD width="282"><P><STRONG>The new ERP mindset</STRONG></P><P>As changing market dynamics put pressure on traditional businesses, business model innovation becomes imperative. More than ever, businesses need ERP to enable innovation, which involves a change in mindset as much as technology.</P></TD><TD width="168"><P>Maura Hameroff, SAP</P><P>Eric van Rossum, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=121983&amp;schid=522777" target="_blank" rel="noopener noreferrer">BTP131</A></P><P>Tuesday, June 4</P><P>1:00pm – 1:40pm</P></TD><TD width="282"><P><STRONG>The latest in low-code SAP Build solutions</STRONG></P><P>Learn what's new in SAP Build for use in low-code development, including deeper integrations, an improved user experience, and comprehensive AI and generative AI support.</P></TD><TD width="168"><P>Aviad Rivlin, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=121969&amp;schid=522771" target="_blank" rel="noopener noreferrer">BTP116</A></P><P>Tuesday, June 4</P><P>2:00pm – 2:20pm</P></TD><TD width="282"><P><STRONG>Five key low-code techniques for building effective enterprise apps</STRONG></P><P>Find out how to create and deploy enterprise-grade applications with stunning user interfaces, custom data models, and complex business logic – all within IT governance and operational guardrails</P></TD><TD width="168"><P>Eric Solberg, SAP</P><P>Mark Wright, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=122446&amp;schid=522774" target="_blank" rel="noopener noreferrer">BTP201</A></P><P>Tuesday, June 4</P><P>3:30pm – 3:50pm</P></TD><TD width="282"><P><STRONG>Unleashing the power of generative AI for developers with SAP Build</STRONG></P><P>Understand the paradigm shift generative AI brings to developers and its impact on their productivity and pace of delivery. Learn how they can leverage SAP Build solutions.</P></TD><TD width="168"><P>Tim Back, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=122390&amp;schid=522944" target="_blank" rel="noopener noreferrer">ASUG301</A></P><P>Wednesday, June 5</P><P>10:30am – 11:10am</P></TD><TD width="282"><P><STRONG>Building better applications for business users with SAP Fiori</STRONG></P><P>Hear about best practices for using SAPUI5, SAP Fiori elements, SAP Fiori tools, and SAP Business Application Studio to create enterprise-grade apps for your business users. Find out about practical ways to build and deploy apps quickly, leveraging AI. Come prepared to learn and ask your questions.</P></TD><TD width="168"><P>Peter Spielvogel, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=122359&amp;schid=522970" target="_blank" rel="noopener noreferrer">BAI208</A></P><P>Wednesday, June 5</P><P>11:00am – 11:20am</P></TD><TD width="282"><P><STRONG>See Joule in action and empower your business</STRONG></P><P>Discover how Joule, the AI copilot from SAP, helps your business get smarter insights and better outcomes, and assists your people in getting their work done faster.</P></TD><TD width="168"><P>Jana Richter, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=121972&amp;schid=522809" target="_blank" rel="noopener noreferrer">BTP119</A></P><P>Wednesday, June 5</P><P>11:00am – 11:40am</P></TD><TD width="282"><P><STRONG>Application development with SAP Build and SAP Build Code: roadmap review</STRONG></P><P>Find out what's new and what's coming in SAP Build and SAP Build Code solutions for use in fusion development and how they integrate further. Discover upcoming capabilities that improve a builder's efficiency and innovation potential using generative AI across the portfolio.</P></TD><TD width="168"><P>Nicolas Damonte, SAP</P><P>Thomas Volmering, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=122393&amp;schid=522936" target="_blank" rel="noopener noreferrer">ASUG303</A></P><P>Wednesday, June 5</P><P>1:00pm – 1:40pm</P></TD><TD width="282"><P><STRONG>Customer roundtable: migration to SAP S/4HANA and adoption of SAP BTP</STRONG></P><P>Using design thinking principles, walk through SAP S/4HANA migration scenarios, explore clean core methodologies, and learn how to maximize SAP Business Technology Platform (SAP BTP) to avoid latency. Interact with your peers to discuss lessons learned and best practices for migration.</P></TD><TD width="168"><P>Peter Keller, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=121970&amp;schid=522807" target="_blank" rel="noopener noreferrer">BTP117</A></P><P>Wednesday, June 5</P><P>2:00pm – 2:20pm</P></TD><TD width="282"><P><STRONG>Generative AI-based code development from SAP Build Code</STRONG></P><P>The SAP Build Code solution, with generative AI–based code development tools and a Joule copilot, optimized for Java and JavaScript application development, provides a turnkey environment for coding, testing, integrations, and application lifecycle management.</P></TD><TD width="168"><P>Steve Day, SAP</P><P>Sid Misra, SAP</P></TD></TR><TR><TD width="174"><P><A href="https://www.sap.com/events/sapphire/inperson/scheduler/go/agendabuilder.sessions/?l=336&amp;locale=en_US&amp;sid=121982&amp;schid=522796" target="_blank" rel="noopener noreferrer">BTP130</A></P><P>Wednesday, June 5</P><P>2:30pm – 2:50pm</P></TD><TD width="282"><P><STRONG>Application extensibility with SAP Build solutions</STRONG></P><P>Learn how to speed up your innovation potential by leveraging the power of low-code and pro-code. See how you can extend processes and applications with SAP Build solutions.</P></TD><TD width="168"><P>Nicolas Damonte, SAP</P><P>Thomas Volmering, SAP</P></TD></TR></TBODY></TABLE><P>&nbsp;</P><P>See you at Sapphire! If you want to connect and talk about how to improve the UX at your organization, please reach out to me and we can schedule a meeting.</P><P>&nbsp;</P> 2024-04-26T23:47:59.397000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-innobytes-april-2024/ba-p/13682078 SAP BTP Innobytes – April 2024 2024-04-30T08:55:05.525000+02:00 cecilysorenson https://community.sap.com/t5/user/viewprofilepage/user-id/9253 <H6 id="toc-hId-1509776223"><EM>SAP Business Technology Platform brings together application development, automation, data and analytics, integration, and AI capabilities into one unified environment optimized for SAP applications. Learn more: <A href="https://www.sap.com/products/technology-platform.html" target="_blank" rel="noopener noreferrer">sap.com/btp</A></EM></H6><P><FONT color="#000000">Here we are, ready to dive into another top list of SAP BTP Innovations! In this month's SAP BTP Innobytes edition, <SPAN>we're zooming in on three recent innovations designed to tackle common customer hurdles. From reining in cloud service costs to simplifying cloud application development and estimating AI units, SAP BTP is constantly advancing with solutions that are both practical and innovative. </SPAN></FONT></P><P><FONT color="#000000"><SPAN>In other hot news, SAP BTP Innobytes is two years old! To celebrate our anniversary, we are very excited to introduce an all-new design for the video series. Simple, sleek, and as fresh as ever.&nbsp;</SPAN></FONT></P><P><FONT color="#000000"><SPAN>Check out the video and read the details below!</SPAN></FONT></P><P><FONT color="#000000"><SPAN><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FneyHM2Tf3hQ%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DneyHM2Tf3hQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FneyHM2Tf3hQ%2Fhqdefault.jpg&amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;type=text%2Fhtml&amp;schema=youtube" width="200" height="112" scrolling="no" title="SAP BTP Innobytes - What's New in SAP BTP - April 2024" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></SPAN></FONT></P><H3 id="toc-hId-926014561"><FONT color="#008080">SAP BTP Cockpit Innovations</FONT></H3><H4 id="toc-hId-858583775"><FONT color="#FF00FF"><STRONG>Enhancing Costs and Usage</STRONG></FONT></H4><P>Customer Challenge: Controlling cloud service costs, especially when using consumption-based commercial models.</P><P>Innovative Solution: New 'Costs and Usage' overview page in SAP BTP Cockpit.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ScreenShot2.gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103121iEE0416C6FFF6657F/image-size/large?v=v2&amp;px=999" role="button" title="ScreenShot2.gif" alt="ScreenShot2.gif" /></span></P><P>In addition to the new look and feel, the new experience provides a very welcome increase to the <STRONG>transparency and traceability</STRONG> of costs. The billing view allows you to <STRONG>compare the service costs</STRONG> and even drill-down to the costs per subaccount.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ScreenShot5.gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103123i0D64A9290D6F8C71/image-size/large?v=v2&amp;px=999" role="button" title="ScreenShot5.gif" alt="ScreenShot5.gif" /></span></P><P>With dedicated labels, you can also <STRONG>search and filter results</STRONG> to manage internal cross-charging. For convenience, you can then <STRONG>bookmark the filters</STRONG> and queries for future use and <STRONG>easy sharing</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ScreenShot9.gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103127iC0FBC7528C67FA5A/image-size/large?v=v2&amp;px=999" role="button" title="ScreenShot9.gif" alt="ScreenShot9.gif" /></span></P><P>To learn more, check out:</P><UL><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/enhancing-costs-usage-and-contract-transparency/ba-p/13614671" target="_self">Enhancing Costs Usage and Contract Transparency</A></LI></UL><P>Topic Expert:&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/186674">@keren_rotenberg</a>&nbsp;</P><H3 id="toc-hId-532987551"><FONT color="#008080">Application Development Innovations on SAP BTP</FONT></H3><H4 id="toc-hId-465556765"><FONT color="#FF00FF"><STRONG>SAP Build Code Generally Available</STRONG></FONT></H4><P>Customer Challenge: Cloud technologies provide a lot of freedom, but what is the best approach for building cloud extensions and applications?</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BC1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103130i59AF1014B2C90D1B/image-size/large?v=v2&amp;px=999" role="button" title="BC1.png" alt="BC1.png" /></span></P><P>Innovative Solution: SAP Build Code - a turnkey environment based on the <A href="https://help.sap.com/docs/btp/btp-developers-guide/what-is-btp-developers-guide" target="_self" rel="noopener noreferrer">SAP BTP Developers' Guide</A>. SAP Build Code also includes <A href="https://pages.community.sap.com/topics/joule" target="_self" rel="noopener noreferrer">Joule</A>, our generative AI assistant, which will help you easily build your extensions in the cloud, while maintaining a <STRONG>clean core</STRONG>.</P><P>Take a closer look at the SAP Build Code services below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="BC2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103135i1623511D22883CFA/image-size/large?v=v2&amp;px=999" role="button" title="BC2.png" alt="BC2.png" /></span></P><P>If you'd like to see a demo of SAP Build Code, watch the Innobytes video above starting at 1:48.</P><P>To learn more, check out:</P><UL><LI><A href="https://help.sap.com/docs/build_code" target="_self" rel="noopener noreferrer">SAP Build Code Documentation</A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/why-sap-build-code-is-a-game-changer-for-sap-developers/ba-p/13574173" target="_self">Why SAP Build Code is a Game-Changer for SAP Developers</A></LI></UL><P>Topic Expert:&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/9300">@rupamaity</a>&nbsp;</P><H3 id="toc-hId-139960541"><FONT color="#008080">SAP Discovery Center Innovations</FONT></H3><H4 id="toc-hId-72529755"><FONT color="#FF00FF"><STRONG>AI Units Estimator and New Commercial Models</STRONG></FONT></H4><P>Customer Challenge: Calculating and estimating AI units for Generative AI features</P><P>Innovative Solution: SAP AI Units Estimator</P><P>With the introduction of the commercial model AI Units for Generative AI features, customers can now <STRONG>estimate the number of AI Units</STRONG> required for features such as Email Draft Recommender, Job Description Generator, or Lead Booster. This estimator is designed to assist in calculating the <STRONG>monthly or yearly AI Units</STRONG> needed for budgeting or contractual purposes.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AI Unit Estimator.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103166i86DC21CDCECEA0F0/image-size/large?v=v2&amp;px=999" role="button" title="AI Unit Estimator.jpg" alt="AI Unit Estimator.jpg" /></span></P><P>Try it out by adding Email Draft Recommender and Job Description Generator to the <A href="https://discovery-center.cloud.sap/protected/index.html#/ai-estimator" target="_self" rel="nofollow noopener noreferrer">AI estimator</A>. The advanced input will guide you through a series of questions to determine the appropriate number of AI Units. Once completed, you can <STRONG>easily share your estimate</STRONG> with colleagues or customers.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AI Units Estimator - Advanced Input.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103167iFB3F90A877A19054/image-size/large?v=v2&amp;px=999" role="button" title="AI Units Estimator - Advanced Input.jpg" alt="AI Units Estimator - Advanced Input.jpg" /></span></P><P>In addition to the AI Units commercial model, you will also find the SAP BTP Enterprise Agreement (SAP BTPEA) commercial model. For a comprehensive overview of all the available services within SAP BTPEA, go to the SAP Discovery Center Service Catalog and select the SAP BTPEA commercial model.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Commercial Model BTPEA - Services Overview.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103169i014B511901B1EF39/image-size/large?v=v2&amp;px=999" role="button" title="Commercial Model BTPEA - Services Overview.png" alt="Commercial Model BTPEA - Services Overview.png" /></span></P><P>To learn more, check out:</P><UL><LI><A href="https://discovery-center.cloud.sap/protected/index.html#/ai-estimator" target="_self" rel="nofollow noopener noreferrer">AI Estimator</A></LI><LI><A href="https://discovery-center.cloud.sap/viewServices?commercialModel=btpea" target="_self" rel="nofollow noopener noreferrer">SAP Discovery Center Service Catalog - SAP BTPEA service list</A></LI><LI><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/what-is-consumption-based-commercial-model" target="_self" rel="noopener noreferrer">What is a consumption-based commercial model?</A></LI></UL><P>Topic Expert:&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/4159">@Neuert</a>&nbsp;(AI Estimator) and&nbsp;@Former Member</a>&nbsp;(SAP BTPEA)</P><H4 id="toc-hId--123983750"><FONT color="#008080">Share Your Thoughts</FONT></H4><P>We would love to hear what you think about the series. How do you like the video? Are there any SAP BTP topics that you’d like us to share more about? Leave your comments down below and we’re happy to connect with you.</P><P>Thank you for your support and happy viewing, sharing, and enjoying!</P><P>If you like SAP BTP Innobytes, you may also be interested in:</P><UL><LI><A href="https://blogs.sap.com/2024/01/09/sap-btp-ask-me-anything-about-enterprise-automation/" target="_self" rel="noopener noreferrer">SAP BTP Ask Me Anything</A>: monthly LIVE Q&amp;A series with hot topics and product experts</LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-garage-premier-use-cases-and-immersive-demos/ba-p/13575247" target="_self">SAP BTP Garage</A>:&nbsp;monthly LIVE webinar with hands-on use case walkthroughs and demos</LI><LI><A href="https://podcast.opensap.info/cloud-platform/" target="_self" rel="nofollow noopener noreferrer">SAP BTP Talk Podcast</A>: monthly podcast covering all things SAP BTP</LI><LI><A href="https://blogs.sap.com/2024/01/03/whats-new-with-sap-btp-quarterly-live-series/" target="_self" rel="noopener noreferrer">What's New with SAP BTP</A>: quarterly LIVE series for SAP BTP innovation highlights, with demos and time for Q&amp;A</LI></UL> 2024-04-30T08:55:05.525000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/consuming-sap-with-sap-build-apps-web-app-in-sap-build-work-zone-standard/ba-p/13685621 Consuming SAP with SAP Build Apps - Web App in SAP Build Work Zone, standard edition 2024-05-02T03:19:46.516000+02:00 LudoNoens https://community.sap.com/t5/user/viewprofilepage/user-id/15040 <P>This blog post is the fourth in a series of posts that cover the connectivity options available for SAP Build Apps to interface with SAP systems. The series will cover connecting SAP Build Apps with the following:</P><OL><LI>CAP-based services</LI><LI>S/4HANA systems</LI><LI>ABAP systems</LI></OL><P>The format of this post is similar to a tutorial. However, I'll provide more comprehensive details, tips and the opportunity for you to provide feedback. Based on the feedback we will be able to adjust and enhance this post and future parts of the series, and might even be able to improve the products involved as well.&nbsp;<BR /><BR /></P><H1 id="toc-hId-864457605">Introduction </H1><P>Before we get into the details of setting up connections between SAP Build Apps and SAP Systems, I intend to introduce a couple of SAP technology components in each post that are relevant for the use cases covered in the series.&nbsp;<BR /><BR /></P><H2 id="toc-hId-797026819">SAP Build Work Zone</H2><P>SAP Build Work Zone is a digital workplace experience that enables users to build and customise business sites that provide centralised access to business application information from any device.</P><P>Key capabilities are:</P><UL><LI>Quickly create corporate websites providing secure and central access for apps, tasks, notifications, information and communication.</LI><LI>Easily connect with SAP and third-party enterprise applications.</LI><LI>Provide a personalised and role-based user experience.</LI><LI>Provide an extensible framework for development, customisation and branding.</LI></UL><P>The service is currently available in 2 editions:</P><OL><LI>Standard edition - this is basically the same as what we previously called the SAP Launchpad service. This is the edition we will use in this blog post. It has a strong focus on integration of business applications.</LI><LI>Advanced edition - this is what we previously referred to as the SAP Work Zone service. It includes additional capabilities on top of what is available in the standard edition. The information in this blog post can be applied in this edition as well. You typically subscribe to only one edition. The advanced edition adds capabilities around workspaces, knowledge management and user engagement.</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_2-1714381872196.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103095i21AEB1EAB4759B98/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1714381872196.png" alt="LudoNoens_2-1714381872196.png" /></span></P><H2 id="toc-hId-600513314">MTAR</H2><P>A multitarget application (MTA) is comprised of multiple parts (also referred to as "modules"), created with different technologies and deployed to different targets, but with a single, common lifecycle.</P><P>A multitarget application archive (MTAR) is an archive that contains a deployment descriptor, configuration files, and module and resource binaries. The archive follows the JAR file specification. A JAR file is essentially a zip file that contains an optional META-INF directory.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_0-1714474595732.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103853i0DE6AB7E0317A327/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1714474595732.png" alt="LudoNoens_0-1714474595732.png" /></span></P><P>An example relevant for the use cases in this blog series is an MTAR created in SAP Build Code that contains the Destination, a node.js based CAP service, and a HANA database deployment application for setting up the persistency layer. All are deployed during a single deployment action, for a specific version of the archive.</P><P>&nbsp;</P><H1 id="toc-hId-274917090">Use case D : Consume the CAP service with a web app provided in SAP Build Work Zone</H1><P>For this use case, we will make use of the previously created basic CAP service in <FONT color="#FF00FF"><STRONG>SAP Build Code</STRONG></FONT>. In the previous blog post, we have created dedicated mobile apps for the iOS and Android platforms to consume this service with SAP Build Apps. We will now use the exact same UI application to build and deploy a web application to SAP Business Technology Platform. After that, we will configure SAP Build Work Zone&nbsp;to provide access to the application.<BR /><BR /></P><H2 id="toc-hId-207486304">Solution diagram</H2><P>Like in the <A title="Consuming SAP with SAP Build Apps - Mobile apps for iOS and Android" href="https://community.sap.com/t5/technology-blogs-by-sap/consuming-sap-with-sap-build-apps-mobile-apps-for-ios-and-android/ba-p/13667638" target="_blank">previous blog post</A>, we will start with a quick look into what needs to change in our solution overview to accommodate for web apps. Building upon the solution diagram created earlier, we now add <STRONG>SAP Build Work Zone, standard edition</STRONG>. The design time environment of SAP Build Apps will deploy the web application to the HTML5 Application Repository service. The application is made available to end users through <STRONG>SAP Build Work Zone</STRONG>, which is configured separately.&nbsp;End users can access the web app from any device. The web app authenticates with the Identity Authentication service (IAS) and accesses data via a <STRONG>Destination</STRONG>. Only users who have the correct Roles assigned will be able to access the data provided in the CAP-based data service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_1-1714476179455.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103874iEF07E53A324296B8/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_1-1714476179455.png" alt="LudoNoens_1-1714476179455.png" /></span></P><H2 id="toc-hId-10972799">Building the web app in SAP Build Apps</H2><P>As the application we have developed so far is actually a cross-platform app, we don't need to change anything in the app itself. We simply need to build it for a different runtime. And for this, we will again make use of the cloud build service we have utilised in the previous blog post.</P><P>Starting in SAP Build Apps, navigate to the Launch tab and select Open build service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103580i19176D7F9385B107/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic.png" alt="Pasted Graphic.png" /></span></P><P>Next, select CONFIGURE for the Web App.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Web App.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103584iE2F9C931B67C7FBA/image-size/small?v=v2&amp;px=200" role="button" title="Web App.png" alt="Web App.png" /></span></P><P>For the Bundle Settings, select MTAR and click NEXT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103634i5FBF73F69CF1D2DA/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 3.png" alt="Pasted Graphic 3.png" /></span></P><P>In the Image Assets tab, upload a 32 x 32 pixel icon image (PNG file) for the Favicon and click NEXT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103638i59CBC4BBC5F887C4/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 4.png" alt="Pasted Graphic 4.png" /></span></P><P>On the Plugins tab, you can add React Native plugins for your app. For our app you can see a few plugins have been selected by default, based on the functionality we have already added in the app. We can use the default selection in this case and click NEXT.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103641iD7E728FB352D167C/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 5.png" alt="Pasted Graphic 5.png" /></span></P><P>Now that we have completed configuring the web app build settings, select BUILD.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt=" BUILD.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103642iA535FA5A8D22815A/image-size/medium?v=v2&amp;px=400" role="button" title=" BUILD.png" alt=" BUILD.png" /></span></P><P>Select MTAR and the Client runtime version. Provide a version number for your application. Select BUILD.</P><P>Once the build is done, you will be able to download the MTAR file, or simply deploy the MTAR.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Web App.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103643i739B71256A25955C/image-size/medium?v=v2&amp;px=400" role="button" title="Web App.png" alt="Web App.png" /></span></P><P>Select DEPLOY MTA.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103644i22158E77B633DB6C/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 1.png" alt="Pasted Graphic 1.png" /></span></P><P>Select the Cloud Foundry API endpoint of your target subaccount. In our case, we will use the same subaccount as the one we have set up in the first blog post of this series. </P><P>Log in to Cloud Foundry and to get authorization to perform deployment to SAP Business Technology Platform.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103645i16C4AC1C9E878506/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 2.png" alt="Pasted Graphic 2.png" /></span></P><P>Once you've selected your target Cloud Foundry organisation and space, select DEPLOY MTA TO &lt;your space name&gt;&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_0-1714460808947.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103649i08132689A0B2A200/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1714460808947.png" alt="LudoNoens_0-1714460808947.png" /></span></P><P>The deployment process will start and your web application will be deployed to the HTML5 Application Repository Service. You can track the progress in the logs.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_1-1714461015698.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103651i0BF76CF8E94D05FC/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_1-1714461015698.png" alt="LudoNoens_1-1714461015698.png" /></span></P><P>Once the deployment finishes, the URL to your application will be shown.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_2-1714461129985.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103654iB4BE9F8A77AF317C/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_2-1714461129985.png" alt="LudoNoens_2-1714461129985.png" /></span></P><P>When you try to open the URL, you are quite likely greeted with the message "Internal Server Error". Looking into details in your browser's developer tools, you can find a response code 500. This indicates something has not been set up correctly (yet). Not to worry ... we'll fix this in the following steps.</P><P>If your subaccount was correctly configured, then you should actually see the web app.</P><P>&nbsp;</P><H2 id="toc-hId--185540706">Provide access to the web app in SAP Build Work Zone</H2><P>We are now going configure SAP Build Work Zone. There are multiple ways to access this. In the context of SAP Build, we can start from the SAP Build landing page. On the landing page, select the Create button.</P><P>What would you like to do ? Well, we'd like to Build a Business Site !</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_3-1714461673821.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103658i4E87518B850778E3/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_3-1714461673821.png" alt="LudoNoens_3-1714461673821.png" /></span></P><P>Select Configure Site in Admin Console.</P><P>Note that in the screenshot below the tile "Manage Workspages and Workspaces" is marked as 'Not Subscribed'. This is because I am using the standard edition of SAP Build Work Zone, which was subscribed through the "Get started with SAP Build Apps" booster. If you have a subscription to the Advanced Edition, then this tile can be selected as well.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Which site would you like to configure.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103659iAA9CFECDBBED8631/image-size/large?v=v2&amp;px=999" role="button" title="Which site would you like to configure.png" alt="Which site would you like to configure.png" /></span></P><P>Alternatively, if you are not using SAP Build, you can configure SAP Build Work Zone by opening the link in your subaccount's cockpit.</P><P>As prerequisite, please check whether your user has the Role <STRONG>Launchpad_Admin</STRONG> assigned.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Description.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103670i65BEDB5F9A45006A/image-size/large?v=v2&amp;px=999" role="button" title="Description.png" alt="Description.png" /></span></P><P>Once configured (and you might need to log out &amp; log in to activate that Role), navigate to the subscriptions and open the link to SAP Build Work Zone, standard edition.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Subscriptions (7).png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103671i05C5DBDB69CA3C88/image-size/medium?v=v2&amp;px=400" role="button" title="Subscriptions (7).png" alt="Subscriptions (7).png" /></span></P><H3 id="toc-hId--252971492">SAP Build Work Zone configuration</H3><P>Now, let's set up a business site that includes our app. Select Create Site.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 10.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103672i02B982B111FA52B4/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 10.png" alt="Pasted Graphic 10.png" /></span></P><P>Provide a name for the Site and click Create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Create Site.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103673i5070E08D3640CBFE/image-size/medium?v=v2&amp;px=400" role="button" title="Create Site.png" alt="Create Site.png" /></span></P><P>Navigate to the Content Manager tab and select the Content Explorer button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 12.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103675iF7564FBAF7401889/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 12.png" alt="Pasted Graphic 12.png" /></span></P><P>The Content Explorer will open.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 13.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103676iC005422078CB092D/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 13.png" alt="Pasted Graphic 13.png" /></span></P><P>Click on HTML5 Apps to see which apps have been deployed to the HTML5 Application Repository. You will see the app we've created in SAP Builds Apps. Besides that, you will also notice the Launchpad for the products service we've deployed from SAP Build Code.&nbsp;Select the app created and deployed with SAP Build Apps and click the Add button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 15.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103679iCCEC71C2888AEEAA/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 15.png" alt="Pasted Graphic 15.png" /></span></P><P>Going back to the Content Manager, select the Create button and create a new group. Give the group a name and assign the previously added app to the group.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 16.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103680i78BBD36001D1AC2C/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 16.png" alt="Pasted Graphic 16.png" /></span></P><P>Go back to the Content Manager and select the Everyone Role. Enable the previously selected app to be accessible for everyone. Note that this will give users access to the web app itself. Access to the data service is still limited to those having the Role we have configured in the second blog post of this series.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 17.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103681i95C72FA87AD0FCBD/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 17.png" alt="Pasted Graphic 17.png" /></span></P><H3 id="toc-hId--449484997">&nbsp;</H3><H3 id="toc-hId--645998502">Resolving the "Internal Server Error"</H3><P>And now for the previously mentioned 500 response code, resulting in "Internal Server Error". This happens when the authentication mechanism for SAP Build Work Zone and SAP Cloud Portal service uses XSUAA, while your subaccount is actually configured to use a custom IdP (IAS). To switch to Identity Authentication, navigate to the Settings, select the Identity Authentication tab and click Enable (please read the notes before doing this, and confirm that you've completed the required trust configuration).&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pasted Graphic 18.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103682iE407128ADE91B264/image-size/large?v=v2&amp;px=999" role="button" title="Pasted Graphic 18.png" alt="Pasted Graphic 18.png" /></span></P><P> </P><H2 id="toc-hId--624340369">Accessing the web app in SAP Build Work Zone</H2><P>The link to the site can be found on the Site Directory.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_4-1714466297804.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103703iB33EBA4DF4A656A8/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_4-1714466297804.png" alt="LudoNoens_4-1714466297804.png" /></span></P><P>Depending on how you've configured your site in SAP Build Work Zone, it might look a bit different. But you should have the tile of your app visible on your site.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_5-1714466445212.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103705i4A01EE2CA9E47334/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_5-1714466445212.png" alt="LudoNoens_5-1714466445212.png" /></span></P><P>Clicking on the tile will open our web app. Notice the SAP BTP authentication happening before opening the app. Also note that you can open the URL on any device; on mobile as well as desktop devices.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2024-04-30_16-59-11 (4).gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103730iD744402C3B843F55/image-size/large?v=v2&amp;px=999" role="button" title="2024-04-30_16-59-11 (4).gif" alt="2024-04-30_16-59-11 (4).gif" /></span></P><P>In case you are wondering where the icon ended up: check your web browser's tab.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_3-1714476614589.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103878iA53B5CCEE81B1F5D/image-size/medium?v=v2&amp;px=400" role="button" title="LudoNoens_3-1714476614589.png" alt="LudoNoens_3-1714476614589.png" /></span><BR />Alternatively, you can also open the URL provided in SAP Build Apps, or find a link to your app in your subaccount, under the tab HTML5 Applications.&nbsp;<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="LudoNoens_0-1714557961791.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/104351i4B9F402C0A4143CA/image-size/large?v=v2&amp;px=999" role="button" title="LudoNoens_0-1714557961791.png" alt="LudoNoens_0-1714557961791.png" /></span></P><H2 id="toc-hId--820853874">Summary – use case D</H2><P>In this use case we have built and deployed our cross-platform app as a web app to SAP BTP. Building and deploying the app in the cloud is easy, as you don't need to install any tools on your local development machine.</P><P>SAP Build Apps deploys the application to the HTML5 Application Repository service. Using the web app, end users authenticate with IAS. Only users who have the correct Role assigned will be able to access the data provided in the CAP-based data service, which we can access through the BTP Destination.</P><P>Access to the app requires configuration of the Identity Authentication in the subaccount.</P><P>We have set up a simple business site in SAP Build Work Zone, to provide end-users easy access to the app.</P><P>And again, all the above was done without writing a single line of code.<BR /><BR /></P><H1 id="toc-hId--723964372">What's next</H1><P>In the next blog post, we will continue on the connectivity topic and connect to an S/4HANA system.</P> 2024-05-02T03:19:46.516000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/devops-with-sap-btp/ba-p/13686887 DevOps with SAP BTP 2024-05-06T14:26:48.640000+02:00 BorisZarske https://community.sap.com/t5/user/viewprofilepage/user-id/87 <P>As <A title="Efficient DevOps with SAP BTP" href="https://community.sap.com/t5/technology-blogs-by-sap/efficient-devops-with-sap-btp/ba-p/13455958" target="_blank">my initial blog post series</A> around DevOps with SAP BTP is already some years old, I thought it would be about time to come up with a new article - to reflect latest changes about how you can enable your teams to benefit from it for developing and running their apps on the platform.</P><P><SPAN>DevOps is a key enabler for achieving high-level agility and quality in development projects – also in SAP enterprise environments. If you should be new to DevOps, the&nbsp;</SPAN><SPAN><A href="https://community.sap.com/topics/devops" target="_blank">DevOps | SAP Community</A></SPAN><SPAN>&nbsp;topic page does offer a lot of information.</SPAN></P><P><SPAN>Although DevOps is mainly a cultural approach, tools can help to foster agile development principles along the lifecycle of applications. In this article, I will sketch the setup recommended by SAP for agile development projects on SAP BTP, using corresponding SAP BTP cloud services and offerings. The platform does offer several different development approaches and runtime environments, so details of this setup might slightly differ per use case, but the goal is to offer a similar concept fitting for the most important ones.</SPAN></P><P><SPAN>The following figure outlines the recommended approach on the example of SAP BTP, Cloud Foundry environment:</SPAN></P><H2 id="toc-hId-993572229"><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Recommended approach to apply DevOps on SAP BTP" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/104012i5AFD8F463590CC0B/image-size/large?v=v2&amp;px=999" role="button" title="RecommendedApproachDevOpsSAPBTP.png" alt="Recommended approach to apply DevOps on SAP BTP" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Recommended approach to apply DevOps on SAP BTP</span></span></SPAN></H2><P>&nbsp;</P><P>As most of the depicted SAP BTP cloud services are also part of <A title="SAP Build Code" href="https://www.sap.com/products/technology-platform/developer-tools.html" target="_blank" rel="noopener noreferrer">SAP Build Code</A>, this does also reflect the recommended approach around this offering.</P><P>Let's go through those four phases in the remainder of this article.<BR /><BR /></P><H2 id="toc-hId-797058724"><SPAN>1. Set Up Continuous Integration</SPAN></H2><P><SPAN>One driver of the agility and built-in quality that DevOps brings is the automation of large parts of the deployment pipeline. For this, a Continuous Integration / Continuous Delivery (CI/CD) pipeline is involved that automatically gets executed whenever your development teams do submit changes to their source code management system, to qualify them. The pipeline automatically performs certain actions along different stages, such as to build your changes and to test them on different levels. With this, it provides feedback to the developer on the quality of his/her changes:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Using Continuous Integration and Delivery to automate large parts of the deployment process" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103685iD124D2B73D47A28F/image-size/large?v=v2&amp;px=999" role="button" title="CICDpipeline.png" alt="Using Continuous Integration and Delivery to automate large parts of the deployment process" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Using Continuous Integration and Delivery to automate large parts of the deployment process</span></span></SPAN></P><P><SPAN>So, the first challenge is to set up CI/CD for your SAP BTP development use cases. Here, SAP BTP does offer a two-fold approach:</SPAN></P><UL><LI>Option 1:<STRONG><SPAN>&nbsp;</SPAN>Pipeline as a Service</STRONG><SPAN>&nbsp;</SPAN>with<SPAN>&nbsp;</SPAN><A href="https://help.sap.com/docs/CONTINUOUS_DELIVERY" target="_blank" rel="noopener noreferrer">SAP Continuous Integration and Delivery</A><UL><LI>Opinionated, highly integrated setup that allows to benefit from agile methods without having to bring expertise</LI><LI>Brings pipeline templates for typical SAP BTP development use cases, such as to develop a side-by-side extension using Cloud Application Programming model (CAP) or a compelling UI using SAP Fiori on Neo/Cloud Foundry/ABAP Front-End Servers; with this, it allows to come up with a running build, test and deploy pipeline for those SAP BTP specific use cases in minutes – where the pipeline can be configured completely via UI (configuration as code is optionally also possible)</LI><LI>No need to build up and especially operate an own CI/CD infrastructure – only prerequisite: bring your own Git as source code management system</LI><LI>SAP product, with direct support from SAP</LI><LI>With this, addressing also those partners and customers that do not bring experience or that are looking for a CI/CD setup recommended and provided by SAP, reducing the overhead and cognitive load of their developers</LI></UL></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Easy process to set up pipeline in SAP Continuous Integration and Delivery service" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103686i689D717ACDF3C6AA/image-size/large?v=v2&amp;px=999" role="button" title="CI+Dflow.png" alt="Easy process to set up pipeline in SAP Continuous Integration and Delivery service" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Easy process to set up pipeline in SAP Continuous Integration and Delivery service</span></span></P><UL><LI>Option 2:<STRONG>&nbsp;Toolbox</STRONG>&nbsp;with open source offering&nbsp;<A href="https://www.project-piper.io/" target="_blank" rel="noopener nofollow noreferrer">project ‘Piper’</A><UL><LI>Building blocks that allow you to build an own pipeline for SAP-specific use cases easier: pipeline templates (for Jenkins only), a library of pipeline steps (in Golang, which allows you to use them also for non-Jenkins CI/CD infrastructures), scenarios (end-to-end descriptions with sample code snippets), and Docker images you can easily add to your pipeline (<A href="https://blogs.sap.com/2019/10/24/how-to-use-project-piper-docker-images-for-cicd-with-azure-devops/" target="_blank" rel="noopener noreferrer">example for usage with Azure DevOps</A>)</LI><LI>As it is an open source offering, there is no direct support provided by SAP – only community support, you have to create and then own your pipeline</LI><LI>With this, the offering is addressing those partners and customers that need full flexibility and already bring expertise or infrastructure (or are willing to build it up and operate it) and now want to know how to best expand it also for SAP-specific use cases<BR /><BR /></LI></UL></LI></UL><H2 id="toc-hId-600545219">2. Develop</H2><P>This CI pipeline is then used by your development teams to qualify their changes – here, changes get pushed to a central source code repository based on Git, which then can automatically triggers a run of the corresponding pipeline via webhook. This pipeline run performs a build and executes automated test cases. The developer then gets informed about issues with the performed changes and can react on those directly. Also, compliance checks, such as for security flaws with used third-party libraries, can be tested as part of the pipeline run.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Example of agile development process" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103696i3B0E8EA376BEEC44/image-size/large?v=v2&amp;px=999" role="button" title="DevProcess.png" alt="Example of agile development process" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Example of agile development process</span></span></P><P><SPAN>Of course, there are many frameworks available for automated testing – SAP Continuous Integration and Delivery service does provide an opinionated proposal for corresponding frameworks, which then have to be set up accordingly. If you want to use alternative frameworks, SAP Continuous Integration and Delivery allows to extend the predefined pipelines with scripting (for more information, see </SPAN><A title="Extensible Pipelines for SAP Continuous Integration and Delivery" href="https://community.sap.com/t5/technology-blogs-by-sap/extensible-pipelines-for-sap-continuous-integration-and-delivery/ba-p/13564893" target="_blank">this blog post</A><SPAN>).</SPAN></P><P>For the creation of the actual test cases, a step-wise approach is recommended, where you start with first test cases and then evolve by time, by adding additional cases, also based on the issues that come up later and on the latest compliance requirements you might face.</P><P>As implied above, the actual development process will slightly differ per development environment. For example, on Cloud Foundry, you might use SAP Business Application Studio (where you would benefit from a direct integration of SAP Continuous Integration and Delivery, allowing to set up and monitor corresponding pipelines directly from the IDE), on Neo SAP Web IDE Full-Stack and on SAP BTP ABAP development tools in Eclipse. Still, the general approach for these environments could be similar, as depicted above.<BR /><BR /></P><H2 id="toc-hId-404031714">3. Deliver</H2><P>When your teams come up with a qualified release candidate, they can either perform a direct deployment out of the pipeline (when all tests are “green”, a direct deployment can be triggered) – or you benefit from a standardized central transport and change management approach, using<SPAN>&nbsp;</SPAN><A href="https://help.sap.com/docs/cloud-transport-management" target="_blank" rel="noopener noreferrer">SAP Cloud Transport Management</A>. The later is our recommended approach for most enterprise environments, where you normally want to have additional control of your production subaccounts.</P><P>The actual transport concept is quite similar to what you might be used to from development in on-premise and private cloud environments, with a centrally defined delivery landscape:</P><UL><LI>With the option to control who is allowed to handle changes where (that is, on which SAP BTP subaccount),</LI><LI>With a central log file for auditing,</LI><LI>With the option to synchronize the propagation of changes from different environments (such as from private cloud/on-premise together with related cloud changes), where change and deployment management capabilities of SAP Cloud ALM or Change Request Management (ChaRM) of SAP Solution Manager could orchestrate SAP Cloud Transport Management service, in addition to orchestrating then also private cloud/on-premise transport mechanisms.</LI></UL><P>Still, here with the option to combine it on SAP BTP with CI principles, so that your development teams can benefit from tight feedback loops enabled by an automated pipeline, to verify single developer changes - while you still have full control for the propagation of those changes towards your production environment, with the automated hand-over from the pipeline into a controlled, centrally managed and pre-defined delivery landscape. Then to verify the release candidate, potentially consisting of changes from different environments and typically done with a manual confirmation.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Hybrid change management" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103702iACE722EED4B2B795/image-size/large?v=v2&amp;px=999" role="button" title="HybridDelivery.png" alt="Hybrid change management" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Hybrid change management</span></span></P><P><SPAN>SAP Cloud Transport Management service can cover more and more content types, such as:</SPAN></P><UL><LI>SAP Fiori content (in Neo and Cloud Foundry)</LI><LI>CAP applications (in the form of MTA archives),</LI><LI>Objects from SAP BTP ABAP environment,</LI><LI>Content from SAP Build (SAP Build Process Automation, SAP Build Work Zone, …),</LI><LI>App-specific content types, such as iFlows from SAP Integration Suite and Network Package content from SAP Analytics Cloud</LI><LI>See the full list <A title="Overview: Supported Content" href="https://help.sap.com/docs/cloud-transport-management/sap-cloud-transport-management/supported-content-types#loio0dccbb6ee1714240b9b9bedc1a240a7e" target="_blank" rel="noopener noreferrer">here</A></LI></UL><P>With this, you can establish a standardized transport management process for more and more development use cases around SAP BTP - with the option to integrate all those content types into your central change and delivery management process, such as provided by SAP Cloud ALM.</P><P>SAP Cloud Transport Management service is out-of-the-box integrated with SAP Continuous Integration and Delivery - just switch on the corresponding option of the<SPAN>&nbsp;</SPAN><EM>Release</EM><SPAN>&nbsp;</SPAN>stage:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot from 'Release' stage of SAP Continuous Integration and Delivery" style="width: 538px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103704iF4EF8F6E13A46D04/image-size/large?v=v2&amp;px=999" role="button" title="CIDintegrationcTMS.png" alt="Screenshot from 'Release' stage of SAP Continuous Integration and Delivery" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Screenshot from 'Release' stage of SAP Continuous Integration and Delivery</span></span></P><P><SPAN>It can also be integrated into other CI stacks via a step of the library from project Piper into third-party pipelines or </SPAN><A title="SAP Business Accelerator Hub" href="https://api.sap.com/package/TmsForCloudPub/rest" target="_blank" rel="noopener noreferrer">open APIs</A><SPAN> (for example, see&nbsp;</SPAN><A title="Integrate a CI/CD Pipeline on Azure DevOps with DevOps-Related Services from SAP BTP, Cloud Foundry" href="https://community.sap.com/t5/technology-blogs-by-sap/integrate-a-ci-cd-pipeline-on-azure-devops-with-devops-related-services/ba-p/13528858" target="_blank">this blog post on using Azure DevOps with transports</A><SPAN>).</SPAN></P><P><SPAN>&nbsp;</SPAN></P><H2 id="toc-hId-207518209"><SPAN>4. Operate</SPAN></H2><P>With SAP Cloud ALM, SAP is providing a central observability platform for all SAP products, including SAP BTP (in interplay with several local SAP-BTP-specific observability capabilities). To operate your apps on SAP BTP, you can therefore use its unified monitoring, alerting and analytics offering based on telemetry data exposed by SAP BTP (and other SAP solutions), to reduce the meantime to detect any issues. SAP is using OpenTelemetry as unified and open instrumentation approach for SAP BTP use cases, allowing you for example to instrument your custom apps for central observability.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Functional overview of SAP Cloud ALM for Operations" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103725iEF0B7688D8600D2E/image-size/large?v=v2&amp;px=999" role="button" title="SAP Cloud ALM for Operations.png" alt="Functional overview of SAP Cloud ALM for Operations" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Functional overview of SAP Cloud ALM for Operations</span></span></P><P><SPAN>For more information, see </SPAN><A title="SAP Cloud ALM for Operations" href="https://support.sap.com/en/alm/sap-cloud-alm/operations.html" target="_blank" rel="noopener noreferrer">SAP Cloud ALM for Operations</A><SPAN>.</SPAN></P><P><SPAN>To resolve issues, you can then navigate from SAP Cloud ALM to the local expert tools on SAP BTP, to perform a use-case-specific root cause analysis.&nbsp;</SPAN><SPAN>For example, f</SPAN><SPAN>rom an error message in <EM>Exception Monitoring</EM> of SAP Cloud ALM, you could directly jump to <A title="SAP Cloud Logging service" href="https://help.sap.com/docs/cloud-logging" target="_blank" rel="noopener noreferrer">SAP Cloud Logging service</A> to perform a detailed analysis, for which the service stores and visualizes log files, metrics, and traces from your apps running in different SAP BTP environments.</SPAN></P><P><SPAN>For the execution of corrective actions on SAP BTP, events in SAP Cloud ALM could automatically trigger the execution of corresponding commands on SAP Automation Pilot. This service offers a low-code and no-code automation engine and brings catalogs of automated actions that you can use to compile the best-fitting command for automating your recurring DevOps-related tasks and for remediation of alerts from your individual SAP BTP applications.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Automate recurring ops tasks with SAP Automation Pilot" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/103875i90ADE7D1425C86D5/image-size/large?v=v2&amp;px=999" role="button" title="AutoPi.png" alt="Automate recurring ops tasks with SAP Automation Pilot" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Automate recurring ops tasks with SAP Automation Pilot</span></span></SPAN></P><P><SPAN>This way, you can optimize your operation efforts and increase the resilience of your business scenarios.<BR /></SPAN></P><P>&nbsp;</P><H2 id="toc-hId-11004704">Summary</H2><P>SAP BTP offers a low-entry approach to verify the value a more agile development process can bring - also for your SAP applications. It does comprise highly-integrated DevOps services along the complete lifecycle - from CI/CD to development, delivery and operations, with a smooth integration option into SAP Cloud ALM, as SAP's strategic operations and central observability platform. SAP Cloud ALM allows the central operation of your holistic business scenarios spanning several environments. If<SPAN>&nbsp;you should have special needs or third-party frameworks already in use around DevOps, benefit from open APIs of the DevOps services of SAP BTP and of SAP Cloud ALM.</SPAN></P><P>If you want to learn more, check out the information from <SPAN>the&nbsp;</SPAN><SPAN><A href="https://community.sap.com/topics/devops" target="_blank">DevOps | SAP Community</A></SPAN><SPAN>&nbsp;topic page and</SPAN> consider to take the learning journey&nbsp;<A title="Discovering DevOps with SAP BTP learning journey" href="https://learning.sap.com/learning-journey/discovering-devops-with-sap-btp" target="_blank" rel="noopener noreferrer">Discovering DevOps with SAP BTP</A><SPAN>.&nbsp;If you want to try it out, all DevOps services are part of SAP BTP free tier, so the above setup can be experienced without charge. Otherwise, SAP Build Code is a good starting point as well, as it does comprise most of the DevOps-related SAP BTP services.</SPAN></P> 2024-05-06T14:26:48.640000+02:00 https://community.sap.com/t5/technology-blogs-by-members/build-apps-integration-with-on-premise-systems/ba-p/13700810 Build Apps Integration with On-premise systems 2024-05-16T09:39:15.391000+02:00 SijinMathewGeorge https://community.sap.com/t5/user/viewprofilepage/user-id/870952 <P>The data plays a critical role in the functionality of the app.</P><P>Data can be integrated to the Build Apps in the following ways:</P><OL><LI>Creating Dummy Entities with dummy data or on device storage data.</LI><LI>Creating Entities with the global REST APIs.</LI><LI>Integrating Build Apps with on-premise and fetching the on-premise entities.</LI></OL><P>We would focus on the most realistic option that is fetching the real-time system data and integration of Build Apps with the OData services created on the on-premise systems.</P><P><STRONG>Design: </STRONG></P><P>We would like to display a simple example where the App would list of products with their respective image, description and MRP maintained in SAP.</P><P>The backend OData service would contain an entity ProductsSet that would contain properties of a material like Image, description and MRP.</P><P><STRONG>Integration:</STRONG></P><P>Till now, it has been widely accepted that Build Apps can be accessed from SAP BTP Account. BTP Account must have a cloud connector which would configure the systems connected to the cloud.</P><P>In the subaccount, under connectivity, Destinations are configured.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.jpg" style="width: 181px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110187iA352FFB3E0F9B961/image-size/medium?v=v2&amp;px=400" role="button" title="1.jpg" alt="1.jpg" /></span></P><P>&nbsp;</P><P>The entire OData URL has been configured as shown below under destination BuildDestination.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110188iD50FAD3BEDBAF12E/image-size/medium?v=v2&amp;px=400" role="button" title="2.jpg" alt="2.jpg" /></span></P><P>Once the destination is configured, we can navigate to the SAP Build Apps.</P><P>Under the Auth section, enable the Authentication.</P><P>Open Auth (Authentication) → Enable Authentication.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="3.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110191i187B6DCB787E20C8/image-size/medium?v=v2&amp;px=400" role="button" title="3.jpg" alt="3.jpg" /></span></P><P>There are three types of Authentication Method in Build Apps.</P><UL><LI>Google Firebase.</LI><LI>SAP BTP Authentication</LI><LI>Direct Third Party Authentication</LI></UL><P>We would go for SAP BTP Authentication.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="4.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110194i5EC69B6B9DA4A4B6/image-size/medium?v=v2&amp;px=400" role="button" title="4.jpg" alt="4.jpg" /></span></P><P>As we need to select the data from the backend, Under the Data tab, select add Integration.</P><P>Select Data → Add Integration.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="5.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110214iB23A4C7BBD54D970/image-size/medium?v=v2&amp;px=400" role="button" title="5.jpg" alt="5.jpg" /></span></P><P>&nbsp;</P><P>Select SAP Systems-&gt;BTP Destinations</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="6.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110217i0F76958B6AF60EBB/image-size/medium?v=v2&amp;px=400" role="button" title="6.jpg" alt="6.jpg" /></span></P><P>The created destination will be showed there, select the Destination.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="7.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110223i0C5F8006175A16FD/image-size/medium?v=v2&amp;px=400" role="button" title="7.jpg" alt="7.jpg" /></span></P><P>Once the destination is selected, the list of entities from the Rest service would be displayed.</P><P>Click on Install Integration and enable data entity.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="8.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110226i324CE9EFEE635960/image-size/medium?v=v2&amp;px=400" role="button" title="8.jpg" alt="8.jpg" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="9.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110227iEAA4A24549DE828D/image-size/medium?v=v2&amp;px=400" role="button" title="9.jpg" alt="9.jpg" /></span></P><P>Switch to the UI Canvas. Under Data variables, we can create Entities as a variable. Select the entityset that is a collection of records and save.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="11.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110235i4AED69FE3E306443/image-size/medium?v=v2&amp;px=400" role="button" title="11.jpg" alt="11.jpg" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="12.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110234iF3BD2219F7013D73/image-size/medium?v=v2&amp;px=400" role="button" title="12.jpg" alt="12.jpg" /></span></P><P>Switch to the view in the UI Canvas and the UI element used here is Large Image List Item which is which is available in Market Place.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="13.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110239iC62D2D64199489E0/image-size/medium?v=v2&amp;px=400" role="button" title="13.jpg" alt="13.jpg" /></span></P><P>The Repeat with property of the List Container can be bound with the data variables we had set previously.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="14.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110242iA8BF881C267C4FF2/image-size/medium?v=v2&amp;px=400" role="button" title="14.jpg" alt="14.jpg" /></span></P><P>&nbsp;</P><P>Select the entityset and save.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="15.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110244iAD19F2401696A18E/image-size/medium?v=v2&amp;px=400" role="button" title="15.jpg" alt="15.jpg" /></span></P><P>The properties, label can be bound to the Maktx of the entityset.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="16.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110248i486EE06123BB4C6E/image-size/medium?v=v2&amp;px=400" role="button" title="16.jpg" alt="16.jpg" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="17.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110249iD513DDA5098F86B3/image-size/medium?v=v2&amp;px=400" role="button" title="17.jpg" alt="17.jpg" /></span></P><P>Similarly, price can be bound to the property Description text.</P><P>As we need to display the image too, the image can be bound using the formula URL(repeated.current.ImageContent).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="18.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110251iB758D591CE0A75CB/image-size/medium?v=v2&amp;px=400" role="button" title="18.jpg" alt="18.jpg" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="19.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110252i29CF6497CD25B25B/image-size/medium?v=v2&amp;px=400" role="button" title="19.jpg" alt="19.jpg" /></span></P><P>&nbsp;</P><P>Once the binding is completed, The Image, Description and Price of the products could be shown on the screen.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="20.jpg" style="width: 223px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/110254i3DFD30D58027D9E6/image-size/medium?v=v2&amp;px=400" role="button" title="20.jpg" alt="20.jpg" /></span></P><P>&nbsp;</P><P>Hurray! A real time Build App with the secure connection to backend is ready!</P><P>&nbsp;</P> 2024-05-16T09:39:15.391000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-fiori-development-newsletter-may-2024-issue-28/ba-p/13702765 SAP Fiori development newsletter May 2024 (issue #28) 2024-05-16T15:50:00.021000+02:00 PeterSpielvogel https://community.sap.com/t5/user/viewprofilepage/user-id/543 <P>What a great time to be in software development! AI is rapidly changing the application development landscape and I’m excited to see new generative AI capabilities appearing across our portfolio. SAP Fiori tools recently added the ability to generate apps from a business requirement document. You can access this and many more cool AI tools in SAP Build Code. This issue focuses on these and other innovations, as well as a sneak peak about what you can expect to see at Sapphire.<BR /><BR />If you want to meet with fellow developers and the SAP engineers who build our professional development tools, I encourage you to join our monthly<SPAN>&nbsp;</SPAN><STRONG>SAP Fiori elements and SAP Fiori tools roundtable group</STRONG>.</P><P>Our next meeting is June 12, 2024.<BR /><BR />Learn about the group at&nbsp;<A href="https://smc-link.s4hana.ondemand.com/eu/data-buffer/sap/public/cuan/link/100/61CD12409C521912E4D433F469F6484FC168B35A?_V_=2&amp;_K11_=A67870895B2B9BC9D77D1B9AB614BF41955EBE98&amp;_L54AD1F204_=c2NlbmFyaW89TUxDUEcmdGVuYW50PW15MzAwNzIzLnM0aGFuYS5vbmRlbWFuZC5jb20mdGFyZ2V0PWh0dHBzOi8vYmxvZ3Muc2FwLmNvbS8yMDIxLzA3LzMxL3BlZXItdG8tcGVlci1sZWFybmluZy1hdC10aGUtc2FwLWZpb3JpLWVsZW1lbnRzLWFuZC1zYXAtZmlvcmktdG9vbHMtcm91bmR0YWJsZS8%2Fc2FwLW91dGJvdW5kLWlkPTYxQ0QxMjQwOUM1MjE5MTJFNEQ0MzNGNDY5RjY0ODRGQzE2OEIzNUEmc21jX2NhbXBhaWduX2lkPTAwMDAwMzk5OTEmc291cmNlPWVtYWlsLXNtYw&amp;_K13_=558&amp;_K14_=5e3241044c6bb04014087e4a7dae6a19c18a229f114e0a8b2f3b59d43a334343" target="_blank" rel="noopener nofollow noreferrer">https://blogs.sap.com/2021/07/31/peer-to-peer-learning-at-the-sap-fiori-elements-and-sap-fiori-tools...</A><BR />You can also&nbsp;email me if you would like an invitation.</P><P>Was this forwarded to you?<SPAN>&nbsp;</SPAN><A href="https://smc-link.s4hana.ondemand.com/eu/data-buffer/sap/public/cuan/link/100/61CD12409C521912E4D433F469F6484FC168B35A?_V_=2&amp;_K11_=36DD87CF4363E704D7AB90D1113275E1D8361F50&amp;_L54AD1F204_=c2NlbmFyaW89TUxDUEcmdGVuYW50PW15MzAwNzIzLnM0aGFuYS5vbmRlbWFuZC5jb20mdGFyZ2V0PWh0dHBzOi8vd3d3LnNhcC5jb20vY21wL25sL3NhcC1maW9yaS1kZXZlbG9wbWVudC1uZXdzbGV0dGVyL2luZGV4Lmh0bWw%2Fc2FwLW91dGJvdW5kLWlkPTYxQ0QxMjQwOUM1MjE5MTJFNEQ0MzNGNDY5RjY0ODRGQzE2OEIzNUEmc21jX2NhbXBhaWduX2lkPTAwMDAwMzk5OTEmc291cmNlPWVtYWlsLXNtYw&amp;_K13_=558&amp;_K14_=ee33bb3cf9d084c97c92ed4c387b9cd510678e34db39e05b4e6d9fbb884f20fe" target="_blank" rel="noopener nofollow noreferrer">Subscribe to the SAP Fiori development newsletter.</A></P><P>Your editorial team,&nbsp;<BR />Peter, Oliver, and Raz</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SAP_Fiori_Dev_Newsletter_28.png" style="width: 640px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/111211i0BE7C8E37CAF226B/image-size/large?v=v2&amp;px=999" role="button" title="SAP_Fiori_Dev_Newsletter_28.png" alt="SAP_Fiori_Dev_Newsletter_28.png" /></span></P><H1 id="toc-hId-885610304"><span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="developer_news.png" style="width: 98px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/111220iF4E6B07FBBEC4051/image-size/large?v=v2&amp;px=999" role="button" title="developer_news.png" alt="developer_news.png" /></span>Development News</H1><P>&nbsp;</P><P><STRONG>Sapphire 2024 user experience and application development sessions </STRONG></P><P>Here is a list of sessions that highlight user experience and application development, both of which contain varying levels of AI, as SAP is infusing artificial intelligence into most of our solutions.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/sapphire-2024-user-experience-and-application-development-sessions/ba-p/13684064" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/sapphire-2024-user-experience-and-application-development-sessions/ba-p/13684064</A></P><P><STRONG>SAP Fiori tools 2403 introduces Gen AI capability and more </STRONG></P><P>The latest enhancements in SAP Fiori tools introduce many exciting features aimed at streamlining the development process and fostering greater collaboration across teams. We have added new generative AI capabilities to create SAP Fiori elements apps directly from a business requirement document.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-tools-2403-introduces-gen-ai-capability-and-more/ba-p/13650594" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-tools-2403-introduces-gen-ai-capability-and-more/ba-p/13650594</A></P><P><STRONG>Unlocking efficiency and simplicity: a look into the new features of SAP Fiori elements for OData V4 </STRONG></P><P>The post explains the new functionalities and improvements from SAPUI5 Version 1.121 and SAP Fiori elements for OData V4.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/unlocking-efficiency-and-simplicity-a-look-into-the-new-features-of-sap/ba-p/13645297" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/unlocking-efficiency-and-simplicity-a-look-into-the-new-features-of-sap/ba-p/13645297</A></P><P><STRONG>Building and delivering AI solutions for both developers and end-users in SAP S/4HANA Public Edition </STRONG></P><P>This post shows a sneak preview of some of the AI initiatives we are working on for both application developers and end users. Some are roadmap items that may or may not turn into productive solutions.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/building-and-delivering-ai-solutions-for-both-developers-and-end-users-in/ba-p/13699945" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/building-and-delivering-ai-solutions-for-both-developers-and-end-users-in/ba-p/13699945</A></P><P><STRONG>ABAP Cloud Developer Trial 2022 available now</STRONG></P><P>ABAP remains an important part of the SAP development landscape. The ABAP Cloud Developer Trial is pre-configured with SAP Fiori launchpad, SAP Cloud Connector, backend / frontend connections, roles, and sample applications.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/abap-cloud-developer-trial-2022-available-now/ba-p/13598069" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/abap-cloud-developer-trial-2022-available-now/ba-p/13598069</A></P><P><STRONG>Embracing TypeScript in SAPUI5 development</STRONG></P><P>SAP officially announced TypeScript support for UI5 starting with version 1.116.0. This post explains how this fits into creating SAP Fiori applications.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-members/embracing-typescript-in-sapui5-development/ba-p/13675744" target="_blank">https://community.sap.com/t5/technology-blogs-by-members/embracing-typescript-in-sapui5-development/ba-p/13675744</A></P><P><STRONG>Upgrade SAP Business Application Studio to SAP Build Code </STRONG></P><P>Now you can migrate an existing SAP Business Application Studio instance to SAP Build Code. This post explains how.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/upgrade-sap-business-application-studio-to-sap-build-code/ba-p/13661500" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/upgrade-sap-business-application-studio-to-sap-build-code/ba-p/13661500</A></P><P><STRONG>Create a full-stack app using Joule </STRONG></P><P>This step-by-step post shows how to create one full-stack application for management orders based on a model from the Northwind service. It uses Joule to enhance the app and generate some test scripts.</P><P><A href="https://community.sap.com/t5/application-development-blog-posts/create-full-stack-app-use-entity-drafts-use-joule-to-create-action-code/ba-p/13676527" target="_blank">https://community.sap.com/t5/application-development-blog-posts/create-full-stack-app-use-entity-drafts-use-joule-to-create-action-code/ba-p/13676527</A></P><P><STRONG>Unlocking full-stack potential using SAP Build Code - part 1</STRONG></P><P>This post shows how to create a simple CAP and UI app using Joule and deploy it to the BTP subaccount. It explains how to test, create a managed app router configuration, and access the UI and service endpoints successfully.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-members/unlocking-full-stack-potential-using-sap-build-code-part-1/ba-p/13667300" target="_blank">https://community.sap.com/t5/technology-blogs-by-members/unlocking-full-stack-potential-using-sap-build-code-part-1/ba-p/13667300</A></P><P><STRONG>SAP Build Code - speed up your development with generative AI assistant – Joule</STRONG></P><P>This post explains SAP Joule and how it can be used to generate application logic, data models, SAP Fiori apps, test scripts, sample data, service definitions and more.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-build-code-speed-up-your-development-with-generative-ai-assistant-joule/ba-p/13660954" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/sap-build-code-speed-up-your-development-with-generative-ai-assistant-joule/ba-p/13660954</A></P><P><STRONG>Custom data as table, CDS, domain, business object and all that jazz...</STRONG></P><P>The need for custom data is nothing new, but customizing while keeping a core clean is. Key User and on-stack Developer Extensibility provide many options. This post showcases each option relating to having your own "custom data" in SAP S/4HANA, with some pros and cons and when to use which option.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/custom-data-as-table-cds-domain-business-object-and-all-that-jazz/ba-p/13660397" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/custom-data-as-table-cds-domain-business-object-and-all-that-jazz/ba-p/13660397</A></P><P><STRONG>Building low-code extensions with Key User Extensibility in SAP S/4HANA and SAP Build </STRONG></P><P>Key users can make certain changes in SAP systems that can reduce the workload for developers. They can adapt SAP applications and services using low-code tooling that’s built into SAP S/4HANA.</P><P><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/building-low-code-extensions-with-key-user-extensibility-in-sap-s-4hana-and/ba-p/13675437" target="_blank">https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/building-low-code-extensions-with-key-user-extensibility-in-sap-s-4hana-and/ba-p/13675437</A></P><P><STRONG>Unleashing AI magic: building full-stack apps with SAP Build Code </STRONG></P><P>See how to build two different full stack applications with just a few clicks and prompts.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/unleashing-ai-magic-building-full-stack-apps-with-sap-build-code/ba-p/13652771" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/unleashing-ai-magic-building-full-stack-apps-with-sap-build-code/ba-p/13652771</A></P><P><STRONG>Joule for freestyle SAPUI5 development in SAP Build Code</STRONG></P><P>Joule helps write freestyle SAPUI5 code in SAP Build Code. Ask Joule by typing code-related requests, in natural language, into Joule's chat window. For example, you could ask Joule to insert a control to a view, add an event handler to a controller, introduce a full new view with routing and much more. This post summarizes some of the key capabilities.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/joule-for-freestyle-sapui5-development-in-sap-build-code/ba-p/13650005" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/joule-for-freestyle-sapui5-development-in-sap-build-code/ba-p/13650005</A></P><P><STRONG>Our latest roadmaps are available&nbsp;</STRONG></P><P><A href="https://smc-link.s4hana.ondemand.com/eu/data-buffer/sap/public/cuan/link/100/61CD12409C521912E4D433F469F6484FC168B35A?_V_=2&amp;_K11_=AACEE9F66E98DE98E35663CD28FEF16A1ACE71FA&amp;_L54AD1F204_=c2NlbmFyaW89TUxDUEcmdGVuYW50PW15MzAwNzIzLnM0aGFuYS5vbmRlbWFuZC5jb20mdGFyZ2V0PWh0dHBzOi8vcm9hZG1hcHMuc2FwLmNvbS9ib2FyZD9QUk9EVUNUPTczNTU0OTAwMTAwODAwMDAxMzYxJnNhcC1vdXRib3VuZC1pZD02MUNEMTI0MDlDNTIxOTEyRTRENDMzRjQ2OUY2NDg0RkMxNjhCMzVBJnNtY19jYW1wYWlnbl9pZD0wMDAwMDM5OTkxJnNvdXJjZT1lbWFpbC1zbWM&amp;_K13_=558&amp;_K14_=c752525985baecf6c66c057c453e78fa46a14e9e3dbae1024bff0393902739da" target="_blank" rel="noopener nofollow noreferrer">SAPUI5 roadmap</A><BR /><A href="https://smc-link.s4hana.ondemand.com/eu/data-buffer/sap/public/cuan/link/100/61CD12409C521912E4D433F469F6484FC168B35A?_V_=2&amp;_K11_=3AC1EB01FC5A9A97DA3AD1A4860F25CFE88EA7F2&amp;_L54AD1F204_=c2NlbmFyaW89TUxDUEcmdGVuYW50PW15MzAwNzIzLnM0aGFuYS5vbmRlbWFuZC5jb20mdGFyZ2V0PWh0dHBzOi8vcm9hZG1hcHMuc2FwLmNvbS9ib2FyZD9yYW5nZT1DVVJSRU5ULUxBU1QmcT1zYXAlMjBmaW9yaSUyMGVsZW1lbnRzJnNhcC1vdXRib3VuZC1pZD02MUNEMTI0MDlDNTIxOTEyRTRENDMzRjQ2OUY2NDg0RkMxNjhCMzVBJnNtY19jYW1wYWlnbl9pZD0wMDAwMDM5OTkxJnNvdXJjZT1lbWFpbC1zbWMjUTMlMjAyMDIz&amp;_K13_=558&amp;_K14_=48ce384f3f87373ab64aa7caf759b95c43cf5a0769b1e5ffde98128935f4b6fc" target="_blank" rel="noopener nofollow noreferrer">SAP Fiori elements roadmap</A><A href="https://smc-link.s4hana.ondemand.com/eu/data-buffer/sap/public/cuan/link/100/61CD12409C521912E4D433F469F6484FC168B35A?_V_=2&amp;_K11_=B62B33A0455C2C37FBDFF17412E0179D7B92E4BB&amp;_L54AD1F204_=c2NlbmFyaW89TUxDUEcmdGVuYW50PW15MzAwNzIzLnM0aGFuYS5vbmRlbWFuZC5jb20mdGFyZ2V0PWh0dHBzOi8vcm9hZG1hcHMuc2FwLmNvbS9ib2FyZD9QUk9EVUNUPTY3ODM3ODAwMTAwODAwMDA3MDc3JnJhbmdlPUNVUlJFTlQtTEFTVCZzYXAtb3V0Ym91bmQtaWQ9NjFDRDEyNDA5QzUyMTkxMkU0RDQzM0Y0NjlGNjQ4NEZDMTY4QjM1QSZzbWNfY2FtcGFpZ25faWQ9MDAwMDAzOTk5MSZzb3VyY2U9ZW1haWwtc21jI1EzJTIwMjAyMw&amp;_K13_=558&amp;_K14_=852c4b5ab13d3f7d18f3db8c82eba1deca910a49a84e0863d5bcb576e2d6b6a2" target="_blank" rel="noopener nofollow noreferrer"><BR />SAP Business Application Studio roadmap</A><BR /><A href="https://smc-link.s4hana.ondemand.com/eu/data-buffer/sap/public/cuan/link/100/61CD12409C521912E4D433F469F6484FC168B35A?_V_=2&amp;_K11_=EAA108790071D1AD966F905411B6A888AB5E61D3&amp;_L54AD1F204_=c2NlbmFyaW89TUxDUEcmdGVuYW50PW15MzAwNzIzLnM0aGFuYS5vbmRlbWFuZC5jb20mdGFyZ2V0PWh0dHBzOi8vcm9hZG1hcHMuc2FwLmNvbS9ib2FyZD9yYW5nZT1DVVJSRU5ULUxBU1QmcT1zYXAlMjBmaW9yaSUyMHRvb2xzJnNhcC1vdXRib3VuZC1pZD02MUNEMTI0MDlDNTIxOTEyRTRENDMzRjQ2OUY2NDg0RkMxNjhCMzVBJnNtY19jYW1wYWlnbl9pZD0wMDAwMDM5OTkxJnNvdXJjZT1lbWFpbC1zbWMjUTMlMjAyMDIz&amp;_K13_=558&amp;_K14_=b0086322dce37972a7e5ce0fca7d7e391c15cb6564a935684bb033ee5c200bbb" target="_blank" rel="noopener nofollow noreferrer">SAP Fiori tools roadmap</A></P><H1 id="toc-hId-689096799">Developer Tutorials&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="developer_training.png" style="width: 98px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/111225i71990C0C476B4C29/image-size/large?v=v2&amp;px=999" role="button" title="developer_training.png" alt="developer_training.png" /></span></H1><P>&nbsp;</P><P><STRONG>New Tutorial: Key User Adaptation for SAPUI5 applications </STRONG></P><P>To extend SAPUI5 applications, SAPUI5 Flexibility offers capabilities not only for developers but also for key users and end users using simple visual / WYSIWYG tools..</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/new-tutorial-mission-key-user-adaptation-for-sapui5-applications/ba-p/13639694" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/new-tutorial-mission-key-user-adaptation-for-sapui5-applications/ba-p/13639694</A></P><P><STRONG>Tutorial: SAPUI5 Adaptation Projects for SAP S/4HANA Cloud </STRONG></P><P>SAPUI5 Adaptation Projects in SAP Business Application Studio are not new. But what is new is the support for SAP S/HANA Cloud. This enables developers to enhance SAPUI5 applications in SAP S/4HANA Cloud with comprehensive features that were previously exclusive to on-premise customers. See this blog post linking to an extensive, end-to-end tutorial:</P><P><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/extending-sap-s-4hana-cloud-public-edition-using-sapui5-adaptation-projects/ba-p/13607813" target="_blank">https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/extending-sap-s-4hana-cloud-public-edition-using-sapui5-adaptation-projects/ba-p/13607813</A></P><P><STRONG>Developing and extending SAP Fiori elements apps openSAP course </STRONG></P><P><A href="https://open.sap.com/courses/fiori-ea1" target="_blank" rel="noopener noreferrer">https://open.sap.com/courses/fiori-ea1</A></P><H1 id="toc-hId-492583294">Developer Events&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="developer_events.png" style="width: 98px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/111226i9789C7FD6F37F70B/image-size/large?v=v2&amp;px=999" role="button" title="developer_events.png" alt="developer_events.png" /></span></H1><P>&nbsp;</P><P><STRONG>UI5con and reCAP coming in June </STRONG></P><P>The community conferences around UI5 and CAP are coming back in 2024. See the announcements on UI5con and reCAP.</P><P><A href="https://openui5.org/ui5con/germany2024/" target="_blank" rel="noopener nofollow noreferrer">https://openui5.org/ui5con/germany2024/</A></P><P><A href="https://recap-conf.dev/" target="_blank" rel="noopener nofollow noreferrer">https://recap-conf.dev/</A></P><P><A href="https://abapconf.org/" target="_blank" rel="noopener nofollow noreferrer">https://abapconf.org/</A></P><P>These three events together form CodeConnect 2024, which starts the week of June 3.</P><P><A href="https://code-connect.dev/" target="_blank" rel="noopener nofollow noreferrer">https://code-connect.dev/</A></P><P>&nbsp;</P><P><STRONG>SAP S/4HANA Cloud extensions with SAP Build best practices: an expert roundtable podcast </STRONG></P><P>In this blog adapted from the podcast “SAP S/4HANA Cloud extensions with SAP Build best practices: an expert roundtable”, SAP experts discuss SAP S/4HANA extensibility best practices.</P><P><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-s-4hana-cloud-extensions-with-sap-build-best-practices-an-expert/ba-p/13656552" target="_blank">https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-s-4hana-cloud-extensions-with-sap-build-best-practices-an-expert/ba-p/13656552</A></P><P><STRONG>SAP Fiori Innovation Days - coming later in 2024 </STRONG></P><P>Please mark your calendar for the next SAP Fiori Innovation Day events.</P><P>Chicago - August 13</P><P>Paris - November 19</P><P>We will share details and registration information in an upcoming newsletter</P><P>&nbsp;</P><H2 id="toc-hId-425152508">Back issues from the past year</H2><P><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-fiori-development-newsletter-march-2024-issue-27/ba-p/13646140" target="_self">SAP Fiori development newsletter #27 (March 2024)</A></P><P><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-fiori-development-newsletter-january-2024-issue-26/ba-p/13582916" target="_self">SAP Fiori development newsletter #26 (January 2024)</A></P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-development-newsletter-november-2023-issue-25/ba-p/13573104" target="_self">SAP Fiori development newsletter #25 (November 2023)</A></P><P><A href="https://blogs.sap.com/2023/09/12/sap-fiori-development-newsletter-september-2023-issue-24/" target="_blank" rel="noopener noreferrer">SAP Fiori development newsletter #24 (September 2023)</A></P><P><A href="https://blogs.sap.com/2023/07/18/sap-fiori-development-newsletter-july-2023-issue-23/" target="_blank" rel="noopener noreferrer">SAP Fiori development newsletter #23 (July 2023)</A><BR /><BR /><BR /></P><P>&nbsp;</P> 2024-05-16T15:50:00.021000+02:00