https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/members/sap-mentors/geert-janklaps.xml SAP Community - Geert-Jan Klaps 2024-11-01T01:10:00.730592+00:00 python-feedgen Geert-Jan Klaps in SAP Community https://community.sap.com/t5/technology-q-a/re-cap-7-transaction-already-closed-error-on-sap-hana-cloud/qaq-p/12808945/comment-id/4809990#M4809990 Re: CAP 7 - Transaction Already Closed error on SAP HANA Cloud 2023-07-10T11:19:09+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi <SPAN class="mention-scrubbed">willem.pardaens</SPAN>,</P><P>This is really small volume testing, in this case one header record and one item record. Updates are not really in parallel due to the await statements I guess.</P><P>Anyway, as I suspected, it's really the second update statement that causes the crash of the server, but when going through the debug log of the database, I noticed a strange thing in the generated SQL statement. So I compared it to the sqlite SQL statement.</P><P>On HANA it looks like:</P><P><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/attachments/storage/7/attachments/2181300-hana-sql-statement.png" /></P><P>On sqlite it looks like:</P><P><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/attachments/storage/7/attachments/2181301-sqlite-sql-statement.png" /></P><P>Might seem like a bug in the generation of the SQL statements in the HANA DB driver?</P> 2023-07-10T11:19:09+02:00 https://community.sap.com/t5/technology-q-a/re-cap-7-transaction-already-closed-error-on-sap-hana-cloud/qaq-p/12808947/comment-id/4809992#M4809992 Re: CAP 7 - Transaction Already Closed error on SAP HANA Cloud 2023-07-10T18:52:50+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi Florin,</P><P>Moving all the updates into an array was one of the improvements I was going to implement tomorrow. I'll let you know if this solves anything. (but I'm afraid the end result will be the same, in the end the current implementation worked before the upgrade to CDS 7 and is working fine on sqlite)</P> 2023-07-10T18:52:50+02:00 https://community.sap.com/t5/technology-q-a/re-issue-on-cap-deploy-after-updating-cds-cds-dk-with-latest-version-7-0-2/qaq-p/12748173/comment-id/4784951#M4784951 Re: Issue on CAP deploy after updating cds/cds-dk with latest version (7.0.2) 2023-07-10T19:15:46+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi Alessio,</P><P>Did you also update the @sap/cds library and added all the necessary dependencies? As of cds 7, the library became more modular. (e.g. separate libraries for databases, fiori, ...)</P><P>If you haven't already, I suggest you go through the release notes of the release and implement all the necessary changes. (there are some breaking changes in major releases)</P><P><A href="https://cap.cloud.sap/docs/releases/jun23" rel="nofollow noopener noreferrer">June 2023 | CAPire (cloud.sap)</A></P> 2023-07-10T19:15:46+02:00 https://community.sap.com/t5/technology-q-a/re-cap-7-transaction-already-closed-error-on-sap-hana-cloud/qaq-p/12808952/comment-id/4809997#M4809997 Re: CAP 7 - Transaction Already Closed error on SAP HANA Cloud 2023-07-12T14:52:52+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi Sebastian,</P><P>Thank you for clarifying, reworked the whole logic to perform all database updates without using promises. Strange thing is that this issue doesn't occur on sqlite, so from a development perspective it's hard to determine what the root cause is. (I'm expecting the same issue to occur when running this locally in BAS)</P><P>I do think this definitely is in improvement, but I don't seem to find the warning about the new protection mechanism in the release notes. Maybe it would be good to mention it in the release notes as well?</P><P>Best regards,</P><P>Geert-Jan</P> 2023-07-12T14:52:52+02:00 https://community.sap.com/t5/technology-q-a/cap-typescript-cap-js-typer-namespace-missing/qaq-p/12745436 CAP Typescript - @cap-js/typer namespace missing 2023-07-31T13:49:09+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi,</P> <P>I'm currently working on switching a project to the new typescript approach using @cap-js/typer. Unfortunately, when using the newly generated types it looks like the namespace is missing when performing CQL queries.</P> <P>I'm using the same approach as described <A href="https://cap.cloud.sap/docs/tools/cds-typer#cql" target="_blank" rel="nofollow noopener noreferrer">here</A> in the documentation.</P> <P>Code sample:</P> <P><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/attachments/storage/7/attachments/2193509-code.png" /></P> <P>When the query get executed, it fails to due to the namespace not being present in the SQL query:</P> <P><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/attachments/storage/7/attachments/2193510-error.png" /></P> <P>I'm using following package versions:</P> <PRE><CODE>@cap-js/cds-typer: 0.5.0 @cap-js/sqlite: 1.0.1 @sap/cds: 7.1.0 @sap/cds-compiler: 4.0.2 @sap/cds-dk: 7.0.3 @sap/cds-dk (global): 7.0.3 @sap/cds-fiori: 1.0.0 @sap/cds-foss: 4.0.2 @sap/cds-mtxs: 1.9.2 @sap/eslint-plugin-cds: 2.6.3 @thevaluechain/cap-number-range: 1.1.5 Node.js: v16.19.0 home: /home/user/projects/icm-reuse-numberrange/node_modules/@sap/cds<BR /></CODE></PRE> <P>Am I missing something here? Any pointers on how to get this resolved?</P> <P>Geert-Jan</P> 2023-07-31T13:49:09+02:00 https://community.sap.com/t5/technology-q-a/re-cap-typescript-cap-js-typer-namespace-missing/qaq-p/12745438/comment-id/4783784#M4783784 Re: CAP Typescript - @cap-js/typer namespace missing 2023-07-31T14:31:33+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi <SPAN class="mention-scrubbed">20eed143c19f4b82bc4cf049916102cb</SPAN>,</P><P>I'm going to that right away, completely looked over the fact that there's a public repo available <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></P><P>Cheers,</P><P>Geert-Jan</P> 2023-07-31T14:31:33+02:00 https://community.sap.com/t5/brussels-discussions/event-sap-community-watch-and-code-party-3rd-of-november-kontich/td-p/290927 Event: SAP Community watch-and-code party (3rd of November, Kontich) 2023-09-29T08:25:11.723000+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_0-1695967112023.jpg" style="width: 656px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/45732i355BCFAF027D52DF/image-dimensions/656x274?v=v2" width="656" height="274" role="button" title="geertjanklaps_0-1695967112023.jpg" alt="geertjanklaps_0-1695967112023.jpg" /></span></P> <P>With SAP Inside Track Belgium in our rear view mirror, we're already looking forward to our next SAP Community Event: SAP Community watch-and-code party in Friday 3rd of November. The concept is quite straight forward and serves as a local alternative to SAP TechEd which is hosted only in Bangalore this year. You can read more on the concept <A href="https://groups.community.sap.com/t5/sap-teched-blog-posts/sap-community-quot-watch-and-code-quot-parties/ba-p/277006" target="_blank" rel="noopener noreferrer">here</A>.</P> <P>We hope to welcome you all again for a day full of content, hands-on sessions and networking opportunities!</P> <P><STRONG>What to expect?</STRONG></P> <TABLE border="1" width="100%" cellspacing="0" cellpadding="1"> <TBODY> <TR> <TD>Time</TD> <TD>Topic</TD> </TR> <TR> <TD>10:00 - 10:30 a.m.</TD> <TD>Welcome and Introduction</TD> </TR> <TR> <TD>10:30 - 12:30 p.m.</TD> <TD>Keynote SAP TechEd &amp; Expert Q&amp;A Session</TD> </TR> <TR> <TD>12:30 p.m.</TD> <TD>Lunch &amp; Drinks</TD> </TR> <TR> <TD>1:45 - 3:45 p.m.</TD> <TD>Mini Code Jam Session</TD> </TR> <TR> <TD>4:00 - 5:30 p.m.</TD> <TD>Learnings</TD> </TR> <TR> <TD>5:30 p.m. - ...</TD> <TD>Afterwork Snacks &amp; Drinks</TD> </TR> </TBODY> </TABLE> <P><STRONG>Location</STRONG></P> <P>Satenrozen 10, 2550 Kontich (Belgium).</P> <P><STRONG>Registration</STRONG></P> <P>Want to attend? Great! You can register <A href="https://events.sap.com/be/watch-and-code-party-kontich/en/registration.aspx" target="_blank" rel="noopener noreferrer">here</A>.</P> <P>Hope to see you there!</P> 2023-09-29T08:25:11.723000+02:00 https://community.sap.com/t5/technology-blogs-by-members/cds-launchpad-plugin-supercharged-ready-for-the-future-cap-plugin-ui5/ba-p/13578282 cds-launchpad-plugin supercharged & ready for the future - CAP Plugin, UI5 Tooling support & Async Launchpad 2023-12-11T08:43:46+01:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 If you're developing SAP CAP-based applications in combination SAPUI5 apps, you might already be familiar with the <A href="https://www.npmjs.com/package/cds-launchpad-plugin" target="_blank" rel="nofollow noopener noreferrer">cds-launchpad-plugin</A>. The plugin allows you to easily test all your apps in a single launchpad by automatically indexing all SAPUI5 projects in your workspace and providing the necessary configuration to a sandbox launchpad.<BR /> <BR /> Recently the plugin has undergone some major changes, in this blog I'll guide you through the most important changes, how you can enable them &amp; why they are beneficial to enable.<BR /> <H2 id="toc-hId-964073368">SAPUI5 strategy &amp; direction</H2><BR /> SAPUI5 is evolving fast and since recently there's official support for TypeScript (as of SAPUI5 1.116) using the UI5 Tooling. The future is even more bright with the release of SAPUI5 v2.0 which introduces the removal of deprecated API's (slimming down the library dramatically and thus improving the performance) and the move to Async API's only.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/12/ui5-2.0.png" /></P><BR /> <P class="image_caption" style="text-align: center;font-style: italic">Future strategy of SAPUI5 announced at UI5con 2023 (credits <SPAN class="mention-scrubbed">stefan.beck</SPAN> &amp; <SPAN class="mention-scrubbed">peter.muessig</SPAN>)</P><BR /> &nbsp;<BR /> <H2 id="toc-hId-767559863">CAP Plugin technique</H2><BR /> With the release of CAP 6.7.0 the <A href="https://cap.cloud.sap/docs/releases/march23#new-cds-plugin-technique" target="_blank" rel="nofollow noopener noreferrer">new plugin technique</A> was introduced. Up until a few weeks ago, the cds-launchpad-plugin still needed a custom server.js file to be activated. Luckily, <SPAN class="mention-scrubbed">smarten</SPAN> was kind enough to introduce the CAP plugin technique in the cds-launchpad-plugin.<BR /> <BR /> This means you can now just install the plugin as a dev dependency and it get activated automatically. If you want to configure custom plugin settings, you can still do so in the package.json file.<BR /> <BR /> Installation<BR /> <PRE class="language-javascript"><CODE>npm install --save-dev cds-launchpad-plugin</CODE></PRE><BR /> Custom configuration:<BR /> <PRE class="language-javascript"><CODE>"cds": {<BR /> "launchpad": {<BR /> theme:'sap_horizon', // SAPUI5 Theme<BR /> version: '1.120.1', // SAPUI5 Version<BR /> basePath: '', // Path under which you want the sandbox to be served<BR /> appConfigPath: '', // External sandbox appconfig json file to be merged with generated appconfig<BR /> locale: '', // Language to be used for the sandbox environment<BR /> template: '' // 'legacy' (non-async launchpad, default) or 'async' (async launchpad)<BR /> }<BR /> }</CODE></PRE><BR /> &nbsp;<BR /> <H2 id="toc-hId-571046358">UI5 Tooling support</H2><BR /> A few weeks back, thanks to the efforts of <SPAN class="mention-scrubbed">peter.muessig</SPAN>,&nbsp;the <A href="https://www.npmjs.com/package/cds-plugin-ui5" target="_blank" rel="nofollow noopener noreferrer">cds-plugin-ui5</A> was <A href="https://blogs.sap.com/2023/10/13/sap-tech-bytes-using-the-sap-approuter-at-dev-time-a-full-stack-journey-with-ui5-and-sap-cap-cloud-foundry-basics-6/" target="_blank" rel="noopener noreferrer">introduced</A> to bridge the gap between CAP &amp; SAPUI5 development.<BR /> <BR /> The library integrates the UI5 Tooling into the default CAP server, which means you're now able to use a single server to perform both CAP &amp; SAPUI5 developments, leveraging the power of both development tools in one.<BR /> <BR /> <SPAN style="font-size: 1rem">The </SPAN><A style="font-size: 1rem" href="https://www.npmjs.com/package/cds-launchpad-plugin" target="_blank" rel="nofollow noopener noreferrer">cds-launchpad-plugin</A><SPAN style="font-size: 1rem"> now automatically detects the </SPAN><A style="font-size: 1rem" href="https://www.npmjs.com/package/cds-plugin-ui5" target="_blank" rel="nofollow noopener noreferrer">cds-plugin-ui5</A><SPAN style="font-size: 1rem"> presence and changes the way the application descriptors are generated for the launchpad. (side-note, the plugin currently only supports the default routes used by cds-plugin-ui5, customized routes are not supported yet)</SPAN><BR /> <BR /> This means you're now able to use TypeScript for both CAP &amp; SAPUI5 in combination with the cds-launchpad-plugin!<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/12/ui5-tooling-integration.png" /></P><BR /> <P class="image_caption" style="text-align: center;font-style: italic">cds-launchpad-plugin combined with cds-plugin-ui5</P><BR /> &nbsp;<BR /> <H2 id="toc-hId-374532853">Async launchpad</H2><BR /> An additional configuration option "template" was introduced, to allow changing the template used to generate the launchpad. You can either leave the template untouched, set it to "legacy" or "async". For now the default setting is still legacy, in the next major release this will probably be switched to async as this is the best-practice and more future-proof.<BR /> <BR /> Good to know, the way the legacy launchpad template is loaded (using the <A href="https://ui5.sap.com/#/api/sap.ushell.Container%23methods/createRenderer" target="_blank" rel="noopener noreferrer">createRenderer</A> method of class sap.ushell.Container) is deprecated as of SAPUI5 1.120.<BR /> <BR /> Why should you use the async template, next to the fact that you'll have to in the future? Performance! In below screenshots you can see the difference when loading a launchpad with the same configuration using both the legacy &amp; async template.<BR /> <BR /> <STRONG>Results: legacy - 9,5 seconds vs async - 2,2 seconds!!</STRONG><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/12/legacy-launchpad.png" /></P><BR /> <P class="image_caption" style="text-align: center;font-style: italic">Legacy launchpad performance</P><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/12/async-launchpad.png" /></P><BR /> <P class="image_caption" style="text-align: center;font-style: italic">Async launchpad performance</P><BR /> &nbsp;<BR /> <H2 id="toc-hId-178019348">Wrap-up</H2><BR /> As you can see, quite some changes in only a few weeks, improving the useability &amp; future-proofness of the plugin. Be sure to try them out!<BR /> <BR /> Having troubles or ideas for new features? please use GitHub to <A href="https://github.com/geert-janklaps/cds-launchpad-plugin/issues" target="_blank" rel="nofollow noopener noreferrer">report</A> any issues / ideas.<BR /> <BR /> Are you already using the cds-launchpad-plugin? Be sure to leave a comment!<BR /> <BR /> Happy coding! 2023-12-11T08:43:46+01:00 https://community.sap.com/t5/technology-q-a/usage-metrics-per-tenant-subscription-in-a-multitenant-solution/qaq-p/12771657 Usage metrics per tenant / subscription in a multitenant solution 2023-12-11T14:24:48+01:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi,</P> <P>I'm looking for a solution to easily monitor the consumption of a multitenant solution built on SAP BTP. We have the out-of-the-box global metrics in the provider subaccount but want to be able to monitor certain metrics on the level of the subscription.</P> <P>Some of the things that pop up in my mind at first sight:</P> <UL> <LI>Number of unique logins</LI> <LI>HDI container size</LI> <LI>SAP Document Management Service Consumption</LI> <LI>Number of API calls</LI> <LI>...</LI> </UL> <P>Is there any re-use service we can implement to get these kind of metrics per subscription? Or is this something we have to build from scratch ourselves?</P> <P>Best regards,</P> <P>Geert-Jan</P> 2023-12-11T14:24:48+01:00 https://community.sap.com/t5/technology-q-a/re-usage-metrics-per-tenant-subscription-in-a-multitenant-solution/qaq-p/12771659/comment-id/4794648#M4794648 Re: Usage metrics per tenant / subscription in a multitenant solution 2023-12-12T08:19:39+01:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Thanks for the tip <SPAN class="mention-scrubbed">gregorw</SPAN>, I'll log a ticket to see if I can get some more information about it. Will post an update here when I get feedback!</P> 2023-12-12T08:19:39+01:00 https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-1-welcome-to-the-lobby/ba-p/13646093 SAP Build Code blog series: 1 - Welcome to the lobby 2024-03-27T09:00:00.033000+01:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P><SPAN>As announced during SAP TechEd in November 2023: SAP has been working on SAP Build Code, a new developer experience to ease pro-code development efforts on SAP Business Technology Platform. Enriching existing solutions and adding a touch of Generative AI, SAP Build Code streamlines development and promotes fusion development (combining low-code / no-code developments with pro-code development).</SPAN></P><P>During the pilot phase, I was one of the lucky ones to be able to test-drive this new developer experience. In this blog series, I’ll give you some insights based on my experience.</P><H2 id="toc-hId-989870484"><SPAN>(Re)-introducing The Lobby</SPAN></H2><P><SPAN>If you’re familiar with SAP Build Process Automation, SAP Build Apps or SAP Build Work Zone, you’ll already know “The Lobby”. As a pro-code developer using SAP Business Application Studio might have missed this central development experience. </SPAN></P><P><SPAN>Up until now, “The Lobby” was a central library of all your existing low-code / no-code development projects and allowed you to start new developments based on SAP Build Apps &amp; SAP Build Process Automation. With SAP Build Code, pro-code developments now are also stored and started from within that same user experience. </SPAN></P><P><SPAN>Let’s have a look at how starting a new project with SAP Build Code looks like! (We’ll use this development project throughout the rest of the blog series, to give you a clear view on the end-to-end development process using SAP Build Code)</SPAN></P><P><SPAN>Start by clicking the "Create" button on the central right corner of the screen:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_0-1711461852629.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86748i59EE9201A42191E9/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_0-1711461852629.png" alt="geertjanklaps_0-1711461852629.png" /></span></P><P><SPAN>You’ll immediately be greeted by a popup to guide through the rest of the process. Based on the enabled services in the subaccount, you’ll see more functionality enabled in this guided experience</SPAN><SPAN>.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_8-1711048122200.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/84666i2005338F8482AA38/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_8-1711048122200.png" alt="geertjanklaps_8-1711048122200.png" /></span></P><P><SPAN>Since we’re here to explore pro-code development using SAP Build Code, this is obviously going to be our choice for today. But as you can see if you have SAP Build Apps enabled, you’ll be able to start your low-code / no-code app development journey from here as well.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_9-1711048230014.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/84667i1927A63AF899D049/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_9-1711048230014.png" alt="geertjanklaps_9-1711048230014.png" /></span></P><P><SPAN>Next step is to choose the right type of application you’d like to start. Since I’ll be showing a full end to end development, building both backend &amp; frontend applications, we’ll choose for Full-Stack application here.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_10-1711048244019.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/84668iFEB1C32285B7FA33/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_10-1711048244019.png" alt="geertjanklaps_10-1711048244019.png" /></span></P><P><SPAN>As a last step, we’ll need to enter some data to identify our project. As a pro-code developer these settings are already common knowledge. By entering these details here already, SAP Build Code will generate the project with the right project name, namespace and default service name.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_11-1711048260011.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/84670iB1CE4EAF1FEED25B/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_11-1711048260011.png" alt="geertjanklaps_11-1711048260011.png" /></span></P><P><SPAN>SAP Build Code will generate the project and corresponding dev space. Once generation is finished, you can open the dev space by clicking the project name.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_12-1711048280483.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/84671i6533A5824F4F0163/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_12-1711048280483.png" alt="geertjanklaps_12-1711048280483.png" /></span></P><P><SPAN>To end this part of the blog series, let’s open the dev space. You’ll see the storyboard of the new project with all the necessary elements in place as defined through the guided experience.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_13-1711048303496.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/84672iC1F0B6E7EFEFBF76/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_13-1711048303496.png" alt="geertjanklaps_13-1711048303496.png" /></span></P><P><SPAN>This concludes the first part in the blog series, you’ve now learned about the lobby and have setup your first project with SAP Build Code. In the next blog posts we’ll enrich the generated application by using SAP Joule and configure deployment.</SPAN></P><H3 id="toc-hId-922439698"><SPAN>Blog series navigation</SPAN></H3><UL><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-1-welcome-to-the-lobby/ba-p/13646093" target="_self"><SPAN>SAP Build Code blog series: 1 - Welcome to the lobby</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-2-kickstarting-your-project-with-sap-joule/ba-p/13650023" target="_self"><SPAN>SAP Build Code blog series: 2 – Kickstarting your project with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-3-adding-application-logic-and-unit-tests-with/ba-p/13650054" target="_self"><SPAN>SAP Build Code blog series: 3 – Adding application logic and unit tests with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-4-adding-a-sapui5-application-and-deploying-to/ba-p/13650078" target="_self"><SPAN>SAP Build Code blog series: 4 – Adding a SAPUI5 application and deploying to SAP BTP</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-5-my-personal-experience-and-final-thoughts/ba-p/13650082" target="_self"><SPAN>SAP Build Code blog series: 5 – My personal experience and final thoughts</SPAN></A></LI></UL> 2024-03-27T09:00:00.033000+01:00 https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-2-kickstarting-your-project-with-sap-joule/ba-p/13650023 SAP Build Code blog series: 2 – Kickstarting your project with SAP Joule 2024-03-27T09:01:00.034000+01:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P><SPAN>SAP Build Code comes with SAP Joule as your personal pair developer. If you have never heard of SAP Joule, I recommend you to read <A href="https://news.sap.com/2023/09/joule-new-generative-ai-assistant/" target="_blank" rel="noopener noreferrer">this</A> article. To summarize in short, Joule is SAP’s generative AI copilot which will be embedded throughout their product portfolio. You can already activate SAP Joule in SAP SuccessFactors &amp; SAP S/4HANA Cloud (early adopter program) for example.</SPAN></P><P><SPAN>In this blog we’ll use SAP Joule to generate a data model &amp; some test data for our custom logic.</SPAN></P><P><SPAN>To open SAP Joule in your dev space, you can use the Joule plugin in the left side of your screen.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_6-1711461437328.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86741iBD077B2A06241C79/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_6-1711461437328.png" alt="geertjanklaps_6-1711461437328.png" /></span></P><H2 id="toc-hId-990615042"><SPAN>Generating a new data model &amp; service for our project</SPAN></H2><P><SPAN>After opening up SAP Joule, the guided experience will show up which allows you to start the SAP Joule experience based on what you want to achieve. In this case we’ll go for “Data Model and Service Creation”. </SPAN></P><P><SPAN>Once you open Joule with the button in the central of the screen, you’ll be able to provide the input you want to give Joule to generate a new data model and service.</SPAN></P><P><SPAN>I used following input: </SPAN></P><P><SPAN>“Create an app to manage sales orders with entities salesorders and salesorderitems where each salesorderitem is linked to its salesorder.”</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_7-1711461479461.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86742i0672BB9D6D92086A/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_7-1711461479461.png" alt="geertjanklaps_7-1711461479461.png" /></span></P><P><SPAN>If you’re happy with Joule’s proposed data model, you can easily accept these changes with the button in the top right corner of the proposal. After accepting the proposal, you’ll see the storyboard gets updated automatically to reflect the changes applied by SAP Joule.</SPAN></P><P><SPAN>We now have an updated data model and a service reflecting the data model in our project.</SPAN></P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_8-1711461523951.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86743i9A44C3D9203A37E5/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_8-1711461523951.png" alt="geertjanklaps_8-1711461523951.png" /></span></P><H2 id="toc-hId-794101537"><SPAN>Generating test data for our project</SPAN></H2><P><SPAN>As a developer, the development as such is our main responsibility, but what would we be without doing at least some testing to verify that everything is working as expected?</SPAN></P><P><SPAN>Instead of creating test data manually, we can use SAP Joule to do this for us! Let’s create some test data using SAP Joule! To do this, open up the SAP Joule experience again through the SAP Joule plugin in the left side of the screen.</SPAN></P><P><SPAN>In the guided experience open the Sample Data topic and open SAP Joule. After opening SAP Joule, you can very easily ask Joule to generate some test data for you.</SPAN></P><P><SPAN>I’ve used following input: “Generate sample data for entities salesorders and salesorderitems”.</SPAN></P><P><SPAN>If you’re happy with the test data, you can easily accept the test data with the button in the top right corner of the proposal.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_9-1711461553319.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86744i8BF37604E5CFE8DA/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_9-1711461553319.png" alt="geertjanklaps_9-1711461553319.png" /></span></P><P><SPAN>After accepting the test data, you’ll be greeted by the sample data editor where you can very easily browse through the test data.</SPAN></P><P><SPAN>If you have a close look at the generated sample data, you’ll notice that SAP Joule even took into consideration that the totalAmount of the SalesOrders entity should be the sum of the totalPrice of the SalesOrderItems entity.</SPAN></P><P><SPAN>SalesOrders entity:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_10-1711461581959.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86745i2D88F27D8A2D4DBB/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_10-1711461581959.png" alt="geertjanklaps_10-1711461581959.png" /></span></P><P><SPAN>Sales Order Items entity:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_11-1711461611825.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86747i29F0A9E26015B80B/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_11-1711461611825.png" alt="geertjanklaps_11-1711461611825.png" /></span></P><P><SPAN>Isn’t this beautiful? With only a few simple interactions with SAP Joule, we already have a working backing service with some realistic sample data to test our development in SAP Build Code!</SPAN></P><P><SPAN>While it is great SAP Joule took into consideration that the totalAmount of our SalesOrders entity should be the sum of our totalPrice of the SalesOrderItems entity, we’d like to see this logic reflected when actually creating / updating a new Sales Order. In the next blog post, we’ll use SAP Joule to add some application logic to this automatically and a unit test to validate the logic applied in our application logic.</SPAN></P><H3 id="toc-hId-726670751"><SPAN>Blog series navigation</SPAN></H3><UL><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-1-welcome-to-the-lobby/ba-p/13646093" target="_self"><SPAN>SAP Build Code blog series: 1 - Welcome to the lobby</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-2-kickstarting-your-project-with-sap-joule/ba-p/13650023" target="_self"><SPAN>SAP Build Code blog series: 2 – Kickstarting your project with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-3-adding-application-logic-and-unit-tests-with/ba-p/13650054" target="_self"><SPAN>SAP Build Code blog series: 3 – Adding application logic and unit tests with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-4-adding-a-sapui5-application-and-deploying-to/ba-p/13650078" target="_self"><SPAN>SAP Build Code blog series: 4 – Adding a SAPUI5 application and deploying to SAP BTP</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-5-my-personal-experience-and-final-thoughts/ba-p/13650082" target="_self"><SPAN>SAP Build Code blog series: 5 – My personal experience and final thoughts</SPAN></A></LI></UL> 2024-03-27T09:01:00.034000+01:00 https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-3-adding-application-logic-and-unit-tests-with/ba-p/13650054 SAP Build Code blog series: 3 – Adding application logic and unit tests with SAP Joule 2024-03-27T09:02:00.070000+01:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P><SPAN>Up until now, we’ve already covered creating a project through the lobby, we’ve added a basic data model and service to our project including some local testing data. We’ve seen that SAP Joule takes our data model into consideration when generating sample data, as the sum of our item prices is reflected in our sales order header entity as a total amount.</SPAN></P><P><SPAN>In this blog post we’re going to extend our existing project with application logic to automatically calculate the total amount based on the item prices. And since application logic needs to be tested, we’ll also create a unit test to automatically test our new application logic.</SPAN></P><H2 id="toc-hId-990615136"><SPAN>Adding application logic to our project</SPAN></H2><P><SPAN>Fire up the SAP Joule plugin again and choose the “Application Logic” step to get started. Adding application logic takes a few steps, as a first step we’ll need to open up the CDS Graphical Modeler and click the entity we’d like to extend with application logic. Once you’ve selected the entity you’ll notice a small menu appears next to the entity with some options. In this case be sure to click the “Add Logic” button as shown below.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_12-1711462247570.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86752i9A26C70096AA975D/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_12-1711462247570.png" alt="geertjanklaps_12-1711462247570.png" /></span></P><P><SPAN>In the “add application logic” screen you’ll need to provide some details about the logic you’d like to implement. In this case we’re aiming to calculate the total value of the order when creating / updating an order, which means we’re going to apply our logic to the service entity. The service entity should already be preselected for you, if not please manually select the SalesOrders entity.</SPAN></P><P><SPAN>Next to that you’ll need to provide a name for the logic you’d like to implement, in this case I’ve used “calculateTotalAmount”. You can also add an optional description to the logic. Creating the empty application logic handler is just a matter of clicking the “Add” button as shown below.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_13-1711462274713.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86758i33C57F9525927EF7/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_13-1711462274713.png" alt="geertjanklaps_13-1711462274713.png" /></span></P><P><SPAN>As a next step define when the application logic should be executed, in this case we’ll use the “on” phase of the CAP handlers and choose the “UPDATE” and “CREATE” events to make sure our total amount is calculated on each update or create of a sales order.</SPAN></P><P><SPAN>Once you’ve selected the phase and events, open up the code editor with the “Open Code Editor” button, so we can use SAP Joule to generate some logic for us.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_14-1711462298097.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86760iA5FAB84E1F3C620B/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_14-1711462298097.png" alt="geertjanklaps_14-1711462298097.png" /></span></P><P><SPAN>After opening the application logic code editor, open SAP Joule through the “Implement Application Logic” step and provide the requirement so SAP Joule can create a proposal implementation. In this case I used the following requirement: “Calculate the total amount based on the item total price”.</SPAN></P><P><SPAN>If you’re happy with the proposed implementation, accept it through the button in the top right corner of the proposal to add it to the application logic.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_15-1711462325458.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86762iEBD73278619F580F/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_15-1711462325458.png" alt="geertjanklaps_15-1711462325458.png" /></span></P><P><SPAN>We’ve now successfully implemented our application logic to calculate the total amount of the order. In the next step we’ll create a unit test, to automatically validate the implementation during e.g. our build / deployment pipelines.</SPAN></P><H2 id="toc-hId-794101631"><SPAN>Adding unit tests to our project</SPAN></H2><P><SPAN>To add a unit test to our project, we have to follow a similar approach as we did to add application logic. In the application logic screen, select the previously created application logic and choose “Open Code Editor”. Now choose the option “Unit test” instead of “Application Logic”.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_16-1711462371663.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86763i52468C1D4B8A4A60/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_16-1711462371663.png" alt="geertjanklaps_16-1711462371663.png" /></span></P><P><SPAN>Now you can use SAP Joule again to generate the unit test. In this case I’ve used following requirement: “Generate a unit test to validate if the total amount is equal to the sum of the total price of the order items”.</SPAN></P><P><SPAN>After SAP Joule generates a proposal, you’ll even see that you get an explanation of what the test should do below the proposal. If you’re fine with the proposal, you can accept the proposal again using the button in the top right of the proposal to add it to the unit test logic.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_17-1711462395188.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86764i1CE097E065B401B0/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_17-1711462395188.png" alt="geertjanklaps_17-1711462395188.png" /></span></P><P><SPAN>We can now test our application through the unit test, by opening a terminal (menu -&gt; terminal -&gt; new terminal) and executing command: “npm run test”. Below I’ve highlighted each step in the unit test and the corresponding result in the terminal.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_18-1711462415039.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86765i742570AC832D3806/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_18-1711462415039.png" alt="geertjanklaps_18-1711462415039.png" /></span></P><H2 id="toc-hId-597588126"><SPAN>Running and previewing our backing service</SPAN></H2><P><SPAN>To run the application, simply open the run configurations menu and open the generated run configuration. By clicking the run button, the application will be started with the test data we created earlier.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_19-1711462448512.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86766iAEA775BCD14FB5A0/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_19-1711462448512.png" alt="geertjanklaps_19-1711462448512.png" /></span></P><P><SPAN>When you open the running application, you’ll be greeted by a new beautiful overview screen listing both UI applications and backend services. In this case we only have a backend service for now. To preview the service you have two options, with the table view you’ll get a Fiori Elements (list report) preview with the code preview you’ll just see the resulting JSON data.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_20-1711462468126.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86768i4F83A8AA94369B77/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_20-1711462468126.png" alt="geertjanklaps_20-1711462468126.png" /></span></P><P><SPAN>When opening up the table preview, you’ll notice that when SAP Joule generated our data model it already included the necessary list report annotations and labels.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_21-1711462489854.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86769iAED843349ABE329A/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_21-1711462489854.png" alt="geertjanklaps_21-1711462489854.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_22-1711462519002.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86770i3CD78A6D44598676/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_22-1711462519002.png" alt="geertjanklaps_22-1711462519002.png" /></span></P><P><SPAN>Opening up the code preview just gives a JSON response with our test data:</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_23-1711462534357.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86771iDDE6C6E28A971779/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_23-1711462534357.png" alt="geertjanklaps_23-1711462534357.png" /></span></P><P>We’ve now successfully created a fully functional backend service with application logic, corresponding unit test and are able to run the application in preview mode. In the next blog we’ll see how we can add a SAP Fiori Elements template and deploy it to SAP Business Technology Platform.</P><H3 id="toc-hId-530157340"><SPAN>Blog series navigation</SPAN></H3><UL><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-1-welcome-to-the-lobby/ba-p/13646093" target="_self"><SPAN>SAP Build Code blog series: 1 - Welcome to the lobby</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-2-kickstarting-your-project-with-sap-joule/ba-p/13650023" target="_self"><SPAN>SAP Build Code blog series: 2 – Kickstarting your project with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-3-adding-application-logic-and-unit-tests-with/ba-p/13650054" target="_self"><SPAN>SAP Build Code blog series: 3 – Adding application logic and unit tests with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-4-adding-a-sapui5-application-and-deploying-to/ba-p/13650078" target="_self"><SPAN>SAP Build Code blog series: 4 – Adding a SAPUI5 application and deploying to SAP BTP</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-5-my-personal-experience-and-final-thoughts/ba-p/13650082" target="_self"><SPAN>SAP Build Code blog series: 5 – My personal experience and final thoughts</SPAN></A></LI></UL> 2024-03-27T09:02:00.070000+01:00 https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-4-adding-a-sapui5-application-and-deploying-to/ba-p/13650078 SAP Build Code blog series: 4 – Adding a SAPUI5 application and deploying to SAP BTP 2024-03-27T09:03:00.059000+01:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P><SPAN>In the previous blog posts, we’ve created a project in which we now have a fully functional CAP backend service, but what is a backend service without a user interface? In this blog post we will extend our project with an SAPUI5-based application and deploy it to SAP Business Technology Platform.</SPAN></P><H2 id="toc-hId-990615202"><SPAN>Adding a SAPUI5 application to manage sales orders to our project</SPAN></H2><P><SPAN>In the project story board, click the “+” button under the UI applications section to get started.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_13-1711462775828.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86773i7778E20B8F63588D/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_13-1711462775828.png" alt="geertjanklaps_13-1711462775828.png" /></span></P><P><SPAN>In the first step, add a display name, application name and description for your application and click the “next” button.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_14-1711462797268.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86774i807ACF31D1BE0577/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_14-1711462797268.png" alt="geertjanklaps_14-1711462797268.png" /></span></P><P><SPAN>In the next step, select the type of UI application you want to add to the project. There are two options here, either a Template-Based, Responsive Application (SAPUI5 application) or a Mobile-Centric, Freestyle Application (SAP Mobile Services-based application). </SPAN></P><P><SPAN>For the sake of simplicity in this blog series, we’ll use a Template-Based, Responsive Application. But now you can perfectly create a native mobile application from here as well leveraging SAP Mobile Services.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_15-1711462815875.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86775i2F60619184B64E97/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_15-1711462815875.png" alt="geertjanklaps_15-1711462815875.png" /></span></P><P><SPAN>Choose the right template you’d like to use; in the case of our project the most logical / recommended template would be the List Report Page. </SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_16-1711462837362.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86777iCB11EED0BAB951CB/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_16-1711462837362.png" alt="geertjanklaps_16-1711462837362.png" /></span></P><P><SPAN>After selecting the right template, configure the necessary data objects. In this case we’ll just select the SalesOrders entity and select none as the navigation entity. </SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_17-1711462859899.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86779i92AE8C37755BD2F4/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_17-1711462859899.png" alt="geertjanklaps_17-1711462859899.png" /></span></P><P><SPAN>After finishing the guided experience, the SAPUI5 app will be generated, added to the story board and you’ll see the Fiori Tooling Page Map show up after clicking the UI Application.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_18-1711462880318.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86780i8FA69EF0AB7DCEA0/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_18-1711462880318.png" alt="geertjanklaps_18-1711462880318.png" /></span></P><P><SPAN>There’s no need to do changes at this point, since we saw in the previous blog post that SAP Joule already generated the necessary annotations for our project. If you run the project again, you’ll now see that the project overview also contains an application. By clicking the tile, you can start the application.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_19-1711462900494.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86781iD712343D28FDE390/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_19-1711462900494.png" alt="geertjanklaps_19-1711462900494.png" /></span></P><H2 id="toc-hId-794101697"><SPAN>Deploying our project to SAP Business Technology Platform</SPAN></H2><P><SPAN>As a final step for our project, we’ll deploy our project to SAP Business Technology Platform. I’m not going to dive into the details on how to prepare your cloud foundry space here, since this is well documented. </SPAN></P><P><SPAN>Just make sure your cloud foundry organization has access to following services for this example:</SPAN></P><UL><LI><SPAN>Connectivity Service (lite plan)</SPAN></LI><LI>SAP HANA Schemas &amp; HDI Containers (hdi-shared plan)</LI><LI>Destination Service (lite plan)</LI><LI>HTML5 Application Repository Service (app-host plan)</LI><LI>Application Logging Service (lite plan)</LI><LI>Authorization and Trust Management (application plan)</LI></UL><P>To deploy the full project to SAP Business Technology Platform, SAP Build Code has a task available. You’ll find the task in the Task Explorer. Open the task and click the “Deploy” button to start the deployment process.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_20-1711462934189.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86783iDD52C0B8189A3556/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_20-1711462934189.png" alt="geertjanklaps_20-1711462934189.png" /></span></P><P><SPAN>If you’re not logged in to Cloud Foundry yet, you’ll be asked to login to Cloud Foundry and select the space you want to deploy to.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_21-1711462961408.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86784i9520FEF420919B7D/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_21-1711462961408.png" alt="geertjanklaps_21-1711462961408.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_22-1711462974593.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86785i41F170F7DC228D27/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_22-1711462974593.png" alt="geertjanklaps_22-1711462974593.png" /></span></P><P><SPAN>Once the deployment process is complete, you’ll see the overview URL displayed in the terminal.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_23-1711462995771.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86786i92DF7A746F642463/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_23-1711462995771.png" alt="geertjanklaps_23-1711462995771.png" /></span></P><P><SPAN>Going to the SAP Business Technology Platform cockpit you’ll find the HTML5 applications as usual.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_24-1711463013604.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86787iBC7AF08AA2608F43/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_24-1711463013604.png" alt="geertjanklaps_24-1711463013604.png" /></span></P><P><SPAN>Same applies for the backend services.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_25-1711463032473.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86788iAB6F5C8E69D260D7/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_25-1711463032473.png" alt="geertjanklaps_25-1711463032473.png" /></span></P><P><SPAN>We’ve now manually deployed our application to SAP Business Technology Platform, which is great! We actually have a fully working application created through generative AI without changing anything manually. (disclaimer: for more complex cases, you’ll need to do manual implementations as well)</SPAN></P><P><SPAN>In the next blog post, I’ll give you some last insights, personal experience and final thoughts on using SAP Build Code.</SPAN></P><H3 id="toc-hId-726670911"><SPAN>Blog series navigation</SPAN></H3><UL><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-1-welcome-to-the-lobby/ba-p/13646093" target="_self"><SPAN>SAP Build Code blog series: 1 - Welcome to the lobby</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-2-kickstarting-your-project-with-sap-joule/ba-p/13650023" target="_self"><SPAN>SAP Build Code blog series: 2 – Kickstarting your project with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-3-adding-application-logic-and-unit-tests-with/ba-p/13650054" target="_self"><SPAN>SAP Build Code blog series: 3 – Adding application logic and unit tests with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-4-adding-a-sapui5-application-and-deploying-to/ba-p/13650078" target="_self"><SPAN>SAP Build Code blog series: 4 – Adding a SAPUI5 application and deploying to SAP BTP</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-5-my-personal-experience-and-final-thoughts/ba-p/13650082" target="_self"><SPAN>SAP Build Code blog series: 5 – My personal experience and final thoughts</SPAN></A></LI></UL> 2024-03-27T09:03:00.059000+01:00 https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-5-my-personal-experience-and-final-thoughts/ba-p/13650082 SAP Build Code blog series: 5 – My personal experience and final thoughts 2024-03-27T09:04:00.036000+01:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P><SPAN>We’ve now completed an end-to-end application development cycle using SAP Build Code. We have a minimal application running which we generated using generative AI offered to us by SAP Joule.</SPAN></P><P><SPAN>In this last blog post, I’ll give you some last insights and my personal thoughts on SAP Build Code.</SPAN></P><H2 id="toc-hId-990615227"><SPAN>Using SAP Build Code from VS Code</SPAN></H2><P><SPAN>Since SAP Build Code uses SAP Business Application Studio as a foundation it is possible to connect SAP Build Code to VS Code using the SAP Business Application Studio Toolkit plugin. I was very happy to see this was still working fine, including all the SAP Build Code plugins (which also includes SAP Joule).</SPAN></P><P><SPAN>If you’ve never tried this out with Business Application Studio, I suggest you read my <A href="https://community.sap.com/t5/technology-blogs-by-members/access-sap-business-application-studio-as-a-remote-from-visual-studio-code/ba-p/13565427" target="_blank">previous</A> blog post. (the instructions are identical for SAP Build Code)</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="geertjanklaps_1-1711463313183.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86790iD2BD830EEE82152F/image-size/large?v=v2&amp;px=999" role="button" title="geertjanklaps_1-1711463313183.png" alt="geertjanklaps_1-1711463313183.png" /></span></P><H2 id="toc-hId-794101722"><SPAN>My personal experience</SPAN></H2><P><SPAN>It’s been fun to be able to play around with SAP Build Code during the pilot phase. I’m 100% convinced that SAP Build Code can make a difference in terms of development efficiency. The way of working through the lobby definitively feels like SAP is bridging the gap between pro-code developers and low-code / no-code developers, thus improving the so-called fusion development projects. </SPAN></P><P><SPAN>If you’ve used SAP Business Application Studio before, you’ll definitely find your way through the development flow of SAP Build Code. I didn’t need any specific documentation to get started with SAP Build Code, so in my opinion the way of working in SAP Build Code definitely feels intuitive.</SPAN></P><P><SPAN>Next to being intuitive and the fact that I was able to generate the application, test data, application logic &amp; unit test using SAP Joule, it really felt like my focus was now more on the pure development process compared to using Business Application Studio. SAP Build Code guided me through generating the right development artifacts and took away the complexity of creating deployment descriptors, so that’s definitely a big plus for me.</SPAN></P><H2 id="toc-hId-597588217"><SPAN>My final thoughts</SPAN></H2><P><SPAN>Generative AI has a huge potential and personally I think we’ve seen nothing yet, I’m very interested in seeing what the future holds for us as pro-code developers. However, even though generative AI is a great technology to assist us developers, a fair warning should be issued: never (ever!) blindly trust the results of generative AI! While the proposed solutions may look very promising, this is not always the case. It’s still up to us developers to:</SPAN></P><UL><LI><SPAN>Verify the generated logic</SPAN></LI><LI><SPAN>Check if the proposed logic is the most efficient implementation (if not, manually adapt!)</SPAN></LI><LI><SPAN>Ensure that the generated logic is not causing bugs with other existing logic</SPAN></LI><LI><SPAN>…</SPAN></LI></UL><P><SPAN>To put it in short: we as developers are still responsible for the final result!</SPAN></P><P><SPAN>When it comes to SAP Build Code, as an experienced developer, I personally hope to see some more advanced features in the future, like for example: TypeScript support, support for existing CAP projects not created with SAP Build Code and combining GitHub Co-pilot with SAP Build Code. As this is the first release of SAP Build Code, which already covers a lot, I’m not calling these a dealbreaker. I’m 100% convinced that we’ll see SAP Build Code’s feature set grow in the coming months and years.</SPAN></P><P><SPAN>Apart from those more advanced features, I think this definitely is a major game changer for developers setting their first steps into the world of SAP Cloud development or to developers who are not that experienced in SAP Cloud development yet. </SPAN></P><P><SPAN>All in all, I definitely recommend you to try out SAP Build Code yourself, regardless of the fact that you’re an experienced or a beginner in SAP Cloud Development! Happy (SAP Build) Coding!</SPAN></P><H3 id="toc-hId-530157431"><SPAN>Blog series navigation</SPAN></H3><UL><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-1-welcome-to-the-lobby/ba-p/13646093" target="_self"><SPAN>SAP Build Code blog series: 1 - Welcome to the lobby</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-2-kickstarting-your-project-with-sap-joule/ba-p/13650023" target="_self"><SPAN>SAP Build Code blog series: 2 – Kickstarting your project with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-3-adding-application-logic-and-unit-tests-with/ba-p/13650054" target="_self"><SPAN>SAP Build Code blog series: 3 – Adding application logic and unit tests with SAP Joule</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-4-adding-a-sapui5-application-and-deploying-to/ba-p/13650078" target="_self"><SPAN>SAP Build Code blog series: 4 – Adding a SAPUI5 application and deploying to SAP BTP</SPAN></A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-members/sap-build-code-blog-series-5-my-personal-experience-and-final-thoughts/ba-p/13650082" target="_self"><SPAN>SAP Build Code blog series: 5 – My personal experience and final thoughts</SPAN></A></LI></UL> 2024-03-27T09:04:00.036000+01:00 https://community.sap.com/t5/technology-q-a/re-index-cds-not-automatically-honored-in-cap-node-js-pl/qaq-p/13883390/comment-id/4886207#M4886207 Re: index.cds not automatically honored in CAP node.js pl... 2024-09-30T20:01:41.989000+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/268">@martinstenzig</a>,</P><P>Did you try adding a requires section to your plugin referencing the model?</P><P>Haven't tested it myself, but for example the change-tracking plugin uses an index.cds and adds a reference to the model in the requires section of package.json of the plugin. (Which I assume will automatically load the contents of the index.cds file when the plugin configuration is merged with the root project's configuration)</P><P><A href="https://github.com/cap-js/change-tracking/blob/457a2a0cf9c95f3c4af75dc23dfcd68ce2aa30ee/package.json#L35" target="_blank" rel="noopener nofollow noreferrer">https://github.com/cap-js/change-tracking/blob/457a2a0cf9c95f3c4af75dc23dfcd68ce2aa30ee/package.json#L35</A></P><P>Worth a try I think&nbsp;<span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></P><P>Cheers,</P><P>Geert-Jan</P> 2024-09-30T20:01:41.989000+02:00 https://community.sap.com/t5/devtoberfest-discussions/techtoberfest-2024/m-p/13889851#M1573 Re: 🟡 Techtoberfest 2024 2024-10-06T19:55:29.075000+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P> <BR />My dev-space. Ubuntu as main OS.</P><P>My favourite vs code extensions:</P><UL><LI>GitHub (copilot, actions, pull requests)</LI><LI>todo tree</LI><LI>dev containers</LI><LI>sqlite viewer</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="IMG_4748.jpeg" style="width: 4032px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/175868i86AF1F526A1DD9C4/image-size/medium?v=v2&amp;px=400" role="button" title="IMG_4748.jpeg" alt="IMG_4748.jpeg" /></span></P> 2024-10-06T19:55:29.075000+02:00 https://community.sap.com/t5/my-sap-teched-virtual-viewing-setup/enjoying-teched-virtual-while-developing-cap-solutions/cns-p/13893743 Enjoying TechEd virtual while developing CAP solutions 2024-10-09T10:59:11.470000+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <span class="lia-inline-image-display-wrapper" image-alt="IMG_4760.jpeg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/177436i4908BF0B1BD54047/image-size/large?v=v2&amp;px=999" role="button" title="IMG_4760.jpeg" alt="IMG_4760.jpeg" /></span> 2024-10-09T10:59:11.470000+02:00 https://community.sap.com/t5/technology-q-a/sap-cap-amp-ui5-fiori-elements-state-message-handling-recommendations/qaq-p/13896746 SAP CAP & UI5 / Fiori Elements - State message handling recommendations / approach 2024-10-11T15:50:16.155000+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi,</P><P>I'm looking for a solution to handle state messages in SAP CAP, combined with SAP Fiori Elements.</P><P>According to the UI5 documentation, state messages should be part of the response payload.&nbsp;<A href="https://ui5.sap.com/#/topic/fbe1cb5613cf4a40a841750bf813238e.html#loiofbe1cb5613cf4a40a841750bf813238e/section_LMFSM" target="_blank" rel="noopener noreferrer">https://ui5.sap.com/#/topic/fbe1cb5613cf4a40a841750bf813238e.html#loiofbe1cb5613cf4a40a841750bf813238e/section_LMFSM</A></P><P>I'm in the situation where I have a business object modelled in CAP, which can contain multiple errors (background processing / jobs) where a user will finally need to make some manual changes to the object. Basically, clear case of state messages (messages don't change as long as the object doesn't change).</P><P>Currently it seems like CAP only supports transition messages out of the box with e.g. req.info, req.error...</P><P>I'd like to get to a situation where these messages are captured in the backend and provided as state messages to the frontend, so that when a user opens the object in change mode, the state messages are properly shown.</P><P>I couldn't find an example of this scenario and the CAP documentation doesn't seem to mention an approach&nbsp; / recommendation for this scenario.&nbsp;</P><P>Any pointers in the right direction are greatly appreciated!</P><P>Cheers,</P><P>Geert-Jan</P> 2024-10-11T15:50:16.155000+02:00 https://community.sap.com/t5/technology-q-a/re-sap-cap-amp-ui5-fiori-elements-state-message-handli/qaq-p/13896977/comment-id/4887962#M4887962 Re: SAP CAP & UI5 / Fiori Elements - State message handli... 2024-10-11T20:50:48.206000+02:00 geert-janklaps https://community.sap.com/t5/user/viewprofilepage/user-id/868 <P>Hi,</P><P>Unfortunately, the documentation also states that the messages get transported to the sap-messages header of the http response. Error messages go to the error response in the body of the response.</P><P>For state messages, the messages should be part of the object response.</P><P>Cheers,</P><P>Geert-Jan</P> 2024-10-11T20:50:48.206000+02:00