https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-Fiori-blog-posts.xml SAP Community - SAP Fiori 2024-11-14T00:01:32.780478+00:00 python-feedgen SAP Fiori blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-members/use-custom-fiori-theme-during-bas-preview/ba-p/13878912 Use custom Fiori Theme during BAS preview 2024-09-30T10:41:42.095000+02:00 francois_m https://community.sap.com/t5/user/viewprofilepage/user-id/668189 <P>Hello everyone,</P><P>in this brief blog, I’ll walk you through how to preview your custom UI theme in SAP Business Application Studio (BAS) during app development. Instead of covering here the steps to create a custom theme, you can refer to this detailed blog:&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-members/how-to-create-new-custom-theme-in-fiori/ba-p/13531864" target="_blank">How to create new custom theme in Fiori?</A></P><P><U><STRONG>Exporting Your Custom Theme</STRONG></U></P><P>Once you’ve created your custom theme, the UI Theme Designer allows you to export all its contents as an archive file. To export, simply select your theme and click on the <STRONG>Export</STRONG> option.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="francois_m_0-1727356725182.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/171789iC12346508E490A29/image-size/large?v=v2&amp;px=999" role="button" title="francois_m_0-1727356725182.png" alt="francois_m_0-1727356725182.png" /></span></P><P>In the export dialog, expand the <FONT color="#0000FF">Optional Settings (for Experts)</FONT> section, and choose the following options:</P><UL><LI>Source Files + CSS Resources + Base Theme Resources</LI><LI>SAPUI5 (UI development toolkit for HTML5)</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="francois_m_1-1727353365390.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/171763iB49E86AA92B367EB/image-size/medium?v=v2&amp;px=400" role="button" title="francois_m_1-1727353365390.png" alt="francois_m_1-1727353365390.png" /></span></P><P>The exported archive contains your custom theme (located under <FONT color="#0000FF">\UI5\sap\fiori\themes</FONT>), along with the base theme files.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="francois_m_2-1727353708729.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/171767i1875DB99831EDACC/image-size/small?v=v2&amp;px=200" role="button" title="francois_m_2-1727353708729.png" alt="francois_m_2-1727353708729.png" /></span></P><P><U><STRONG>Importing Your Custom Theme into BAS</STRONG></U></P><P>In BAS, you can import your custom theme into any folder of your choice (for example, into <FONT color="#0000FF">/home/user/projects</FONT>). To do this, simply drag and drop the folder from your local file explorer directly into the BAS workspace.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="francois_m_3-1727354441255.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/171770i75AB67724289C92D/image-size/small?v=v2&amp;px=200" role="button" title="francois_m_3-1727354441255.png" alt="francois_m_3-1727354441255.png" /></span></P><P><U><STRONG>Using Your Custom Theme During App Preview</STRONG></U><BR />To preview any app in BAS with your custom theme, follow these steps:</P><P>1-- In the <FONT color="#0000FF">webapp/test/flpSandbox.html</FONT> file</P><P>Modify the <FONT color="#0000FF">data-sap-ui-theme property</FONT> by setting it to the ID of your custom theme.<BR />Example:</P><P>&nbsp;</P><pre class="lia-code-sample language-markup"><code>data-sap-ui-theme="demo_theme"</code></pre><P>&nbsp;</P><P>Add the <FONT color="#0000FF">data-sap-ui-theme-roots</FONT> property to define the root path for your theme. Set it using the custom theme ID and an alias of your choice.<BR />Example:</P><P>&nbsp;</P><pre class="lia-code-sample language-markup"><code>data-sap-ui-theme-roots='{"demo_theme" : "myCustomTheme/UI5"}'</code></pre><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="francois_m_4-1727356162832.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/171779i4439DC8138AE579F/image-size/large?v=v2&amp;px=999" role="button" title="francois_m_4-1727356162832.png" alt="francois_m_4-1727356162832.png" /></span></P><P>2-- In the <FONT color="#0000FF">ui5.yaml</FONT>&nbsp;file</P><P>Add a redirection for all network calls related to your custom theme by using the <FONT color="#0000FF">fiori-tools-servestatic</FONT> middleware.</P><P>Example:</P><P>&nbsp;</P><pre class="lia-code-sample language-yaml"><code>- name: fiori-tools-servestatic afterMiddleware: compression configuration: paths: - path: /myCustomTheme src: /home/user/projects/demo_theme</code></pre><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="francois_m_5-1727356244185.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/171780iBBD0EF5B4E6B1C56/image-size/large?v=v2&amp;px=999" role="button" title="francois_m_5-1727356244185.png" alt="francois_m_5-1727356244185.png" /></span></P><P>3-- Launch the preview</P><P>Launch the app preview by running the <FONT color="#0000FF">webapp/test/flpSandbox.html</FONT> file to view your custom theme. You can do this by using the command:</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>npm run start</code></pre><P>&nbsp;</P><P>And voilà! You custom theme is visible during the app preview in BAS:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="francois_m_0-1727357169198.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/171795iD4CFF02FAF39FB8D/image-size/large?v=v2&amp;px=999" role="button" title="francois_m_0-1727357169198.png" alt="francois_m_0-1727357169198.png" /></span></P><P><U><STRONG>Known Issue with SAP Fonts</STRONG></U><BR />Depending on your version of the UI Theme Designer, you may encounter issues with certain icons disappearing. This occurs because these icons rely on SAP fonts, which are not managed correctly during export in UI Theme Designer versions prior to 1.63. This problem is discussed here:&nbsp;<A href="https://community.sap.com/t5/technology-q-a/ui5-theme-designer-failed-to-decode-downloaded-font/qaq-p/12225947/comment-id/4576428#M4576428" target="_blank">UI5 Theme Designer: Failed to decode downloaded font</A></P><P>&nbsp;</P><P>Thanks for reading!</P> 2024-09-30T10:41:42.095000+02:00 https://community.sap.com/t5/technology-blogs-by-members/enhancing-flexibility-with-odata-v4-calls-from-the-controller-in-sap-ui5/ba-p/13880825 Enhancing Flexibility with OData V4 Calls from the Controller in SAP UI5 2024-09-30T10:48:12.566000+02:00 N_Parag_Senapati https://community.sap.com/t5/user/viewprofilepage/user-id/1484609 <H1 id="toc-hId-921568878">Enhancing Flexibility with OData V4 Calls from the Controller in SAP UI5</H1><P>Hey!</P><P>In this blog, we will explore how to dynamically handle OData V4 calls from the controller in SAP UI5. While OData V4 provides many advantages like <STRONG>Improved Performance, Asynchronous Operations and Better Support for Complex Data</STRONG>, the default binding mechanism in SAP UI5 often limits flexibility in manipulating data after it's received. By making the OData calls directly from the controller, you can achieve greater control and flexibility.</P><P>Let's dive into how CRUD operations can be managed for OData V4 through the controller using pseudo-binding.</P><H2 id="toc-hId-854138092">&nbsp;</H2><P>Before we start with CRUD operations, we need to set up the OData V4 model in your SAP UI5 application. This involves configuring the <STRONG>manifest.json</STRONG> file for both the data source and the model.</P><H2 id="toc-hId-657624587">&nbsp;</H2><H2 id="toc-hId-461111082">Define the Data Source in manifest.json:</H2><P>In your <STRONG>manifest.json</STRONG> file, under <STRONG>sap.app</STRONG>, define the data source for your OData V4 service:</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code>"sap.app": { "id": "your.app.id", "type": "application", "dataSources": { "yourODataService": { "uri": "/path/to/your/service/", "type": "OData", "settings": { "odataVersion": "4.0" } } } }</code></pre><P>&nbsp;</P><H2 id="toc-hId-264597577">Define the Model in manifest.json:</H2><P>Now, under <STRONG>sap.ui5</STRONG>, define the model for the data source you just set up.</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code>"sap.ui5": { "models": { "yourODataModel": { "type": "sap.ui.model.odata.v4.ODataModel", "settings": { "autoExpandSelect": true // Optional: Expand navigation properties automatically } "dataSource": "yourODataService" } } }</code></pre><P>&nbsp;</P><H2 id="toc-hId-68084072">Assign the Model to a Variable in&nbsp;controller:</H2><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>var oModel = this.getOwnerComponent().getModel("yourODataModel");</code></pre><P>&nbsp;</P><H2 id="toc-hId--128429433">Creating the Binding</H2><P>OData V4 offers three types of bindings: <STRONG>ListBinding, ContextBinding, and PropertyBinding</STRONG>. These can be utilized in the controller for creating a pseudo-binding. In this blog, we will focus on <STRONG>ContextBinding</STRONG> and <STRONG>ListBinding</STRONG>.</P><H4 id="toc-hId--66777500">ContextBinding</H4><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>var oContextBinding = oModel.bindContext( "/entityPath/contextName(requestedContextId)/", //sPath null, //oContext { //mParameters "$expand": "navigationProperty", "$select": "property1,property2" } );</code></pre><P>&nbsp;</P><H4 id="toc-hId--263291005">ListBinding</H4><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>var oListBinding = oModel.bindList( "/entityPath", //sPath null, //oContext null, //vSorters - Dynamic Sorters null, //vFilters - Dynamic Filters { //mParameters "$expand": "navigationProperty", "$select": "property1,property2" } );</code></pre><P>&nbsp;</P><H2 id="toc-hId--717969948">CRUD Operations</H2><H3 id="toc-hId--860632103"><STRONG>READ</STRONG></H3><H4 id="toc-hId--1350548615"><STRONG><STRONG>Fetching a Specific Context:</STRONG></STRONG></H4><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>oContextBinding.requestObject().then((oData) =&gt; { //Handle success }) .catch((err) =&gt; { //Handle error });</code></pre><P>&nbsp;</P><H4 id="toc-hId--1547062120"><STRONG><STRONG>Fetching a List of Entities:</STRONG></STRONG></H4><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>oListBinding.requestContexts().then((oListContext) =&gt; { oData = oListContext.map(rowContext =&gt; rowContext.getObject()); //Handle success }) .catch((err) =&gt; { //Handle error });</code></pre><P>&nbsp;</P><H3 id="toc-hId--1450172618">DELETE</H3><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>oContextBinding.requestObject().then((obj) =&gt; { oContextBinding.delete().then(function(){ //Handle success }) .catch((err) =&gt; { //Handle delete error }); }) .catch((err) =&gt; { //Handle read error });</code></pre><P>&nbsp;</P><H3 id="toc-hId--1646686123"><STRONG>UPDATE</STRONG></H3><P>When performing an update, you can either execute it immediately or group multiple updates together using <STRONG>updateGroupId</STRONG> and submit them in a batch. If you don't pass the <STRONG>updateGroupId</STRONG>, the update will be called immediately. However, if you want a group of update calls to be executed together, you assign an <STRONG>updateGroupId</STRONG> to each call and then use <STRONG>submitBatch</STRONG> to send all updates at once.</P><H4 id="toc-hId--2136602635"><STRONG><STRONG>Immediate Update Call (without updateGroupId):</STRONG></STRONG></H4><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>oContextBinding.requestObject().then((oObject) =&gt; { if (oObject) { var keys = Object.keys(oObject); for (var i = 0; i &lt; keys.length; i++) { if (oObject[keys[i]] !== oRequestBody[keys[i]]) { oContextBinding.setProperty(keys[i], oRequestBody[keys[i]]).then(function(){ //Handle success }) .catch((err) =&gt; { //Handle update error }); } } } }) .catch((err) =&gt; { //Handle read error });</code></pre><P>&nbsp;</P><P>This will trigger the update immediately for each property that is changed.</P><H4 id="toc-hId-1961851156"><STRONG>B</STRONG><STRONG>atched Update Calls (with updateGroupId):</STRONG></H4><P>If you want to group updates into a batch, you can pass the <STRONG>updateGroupId("sUpdateGroupId")&nbsp;</STRONG>parameter:</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>oContextBinding.requestObject().then((oObject) =&gt; { if (oObject) { var keys = Object.keys(oObject); for (var i = 0; i &lt; keys.length; i++) { if (oObject[keys[i]] !== oRequestBody[keys[i]]) { oContextBinding.setProperty(keys[i], oRequestBody[keys[i]],"sUpdateGroupId").then(function(){ //Handle success }) .catch((err) =&gt; { //Handle update error }); } } } }) .catch((err) =&gt; { //Handle read error });​</code></pre><P>&nbsp;</P><P>After setting all the properties using the same <STRONG>updateGroupId("sUpdateGroupId")</STRONG>, you need to submit the batch to execute all updates together:</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>oModel.submitBatch("sUpdateGroupId").then(function () { //Handle success }) .catch((err) =&gt; { //Handle error });</code></pre><P>&nbsp;</P><P>This will execute all the grouped updates in one network call, improving efficiency by batching them.</P><P>&nbsp;</P><H3 id="toc-hId-2058740658">CREATE</H3><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>var oContext = oListBinding.create(oRequestBody); oContext.created().then(function () { var oData = oContext.getObject(); //Handle success }) .catch((err) =&gt; { //Handle error });</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId--2139337136">Conclusion</H2><P>By handling OData V4 calls directly from the controller, you gain significant flexibility to manipulate data as needed in your SAP UI5 applications. This approach allows you to leverage SAP UI5 controls more effectively, while maintaining performance and making the most of OData V4's capabilities such as asynchronous operations and batch processing.</P><P>If you're looking to implement more complex data manipulations or optimize performance in your SAP UI5 apps, using controller-based OData V4 calls is a powerful solution. Feel free to explore these concepts in your own projects and customize them further based on your specific needs.</P><P>If you have any questions or would like to share your own experience with OData V4, I’d love to hear your thoughts in the comments below.</P><P>Happy coding!</P> 2024-09-30T10:48:12.566000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/release-of-ui5-linter-v1-0/ba-p/13880556 Release of UI5 linter v1.0 2024-09-30T17:00:00.043000+02:00 FlorianVogt https://community.sap.com/t5/user/viewprofilepage/user-id/216201 <P><SPAN class=""><SPAN class="">UI5</SPAN><SPAN class=""> linter is a static code analysis tool </SPAN><SPAN class="">for UI5 projects</SPAN><SPAN class="">,</SPAN> <SPAN class="">which was </SPAN><SPAN class="">introduced by Oliver Graeff </SPAN><SPAN class="">earlier this year in his <A href="https://community.sap.com/t5/technology-blogs-by-sap/introducing-ui5-linter/ba-p/13633898" target="_blank">blog post</A></SPAN><SPAN class="">. </SPAN><SPAN class="">After gathering </SPAN><SPAN class="">community </SPAN><SPAN class="">feedback over the past months </SPAN><SPAN class="">and adding further detection features</SPAN><SPAN class="">,</SPAN><SPAN class=""> we are happy to announce the official release of </SPAN><SPAN class="">UI5 linter v1.0</SPAN><SPAN class="">.</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ui5linter_v1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/172478i8947C9DDCEB6B9EC/image-size/large?v=v2&amp;px=999" role="button" title="ui5linter_v1.png" alt="ui5linter_v1.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-921566089"><SPAN>Features</SPAN><SPAN>&nbsp;</SPAN></H1><P><SPAN>In this release, UI5 linter can detect the following problems in your UI5 project:</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Usage of deprecated UI5 libraries</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Usage of deprecated UI5 framework APIs</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Usage of global variables</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Possible CSP violations</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Deprecated component and manifest configurations&nbsp;</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>You can control which files should be linted by using </SPAN><A href="https://github.com/SAP/ui5-linter?tab=readme-ov-file#options" target="_blank" rel="noopener nofollow noreferrer"><SPAN>include and exclude patterns</SPAN></A><SPAN>. By default, UI5 linter will analyze all relevant UI5 resources in your project. This includes JavaScript (or TypeScript) files, XML views, the manifest.json, and the ui5.yaml.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>For a comprehensive list of features in this release, also see our <A href="https://github.com/SAP/ui5-linter/issues/21" target="_blank" rel="noopener nofollow noreferrer">Roadmap: v1.0.0</A>.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>You can find the latest Best Practices for Developers at </SPAN><A href="https://ui5.sap.com/#/topic/28fcd55b04654977b63dacbee0552712" target="_blank" rel="noopener noreferrer"><SPAN>https://ui5.sap.com/#/topic/28fcd55b04654977b63dacbee0552712</SPAN></A><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-725052584"><SPAN>Restrictions</SPAN><SPAN>&nbsp;</SPAN></H1><P><SPAN>While UI5 linter already provides many detections, it is not yet covering all aspects and best practices for UI5 2.x. The intention of UI5 linter is to detect as many problems as possible that a project running with UI5 2.x might be facing. However, you’ll still need to test your project with UI5 2.x as soon as it is made available. To reveal additional problems, the UI5 team plans to release more versions of UI5 linter over the next months.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>UI5 linter currently has the following prominent restrictions:</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Dynamic usages of deprecated APIs can’t always be detected. Most prominently, when using a construct like "getView().byId()" to retrieve a control instance, UI5 linter is not capable of determining which control class that is, and therefore fails to identify the use of a possibly deprecated API.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>UI5 linter does not report the use of private or undocumented UI5 framework APIs.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>The use of deprecated APIs in control metadata is not detected.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>UI5 linter is unable to analyze UI5 framework APIs that are accessed through a third-party library.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>In XML views, the use of globals or deprecated modules in bindings is not detected.</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P>&nbsp;</P><H1 id="toc-hId-528539079"><SPAN>Usage</SPAN><SPAN>&nbsp;</SPAN></H1><P><SPAN>Check out </SPAN><A href="https://github.com/SAP/ui5-linter" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://github.com/SAP/ui5-linter</SPAN></A><SPAN> to discover all configuration options.</SPAN><SPAN>&nbsp;</SPAN></P><H5 id="toc-hId-848356450">Requirements</H5><P><SPAN>UI5 linter v1.0 requires Node.js v20.11.0 and higher, or Node.js v22.0.0 and higher (v21 is not supported).</SPAN><SPAN>&nbsp;</SPAN></P><H5 id="toc-hId-651842945">Installation</H5><P><SPAN>Install the CLI using the npm package manager:</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>npm install --global @ui5/linter </code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H5 id="toc-hId-455329440"><SPAN class=""><SPAN class="">Lint your project</SPAN></SPAN></H5><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>ui5lint UI5 linter report: /application/webapp/controller/App.controller.js 10:4 error Call to deprecated function 'attachTap' of class 'Button' /application/webapp/manifest.json 81:17 error Use of deprecated model type 'sap.ui5/models/odata/type="sap.ui.model.odata.ODataModel"'</code></pre><P>&nbsp;</P><P>&nbsp;</P> 2024-09-30T17:00:00.043000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-user-experience-q4-2024-news-for-sap-s-4hana-cloud-private-edition-2023/ba-p/13894277 SAP User Experience Q4/2024 News for SAP S/4HANA Cloud Private Edition 2023 2024-10-10T10:16:48.127000+02:00 ThomasReiss https://community.sap.com/t5/user/viewprofilepage/user-id/149639 <P><STRONG><SPAN>Joule is now generally available for SAP S/4HANA Cloud Private Edition 2023. Joule saves you a lot of time when you need to refer to documentation, by giving you a concise summary and pointing you to relevant sections. It also helps you find the right application for well over one hundred navigational scenarios, as well as providing some transactional interactions for selected business objects. If you move up to Feature Pack Stack 2 (FPS2), you can also benefit from built-in collaboration, with the SAP Collaboration Manager now generally available with enhanced functionality. Talking about collaboration, FPS2 also enables users to initiate a chat or call directly from a contact card via Microsoft Teams integration.</SPAN></STRONG></P><P>This post covers:</P><UL><LI><SPAN>Joule</SPAN></LI><LI><SPAN>New collaboration capabilities via:<BR /></SPAN><SPAN>-&nbsp; SAP Collaboration Manager<BR /></SPAN><SPAN>-&nbsp; Contact card integration with Microsoft Teams </SPAN></LI><LI>SAP Mobile Start update</LI><LI><SPAN>News for UI developers, web and mobile</SPAN></LI></UL><P>If you want to see how good SAP S/4HANA Cloud Private Edition now looks, across all the main product areas, then I thoroughly recommend that you have a look at the new online <SPAN><A href="https://www.sap.com/products/erp/s4hana-private-edition/product-tour.html" target="_blank" rel="noopener noreferrer">Product Tour</A>.</SPAN></P><P>In case you haven’t already seen these, do have a look at the user experience innovations which came with FPS00 and FPS01:</P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-user-experience-update-what-s-new-for-sap-s-4hana-2023-private-cloud/ba-p/13578447" target="_blank">SAP User Experience Update: What’s New for SAP S/4HANA 2023 (Private Cloud and On-Premise)</A></SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/user-experience-advances-with-sap-s-4hana-2023-fps01-private-cloud-and-on/ba-p/13634354" target="_blank">User Experience Advances with SAP S/4HANA 2023 FPS01 (Private Cloud and On-Premise)</A></SPAN></LI></UL><H1 id="toc-hId-922605954"><SPAN>Joule</SPAN></H1><P><SPAN>Users can save around ten minutes every time they need to refer to the documentation, by using Joule to give them a concise summary, created using generative AI. The response also provides three links to the most relevant sections in the documentation. We call this the Informational Pattern. Figure 1 below shows an example for someone working in sales, and Figure 2 shows an example for someone working in procurement.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="Figure 1: Using Joule in sales to get help from the documentation, in this case asking “How can I make mass changes to sales orders?”. Alt Text: An image showing Joule on the left, with the query text and an eleven line response below it, followed by the option to expand to see the search results. On the right, an image of Joule is shown with the search results expanded to show three results, the first one called “Mass Changes of Sales Documents”, referring to the documentation of the app with that name. Each search result has a heading with three lines of explanatory text below it." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/177592i4BC4FAE5E00ED3EF/image-size/large?v=v2&amp;px=999" role="button" title="01 Joule Informational for mass changes to sales orders.jpg" alt="Figure 1: Using Joule in sales to get help from the documentation, in this case asking “How can I make mass changes to sales orders?”. Alt Text: An image showing Joule on the left, with the query text and an eleven line response below it, followed by the option to expand to see the search results. On the right, an image of Joule is shown with the search results expanded to show three results, the first one called “Mass Changes of Sales Documents”, referring to the documentation of the app with that name. Each search result has a heading with three lines of explanatory text below it." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 1: Using Joule in sales to get help from the documentation, in this case asking “How can I make mass changes to sales orders?”. Alt Text: An image showing Joule on the left, with the query text and an eleven line response below it, followed by the option to expand to see the search results. On the right, an image of Joule is shown with the search results expanded to show three results, the first one called “Mass Changes of Sales Documents”, referring to the documentation of the app with that name. Each search result has a heading with three lines of explanatory text below it.</span></span></P><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 2: Using Joule in procurement to get help from the documentation, in this case asking “Can I configure a workflow for my purchase requisitions?”. Alt Text: An image showing Joule on the left, with the query text and a nine line response below it, followed by the option to expand to see the search results. On the right, an image of Joule is shown with the search results expanded to show three results, the first one called “How to Configure the Flexible Workflow for Purc…”, referring to the documentation. Each search result has a heading with three lines of explanatory text below it." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/177594i6D955D4E8B693DBE/image-size/large?v=v2&amp;px=999" role="button" title="02 Joule Informational for configuring purchase req workflow.jpg" alt="Figure 2: Using Joule in procurement to get help from the documentation, in this case asking “Can I configure a workflow for my purchase requisitions?”. Alt Text: An image showing Joule on the left, with the query text and a nine line response below it, followed by the option to expand to see the search results. On the right, an image of Joule is shown with the search results expanded to show three results, the first one called “How to Configure the Flexible Workflow for Purc…”, referring to the documentation. Each search result has a heading with three lines of explanatory text below it." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 2: Using Joule in procurement to get help from the documentation, in this case asking “Can I configure a workflow for my purchase requisitions?”. Alt Text: An image showing Joule on the left, with the query text and a nine line response below it, followed by the option to expand to see the search results. On the right, an image of Joule is shown with the search results expanded to show three results, the first one called “How to Configure the Flexible Workflow for Purc…”, referring to the documentation. Each search result has a heading with three lines of explanatory text below it.</span></span></P><P><SPAN>With SAP S/4HANA Cloud Private Edition 2023, users can also benefit from the navigational pattern for over one hundred use cases, in areas such as procurement, finance, sales, and service management. This pattern allows them to navigate directly to apps relevant to their query. You can find out more in this blog post:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/joule-for-sap-s-4hana-cloud-private-edition-a-comprehensive-setup-guide/ba-p/13786453" target="_blank">Joule for SAP S/4HANA Cloud Private Edition - A Comprehensive Setup Guide</A></SPAN></LI></UL><P><SPAN>&nbsp;</SPAN><SPAN>Furthermore, we provide some selected transactional use cases in these areas too. </SPAN></P><P><STRONG>&nbsp;</STRONG><SPAN>To find out more about Joule, have a look at the documentation:</SPAN></P><UL><LI><SPAN><A href="https://help.sap.com/docs/joule?locale=en-US" target="_blank" rel="noopener noreferrer">Joule in SAP Help Portal</A></SPAN></LI></UL><H2 id="toc-hId-855175168"><SPAN>Planned Innovations</SPAN></H2><P><SPAN>As announced at SAP TechEd on October 8th, we have many plans for making Joule even more useful for users, as well as enabling you to build your own skills to extend what SAP delivers. As always, our plans are subject to change, but of course we hope to deliver as planned.</SPAN></P><P><SPAN>Some highlights are:</SPAN></P><UL><LI><SPAN>Joule for Mobile, built into SAP Mobile Start. As announced, this is planned to become available in November 2024.</SPAN></LI><LI><SPAN>Joule studio in SAP Build for building your own skills is planned to become available for beta testing later this year, and become generally available in Q1/2025. Get a preview by watching the recording of this TechEd talk:</SPAN><SPAN><BR />-&nbsp; <A href="https://www.sap.com/events/teched/virtual/flow/sap/te24/catalog/page/catalog/session/1722394882377001d2M9" target="_blank" rel="noopener noreferrer">AD200 | Extend Joule with SAP Build and develop custom enterprise skills</A></SPAN></LI></UL><P><SPAN>Beyond that, we are working on having many Joule agents interact with each other, across our products – making Joule agentic. Also, to support hands-free interaction, we are working on integration with Siri, so that users can use voice to interact.</SPAN></P><P><SPAN>&nbsp;</SPAN><SPAN>If you haven’t watched it live, then have a look at the replay of the TechEd talk by our AI leaders:</SPAN></P><UL><LI><SPAN><A href="https://www.sap.com/events/teched/virtual/flow/sap/te24/catalog/page/catalog/session/1723060090448001R41C" target="_blank" rel="noopener noreferrer">AI100 | Artificial intelligence that creates real-world results</A></SPAN></LI></UL><H1 id="toc-hId-529578944"><SPAN>New Collaboration Capabilities</SPAN></H1><P><SPAN>With Feature Pack Stack 2 we introduce the following new collaboration capabilities.</SPAN></P><H2 id="toc-hId-462148158"><SPAN>SAP Collaboration Manager</SPAN></H2><P>SAP Collaboration Manager allows users to:</P><UL><LI>Take notes when using an application; these notes are pinned to the application, and are listed in the <EM>Relevant Chats</EM> tab when a user has that application open in the same window as the SAP Collaboration Manager.</LI><LI>Ad-hoc chat with colleagues, directly in the SAP system.</LI><LI>Share and annotate screenshots; a link is provided to the recipient with which they can navigate directly to the UI where the screenshot was taken.</LI><LI>Share the business context.</LI><LI>Upload and share files.</LI></UL><P>Figure 3 shows an example where a user Jones Davidson has created a chat with a colleague Alyssa Arnold and shared a screenshot along with a request to her to take a look at the two open sales orders in the screenshot.</P><P>For a closer look at some of the above features, watch it in action here in an SAP S/4HANA Cloud Public Editions 2308 system (what is shown is now available for SAP S/4HANA Cloud Private Edition 2023 FPS02):</P><UL><LI>Video:&nbsp;<A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_iiknwstv" target="_self" rel="nofollow noopener noreferrer">SAP Collaboration Manager</A> (2:10 minutes)</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 3: Using SAP Collaboration Manager to chat with a colleague and share a screenshot Alt Text: An image showing a list of three sales orders selected in the Manage Sales Orders app, and SAP Collaboration Manager as an overlay on the right showing the chat text and the screenshot image." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/177596iEEE0FC7E304CB6DC/image-size/large?v=v2&amp;px=999" role="button" title="03 Collaboration Manager screenshot.jpg" alt="Figure 3: Using SAP Collaboration Manager to chat with a colleague and share a screenshot Alt Text: An image showing a list of three sales orders selected in the Manage Sales Orders app, and SAP Collaboration Manager as an overlay on the right showing the chat text and the screenshot image." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 3: Using SAP Collaboration Manager to chat with a colleague and share a screenshot Alt Text: An image showing a list of three sales orders selected in the Manage Sales Orders app, and SAP Collaboration Manager as an overlay on the right showing the chat text and the screenshot image.</span></span></P><P>Beyond the above features, users can now also:</P><UL><LI>Mark their favorites, and filter by them (using the <EM>Favorites</EM> tab).</LI><LI>Set chats to unread.</LI><LI>Add and share insight cards from My Home.</LI></UL><P>These features are shown in Figure 4.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 4: On the left: SAP Collaboration Manager offers tabs for “Recent chats”, “All Chats” and “Favorites”. You see the star indicating a favorite; the blue bar on the left of the second chat indicates that it has been set to unread. On the right: an insight card added to a chat. Alt Text: An image showing two screenshots of SAP Collaboration Manager. On the left, showing “All Chats” tab with a list of three chats. The second entry in the list is marked as unread, and has a star indicating it is a favorite. On the right, showing an insight card with a vertical bar chart embedded in the chat." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/177597iE6B355A9210DC719/image-size/large?v=v2&amp;px=999" role="button" title="04 Collaboration Manager - new features.jpg" alt="Figure 4: On the left: SAP Collaboration Manager offers tabs for “Recent chats”, “All Chats” and “Favorites”. You see the star indicating a favorite; the blue bar on the left of the second chat indicates that it has been set to unread. On the right: an insight card added to a chat. Alt Text: An image showing two screenshots of SAP Collaboration Manager. On the left, showing “All Chats” tab with a list of three chats. The second entry in the list is marked as unread, and has a star indicating it is a favorite. On the right, showing an insight card with a vertical bar chart embedded in the chat." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 4: On the left: SAP Collaboration Manager offers tabs for “Recent chats”, “All Chats” and “Favorites”. You see the star indicating a favorite; the blue bar on the left of the second chat indicates that it has been set to unread. On the right: an insight card added to a chat. Alt Text: An image showing two screenshots of SAP Collaboration Manager. On the left, showing “All Chats” tab with a list of three chats. The second entry in the list is marked as unread, and has a star indicating it is a favorite. On the right, showing an insight card with a vertical bar chart embedded in the chat.</span></span></P><H2 id="toc-hId-265634653"><SPAN>Contact card integration with Microsoft Teams</SPAN></H2><P>Users can now initiate a chat or call with Microsoft Teams directly from a contact card in SAP S/4HANA Cloud Private Edition 2023 FPS02. This feature is also available for SAP S/4HANA 2023 (on-premise) with FPS02.</P><P>Figure 5 shows two examples for this: using it directly on the My Home page to contact the creator of a task, and using it to contact a customer directly out of a sales order.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 5: Two examples for how you can initiate a chat or call from a contact card via Microsoft Teams – from a To-Do card in My Home (upper image) and from a sold-to party link (lower image). Alt Text: An image showing two screenshots of popovers next to links referring to contacts -&nbsp; for the ToDo card the contact is the creator of the task, for the other one it is the sold-to-party of the sales order. Each popover contains a section for initiating a Microsoft Teams collaboration with icons for chat, audio call and video call." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/177606iBC184FFF2CD35072/image-size/large?v=v2&amp;px=999" role="button" title="05 Teams integration with contact cards.jpg" alt="Figure 5: Two examples for how you can initiate a chat or call from a contact card via Microsoft Teams – from a To-Do card in My Home (upper image) and from a sold-to party link (lower image). Alt Text: An image showing two screenshots of popovers next to links referring to contacts -&nbsp; for the ToDo card the contact is the creator of the task, for the other one it is the sold-to-party of the sales order. Each popover contains a section for initiating a Microsoft Teams collaboration with icons for chat, audio call and video call." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 5: Two examples for how you can initiate a chat or call from a contact card via Microsoft Teams – from a To-Do card in My Home (upper image) and from a sold-to party link (lower image). Alt Text: An image showing two screenshots of popovers next to links referring to contacts -&nbsp; for the ToDo card the contact is the creator of the task, for the other one it is the sold-to-party of the sales order. Each popover contains a section for initiating a Microsoft Teams collaboration with icons for chat, audio call and video call.</span></span></P><H1 id="toc-hId--59961571"><SPAN>SAP Mobile Start</SPAN></H1><P><SPAN>Users like to feel in charge, and a good way to support that is to let them define their favorites. The My Home page provides this feature and, as we saw above, the SAP Collaboration Manager has introduced this capability too.</SPAN></P><P><SPAN>Now also SAP Mobile Start lets users very easily define up to six favorites, two of which appear on the start screen next to a “See all” link to show all six. Figure 6 shows you what this looks like.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 6: SAP Mobile Start lets users define their favorite apps / tiles. Alt Text: Three screenshots of SAP Mobile Start are shown. The one on the left shows the start page, which now has a “Favorites” section at the top, above the “Latest To-Dos” and “Insights” sections. The Favorites section shows two apps, each with a KPI shown as a number; on the right it has a “See all” link. The image in the middle shows all the favorites, in this case three are listed. The image on the right shows a list of all apps which can be selected as a favorite." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/177599i532A29B61B9C829C/image-size/large?v=v2&amp;px=999" role="button" title="06 Mobile Start Favorites.png" alt="Figure 6: SAP Mobile Start lets users define their favorite apps / tiles. Alt Text: Three screenshots of SAP Mobile Start are shown. The one on the left shows the start page, which now has a “Favorites” section at the top, above the “Latest To-Dos” and “Insights” sections. The Favorites section shows two apps, each with a KPI shown as a number; on the right it has a “See all” link. The image in the middle shows all the favorites, in this case three are listed. The image on the right shows a list of all apps which can be selected as a favorite." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 6: SAP Mobile Start lets users define their favorite apps / tiles. Alt Text: Three screenshots of SAP Mobile Start are shown. The one on the left shows the start page, which now has a “Favorites” section at the top, above the “Latest To-Dos” and “Insights” sections. The Favorites section shows two apps, each with a KPI shown as a number; on the right it has a “See all” link. The image in the middle shows all the favorites, in this case three are listed. The image on the right shows a list of all apps which can be selected as a favorite.</span></span></P><P><SPAN>Find out more about this, as well as the new capability to upload and download attachments from tasks in this blog post:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-mobile-start-v1-12-release-update/ba-p/13713600" target="_blank">SAP Mobile Start V1.12 - Release Update</A></SPAN></LI></UL><P><STRONG><EM><U><SPAN>October 16th update:</SPAN></U></EM></STRONG><SPAN> <STRONG>SAP Mobile Start V2.0 is now available</STRONG>, supporting Spaces &amp; Pages to group your applications; cards from SAP Build Work Zone, standard edition; Situation Handling standard framework capabilities; and enhancements to task handling as well as optimized layouts for larger screens, as provided by foldables and tablets on Android. Check them out in this blog post:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-mobile-start-v2-0-release-update/ba-p/13871838" target="_blank">SAP Mobile Start V2.0 - Release Update</A></SPAN></LI></UL><H1 id="toc-hId--256475076"><SPAN>News for UI Developers, Web and Mobile</SPAN></H1><P><SPAN>The major news for UI developers for both web and mobile is that SAP Build now supports ABAP Cloud, and not just CAP (Cloud Application Programming model) for other programming languages such as Java and JavaScript. Get a comprehensive overview in this blog post from Michael Ameling:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/unveiling-today-sap-build-meets-abap-cloud/ba-p/13888970" target="_blank">Unveiling today: SAP Build meets ABAP Cloud!</A></SPAN></LI></UL><P><SPAN>Providing Joule skills is also a powerful way to enhance the user experience – I covered our main planned innovations there in already in the “Planned Innovations” part of the above Joule section. </SPAN></P><H2 id="toc-hId--323905862"><SPAN>News for Web Developers</SPAN></H2><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Alt Text: Image of the white UI5 logo on a blue background with the text “UI5 linter 1.0 New Release” below it." style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/177600i31360642AE792F51/image-size/medium?v=v2&amp;px=400" role="button" title="07 ui5linter_v1.png" alt="Alt Text: Image of the white UI5 logo on a blue background with the text “UI5 linter 1.0 New Release” below it." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Alt Text: Image of the white UI5 logo on a blue background with the text “UI5 linter 1.0 New Release” below it.</span></span></P><P><SPAN>The main news is that UI5 linter 1.0 has now been released and is generally available. It is a static code analysis tool which helps ensure that you have good quality code, and which saves you a lot of time debugging later by catching issues up front. It can check for problems such as the use of deprecated UI5 libraries, framework APIs etc. as well as the usage of global variables and possible CSP violations. Find out more in this blot post:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/release-of-ui5-linter-v1-0/ba-p/13880556" target="_blank">Release of UI5 linter v1.0</A></SPAN></LI></UL><P><SPAN>I would also like to point you to the updated SAP BTP Developer’s Guide, where we have now brought in user experience design advice, as well as restructuring it to cover Explore, Discover, Design, Deliver and Scale &amp; Run phases:</SPAN></P><UL><LI><SPAN><A href="https://help.sap.com/docs/btp/btp-developers-guide/btp-developers-guide" target="_blank" rel="noopener noreferrer">SAP BTP Developer’s Guide</A></SPAN></LI><LI><SPAN>If you read the guide, do spend a few minutes to give us feedback, so that we can improve it even further, by taking <A href="https://sapinsights.eu.qualtrics.com/jfe/form/SV_5t1hUTXXCVpOchU" target="_self" rel="nofollow noopener noreferrer">this survey to help us improve the guide</A>!</SPAN></LI></UL><P><SPAN>The developer’s guide recommends using SAPUI5 and SAP Fiori elements, built on OData services, for developing UIs. Should you not be able to follow this recommendation because you have existing applications using different protocols or frameworks, we have options to help you nevertheless:</SPAN></P><UL><LI><SPAN>If you have existing back-end code which cannot provide OData services, we have now released the SAPUI5 meta-data controls library sap.ui.mdc, as outlined here:</SPAN><SPAN><BR />-&nbsp; <A href="https://community.sap.com/t5/technology-blogs-by-sap/smart-choices-for-your-ui-when-to-use-sap-ui-mdc/ba-p/13869819" target="_blank">Smart choices for your UI: When to use sap.ui.mdc</A></SPAN></LI><LI><SPAN>If you already have applications written with a different UI technology, such as Angular or React, we have released Version 2.0 of our UI5 Web Components:</SPAN><SPAN><BR />-&nbsp; <A href="https://community.sap.com/t5/technology-blogs-by-sap/blast-off-ui5-web-components-2-0-is-now-live/ba-p/13744227" target="_blank">Blast Off! UI5 Web Components 2.0 is Now Live!</A></SPAN></LI></UL><P><SPAN>For friends of ABAP, we recently introduced the ability to create Fiori elements apps directly from within the ABAP Development Tools (ADT). Find out more here:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/how-to-create-a-sap-fiori-elements-application-from-within-adt/ba-p/13797232" target="_blank">How to create a SAP Fiori Elements application from within ADT?</A></SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-tools-may-2024-release-adds-closer-integration-with-abap/ba-p/13720761" target="_blank">SAP Fiori tools May 2024 release adds closer integration with ABAP Development Tools</A></SPAN></LI></UL><H2 id="toc-hId--520419367"><SPAN>News for Mobile Developers</SPAN></H2><P><SPAN>The main news for mobile developers is the latest releases of the mobile SDKs, as well as the integration of the Mobile Development Kit into SAP Build Code. Here are links to find out more:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/how-to-develop-sap-mdk-applications-in-sap-build-code/ba-p/13725637" target="_blank">How to Develop SAP MDK Applications in SAP Build Code</A></SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/streamline-sap-mdk-development-with-the-power-of-generative-ai-and-joule/ba-p/13878601" target="_blank">Streamline SAP MDK Development with the Power of Generative AI and Joule</A></SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-sdk-for-ios-24-8-0-is-now-available/ba-p/13868613" target="_blank">SAP BTP SDK for iOS 24.8.0 is now available</A></SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-sdk-for-android-24-8-0-is-now-available/ba-p/13868616" target="_blank">SAP BTP SDK for Android 24.8.0 is now available</A></SPAN></LI></UL><P><SPAN>For a deeper dive, watch the recordings of the Devtoberfest sessions on developing mobile apps:</SPAN></P><UL><LI><A href="https://www.youtube.com/watch?v=qrrVh2AewCc" target="_blank" rel="noopener nofollow noreferrer">Cross-Platform Mobile App Development with SAP Build Code and the MDK</A> (50:40 minutes)</LI><LI><A href="https://www.youtube.com/watch?v=iA6nczJx1O8" target="_blank" rel="noopener nofollow noreferrer">Craft Enterprise Apps for iOS, iPadOS, and visionOS with SAP Fiori and SAP Build Code</A> (47:16 minutes)</LI><LI><A href="https://www.youtube.com/watch?v=VZypUWUrrik" target="_blank" rel="noopener nofollow noreferrer">Build Elegant Enterprise Apps for Android with SAP Fiori and SAP Build Code</A> (45:24 minutes)</LI></UL><H1 id="toc-hId--846015591"><SPAN>Final Words</SPAN></H1><P><SPAN>I hope you are as excited about these new user experience innovations as I am! FPS02 brings quite a few additional new features beyond user experience, discover all of them here:</SPAN></P><UL><LI><SPAN><A href="https://help.sap.com/whats-new/5fc51e30e2744f168642e26e0c1d9be1?Version=2023+FPS02&amp;locale=en-US" target="_blank" rel="noopener noreferrer">What’s New Viewer for SAP S/4HANA and SAP S/4HANA Cloud Private Edition 2023 FPS02</A></SPAN></LI></UL><P><SPAN>If you like what you see here, we encourage you to upgrade to FPS02, so that you can run your business even better with SAP S/4HANA Cloud Private Edition 2023.</SPAN></P> 2024-10-10T10:16:48.127000+02:00 https://community.sap.com/t5/curitiba-blog-posts/oportunidades-capacita%C3%A7%C3%A3o-abap-fiori-e-funcional-sd/ba-p/13895542 Oportunidades!! Capacitação ABAP FIORI e FUNCIONAL SD 2024-10-10T19:40:18.262000+02:00 SimoneAzevedo https://community.sap.com/t5/user/viewprofilepage/user-id/1761631 <P><SPAN>Pessoal hoje quero compartilhar essa BIG oportunidade de uma consultoria aqui cidade. Eu comecei no mundo SAP por meio de uma capacitação similar oferecida gratuitamente como essa, pela antiga Pelissari. Sou muito grata e por isso apoio iniciativas como essa.&nbsp;Parabéns Escotta pela iniciativa.&nbsp;<BR />Então se você te interesse, essa é a sua oportunidade de se desenvolver e ingressar no universo SAP.</SPAN> <SPAN><BR /></SPAN><SPAN><BR /></SPAN><SPAN>Inscreva-se no link abaixo e junte-se à próxima turma de capacitação!</SPAN> <SPAN><BR /></SPAN><SPAN><A href="https://escotta.com/vagas/" target="_self" rel="nofollow noopener noreferrer">INCRIÇÕES AQUI</A>&nbsp;A</SPAN><SPAN>té dia 16/10/24.&nbsp;</SPAN></P> 2024-10-10T19:40:18.262000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/ui5-freestyle-development-in-sap-build-code-with-joule/ba-p/13897852 UI5 freestyle development in SAP Build Code with Joule 2024-10-14T13:26:29.509000+02:00 david_bizer https://community.sap.com/t5/user/viewprofilepage/user-id/255909 <P>SAP Build Code, which focuses on pro-code development, offers a variety of GenAI functionalties to support the development process using CAP, HANA development, as well as <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">UI5</A>.</P><P>In this blog post, I'll focus on the freestyle aspect of UI5 development, demonstrating how to get started with a freestyle UI5 application. My aim is to showcase how Joule can be used to both accelerate the development and provide support for those who may not be UI5 experts to the very fingertips.</P><P>The following simple scenario will give you a glimpse into developing applications with SAP Build Code. Using the BTP Trial version you can currently <A href="https://developers.sap.com/tutorials/build-code-setup.html" target="_blank" rel="noopener noreferrer">setup a SAP Build Code</A> instance to try Joule’s GenAI capabilities.</P><P>&nbsp;</P><H2 id="toc-hId-1051783745">Getting Started</H2><OL><LI>Open the SAP Build Lobby from the BTP Subaccount Cockpit under Services &gt; Instances and Subscriptions &gt; SAP Build Code.</LI><LI>Create a new SAP Build Code Fiori, Full-Stack, or Mobile application. For this scenario, a SAP Fiori Application is suitable.</LI><LI>Enter a project name. If no dev space exists, it will be prefilled to create a new Fiori dev space:</LI></OL><P style=" padding-left : 30px; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_0-1728895692416.png" style="width: 560px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178818iC6C9D2C431A89599/image-dimensions/560x371?v=v2" width="560" height="371" role="button" title="david_bizer_0-1728895692416.png" alt="david_bizer_0-1728895692416.png" /></span></P><P style=" padding-left : 30px; ">4. Once the project is created and the SAP Business Application Studio (BAS) dev space starts, click on the project name to open BAS.</P><P style=" padding-left : 30px; ">&nbsp;</P><H2 id="toc-hId-855270240">Creating a UI5 Application</H2><P>Create a UI5 application using the template wizard in BAS:</P><OL><LI>Go to Get Started &gt; New Project from Template &gt; SAP Fiori Generator</LI><LI>Use the Basic template to start from scratch</LI><LI>For the OData service, create a <A href="https://developers.sap.com/tutorials/cp-cf-create-destination..html" target="_blank" rel="noopener noreferrer">destination</A> to the OData V2 as an example OData connection<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_1-1728895692419.png" style="width: 558px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178816iA8C6065B9D7B37FB/image-dimensions/558x212?v=v2" width="558" height="212" role="button" title="david_bizer_1-1728895692419.png" alt="david_bizer_1-1728895692419.png" /></span></LI><LI>&nbsp;Add a view name – In my case <EM>Main</EM></LI><LI>Optionally, set the deployment configuration and add the app to the managed application router if you want to deploy and consume the app from within SAP Build Work Zone</LI></OL><P>&nbsp;</P><H2 id="toc-hId-658756735">Leveraging Joule for UI5 Development</H2><P>Recently, <A href="https://community.sap.com/t5/technology-blogs-by-sap/major-ux-update-of-joule-in-sap-build-code/ba-p/13770686" target="_blank">major UX updates</A> were introduced to the Joule capabilities, moving from mainly being able to access Joule from the Guide Center towards a single chat, where users can use different <STRONG>slash commands</STRONG> to invoke tailored Joule functionalities.</P><P>For UI5 questions and development the <STRONG>/ui5</STRONG> slash command is there to achieve this:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_2-1728895692420.png" style="width: 490px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178817i4A3047DE3115D424/image-dimensions/490x131?v=v2" width="490" height="131" role="button" title="david_bizer_2-1728895692420.png" alt="david_bizer_2-1728895692420.png" /></span></P><P>&nbsp;</P><H3 id="toc-hId-591325949">Example: Creating a Product Table</H3><P>In the yet empty project, in order to see the /ui5 slash command, we firstly need to open the controller or view that was created from the template. Afterwards, the /ui5 slash command is suggested and we can directly start with a sample prompt to show products of the OData service:</P><P style=" padding-left : 30px; text-align : justify; "><STRONG><EM>"/ui5 create a table in the main view that displays the products of the northwind service. Provide data bindings to the properties of this odata entity."</EM></STRONG></P><P>After invoking the prompt, Joule already looked up files considered important for executing the task:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_3-1728895692422.png" style="width: 558px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178819iA202485D99B31321/image-dimensions/558x184?v=v2" width="558" height="184" role="button" title="david_bizer_3-1728895692422.png" alt="david_bizer_3-1728895692422.png" /></span></P><P>In the answer, Joule provided the code in the <EM>Main.view.xml</EM>&nbsp;including the product table. Since the screenshot of the whole response is large and thus difficult to paste here, this is the code it provided :</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>&lt;mvc:View controllerName="demoapp.controller.Main" xmlns:mvc="sap.ui.core.mvc" displayBlock="true" xmlns="sap.m"&gt; &lt;Page id="page" title="{i18n&gt;title}"&gt; &lt;content&gt; &lt;Table id="productTable" items="{ path: '/Products' }"&gt; &lt;headerToolbar&gt; &lt;Toolbar&gt; &lt;Title text="Products" /&gt; &lt;/Toolbar&gt; &lt;/headerToolbar&gt; &lt;columns&gt; &lt;Column&gt; &lt;Text text="Product ID" /&gt; &lt;/Column&gt; &lt;Column&gt; &lt;Text text="Product Name" /&gt; &lt;/Column&gt; &lt;Column&gt; &lt;Text text="Quantity Per Unit" /&gt; &lt;/Column&gt; &lt;Column&gt; &lt;Text text="Unit Price" /&gt; &lt;/Column&gt; &lt;/columns&gt; &lt;items&gt; &lt;ColumnListItem&gt; &lt;cells&gt; &lt;Text text="{ProductID}" /&gt; &lt;Text text="{ProductName}" /&gt; &lt;Text text="{QuantityPerUnit}" /&gt; &lt;Text text="{UnitPrice}" /&gt; &lt;/cells&gt; &lt;/ColumnListItem&gt; &lt;/items&gt; &lt;/Table&gt; &lt;/content&gt; &lt;/Page&gt; &lt;/mvc:View&gt;</code></pre><P>&nbsp;</P><P>As you can see, the suggestions looked good, also containing data binding to 4 properties of the Products entity. That already saves some manually coding time for developers and can be further adapted to include more columns and properties.</P><P>An explanation at the end is also provided:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_4-1728895692425.png" style="width: 784px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178820i578CF484B6441D90/image-dimensions/784x182?v=v2" width="784" height="182" role="button" title="david_bizer_4-1728895692425.png" alt="david_bizer_4-1728895692425.png" /></span></P><P>Afterwards, the application can be previewed using the green play button in BAS for example. The result already looks promising:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_0-1728905655244.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178941i4184843BD7738F7C/image-size/large?v=v2&amp;px=999" role="button" title="david_bizer_0-1728905655244.png" alt="david_bizer_0-1728905655244.png" /></span></P><H2 id="toc-hId-265729725">&nbsp;</H2><H2 id="toc-hId-69216220">Formatting and adding Functionality</H2><P>Now, I wanted to format the Unit Price to make it look a little bit nicer and also display&nbsp; the sign of the Euro currency after the number. Additionally, I wanted to create a custom column with some sort of action that can be invoked on each product. So, Joule was asked again:</P><P style=" padding-left : 30px; text-align : justify; "><STRONG><EM>"/ui5 format the unit price in the table to round to 2 decimals and include an euro sign after the number. Create a formatter file with a function for this. Additionally, include another column in the table named Order where each cell is composed of a button that indicated that the user wants to buy this product. Provide a basic press event handler one of this button is pressed."</EM></STRONG></P><P>Multiple files were suggested to be adapted and/or changed, such as creating a <EM>formatter.js</EM> file to format the <EM>UnitPrice</EM> property.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_13-1728896163772.png" style="width: 602px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178835i45598A74208A193A/image-dimensions/602x301?v=v2" width="602" height="301" role="button" title="david_bizer_13-1728896163772.png" alt="david_bizer_13-1728896163772.png" /></span></P><P>On top of that, it created a column <EM>Order</EM>, a function <EM>onPressOrder </EM>in the <EM>Main.controller.js</EM> file, and a press event in the <EM>Main.view.xml</EM> in order to show an UI5 MessageToast of the order placed for a certain product:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_0-1728906281832.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178948iC6773FF8CAC87B11/image-size/large?v=v2&amp;px=999" role="button" title="david_bizer_0-1728906281832.png" alt="david_bizer_0-1728906281832.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_15-1728896283383.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178837i140DD37C091EF82D/image-size/medium?v=v2&amp;px=400" role="button" title="david_bizer_15-1728896283383.png" alt="david_bizer_15-1728896283383.png" /></span></P><P>To further add some application logic, Joule assisted to create a condition when clicking the button:</P><P style=" padding-left : 30px; text-align : justify; "><STRONG><EM>“/ui5 please change the onOrderPress function that checks if the unit price of the product is above 50 €. If this is the case, show a message dialog indicating that the products above 50 € can currently not be ordered.“</EM></STRONG></P><P>Result, only when clicking a product over 50 (€):</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_17-1728896424044.png" style="width: 549px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178839i7AC8952FB0C8131F/image-dimensions/549x214?v=v2" width="549" height="214" role="button" title="david_bizer_17-1728896424044.png" alt="david_bizer_17-1728896424044.png" /></span></P><P>&nbsp;</P><H2 id="toc-hId--127297285">Using AI-Powered Code Completion</H2><P>Besides Joule, since very recently SAP Build Code introduced code completion and suggestions directly in the editor. Therefore, we can also make use of this AI feature.In order to show this, I added a comment in the onOrderPress code and described that I want to have a confirmation dialog instead of a message toast. Shortly after, a code suggestion was directly available in the function:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_18-1728896446335.png" style="width: 573px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178840iEE72DF26E9211AA9/image-dimensions/573x217?v=v2" width="573" height="217" role="button" title="david_bizer_18-1728896446335.png" alt="david_bizer_18-1728896446335.png" /></span></P><P>I had to remove the MessageToast line of code, but besides that, it immediately worked:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_19-1728896483140.png" style="width: 402px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178841i6E83716590780560/image-dimensions/402x174?v=v2" width="402" height="174" role="button" title="david_bizer_19-1728896483140.png" alt="david_bizer_19-1728896483140.png" /></span></P><P>&nbsp;</P><H2 id="toc-hId--323810790">Understanding your Code with Joule</H2><P>Coming to the end, one more thing to highlight: Using Joule to help explaining code. As such, the following prompt was sent:&nbsp;</P><P style=" padding-left : 30px; text-align : justify; "><STRONG><EM>“/ui5 what does the main view do?”</EM></STRONG></P><P>Here is an extract of Joule’s answer, which helps to understand the code even further:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="david_bizer_20-1728896536507.png" style="width: 658px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178842iACAF908F061F0BA8/image-dimensions/658x504?v=v2" width="658" height="504" role="button" title="david_bizer_20-1728896536507.png" alt="david_bizer_20-1728896536507.png" /></span></P><P>&nbsp;</P><H2 id="toc-hId--520324295">Conclusion</H2><P>As you can see, SAP Build Code with Joule supports a variety of use cases for UI5 development, in addition to its other GenAI focus on CAP and Full-Stack development. Please keep in mind that prompt responses can vary, thus potentially leading to slighty different code proposals. Nonetheless, it's a powerful feature that can enhance your development process, whether you're an experienced UI5 developer or just getting started. Let’s see what the future brings with more and more features getting introduced!</P> 2024-10-14T13:26:29.509000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/visualise-end-to-end-progress-of-solution-using-solution-quotation-fiori/ba-p/13897989 Visualise end to end progress of Solution using Solution Quotation Fiori application 2024-10-14T20:32:13.924000+02:00 sunil1101 https://community.sap.com/t5/user/viewprofilepage/user-id/183405 <P>In today's fast-paced business environment, visibility and traceability are critical for effective decision-making. SAP’s <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F7671')/S29OP" target="_self" rel="nofollow noopener noreferrer">Manage Solution Quotation Version 2</A> app addresses this need by offering a comprehensive view of the entire solution from creation of solution quotation to porgress of each follow-up documents execution. This blog highlighting the new feature and how businesses can leverage it to optimize operations.</P><P data-unlink="true">From 2023 FPS01, new fiori app<SPAN>&nbsp;'<SPAN class=""><A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F7671')/S29OP" target="_self" rel="nofollow noopener noreferrer">Manage Solution Quotations - Version 2</A>' is availalbe to use. Using this app</SPAN>&nbsp;user can easily create new solution quotations or search or navigate to existing solution quotations. This app provides a network graph view, allowing user to track the status of a predefined set of follow-up documents such as sales orders, service orders, service contract or subscription contract. At each graphical node, like a sales order or subscription contract, you can see key details including the document ID and status&nbsp;with colour coded node of each follow-ups. </SPAN><SPAN>A focused progress monitor is available at both the solution quotation header and item levels, offering a clear view of the overall process. Users can also navigate directly to specific documents or transactions, provided they have the necessary roles for access.</SPAN></P><P><SPAN>On open of this app you will see list of solution quotations created, user can search using the default filters, also can adapt the given filters.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SQ_listReport.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178896i1679540B7C26F413/image-size/large?v=v2&amp;px=999" role="button" title="SQ_listReport.png" alt="SQ_listReport.png" /></span></SPAN></P><P>To navigate to the details page of a solution quotation, click on the respective row. <STRONG>To visualize the end-to-end progress of the solution</STRONG>, user must click the "Action" button in the corresponding solution quotation row. On click on action button it opens the fiori object page with Details, Items and Progress Monitor. In this example I have used mixed bundled product which is a&nbsp;<SPAN>combination of different configurable non configurable products. Solution Quotation has been accepted which has generated its follow-up documents( sales order, service order, service contract and subscription contract).</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SQ_objectpage.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178912i94E7E18C5D3DE9DB/image-size/large?v=v2&amp;px=999" role="button" title="SQ_objectpage.png" alt="SQ_objectpage.png" /></span></P><P>By default, it shows the progress flow of the header documents as depicted in the image above. To visualize a specific item, click on the corresponding line item, To illustrate in this example I have selected item 40, which is a subscription item.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-10-14 at 4.20.15 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178914i451A76B95899529A/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-10-14 at 4.20.15 PM.png" alt="Screenshot 2024-10-14 at 4.20.15 PM.png" /></span></P><P>As you progress with specific documents, such as sales documents, you can visualize the further documents like outbound delivery and invoice. For example I have created billing documents for Subscription item and Service Contract, user can visualise end to end progress of header and items.&nbsp;</P><P><STRONG>Tips</STRONG>:The Progress Monitor UI offers useful controls in the right corner. Users can zoom in or zoom out, and clicking on 'Enter Full Screen' will expand the view for better visualization. Users can also highlight a particular document's flow by clicking on the document (node), as shown in the image below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-10-16 at 1.19.17 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/179640iA49A93E0986ADA0D/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-10-16 at 1.19.17 AM.png" alt="Screenshot 2024-10-16 at 1.19.17 AM.png" /></span></P><P>Another useful control is 'Expand All' and 'Collapse All.' As your document set grows, you can collapse all and expand only the documents you want to track. For example, here I have collapsed all documents and expanded the Service Contract flow.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-10-16 at 1.34.23 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/179649i7980A960C342FEDA/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-10-16 at 1.34.23 AM.png" alt="Screenshot 2024-10-16 at 1.34.23 AM.png" /></span></P><P><STRONG>Navigate to Documents from Progress Monitor:</STRONG> To navigate, the user can click on a node, which will display a set of buttons. By clicking the "Navigate to Document" button, the available navigation options(hyperlinks) will be shown depending on the user's authorizations. On click on hyperlink you can navigate from progress monitor to correponding documents. Similalry you can explore other interactive feature by clicking on button like Expand/Collapse, Node Details and Collapse Path.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-10-14 at 4.32.52 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178928iB734CD5CA0C5A0A3/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-10-14 at 4.32.52 PM.png" alt="Screenshot 2024-10-14 at 4.32.52 PM.png" /></span></P><P>Navigation of Sales Documents&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-10-16 at 1.41.15 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/179650iC2C21C54AF8D69C4/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-10-16 at 1.41.15 AM.png" alt="Screenshot 2024-10-16 at 1.41.15 AM.png" /></span></P><P>In summary, the SAP&nbsp; Manage Solution Quotation version 2 app offers a user-friendly interface for managing and tracking solution quotations.&nbsp;The SAP solution quotation progress monitor enhances business efficiency by providing full visibility into the solution, enabling faster decision-making and improved collaboration. This streamlined process helps organizations reduce errors, accelerate decision making, and optimize resource allocation, driving overall business growth.</P><P><EM>Stay tune for my next blog post I will try to explain the other features of Solution Business. I will be grateful to see your feedback on this blog post also let me know if you expect specific blog post on other offering of Manage Solution Quotation application or Solution Business.</EM></P> 2024-10-14T20:32:13.924000+02:00 https://community.sap.com/t5/technology-blogs-by-members/sap-fiori-custom-variant-migration-a-step-by-step-guide/ba-p/13899033 SAP Fiori Custom Variant Migration: A Step-by-Step Guide 2024-10-15T06:53:58.460000+02:00 RemiKaimal https://community.sap.com/t5/user/viewprofilepage/user-id/405 <P><STRONG>SAP Fiori Custom Variant Migration: A Step-by-Step Guide</STRONG></P><P>Migrating custom variants in SAP Fiori is crucial for maintaining a seamless user experience, especially when upgrading or moving configurations between environments. In this blog, I will walk you through the process of migrating custom variants, highlighting each step with screenshots for better understanding.<BR /><BR /><STRONG>Introduction to SAP Fiori Custom Variant Migration</STRONG></P><P>SAP Fiori custom variants are configurations that allow users to personalize their apps by saving filter settings, layouts, and other preferences. Migrating these custom variants ensures that users retain their personalized settings across different systems or environments.</P><P><STRONG>Why Migrate Custom Variants?</STRONG></P><UL><LI>To maintain consistent user experience across environments</LI><LI>To simplify the process of upgrading or moving to a new SAP environment</LI><LI>To avoid manual reconfiguration after migration</LI></UL><P><BR /><STRONG>Prerequisites<BR />Exporting Custom Variants from the Source System<BR /></STRONG>To migrate custom variants, you must first export them from the source system.<BR />Follow these steps:</P><P><STRONG>Step 1: Open the SAP Fiori Launchpad</STRONG></P><UL><LI>Log into your SAP Fiori Launchpad on the source system.</LI><LI>Navigate to the app where your custom variants are configured.</LI></UL><P><STRONG>Step 2: Access the Custom Variant Management</STRONG></P><UL><LI>Click on the filter icon or other settings icons where the variant settings are accessible.</LI><LI>Select the "Manage Variants" option.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RemiKaimal_0-1728967653024.png" style="width: 242px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/179323iC41C10B552444E7F/image-dimensions/242x375?v=v2" width="242" height="375" role="button" title="RemiKaimal_0-1728967653024.png" alt="RemiKaimal_0-1728967653024.png" /></span><P>&nbsp;</P></LI></UL><P><STRONG>Step 3: Export the Custom Variant</STRONG></P><UL><LI>In the Variant Management dialog, locate the export option (this might be labeled differently based on the app or version).</LI><LI>Select the custom variant you want to export.</LI><LI>Click the "Export" button and save the file to your local system.</LI></UL><P><STRONG>Note:</STRONG> The exported file will typically be in XML or JSON format, which will be used for importing on the target system.</P><OL><LI><STRONG>Importing Custom Variants to the Target System</STRONG></LI></OL><P>Now that you have exported the custom variants, it's time to import them into the target system.</P><P><STRONG>Step 1: Log into the Target System's Fiori Launchpad</STRONG></P><UL><LI>Ensure you have access to the same app on the target system.</LI><LI>Open the Fiori Launchpad and navigate to the relevant app.</LI></UL><P><STRONG>Step 2: Access the Import Functionality</STRONG></P><UL><LI>Go to the variant management dialog, similar to the source system.</LI><LI>Locate the "Import" option.</LI></UL><P><STRONG>Step 3: Upload the Exported File</STRONG></P><UL><LI>Click the "Import" button and select the file you exported earlier.</LI><LI>Confirm the import, and the custom variant will be added to the target system.</LI></UL><P><STRONG>Tip:</STRONG> Ensure there are no naming conflicts. If a variant with the same name already exists, consider renaming it before importing.</P><OL><LI><STRONG>Verify the Migration</STRONG></LI></OL><P>Once the import is complete, verify that the custom variants have been correctly migrated. Follow these steps:</P><UL><LI>Access the app on the target system.</LI><LI>Check if the variants appear as expected.</LI><LI>Test the settings to confirm they match those from the source system.</LI></UL><OL><LI><STRONG>Troubleshooting Common Issues</STRONG></LI></OL><P>Here are some common problems you might encounter during the migration process and how to resolve them:</P><P><STRONG>Issue 1: Import/Export Button Not Visible</STRONG></P><UL><LI>Ensure you have the correct authorization.</LI><LI>Check if Variant Management is enabled for that particular app.</LI></UL><P><STRONG>Issue 2: Exported File Format Is Not Supported</STRONG></P><UL><LI>Verify that both the source and target systems are compatible.<BR />Check for SAP Notes or updates that address this issue.</LI></UL><P><STRONG>Conclusion<BR /></STRONG>Migrating custom variants in SAP Fiori can save a lot of time and effort, especially when moving to a new environment or upgrading your systems. By following the steps outlined in this guide, you can ensure a smooth migration process.</P><P>Hoping with blog a basic overview of variant migration has been covered<BR />Looking forward in reading comment(s) on the issues not listed in this blog you have encountered during migration.<BR /><BR />Happy Migration! Cheers!<BR /><EM>PS: Screen shots have been minimized in order to hide system data</EM></P> 2024-10-15T06:53:58.460000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-mobile-start-v2-0-release-update/ba-p/13871838 SAP Mobile Start V2.0 - Release Update 2024-10-15T08:28:09.290000+02:00 ThiloBerndt https://community.sap.com/t5/user/viewprofilepage/user-id/165819 <P>With the latest release of SAP Mobile Start, you get significant enhancements that will make your usage of SAP Mobile Start even more enjoyable and efficient.&nbsp;Besides Spaces &amp; Pages and declarative integration cards from SAP Build Work Zone, standard edition, you will also get some nice enhancements for tasks.&nbsp;</P><P><STRONG>Spaces &amp; Pages&nbsp;</STRONG><STRONG>– New Experience</STRONG><BR />Introduced for the web some time back, we now support Spaces &amp; Pages also in SAP Mobile Start. This comes with several advantages for you, like an improved organization and categorization of your content - as you do know already from the web. You get a more structured view of your applications and information, making it easier to locate and access your relevant resources quickly.&nbsp;<BR />If you use groups to structure your apps, your groups will also be shown on sub-pages on the Apps screen in the future, what significantly improves user experience.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot 2024-09-20 at 11.27.57.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/168960i67671701EB330FBC/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-09-20 at 11.27.57.png" alt="Screenshot 2024-09-20 at 11.27.57.png" /></span><SPAN>Screenshot: Spaces &amp; Pages</SPAN></P><P><STRONG>Cards </STRONG><STRONG><BR /></STRONG>So far, SAP Mobile Start has supported insight cards from SAP Start. With the release 2.0, we do support the “New Experience” of SAP Build Work Zone, standard edition and you will get your <A href="https://ui5.sap.com/test-resources/sap/ui/integration/demokit/cardExplorer/webapp/index.html#/overview/cardTypes" target="_blank" rel="noopener noreferrer">declarative integration cards</A>, embedded in the respective pages on the Apps screen. By tapping on the card, you navigate into the card details. Depending on the functional scope of a card, actions can be directly triggered from it. If you do use cards in SAP Build Work Zone, standard edition already, then they will automatically appear for you within the SAP Mobile Start version 2.0.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot 2024-09-20 at 11.27.54.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/168961iB0AF0C795A5C1ED9/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-09-20 at 11.27.54.png" alt="Screenshot 2024-09-20 at 11.27.54.png" /></span></P><P>&nbsp;</P><P style=" text-align: center; ">Screenshot: Cards from SAP Build Work Zone, standard edition</P><P><STRONG>SAP S/4HANA Situations Handling</STRONG><BR />Situation Handling informs you about situations that need your attention. This includes for example upcoming deadlines, delays, expiring contracts, and so on.&nbsp;With SAP Mobile Start version 2.0, we now also support the standard framework capabilities of Situation Handling. You always find your latest situations in your Latest To-Dos section on the Start screen and all situations on the To-Dos screen.</P><P><STRONG>Tasks<BR /></STRONG>Tasks are one key element of SAP Mobile Start as they ensure that you are always on top of your relevant business workflows. Task-based notifications and widgets help to ensure that you never oversee or forget an important task.&nbsp;With the latest version of SAP Mobile Start, you can see URL attachments for tasks in the new links section within the attachments on the task details screen. By tapping on the link, the respective link is opened in a new window. Typical links are a link to a document stored on a file server or a link to an ISO document.</P><P>With version 2.0, the app also supports non-finalising actions for tasks. Those are mainly relevant for tasks that come from partner solutions. <SPAN>With a non-finalizing task action you can update the task without complete it</SPAN>. Typical non-finalising actions are to increase a task priority or change the task status.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot 2024-09-20 at 11.27.52.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/168964i70670A0A8F96CD5F/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-09-20 at 11.27.52.png" alt="Screenshot 2024-09-20 at 11.27.52.png" /></span><SPAN>&nbsp;</SPAN><SPAN>Screenshot: Non-finalising actions for tasks</SPAN></P><P>Finally, you get a new To-Dos detail page layout for Android! It was specifically designed for larger screens like tablets and foldable devices. With the booming market for foldables and tablets on Android, there's a growing need to optimize our layouts for larger screens.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot 2024-09-20 at 11.27.48.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/168965i7420CBDFFBCC1853/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-09-20 at 11.27.48.png" alt="Screenshot 2024-09-20 at 11.27.48.png" /></span><SPAN>Screenshot: Task details large screen on Android&nbsp;</SPAN></P><P>I hope you will enjoy those new features in SAP Mobile Start.<BR /><BR />For further information on the new topics, please check our SAP Mobile Start&nbsp;<SPAN><A href="https://help.sap.com/docs/mobile-start?locale=en-US" target="_blank" rel="noopener noreferrer">documentation</A></SPAN>.</P><P>SAP Mobile Experience offers intelligent native mobile solutions that help businesses build more efficient, resilient and sustainable end-to-end processes, improving people’s work life wherever they are.</P><P>Visit&nbsp;<SPAN><A href="https://community.sap.com/topics/mobile-experience" target="_blank">SAP Mobile Experience Community Page</A></SPAN>&nbsp;and click “follow” to get the&nbsp;latest&nbsp;development and innovation of our solutions.&nbsp;We look forward to hearing about your experience with setting up the solution in your landscape; please do share your thoughts and comments below.&nbsp;<SPAN><A href="https://answers.sap.com/questions/ask.html?primaryTagId=73554900100800003452&amp;additionalTagId=246015353107843540080736084568477" target="_blank" rel="noopener noreferrer">Enter here&nbsp;</A></SPAN>for additional questions regarding SAP Mobile Experience Applications.</P><P>Want to be notified? Check your&nbsp;<SPAN><A href="https://people.sap.com/#communications" target="_blank" rel="noopener noreferrer">profile settings&nbsp;</A></SPAN>to ensure you have your settings activated.</P> 2024-10-15T08:28:09.290000+02:00 https://community.sap.com/t5/human-capital-management-blogs-by-sap/how-sap-manages-its-early-talent-programs-get-insights-by-joining-our-cei/ba-p/13897921 How SAP manages its Early Talent programs – Get insights by joining our CEI project 2024-10-15T16:18:08.281000+02:00 SchiwekM https://community.sap.com/t5/user/viewprofilepage/user-id/168806 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SchiwekM_2-1728895726885.png" style="width: 613px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178831iC39828DE51DFC79B/image-dimensions/613x235?v=v2" width="613" height="235" role="button" title="SchiwekM_2-1728895726885.png" alt="SchiwekM_2-1728895726885.png" /></span></P><P style=" text-align : justify; "><SPAN>SAPs Vocational Training (VT) department, responsible for training SAP’s apprentices and dual students, uses SAP SuccessFactors for its processes. However, there are apprentice and student specific processes not covered by SAP SuccessFactors, for which the VT department used custom solutions and many spreadsheets in the past. This caused redundancies, data flow gaps, a lack of transparency and a resource intensive reporting. </SPAN></P><P style=" text-align : justify; "><SPAN>As dual students &amp; apprentices ourselves, we wanted to solve those challenges and make our own lives easier, by developing a solution covering the unique requirements for early talent management and connecting it with the data from SAP SuccessFactors, providing a unified overview for students, trainers and managers alike.</SPAN></P><P style=" text-align : justify; "><SPAN>Our internal Early Talent Management solution is built from the ground up on <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Business+Technology+Platform/pd-p/73555000100700000172" class="lia-product-mention" data-product="1215-1">SAP Business Technology Platform</a>, tightly integrated into SAP SuccessFactors, with now over 20 Fiori applications, covering most of the requirements of SAPs 14 VT programs from around the globe. We use the solution at SAP since mid 2022 and are currently evaluating if it could also be used to manage our interns.</SPAN></P><P style=" text-align : justify; "><SPAN>With <A href="https://influence.sap.com/sap/ino/#/campaign/3807" target="_self" rel="noopener noreferrer">this</A> <A href="https://influence.sap.com/" target="_blank" rel="noopener noreferrer">Customer Engagement Initiative</A> we’d like to share insights about the capabilities of our solution and evaluate if our internal solution might also be suitable for customer use cases in a potential future solution.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SchiwekM_1-1728895547639.png" style="width: 507px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/178814i8178FFB832F487EC/image-dimensions/507x285?v=v2" width="507" height="285" role="button" title="SchiwekM_1-1728895547639.png" alt="SchiwekM_1-1728895547639.png" /></span></P><P><FONT size="5"><STRONG><SPAN>Form of activities</SPAN></STRONG></FONT></P><P style=" text-align : justify; "><SPAN>The final form of activities depends on the participants preferences. We currently plan:</SPAN></P><UL style=" text-align : justify; "><LI><STRONG><SPAN>Initial call</SPAN></STRONG><SPAN> (1h) in December 2024 to give an initial overview about the solutions capabilities as well as the timeline of the CEI project.</SPAN></LI><LI><SPAN>Throughout January till June 2025 <STRONG>deep dives (1-2h)</STRONG> into specific capability areas of the solution, including time for Q&amp;A and feedback as well as discussing challenges you currently face. Our capability areas include:</SPAN><UL><LI><SPAN>Student &amp; Cohort management</SPAN></LI><LI><SPAN>Work (Rotation) assignment &amp; management</SPAN></LI><LI><SPAN>Conversion process for students into full-time positions</SPAN></LI><LI><SPAN>Academics &amp; grade reporting by students</SPAN></LI><LI><SPAN>Extracurricular activities for students</SPAN></LI><LI><SPAN>Scientific papers &amp; a small paper book library system</SPAN></LI></UL></LI><LI><SPAN>Furthermore, we’d like to offer two sessions (1-2h) focused on your current challenges in the following two areas to get a more holistic understanding of them:</SPAN><UL><LI><SPAN>Apprentice handling including the Apprentice report book (Berichtsheft)</SPAN></LI><LI><SPAN>Functionalities required for managing interns</SPAN></LI></UL></LI><LI><STRONG><SPAN>Closing call</SPAN></STRONG><SPAN> (1h) in Q3 2025</SPAN></LI></UL><P style=" text-align : justify; "><FONT size="5"><STRONG><SPAN>Prerequisites</SPAN></STRONG></FONT></P><P style=" text-align : justify; "><SPAN>Customers and partners should use or plan to use <a href="https://community.sap.com/t5/c-khhcw49343/SAP+SuccessFactors+Employee+Central/pd-p/73555000100800000773" class="lia-product-mention" data-product="160-1">SAP SuccessFactors Employee Central</a>&nbsp;and be familiar with apprenticeships, internships, co-op student or Vocational Training programs</SPAN></P><P style=" text-align : justify; "><STRONG><SPAN>Register for our CEI project ‘<A href="https://influence.sap.com/sap/ino/#/campaign/3807" target="_blank" rel="noopener noreferrer">SAP Early Talent Management</A>’ from October 14th till November 15th, 2024.</SPAN></STRONG></P><P style=" text-align : justify; "><SPAN>Once the registration process is finalized, we invite participants to the initial call to go through the project scope and timelines.</SPAN></P><P><SPAN>We are looking forward to meet you in December. <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></SPAN></P> 2024-10-15T16:18:08.281000+02:00 https://community.sap.com/t5/application-development-blog-posts/sap-developer-news-october-17th-2024/ba-p/13902922 SAP Developer News, October 17th, 2024 2024-10-17T21:00:00.023000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fg4It7Eeisu8%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dg4It7Eeisu8&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fg4It7Eeisu8%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="600" height="337" scrolling="no" title="CAP Sept, Fiori Innovation, Cloud Integration, Flexso Tech Day, Devtoberfest | SAP Developer News" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P><STRONG><SPAN>ITEMS</SPAN></STRONG></P><P><STRONG><SPAN>SAP Cloud Application Programming Model September 2024 Release</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Details in Capire </SPAN><A href="https://cap.cloud.sap/docs/releases/sep24" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://cap.cloud.sap/docs/releases/sep24</SPAN></A> <SPAN>&nbsp;</SPAN></LI></UL><P><STRONG><SPAN>SAP Fiori Innovation Day</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>SAP Fiori Innovation Day </SPAN><A href="https://events.sap.com/eur/sap-fiori-innovation-day-heidelberg-2024/en/home" target="_blank" rel="noopener noreferrer"><SPAN>https://events.sap.com/eur/sap-fiori-innovation-day-heidelberg-2024/en/home</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><P><STRONG><SPAN>SAP Cloud Integration News</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Message Status Overview in Cloud Integration </SPAN><A href="https://help.sap.com/docs/cloud-integration/sap-cloud-integration/monitor-message-status-overview" target="_blank" rel="noopener noreferrer"><SPAN>https://help.sap.com/docs/cloud-integration/sap-cloud-integration/monitor-message-status-overview</SPAN></A><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>SMB Adapter in Cloud Integration </SPAN><A href="https://api.sap.com/package/SMBAdapterforSAPIntegrationSuite/overview" target="_blank" rel="noopener noreferrer"><SPAN>https://api.sap.com/package/SMBAdapterforSAPIntegrationSuite/overview</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>Message Transform utilities in Cloud Integration </SPAN><A href="https://api.sap.com/package/com.sap.integration.cloud.utilities.MessageTransformations/overview" target="_blank" rel="noopener noreferrer"><SPAN>https://api.sap.com/package/com.sap.integration.cloud.utilities.MessageTransformations/overview</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><P><STRONG><SPAN>Flexso Tech Day 2024</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Event website </SPAN><A href="https://www.flexso.com/en/events/tech-day-2024" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://www.flexso.com/en/events/tech-day-2024</SPAN></A> <SPAN>&nbsp;</SPAN></LI></UL><P><STRONG><SPAN>Devtoberfest Week 4</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Devtoberfest sessio¡n calendar </SPAN><A href="https://community.sap.com/t5/devtoberfest/eb-p/devtoberfest-events?calendar=true" target="_blank"><SPAN>https://community.sap.com/t5/devtoberfest/eb-p/devtoberfest-events?calendar=true</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>Devtoberfest contest </SPAN><A href="https://community.sap.com/t5/devtoberfest-blog-posts/devtoberfest-2024-contest/ba-p/13781593" target="_blank"><SPAN>https://community.sap.com/t5/devtoberfest-blog-posts/devtoberfest-2024-contest/ba-p/13781593</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>================================================================================</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG>CHAPTER TITLES&nbsp;&nbsp;</STRONG></P><P><SPAN>0:00 Intro</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>0:07 SAP Cloud Application Programming Model September 2024 Release</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>2:28 SAP Fiori Innovation Day</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>3:10 SAP Cloud Integration News</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>4:26 Flexso Tech Day 2024</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>5:22 Devtoberfest Week 4</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG>TRANSCRIPT</STRONG></P><P>[Ajay] Hello, developers, September 2024 release of CAP is now available. The first update is about analytics for Capire Matomo is used to collect anonymized usage data for Capire, and users will have the option to disable the tracking. Coming to the Node.js updates, you can now import type definitions generated by the CDS typer on the top level code, even in the test code. Now we have richer JavaScript and TypeScript snippets in the compiler, which can now carry type information, allowing you to get a better insight into the APIs used there. Instance-based restrictions for bound actions and functions are now also enforced. SAP Cloud Application Event Hub is the new default offering for messaging in SAP Business Technology Platform, Integrating with SAP Cloud Application Event Hub is provided via a CDS plugin <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/163398">@cap</a>-js/event-broker. Moving on to Java updates, we have enhancement to the code generator, where we now have stricter setters in the accessor interfaces. Accessor interfaces now offer the new factory method to access the data in the given map. Monitoring health status of MTX Sidecar is enabled with a new health indicator model provider. Parameter aliases in OData V4 for the entity key values and function parameter values are now also supported. You can easily add handler stubs using add handler CLI command in Java. A new serious property, ui5.version allows you to configure UI5 versions used by the Fiori preview. Finally, in the tools update, we have got beta release to visualize deployment descriptor mta.yaml file. This helps you to get a graphical overview of your microservices architecture and the interplay between the application and the services. This also works as a visual linter. There are two new experimental CDS lint checks, sql-null-comparison and no-java-keywords. For more details, please check the links provided in the description.</P><P>[Nico] Hi everyone, and welcome to the SAP Developer News. The SAP Fiori Innovation Day will happen on November 19th in Heidelberg, Germany in the SAP App Haus, interestingly the same location we were at for SAP TechEd Virtual a couple of weeks ago. The SAP Fiori Innovation Day is open for everyone, and it will be a packed day with content about the SAP Fiori design system, SAP Fiori elements, AI of course, and it will also contain partner sessions. There will also be a hands-on session about the SAP Fiori elements flexible programming model. Check out the link in the description for more information and to register. See you. Bye.</P><P>[Antonio] Hola, SAP developers. I have some exciting news to share with you today. The message status overview that we are so used to in SAP PI/PO is now available in SAP Integration Suite. The message status overview page provides a customizable overview of the messages process and their statuses in a selected time frame, as well as quick navigation to and from the message monitoring in your tenant. Also, there is a new adapter available to us in Cloud Integration. This is the SMB adapter, which will allow you to connect to a server using the SMB protocol, meaning that we can interact with an SMB server and read and write files. This is especially relevant for those on-premises integration scenarios. And finally, there is now an alternative solution in Cloud Integration to the MessageTransformBean adapter module that we often use in SAP PI/PO to aid with the transformation of the message during the runtime. It is in the form of Groovy scripts, which support most of the features that existed on the MTB module. Make sure to check it out. Ciao.</P><P>[DJ] If you're in or can get to the Brussels / Mechelen area of Belgium in early November, then there's a Tech Day happening on the latest SAP tools and technologies. Flexo Tech Day 2024 is happening on Thursday, the 7th of November. And following the welcome and keynote, There are sessions across three separate tracks, analytics and integration, extensions, and there's also a trending track. Now, the full agenda is online. The day is open to everyone, but spaces are limited. So head on over to the website to register. And at the end of the day, there's gonna be a beer tasting, mostly because the day is being held in a brewery. What's not to like? I'll be there. See you there too.</P><P>[Nico] Hi everyone, and welcome to the SAP Developer News. We're just wrapping up week three of Devtoberfest, which means there's just one week left for Devtoberfest 2024. So next week we'll have five more days of packed content, all about SAP development. So on Monday, it will be ABAP and CAP again. On Tuesday, Tooling Tuesday, we'll talk about the SAP Build family. Wednesday is Integration Day. On Thursday we talk about MAD, which is machine learning, AI and data. And Friday will be Frontend Friday as well as Fun Friday. And for Fun Friday next week there will be Spooktoberfest, so expect a spooky day. Overall, next week I counted 24 sessions scheduled, that's a lot of content and it's great content too. We hope to see many more familiar faces as well as new faces. Welcome if you're new to this channel. Now's your chance to earn points in the Devtoberfest gameboard and to progress towards Nerdvana, which would qualify you for the Devtoberfest grand prize. So hope to see you around and see you next time.</P> 2024-10-17T21:00:00.023000+02:00 https://community.sap.com/t5/technology-blogs-by-members/dynamically-handling-odata-metadata-in-a-fiori-freestyle-application/ba-p/13904293 Dynamically Handling OData Metadata in a Fiori Freestyle Application 2024-10-18T16:38:59.422000+02:00 prashanth01 https://community.sap.com/t5/user/viewprofilepage/user-id/517603 <P>When developing SAP Fiori applications, especially <STRONG>Freestyle apps</STRONG>, developers sometimes need to manipulate the metadata fetched from OData services. In this blog post, I will walk you through how to modify OData service metadata properties dynamically in Component.js—specifically, how to <STRONG>customize label values based on the current date</STRONG>.</P><P>This is particularly useful when working with <STRONG>price forecasts</STRONG> or time-bound data, where metadata labels must reflect the period they represent (e.g., Month-Price, Month-Std Price).</P><P>Additionally, I’ll demonstrate how to leverage <STRONG>SAPUI5 lifecycle methods</STRONG>, modify OData annotations at runtime, and integrate it smoothly into your app logic.</P><P><STRONG>Creating the CDS View</STRONG></P><P>To expose your <STRONG>forecast data</STRONG> as OData, start by creating a <STRONG>CDS view</STRONG> in your backend system. This CDS will contain fields such as:</P><UL><LI>Mnt1YearPrice</LI><LI>Mnt1YearStdPrice</LI><LI>Mnt1YearPriceList</LI><LI>Mnt1YearPpv</LI><LI>Mnt1YearStdFright</LI><LI>These fields represent forecast values that will be updated dynamically in your <STRONG>Fiori app</STRONG> based on the current month.</LI></UL><P><STRONG>Example CDS Code:</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="72ac492c-b14c-4175-aa88-40e74a90cd43.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/180935i9C8DB8CA7E6AC1BA/image-size/medium?v=v2&amp;px=400" role="button" title="72ac492c-b14c-4175-aa88-40e74a90cd43.png" alt="72ac492c-b14c-4175-aa88-40e74a90cd43.png" /></span></P><P><STRONG>Explanation</STRONG>:</P><UL><OL><LI><STRONG><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1599241">@odata</a>.publish: true</STRONG>: This annotation will expose the CDS as an OData service.</LI><LI><STRONG>SQL View</STRONG>: The view pulls forecast data from the <STRONG>zforecast_table</STRONG> table.</LI></OL></UL><P><STRONG>Creating the SEGW Project</STRONG></P><P>Once the CDS is ready, you need to create a <STRONG>SEGW (SAP Gateway Service Builder) project</STRONG> to expose it as an <STRONG>OData service</STRONG>.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SEGW.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/180939i0A5CFFD8726CE902/image-size/large?v=v2&amp;px=999" role="button" title="SEGW.png" alt="SEGW.png" /></span></P><P><STRONG>Enhancing the MPC_EXT Class</STRONG></P><P>In the MPC_EXT class, you can define methods to manipulate metadata properties dynamically. This is particularly useful for updating labels based on the current date.<BR />I am just adding a sample code&nbsp; you can change based on the requirement&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>METHOD define. super-&gt;define( ). "Ensure you call the parent metadata DATA: lo_entity_type TYPE REF TO /iwbep/if_mgw_odata_entity_typ, lo_property TYPE REF TO /iwbep/cl_mgw_odata_property, lo_annotation TYPE REF TO /iwbep/if_mgw_odata_annotation. lo_entity_type = model-&gt;get_entity_type( iv_entity_name = 'ZCDS_PTP_FORECASTType'). "Your Entity Name CALL METHOD lo_property-&gt;/iwbep/if_mgw_odata_annotatabl~create_annotation EXPORTING iv_annotation_namespace = /iwbep/if_mgw_med_odata_types=&gt;gc_sap_namespace RECEIVING ro_annotation = lo_annotation. lo_property ?= lo_entity_type-&gt;get_property( iv_property_name = 'Mnt1YearPrice'). "Property inside your Entity CALL METHOD lo_property-&gt;/iwbep/if_mgw_odata_annotatabl~create_annotation EXPORTING iv_annotation_namespace = /iwbep/if_mgw_med_odata_types=&gt;gc_sap_namespace RECEIVING ro_annotation = lo_annotation. lo_annotation-&gt;add( iv_key = 'label' iv_value = 'Month1curyear' ). "Specific annotation you want to add. lo_annotation-&gt;add( iv_key = 'label' iv_value = 'Mnt2YearPrice' ). "Specific annotation you want to add. lo_property ?= lo_entity_type-&gt;get_property( iv_property_name = 'Mnt2YearStdPrice'). "Property inside your Entity Month 02 02 CALL METHOD lo_property-&gt;/iwbep/if_mgw_odata_annotatabl~create_annotation EXPORTING iv_annotation_namespace = /iwbep/if_mgw_med_odata_types=&gt;gc_sap_namespace RECEIVING ro_annotation = lo_annotation. "Specific annotation you want to add. lo_annotation-&gt;add( iv_key = 'label' iv_value = 'Mnt3YearPrice' ). "Specific annotation you want to add. lo_property ?= lo_entity_type-&gt;get_property( iv_property_name = 'Mnt3YearStdPrice'). "Property inside your Entity 02 CALL METHOD lo_property-&gt;/iwbep/if_mgw_odata_annotatabl~create_annotation EXPORTING iv_annotation_namespace = /iwbep/if_mgw_med_odata_types=&gt;gc_sap_namespace RECEIVING ro_annotation = lo_annotation. lo_annotation-&gt;add( iv_key = 'label' iv_value = 'Mnt3YearStdPrice' ). "Specific annotation you want to add. ENDMETHOD. </code></pre><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Consuming the OData Service in Fiori App<BR /></STRONG></P><UL><LI>Once the <STRONG>OData service</STRONG> is available, we bind it to our <STRONG>Fiori app</STRONG> via manifest.json and use <STRONG>Component.js</STRONG> to manipulate metadata labels based on the current month.<BR />Code in Component.js<BR /><BR /></LI></UL><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>init: function () { // Call the base component's init function UIComponent.prototype.init.apply(this, arguments); // Initialize routing this.getRouter().initialize(); // Set device model this.setModel(models.createDeviceModel(), "device"); // Get OData model and attach metadata loaded event var oModel = this.getModel("forecastService"); oModel.attachMetadataLoaded(function (data) { var oFormat = sap.ui.core.format.DateFormat.getInstance({ pattern: "MMM-yyyy", UTC: true }); var oDate = new Date(); // Loop through entity properties to modify labels var aProperties = data.getParameters().metadata.oMetadata.dataServices.schema[0].entityType[0].property; for (var i = 0; i &lt; aProperties.length; i++) { var sDate = oFormat.format(oDate); var oLabel = aProperties[i].extensions.find(function (ext) { return ext.name === "label"; }); if (oLabel) { switch (aProperties[i].name) { case "Mnt1YearStdPrice": oLabel.value = sDate + " - Std Price"; break; case "Mnt1YearPriceList": oLabel.value = sDate + " - Price List"; break; case "Mnt1YearPpv": oLabel.value = sDate + " - PPV"; break; case "Mnt1YearStdFright": oLabel.value = sDate + " - Standard (Freight &amp; Duty)"; break; default: oLabel.value = sDate; } } } }); } ​</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>In the Component.js file, we’ll modify the metadata labels dynamically based on the <STRONG>current month</STRONG>.<BR /><BR /></P><P><STRONG>Explanation</STRONG>:</P><OL><LI><STRONG>attachMetadataLoaded</STRONG>: Ensures the code runs after metadata is loaded.</LI></OL><P><STRONG>Label Manipulation</STRONG>: Updates each property’s label based on the <STRONG>current month</STRONG>.<BR /><STRONG>Sample OUTPUT:</STRONG><BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="OutPut.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/180938iF454C2D54D1E7A88/image-size/large?v=v2&amp;px=999" role="button" title="OutPut.png" alt="OutPut.png" /></span></P><P><STRONG>Conclusion</STRONG></P><P>In this blog, we cover how to:</P><OL><UL><LI><STRONG>Create a CDS view</STRONG> for forecast data.</LI><LI><STRONG>Expose the CDS via SEGW</STRONG> as an OData service.</LI><LI><STRONG>Consume the OData service</STRONG> in a Fiori Freestyle app.</LI><LI><STRONG>Manipulate metadata dynamically</STRONG> in Component.js based on the current month.</LI></UL></OL><P><STRONG>&nbsp;</STRONG></P> 2024-10-18T16:38:59.422000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/large-screen-design-and-implementation-at-sap-mobile-start/ba-p/13872349 Large Screen Design and Implementation at SAP Mobile Start 2024-10-23T10:13:31.140000+02:00 Laura_Bergmann https://community.sap.com/t5/user/viewprofilepage/user-id/1422700 <P><SPAN>We are very excited to announce the introduction of our new to-do details page layout for Android in our latest 2.0 release! <span class="lia-unicode-emoji" title=":party_popper:">🎉</span> It was specifically designed for larger screens like tablets and foldable devices. With the booming market for foldables and tablets on Android, there's a growing need to optimize our layouts for larger screens.</SPAN></P><P><SPAN>Google recently released new guidelines on canonical layouts with recommendations on how to best make use of the additional space on larger screens. In addition to these guidelines, new APIs have been introduced by Google to seamlessly implement the new patterns.</SPAN></P><P><SPAN>In this blog post, we will explore the business value, design, and implementation of large screen patterns.</SPAN></P><P>&nbsp;</P><H3 id="toc-hId-1178865638"><SPAN><SPAN class=""><SPAN class="">Business Value of Large Screen Optimization</SPAN></SPAN></SPAN></H3><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="New to-do details page for Android with 2.0 release" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/182441iCEB9899C90A9AA16/image-size/large?v=v2&amp;px=999" role="button" title="Illustration.png" alt="Illustration.png" /></span></P><P style=" text-align: center; "><FONT color="#999999"><EM><SPAN class=""><SPAN class="">New to-do details page for Android with 2.0 release</SPAN></SPAN></EM></FONT></P><P><SPAN class=""><SPAN class=""><SPAN class="">At SAP Mobile Start, we began </SPAN><SPAN class="">optimizing</SPAN><SPAN class=""> our </SPAN><SPAN class="">large screen </SPAN><SPAN class="">layouts by introducing a supporting pane to the to-do details screen. The comments section now appears as an individual pane that can be toggled on and off. This allows </SPAN><SPAN class="">you </SPAN><SPAN class="">to read and write comments while browsing through to-do details and navigating attachments simultaneously, reducing the need for full-screen navigation and making better use of the </SPAN><SPAN class="">additional</SPAN><SPAN class=""> space.</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></P><P><SPAN>For SAP’s business applications, the adoption of adaptive large screen user interfaces results in a meaningful improvement to the end user’s productivity on mobile devices. The larger screen real estate can improve daily tasks like:</SPAN></P><UL><LI><STRONG><SPAN>Data entry and form filling:</SPAN></STRONG><SPAN> Provide extra space for on-screen keyboards and data entry fields to minimize scrolling, reduce errors, and expedite the process.</SPAN></LI><LI><STRONG><SPAN>Data visualization and analysis:&nbsp;</SPAN></STRONG><SPAN>Enhance readability and interactivity of complex data sets, such as charts and spreadsheets, for quicker and more effective analysis.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><STRONG><SPAN>Document editing and review:&nbsp;</SPAN></STRONG><SPAN>Simplify editing with full-page views of texts, images, or presentations, facilitate side-by-side comparisons, and offer stylus support for precise input. </SPAN><SPAN>&nbsp;</SPAN></LI><LI><STRONG><SPAN>Navigation and control:&nbsp;</SPAN></STRONG><SPAN>Making menus and controls easily accessible next to the workspace and incorporating intuitive gesture-based navigation.</SPAN></LI></UL><H3 id="toc-hId-982352133">&nbsp;</H3><H3 id="toc-hId-785838628"><STRONG><SPAN>Large Screen Design</SPAN></STRONG></H3><P><SPAN>Google’s canonical layout guidelines have reshaped the way we design for large screens. Instead of thinking about specific devices like phones, foldables, or tablets, the focus shifts more towards window size classes that require the layout to be more flexible and adapt to defined breakpoints.</SPAN></P><P><SPAN>Here is an overview on the </SPAN><A href="https://m3.material.io/foundations/layout/applying-layout/window-size-classes%22%20/l%20%229e94b1fb-e842-423f-9713-099b40f13922" target="_blank" rel="noopener nofollow noreferrer"><SPAN>window </SPAN></A><A href="https://m3.material.io/foundations/layout/applying-layout/window-size-classes#9e94b1fb-e842-423f-9713-099b40f13922" target="_blank" rel="noopener nofollow noreferrer"><SPAN>size classes</SPAN></A><SPAN> defined by Google:</SPAN></P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Window size classes by Google" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169065i3B9E18F6B47CE277/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_1-1726834885256.png" alt="Laura_Bergmann_1-1726834885256.png" /></span></P><P style=" text-align: center; "><FONT color="#999999"><I><SPAN>Window size classes by Google</SPAN></I></FONT></P><P><SPAN>For large screen design, Google advises to think in "panes" rather than screens. A pane is a semantic container that helps structure content into multiple columns. To design for all size classes, it is crucial to analyze the app’s structure and understand the relationships between screens to define the needed panes.&nbsp; On Compact, users navigate hierarchically through full-screen panes. On Large though, multiple panes are displayed side by side which is a fundamental difference between the size classes. For more information, check out Google’s guide for </SPAN><A href="https://m3.material.io/foundations/layout/applying-layout/window-size-classes#b1d7917e-602f-4048-9e92-65688454f4c7" target="_blank" rel="noopener nofollow noreferrer"><SPAN>designing across window size classes</SPAN></A><SPAN>.</SPAN></P><P><SPAN>Google suggests a few standard layouts that can be used for structuring large screens: List-Detail, Supporting Pane, and Feed. Depending on the app’s use cases, any of these patterns can be applied. You can find more information in the </SPAN><A href="https://m3.material.io/foundations/layout/canonical-layouts/overview" target="_blank" rel="noopener nofollow noreferrer"><SPAN>M3 Guidelines</SPAN></A><SPAN>.</SPAN></P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Material Design 3 Guidelines, Canonical layouts - Overview" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169066i1710062D0EED0EBC/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_2-1726834946503.png" alt="Laura_Bergmann_2-1726834946503.png" /></span></P><P style=" text-align: center; "><FONT color="#999999"><EM><SPAN class=""><SPAN class="">Material Design 3 Guidelines, Canonical layouts - Overview</SPAN></SPAN></EM></FONT></P><H5 id="toc-hId-847490561"><STRONG><SPAN>Design Best Practices</SPAN></STRONG></H5><P><SPAN>Defining the interaction and visual design for the panes is the tricky part. How do you visualize the relation between panes and ensure that the visual hierarchy is easily understood? How can you organize the screen layout so users can intuitively navigate the UI, even in more complex, information-dense layouts?</SPAN></P><P><SPAN>Here are some best practices we learned through our collaboration with Google:</SPAN></P><UL><LI><SPAN><STRONG><SPAN class=""><SPAN class="">Optimize Layouts: </SPAN></SPAN></STRONG><SPAN class=""><SPAN class="">Rather than stretching content across the full screen, try to use multiple panes, multi-column layouts, letterboxing, or dialogs, if </SPAN><SPAN class="">reasonable</SPAN><SPAN class="">.</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Options for full-screen layouts" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169069i2C48E11383C85E9B/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_0-1726835309753.png" alt="Laura_Bergmann_0-1726835309753.png" /></span></P><P style=" text-align: center; "><FONT color="#999999"><EM><SPAN class=""><SPAN class="">Options for full-screen layouts</SPAN></SPAN></EM></FONT></P><UL><LI><SPAN class=""><SPAN class=""><SPAN class=""><STRONG>Navigational Elements:</STRONG> </SPAN></SPAN><SPAN class=""><SPAN class="">Aim for 5-7 navigation targets in rails and drawers. A drawer can </SPAN><SPAN class="">contain</SPAN><SPAN class=""> more navigation targets than a rail, as it can also offer secondary navigation targets next to primary navigation. Drawers can be expanded or collapsed as needed by using the toggle button. When switching between size classes, keep the order of navigation targets consistent.</SPAN></SPAN></SPAN></LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Nav Rail vs. Nav Drawer" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169077i0EAE89A44B963DD8/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_2-1726835930803.png" alt="Laura_Bergmann_2-1726835930803.png" /></span></P><P style=" text-align: center; "><FONT color="#999999"><EM><SPAN class=""><SPAN class="">Nav Rail vs. Nav Drawer</SPAN></SPAN></EM></FONT></P><UL><LI><SPAN class=""><STRONG><SPAN class=""><SPAN class="">Layout</SPAN><SPAN class=""> Changes</SPAN></SPAN></STRONG><SPAN class=""><SPAN class=""><STRONG>:</STRONG> Avoid re-flowing content within panes during layout changes, as this can cause users to lose context. Instead, reduce non-relevant elements to free up space</SPAN><SPAN class=""> (</SPAN><SPAN class="">e.g.</SPAN><SPAN class=""> collapse nav drawer to nav rail)</SPAN><SPAN class="">.</SPAN></SPAN></SPAN></LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Layout changes" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169075i68766D3656D9A138/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_0-1726835862302.png" alt="Laura_Bergmann_0-1726835862302.png" /></span></P><P style=" text-align: center; "><FONT color="#999999"><EM><SPAN class=""><SPAN class="">Layout changes</SPAN></SPAN></EM></FONT></P><UL><LI><SPAN class=""><STRONG><SPAN class=""><SPAN class="">Unique Pane Information</SPAN></SPAN></STRONG><SPAN class=""><SPAN class=""><STRONG>:</STRONG> Each pane should offer unique, relevant information to users without repetition.</SPAN><SPAN class=""> Special attention should </SPAN><SPAN class="">be paid to</SPAN><SPAN class=""> scenarios with an overview pane</SPAN> <SPAN class="">and a details pane</SPAN><SPAN class="">.</SPAN></SPAN></SPAN></LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Unique panes" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169076i206350D50CB65BC4/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_1-1726835896581.png" alt="Laura_Bergmann_1-1726835896581.png" /></span></P><P style=" text-align: center; "><EM><FONT color="#999999"><SPAN class=""><SPAN class="">Unique pane</SPAN><SPAN class="">s</SPAN></SPAN></FONT></EM></P><UL><LI><SPAN class=""><SPAN class=""><STRONG><SPAN class=""><SPAN class="">Pane Background Styling</SPAN></SPAN></STRONG><SPAN class=""><SPAN class=""><STRONG>:</STRONG> Style pane backgrounds are based on current focus and priority so that it helps to guide user attention. Ensure a consistent use of background colors for panes across size classes. Using a color system based on the M3 color scheme helps provide sufficient contrast between fore- and background elements.</SPAN></SPAN></SPAN></SPAN></LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pane background styling" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169088i70D158DE22E0FF90/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_0-1726837167081.png" alt="Laura_Bergmann_0-1726837167081.png" /></span></P><P style=" text-align: center; "><EM><FONT color="#999999"><SPAN class=""><SPAN class="">Pane background styling</SPAN></SPAN></FONT></EM></P><UL><LI><SPAN class=""><STRONG><SPAN class=""><SPAN class="">Contextual </SPAN><SPAN class="">Use of Top-App Bar</SPAN></SPAN></STRONG><SPAN class=""><STRONG><SPAN class="">: </SPAN></STRONG><SPAN class="">Use the </SPAN><SPAN class="">top app bar globally</SPAN><SPAN class=""> for the whole screen</SPAN><SPAN class=""> or locally within indiv</SPAN><SPAN class="">idual panes - or </SPAN><SPAN class="">even </SPAN><SPAN class="">both</SPAN><SPAN class="">,</SPAN><SPAN class=""> depending on the use case.</SPAN><SPAN class=""> B</SPAN><SPAN class="">ut avoid blocking too much vertical space</SPAN><SPAN class="">, m</SPAN><SPAN class="">any layouts work well without a headline for each area.</SPAN></SPAN></SPAN></LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Top-app bar usage" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169074i12BDA0982EEA0C75/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_5-1726835638861.png" alt="Laura_Bergmann_5-1726835638861.png" /></span></P><P style=" text-align: center; "><FONT color="#999999"><EM><SPAN class=""><SPAN class="">Top-app bar usage</SPAN></SPAN></EM></FONT></P><UL><LI><STRONG><SPAN>Supporting Panes</SPAN></STRONG><SPAN>: For temporary actions like filtering or pickers, use the floating option. Don’t use a supporting pane in a list-detail manner (use list-detail pattern instead) and don’t put multiple supporting panes next to each other. Limit hierarchical navigation in supporting panes to one level deep, with back and close buttons appropriately placed.</SPAN></LI><LI><STRONG><SPAN>Dialog Use</SPAN></STRONG><SPAN>: Only use dialogs when minimal sub-navigation is required. List-detail patterns or supporting panes are often better alternatives. Never show a dialog on top of another dialog.</SPAN></LI></UL><H5 id="toc-hId-650977056">&nbsp;</H5><H5 id="toc-hId-454463551"><SPAN><SPAN class=""><SPAN class="">Integration into </SPAN><SPAN class="">SAP</SPAN> <SPAN class="">Design</SPAN><SPAN class=""> System</SPAN></SPAN></SPAN></H5><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Laura_Bergmann_0-1727704966788.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/173289i0F15BDF7BA8E48EF/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_0-1727704966788.png" alt="Laura_Bergmann_0-1727704966788.png" /></span></P><P style=" text-align: center; "><FONT color="#999999"><EM><SPAN class="">UX Guidelines for Large Screen Patterns</SPAN></EM></FONT></P><P><SPAN>SAP‘s Fiori Design System team is working on business use case specific UX guidelines and UI patterns to unify and enhance the large screen experience across SAP mobile apps. This includes patterns like “Profile and Settings”, “Sort and Filter”, or “Create” and enhancing the Horizon color system utilizing the Android M3 color capability. Additional how-to guidance will be provided for product teams to fully adopt the adaptive layouts.</SPAN></P><P><SPAN>For more information on the design system, check out the </SPAN><A href="https://experience.sap.com/fiori-design-android/" target="_blank" rel="noopener noreferrer"><SPAN>SAP Fiori for Android design guideline</SPAN></A><SPAN>.</SPAN></P><P>&nbsp;</P><H3 id="toc-hId--215392"><STRONG><SPAN>Implementation of Large Screen Patterns</SPAN></STRONG></H3><P><SPAN>Building on the design principles and guidelines, let's delve into the practical aspects of implementing large screen patterns.</SPAN></P><P><SPAN>Android has introduced a suite of powerful </SPAN><A href="https://developer.android.com/develop/ui/compose/layouts/adaptive" target="_blank" rel="noopener nofollow noreferrer"><SPAN>APIs</SPAN></A><SPAN> to facilitate the creation of engaging and efficient user experiences on larger screens. These tools provide developers with the flexibility to adapt their applications to various screen sizes and orientations, ensuring optimal user satisfaction.</SPAN></P><H5 id="toc-hId-61436541">&nbsp;</H5><H5 id="toc-hId--135076964"><STRONG><SPAN>WindowSizeClass: Adapting Your UI to Any Screen</SPAN></STRONG></H5><P><A href="https://developer.android.com/develop/ui/compose/layouts/adaptive/window-size-classes" target="_blank" rel="noopener nofollow noreferrer"><SPAN>WindowSizeClasses</SPAN></A><SPAN> are a cornerstone of adaptive UI design. This API provides essential insights into the available screen space, empowering developers to create layouts that effortlessly transition across multiple devices. By classifying the display area available to your app as compact, medium, and expanded, </SPAN><I><SPAN>WindowSizeClass</SPAN></I><SPAN> simplifies the creation of UIs that seamlessly adapt to changing screen conditions.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>It is crucial to remember that the screen space available to your app can differ from the screen size of the device for several reasons. For instance, split-screen mode on mobile devices can partition the screen between multiple apps. On ChromeOS, Android apps often reside in resizable free-form windows. Foldable devices offer distinct screen sizes depending on their folded or unfolded state.</SPAN></P><P><SPAN>Moreover, the window size class can dynamically change throughout your app's lifecycle due to factors like device orientation changes, multitasking, and device folding. To ensure a seamless user experience, your app's UI must adapt accordingly.</SPAN></P><H5 id="toc-hId--331590469">&nbsp;</H5><H5 id="toc-hId--1448306795"><STRONG><SPAN>Compose Material 3 Adaptive library: A modern, declarative approach to building Adaptive apps</SPAN></STRONG></H5><P><SPAN>The new </SPAN><A href="https://developer.android.com/reference/kotlin/androidx/compose/material3/adaptive/package-summary" target="_blank" rel="noopener nofollow noreferrer"><SPAN>Compose Material 3 Adaptive library</SPAN></A><SPAN> introduces a modern, declarative way to build adaptive apps. It simplifies the process by eliminating the need for custom UI logic, reducing code duplication, and easing the maintenance of multiple layout files.</SPAN></P><P><SPAN>This library offers below 3 composables that handle window size classes, navigation components, multi-pane layouts, and support for foldable devices, including hinge locations and postures all out of the box.</SPAN></P><UL><LI><A href="https://developer.android.com/develop/ui/compose/layouts/adaptive/build-adaptive-navigation" target="_blank" rel="noopener nofollow noreferrer"><STRONG><SPAN>NavigationSuiteScaffold</SPAN></STRONG></A><SPAN>: Automatically switches between navigation bar and navigation rail depending on app window size class and device posture.</SPAN></LI><LI><A href="https://developer.android.com/develop/ui/compose/layouts/adaptive/list-detail" target="_blank" rel="noopener nofollow noreferrer"><STRONG><SPAN>ListDetailPaneScaffold</SPAN></STRONG></A><SPAN>: Implements the list-detail canonical layout. It displays a list and the detail of a selected item side-by-side on larger windows, while showing only the list or the detail on compact and medium-sized windows.</SPAN></LI><LI><A href="https://developer.android.com/develop/ui/compose/layouts/adaptive/build-a-supporting-pane-layout" target="_blank" rel="noopener nofollow noreferrer"><STRONG><SPAN>SupportingPaneScaffold</SPAN></STRONG></A><SPAN>: Implements the supporting pane canonical layout. It shows the main content pane alongside a supporting pane on larger windows, but only the main content pane on compact and medium-sized windows.</SPAN></LI></UL><H5 id="toc-hId--1644820300">&nbsp;</H5><H5 id="toc-hId--1841333805"><STRONG><SPAN>Integrating M3 Adaptive components into SAP Mobile Start</SPAN></STRONG><SPAN>&nbsp;</SPAN></H5><P><SPAN>At SAP Mobile Start, we were able to integrate </SPAN><STRONG><SPAN>NavigationSuiteScaffold </SPAN></STRONG><SPAN>in just 5 minutes, swiftly adapting our navigation UI to different window sizes. It eliminated the need for custom logic, which previously determined the navigation component based on various window size classes.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="With just few lines of code, Navigation UI logic is handled via NavigationSuiteScaffold" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169085i312C3850BFF4DA1F/image-size/medium?v=v2&amp;px=400" role="button" title="Laura_Bergmann_0-1726836222223.png" alt="Laura_Bergmann_0-1726836222223.png" /></span></P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; "><EM><FONT color="#999999"><SPAN class="">*With just few lines of code, Navigation UI logic is handled via </SPAN><SPAN class="">NavigationSuiteScaffold</SPAN></FONT></EM></P><P><SPAN class=""><SPAN class=""><SPAN class="">Adopting the </SPAN><SPAN class="">NavigationSuiteScaffold</SPAN> </SPAN><SPAN class=""><SPAN class="">significantly reduced the codebase </SPAN></SPAN><SPAN class=""><SPAN class="">dedicated to custom navigation UI logic </SPAN></SPAN><SPAN class=""><SPAN class="">by 59%, </SPAN></SPAN><SPAN class=""><SPAN class="">decreasing lines of code </SPAN></SPAN><SPAN class=""><SPAN class="">from 379 to 156.</SPAN></SPAN></SPAN></P><H4 id="toc-hId--1744444303">&nbsp;</H4><H5 id="toc-hId-2060606481"><STRONG><SPAN>Integrating SupportingPaneScaffold to optimize to-do details</SPAN></STRONG><SPAN>&nbsp;</SPAN></H5><P><SPAN>We integrated the </SPAN><STRONG><SPAN>SupportingPaneScaffold </SPAN></STRONG><SPAN>to optimize our to-do details screen for large displays and foldable devices. Although integrating SupportingPaneScaffold required a refactoring of our existing logic, the process was effortless and quick. This integration allows us to efficiently organize primary and secondary content in the to-do details. The supporting pane automatically adjusts the UI based on the window size class, eliminating the need for additional custom logic.</SPAN></P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="SupportingPaneScaffold showcasing to-do details in the main pane and a comments section in the supporting pane." style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/169086i2D48224E7E39009E/image-size/medium?v=v2&amp;px=400" role="button" title="Laura_Bergmann_1-1726836318141.png" alt="Laura_Bergmann_1-1726836318141.png" /></span></P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; "><EM><FONT color="#999999">*<SPAN class="">SupportingPaneScaffold</SPAN> <SPAN class="">showcasing</SPAN> <SPAN class="">t</SPAN><SPAN class="">o</SPAN><SPAN class="">-</SPAN><SPAN class="">d</SPAN><SPAN class="">o details in the main pane and a comments section in the supporting pane</SPAN></FONT></EM></P><P style=" text-align : left; ">&nbsp;</P><div class="lia-spoiler-container"><a class="lia-spoiler-link" href="#" rel="nofollow noopener noreferrer">Spoiler</a><noscript> (Highlight to read)</noscript><div class="lia-spoiler-border"><div class="lia-spoiler-content"><SPAN class=""><SPAN class="">*</SPAN><SPAN class="">Some details have been removed to avoid revealing internal implementation specifics.</SPAN></SPAN></div><noscript><div class="lia-spoiler-noscript-container"><div class="lia-spoiler-noscript-content">*Some details have been removed to avoid revealing internal implementation specifics.</div></div></noscript></div></div><P><SPAN class=""><SPAN class="">A complete guide to integrating M3 Adaptive Components can be found </SPAN></SPAN><A class="" href="https://developer.android.com/develop/ui/compose/layouts/adaptive" target="_blank" rel="noreferrer noopener nofollow"><SPAN class=""><SPAN class="">here</SPAN></SPAN></A><SPAN class=""><SPAN class="">.</SPAN></SPAN></P><H4 id="toc-hId--2137471313">&nbsp;</H4><H5 id="toc-hId-1667579471"><STRONG><SPAN>Large screen app quality guidelines</SPAN></STRONG><SPAN>&nbsp;</SPAN></H5><P><SPAN>Google has established </SPAN><A href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality" target="_blank" rel="noopener nofollow noreferrer"><SPAN>large screen app quality guidelines</SPAN></A><SPAN> to ensure that your adaptive app performs optimally on tablets, foldable devices, and ChromeOS. These guidelines include tests that help you verify the functionality of your app for essential user journeys.</SPAN></P><H4 id="toc-hId-1764468973">&nbsp;</H4><H3 id="toc-hId-1861358475"><STRONG><SPAN>Learn More About Large Screen Design and Implementation</SPAN></STRONG><SPAN>&nbsp;</SPAN></H3><P><SPAN>For those interested in diving deeper into the topic, here are some valuable resources:</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><A href="https://www.youtube.com/watch?v=Nwnj01s-gOo&amp;list=PLWz5rJ2EKKc9ofd2f-_-xmUi07wIGZa1c&amp;index=3&amp;ab_channel=AndroidDevelopers" target="_self" rel="nofollow noopener noreferrer"><SPAN>Google Interview</SPAN></A></LI><LI><A href="https://www.youtube.com/watch?v=G-76xfNlMxc" target="_self" rel="nofollow noopener noreferrer"><SPAN>Google I/O Session</SPAN></A></LI><LI><A href="https://m3.material.io/foundations/layout/understanding-layout/overview" target="_blank" rel="noopener nofollow noreferrer"><SPAN>M3 Canonical Layouts</SPAN></A></LI><LI><A href="https://developer.android.com/guide/topics/large-screens/large-screen-canonical-layouts" target="_blank" rel="noopener nofollow noreferrer"><SPAN>Developer Android Canonical Layouts</SPAN></A></LI><LI><A href="https://www.figma.com/community/file/1035203688168086460" target="_blank" rel="noopener nofollow noreferrer"><SPAN>M3 Figma UI Kit</SPAN></A></LI></UL><P><SPAN>We are currently also looking into other canonical layouts to further improve the user experience for large screen devices. Stay tuned for more updates as we continue to enhance SAP Mobile Start! <span class="lia-unicode-emoji" title=":rocket:">🚀</span></SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P><FONT face="courier new,courier"><SPAN>By Laura Bergmann (Lead UX Designer) and Aditya Arora (Lead Android Developer)</SPAN></FONT></P><P><FONT color="#999999"><SPAN>----------------------------------------------------------------------------------------------------------</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT color="#999999"><SPAN>For further information on the new topics, please check our SAP Mobile Start documentation on </SPAN><A href="https://help.sap.com/docs/mobile-start?locale=en-US" target="_blank" rel="noopener noreferrer"><SPAN>SAP Help</SPAN></A><SPAN>.</SPAN></FONT></P><P><FONT color="#999999"><SPAN>SAP Mobile Experience offers intelligent native mobile solutions that help businesses build more efficient, resilient, and sustainable end-to-end processes, improving people’s work life wherever they are.</SPAN></FONT></P><P><FONT color="#999999"><SPAN>Visit </SPAN><A href="https://community.sap.com/topics/mobile-experience" target="_blank"><SPAN>SAP Mobile Experience Community Page</SPAN></A><SPAN> and click “follow” to get the latest development and innovation of our solutions. We look forward to hearing your experience with setting up the solution in your landscape; please do share your thoughts and comments below. Enter here for additional questions regarding SAP Mobile Experience Applications. Want to be notified? Check your profile settings to ensure you have your settings activated.</SPAN></FONT></P> 2024-10-23T10:13:31.140000+02:00 https://community.sap.com/t5/technology-blogs-by-members/modernizing-sapui5-with-react-and-ui5-web-components-simple-note-app/ba-p/13920203 Modernizing SAPUI5 with React and UI5 Web Components: Simple Note App 2024-10-29T12:27:38.418000+01:00 chrisobar https://community.sap.com/t5/user/viewprofilepage/user-id/845878 <P>Hello, SAP Community!</P><P>I’m excited to share a latest small demo project, where I experimented with modernizing SAP UI5 using <STRONG>UI5 Web Components</STRONG> and <STRONG>React</STRONG>. My goal was to create a <STRONG>Notes Application</STRONG> with a modern interface while maintaining the familiar UI5 experience. In this post, I’ll walk through the process, share some code, and hopefully inspire you to explore UI5 Web Components in your projects!</P><H3 id="toc-hId-1202816511"><span class="lia-unicode-emoji" title=":camera_with_flash:">📸</span>Project Overview</H3><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christianobarsap01_0-1729952013966.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/183942iD894D7C9678D46E2/image-size/medium?v=v2&amp;px=400" role="button" title="christianobarsap01_0-1729952013966.png" alt="christianobarsap01_0-1729952013966.png" /></span></P><P>This notes app demonstrates how to use the latest UI5 Web Components in a React environment, leveraging Vite for a fast, modern development experience.</P><H3 id="toc-hId-1006303006">Why UI5 Web Components?</H3><P>UI5 Web Components bring the familiar SAP Fiori design to the world of standard web components, making it easy to use UI5 components in frameworks like <STRONG>React, Vue, Angular</STRONG>, and more. They provide:</P><UL><LI><STRONG>Reusability</STRONG> across different JavaScript frameworks.</LI><LI><STRONG>Standardized</STRONG> web components that are lightweight and fast.</LI><LI>Seamless <STRONG>integration</STRONG> with existing SAP UI5 controls.</LI></UL><H3 id="toc-hId-809789501"><span class="lia-unicode-emoji" title=":hammer:">🔨</span>Tech Stack</H3><UL><LI><STRONG>UI5 Web Components</STRONG>: Provides the core UI elements like Shellbar, Cards, BusyIndicator, etc.</LI><LI><STRONG>React &amp; TypeScript</STRONG>: For component-based architecture and type safety.</LI><LI><STRONG>Vite</STRONG>: Modern build tool for super-fast development and bundling.</LI></UL><H3 id="toc-hId-613275996"><span class="lia-unicode-emoji" title=":memo:">📝</span>Key Features</H3><UL><LI><STRONG>Add, Edit, and Delete Notes</STRONG> with a clean and responsive UI.</LI><LI><STRONG>Sorting and Filtering</STRONG> functionality using custom search and filter logic(automated).</LI><LI><STRONG>Theming</STRONG> support, allowing dynamic theme changes.</LI><LI><STRONG>State Management</STRONG> with React hooks to handle the component states.</LI></UL><P>Try the link below for Demo:</P><P><A href="https://ui5-webcomponent-react-demo.vercel.app/" target="_blank" rel="noopener nofollow noreferrer">https://ui5-webcomponent-react-demo.vercel.app/</A></P><P>Note: Data provided are just Javascript arrays</P> 2024-10-29T12:27:38.418000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/implementing-a-quick-collapse-for-the-ui5-splitter-control/ba-p/13922703 Implementing a quick collapse for the UI5 Splitter control 2024-10-29T14:51:58.834000+01:00 nicoschoenteich https://community.sap.com/t5/user/viewprofilepage/user-id/898 <P>Recently a question came up in an internal channel about how to implement a quick collapse feature for the UI5 <A href="https://sapui5.hana.ondemand.com/sdk/#/api/sap.ui.layout.Splitter" target="_self" rel="nofollow noopener noreferrer">Splitter</A> control. Actually, the question was about the <A href="https://sapui5.hana.ondemand.com/sdk/#/api/sap.ui.layout.ResponsiveSplitter" target="_self" rel="nofollow noopener noreferrer">ResponsiveSplitter</A>, which already has a quick collapse feature when double clicking on the splitbar, but it would only collapse the first (left) content area. The question was how can we collapse the second (right) content area, or any other content area for that matter, if the user clicks on the splitbar? I built a small custom control that does that, and instead of keeping it internal, I thought I would share it with the community, so hopefully more people can benefit from it.</P><P>Let's start with the custom control itself:</P><PRE>sap.ui.define([ "sap/ui/layout/Splitter" ], function(SuperControl) { "use strict"; return SuperControl.extend("myui5app.control.CustomSplitter", { metadata: { properties: { quickCollapseIndex: { type: "string", defaultValue: "" } } }, renderer: {}, onAfterRendering: function() { if (sap.ui.layout.Splitter.prototype.onAfterRendering) { sap.ui.layout.Splitter.prototype.onAfterRendering.apply(this, arguments) //run the super class's method first } }, ondblclick: function(e) { if (e.target.id === this.getId()) { const allContentAreas = this.getContentAreas() if (this.getQuickCollapseIndex()) { const contentAreaToCollapse = allContentAreas[this.getQuickCollapseIndex()] contentAreaToCollapse.getLayoutData().setSize("0px") } } } }) })</PRE><P>This custom control extends the <A href="https://sapui5.hana.ondemand.com/sdk/#/api/sap.ui.layout.Splitter" target="_self" rel="nofollow noopener noreferrer"><FONT color="#339966">sap.ui.layout.Splitter</FONT></A>, which the <A href="https://sapui5.hana.ondemand.com/sdk/#/api/sap.ui.layout.ResponsiveSplitter" target="_self" rel="nofollow noopener noreferrer"><FONT color="#339966">sap.ui.layout.ResponsiveSplitter</FONT></A> (which the original question referred to) also extends. It attaches a new <FONT color="#339966">dblclick</FONT> event listener to it. The event listener method first checks that it's actually the splitbar that was actually being clicked on (not one of the content areas). It then gets its newly created <FONT color="#339966">quickCollapseIndex</FONT> attribute (which we will have to define when using the custom control), finds the corresponding content area among all of them, and eventually sets its size to <FONT color="#339966">0px</FONT> (via the layout data).</P><P>We can now use this custom control in an XML view:</P><PRE>&lt;mvc:View controllerName="myui5app.controller.MainView" xmlns:mvc="sap.ui.core.mvc" displayBlock="true" xmlns="sap.m" xmlns:cc="myui5app.control" xmlns:l="sap.ui.layout"&gt; &lt;Page id="page" title="{i18n&gt;title}"&gt; &lt;cc:CustomSplitter quickCollapseIndex="1"&gt; &lt;HBox&gt; &lt;Title text="My first content area" /&gt; &lt;/HBox&gt; &lt;HBox&gt; &lt;layoutData&gt; &lt;l:SplitterLayoutData size="50%" /&gt; &lt;/layoutData&gt; &lt;Title text="My second content area" /&gt; &lt;/HBox&gt; &lt;/cc:CustomSplitter&gt; &lt;/Page&gt; &lt;/mvc:View&gt;</PRE><P>When using the custom control, we set the <FONT color="#339966">quickCollapseIndex</FONT> attribute to <FONT color="#339966">1</FONT>, which basically means it should collapse the second content area (zero-based index). This works with any other content area as well. Perhaps the only drawback with this custom control is that we do have to set an initial size for the content area we want to collapse, otherwise it won't work. I am not really sure why, but it is what it is.</P><P>This is the CustomSplitter in action:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="quick-collapse-for-splitter.gif" style="width: 918px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/184761iC1BA6A5951C0D777/image-size/large?v=v2&amp;px=999" role="button" title="quick-collapse-for-splitter.gif" alt="quick-collapse-for-splitter.gif" /></span></P><P>Thanks for reading!</P> 2024-10-29T14:51:58.834000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/introducing-the-new-adaptation-editor-experience-for-sapui5-adaptation/ba-p/13923903 Introducing the new Adaptation Editor experience for SAPUI5 adaptation projects 2024-10-31T07:20:49.591000+01:00 OliverGraeff https://community.sap.com/t5/user/viewprofilepage/user-id/4124 <H1 id="toc-hId-944747173">SAPUI5 flexibility to adapt standard SAP apps</H1><P>SAPUI5 is SAP’s strategic Web framework for Web applications such as SAP Fiori. In this context, SAPUI5 flexibility offers capabilities to adapt standard apps, not only for developers but also for key users and end users using simple WYSIWYG drag and drop tools. Learn about all the capabilities: <A href="https://help.sap.com/docs/UI5_FLEXIBILITY/430e2c1a4ff241bc8162df4bf51e0730/e36d19b3d24f47199a9a82d3faa508c3.html" target="_self" rel="noopener noreferrer">SAPUI5 Flexibility - All You Need to Know</A>. SAPUI5 flexibility provides features to realize a clean core approach with on-stack extensions: SAP standard apps remain untouched, no modifications are needed, and even predefined extension points are not needed anymore.</P><P>Developers can leverage the concepts of SAPUI5 flexibility by using SAPUI5 adaptation projects in SAP Business Application Studio (BAS), the development environment of <A href="https://www.sap.com/products/technology-platform/developer-tools.html" target="_self" rel="noopener noreferrer">SAP Build Code</A>. Those projects contain all code-based custom adaptations, created in the various editors of BAS.</P><P>&nbsp;</P><H1 id="toc-hId-748233668"><span class="lia-unicode-emoji" title=":megaphone:">📣</span>&nbsp; Goodbye SAPUI5 Visual&nbsp;Editor, welcome Adaptation&nbsp;Editor</H1><P><SPAN>Following <A href="https://community.sap.com/t5/technology-blogs-by-sap/introducing-sapui5-adaptation-projects-in-visual-studio-code/ba-p/13580992" target="_self">Introducing SAPUI5 Adaptation Projects in Visual Studio Code</A> I now have more news: To improve the development experience and harmonize the editors for SAPUI5 adaptation projects offered in BAS and VS Code, <STRONG>BAS now features the new Adaptation Editor, replacing the SAPUI5 Visual Editor</STRONG>. </SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture: New Adaptation Editor" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185216i0E2229047A7E50E1/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-10-30 at 13.56.52.png" alt="Picture: New Adaptation Editor" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Picture: New Adaptation Editor</span></span></P><P><SPAN>The Adaptation Editor</SPAN></P><UL><LI>… opens in a separate browser tab, offering more space for the editor and especially for the canvas showing the app preview. This let’s you view the (desktop) app in a more realistic size to understand how it will look like for your end users,</LI><LI>… launches and runs much faster and more robust. Keep in mind that for launching, it still needs to pull the standard app from your (on-prem) system,</LI><LI>… has a slightly changed UX flow with a dedicated button to explicitly save changes and then continue to work on your code in the BAS browser tab,</LI><LI>… adds support for SAP S/4HANA Cloud in VS Code,</LI><LI>… is now part of the “SAP Fiori Tools – ADP” extension of BAS, contained e.g. in dev spaces of type ‘SAP Fiori’. With this, the delivery of tools around SAP Fiori has a hamonized foundation for future capabilities, which will further enhance the developer experience.</LI></UL><H1 id="toc-hId-551720163">The new Adaptation Editor</H1><P>The Adaptation Editor provides an intuitive experience to work with adaptation projects. It features:</P><UL><LI>the <STRONG>Outline</STRONG> pane (top left) to understand the structure of controls on the page</LI><LI>the <STRONG>Changes</STRONG>&nbsp;(bottom left) you’ve done so far</LI><LI>the <STRONG>Canvas</STRONG>&nbsp;(middle) to preview your application and create changes</LI><LI>the <STRONG>Properties</STRONG>&nbsp;(right) pane view / edit control properties</LI><LI>A toolbar allowing you to use:<UL><LI><STRONG>Navigation</STRONG> mode to ‘use’ the app and navigate through it until you found the area to adapt,</LI><LI><STRONG>UI Adaptation</STRONG> mode to add custom changes. Selecting an element in the Canvas highlights it in the Outline and shows its properties,</LI><LI><STRONG>Save</STRONG> to … well, save your changes after condensing them to the minumum.</LI></UL></LI></UL><H1 id="toc-hId-355206658">Launch the new Adaptation Editor</H1><P>See the SAP Help documentation on <A href="https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/802f01cb252746468038b856b6c56c56.html" target="_self" rel="noopener noreferrer">Adapting an Application</A>. The high-level steps are:</P><OL><LI>Create an SAPUI5 adaptation project in SAP Business Application Studio.</LI><LI>In the Explorer, click <STRONG>Open Adaptation Editor</STRONG> in the context menu of your project. Alternatively, use the Command Palette to find the command <STRONG>Fiori: Open Adaptation Editor</STRONG>.</LI></OL><P>See more details in:</P><UL><LI><A href="https://help.sap.com/docs/UI5_FLEXIBILITY/430e2c1a4ff241bc8162df4bf51e0730/e36d19b3d24f47199a9a82d3faa508c3.html?language=en-US" target="_self" rel="noopener noreferrer">SAPUI5 Flexibility - All You Need to Know</A></LI><LI><A href="https://help.sap.com/docs/bas/developing-sap-fiori-app-in-sap-business-application-studio/extending-sap-fiori-application" target="_self" rel="noopener noreferrer">SAP Business Application Studio: Extending SAP Fiori Applications</A></LI><LI><A href="https://help.sap.com/docs/SAP_FIORI_tools/17d50220bcd848aa854c9c182d65b699/6e25aca658dd4b8ab41dea10b71e346f.html" target="_self" rel="noopener noreferrer">SAP Fiori Tools: Extending an Existing Application</A></LI></UL> 2024-10-31T07:20:49.591000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/product-updates-for-sap-build-code-october-2024-edition/ba-p/13923399 Product Updates for SAP Build Code – October 2024 Edition 2024-10-31T08:33:00.135000+01:00 BirgitS https://community.sap.com/t5/user/viewprofilepage/user-id/41902 <P><SPAN>Dear SAP Community,</SPAN></P><P><SPAN>I’m thrilled to announce the latest updates to SAP Build Code designed to enhance your developer experience and productivity.&nbsp;</SPAN><SPAN>At the heart of this update are several highly anticipated capabilities including the use of Joule for your code search, the seamless migration of existing projects from SAP Business Application Studio, and many more.&nbsp;</SPAN><SPAN>Let's dive into the details of what's new!</SPAN></P><P><STRONG><SPAN>&nbsp;</SPAN></STRONG></P><P><STRONG><SPAN>Using Joule for Code Search</SPAN></STRONG></P><P><SPAN>We are excited to announce the release of a new feature that will help you when you search for code within your projects. With Joule copilot, you can now use natural language queries to quickly and easily locate specific code snippets, making your development process faster and more efficient. Simply open Joule from the activity bar and select <EM>/code-search Search the repository</EM> at the bottom of the Joule panel on the left side. You can then ask Joule what you're looking for, and it will instantly show you the files relevant to your search criteria, saving you time and effort in your coding journey.&nbsp;More information is available in our <A href="https://help.sap.com/docs/build_code/d0d8f5bfc3d640478854e6f4e7c7584a/337848fc83f24738a9f3a15a88f1fa76.html#code-search" target="_blank" rel="noopener noreferrer">help portal</A>.</SPAN><SPAN>&nbsp;</SPAN></P><P style=" text-align: center; "><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="CodeSearch.png" style="width: 274px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185200i530327D551177889/image-size/large?v=v2&amp;px=999" role="button" title="CodeSearch.png" alt="CodeSearch.png" /></span></SPAN><SPAN>&nbsp;</SPAN><SPAN>The code search within Joule</SPAN></P><P>&nbsp;</P><P><STRONG><SPAN>The SAP AI Code Assistant</SPAN></STRONG></P><P><SPAN>The SAP AI Code Assistant is designed to help developers to write code more efficiently and effectively. This innovative solution leverages the power of artificial intelligence to provide intelligent code suggestions. </SPAN>When writing code, press&nbsp;<EM>tab</EM> and the<SPAN> SAP AI Code Assistant will provide real-time suggestions for the next line of code. If you don’t want to use the SAP AI Code Assistant, it is also possible to disable this feature. To learn more about the SAP AI Code Assistant read the corresponding section in the <A href="https://help.sap.com/docs/build_code/d0d8f5bfc3d640478854e6f4e7c7584a/337848fc83f24738a9f3a15a88f1fa76.html#sap-ai-code-assistant" target="_blank" rel="noopener noreferrer">help portal</A>.</SPAN></P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AICodeAssistant.png" style="width: 572px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185201i0D08B21E070AFBD5/image-size/large?v=v2&amp;px=999" role="button" title="AICodeAssistant.png" alt="AICodeAssistant.png" /></span><SPAN>The SAP&nbsp;</SPAN><SPAN>AI Code Assistant</SPAN></P><P><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>SAP MDK Development with the Joule Copilot</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>SAP Build Code has recently been updated with a new mobile development experience, tailor-made for developing SAP mobile development kit (MDK) based applications. We're thrilled to announce that you can now supercharge your existing MDK projects with the help of generative AI capabilities through the Joule copilot. This new feature enables you to generate app definitions, including i18n files, pages, and actions, by leveraging AI. For further information, I recommend to read the following blog post written by my colleague Jitendra Kansal: <A href="https://community.sap.com/t5/technology-blogs-by-sap/streamline-sap-mdk-development-with-the-power-of-generative-ai-and-joule/bc-p/13883990" target="_blank">Streamline SAP MDK Development with the Power of Generative AI and Joule</A>.</SPAN></P><P><STRONG><SPAN>&nbsp;</SPAN></STRONG></P><P><STRONG>SAP HANA Cloud SQL generation via Joule</STRONG></P><P>The SQL console provided by the SAP HANA Database Explorer extension in SAP Build Code supports SQL statement generation via natural language. Users can enter a text prompt and use the new run method “Run Prompt” to generate a SQL statement that can be executed on the SAP HANA Cloud database.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MethodRunPrompt.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185184i795A062E1C0E0821/image-size/large?v=v2&amp;px=999" role="button" title="MethodRunPrompt.png" alt="MethodRunPrompt.png" /></span><SPAN>New run method “Run Prompt”</SPAN></P><P>The generated statement can be executed like any other statement directly from the SQL console.</P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SQLStatement.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185187iF18C92A04AC46EB2/image-size/large?v=v2&amp;px=999" role="button" title="SQLStatement.png" alt="SQLStatement.png" /></span><SPAN>SQL Statement</SPAN></P><P>During the SQL statement generation the prompt along with additional information about SAP HANA is passed to the large language model (LLM). The additional information is gathered mostly from the SAP HANA Cloud documentation. With this information as the context the LLM can generate syntactically valid SQL statements that can be executed on SAP HANA Cloud. As with all AI-generated information users should check the statements carefully before executing them to avoid unintended side-effects.</P><P>With this feature users can easily interact with the SAP HANA Cloud database via natural language without having to know the exact details of the SAP HANA Cloud SQL syntax. Of course, if required, the syntax can be conveniently accessed via the syntax help panel in the SQL console for further information and fine-tuning.</P><P><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Seamless Migration of Existing Projects from SAP Business Application Studio</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>Are you looking to migrate your already existing projects from the SAP Business Application Studio Dev Space Manager to your SAP Build Code tenant? Then the following feature will be relevant for you.&nbsp;</SPAN><SPAN>With the latest release, you can now transfer your existing projects into the SAP Build Code tenant effortlessly using the "Add from Dev Space" feature. This allows for a smooth transition, enabling you to continue developing your projects without any disruption.&nbsp;</SPAN><SPAN>The migration process is simple and straightforward. Just a few clicks, and your projects will be seamlessly transferred to the SAP Build Code tenant.&nbsp;</SPAN><SPAN>For more information on the migration process see <A href="https://help.sap.com/docs/build/sap-build-core/add-projects-from-dev-space" target="_blank" rel="noopener noreferrer">Add Projects From Dev Space</A>.</SPAN><SPAN>&nbsp;</SPAN></P><P style=" text-align: center; "><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MigrateProjects.png" style="width: 708px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185213i5654F3D3413B93CE/image-size/large?v=v2&amp;px=999" role="button" title="MigrateProjects.png" alt="MigrateProjects.png" /></span></SPAN><SPAN>Select “Add from Dev Space” to migrate an existing project</SPAN></P><P>&nbsp;</P><P><STRONG><SPAN>Export your Existing Projects to a CSN File</SPAN></STRONG></P><P><SPAN>We are excited to announce that you can now export your already existing <EM>Full-Stack Application Using Productivity Tools project</EM> to a CSN (Core Data Services Schema Notation) file, which can be imported into an ABAP project using ADT (ABAP Development Tools). This feature allows you to create ABAP services or business objects directly from the imported file, making it easier than ever to streamline your development process. Find the prerequisites and a detailed description of the procedure in our <A href="https://help.sap.com/docs/bas/developing-cap-application-in-sap-business-application-studio/exporting-your-project-to-csn-file" target="_blank" rel="noopener noreferrer">help portal</A>.</SPAN></P><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ProjectExport.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185175i24DF8A000C0AD76F/image-size/medium?v=v2&amp;px=400" role="button" title="ProjectExport.png" alt="ProjectExport.png" /></span><SPAN>Export an existing project to a CSN file</SPAN></P><P><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>ABAP Cloud is now part of SAP Build</SPAN></STRONG></P><P><SPAN>SAP Build was launched at SAP TechEd 2022. At TechEd 2023 we announced SAP Build Code as part of the SAP Build family. SAP Build Code is generally available since March this year. We have now reached another milestone: <STRONG>ABAP Cloud is now part of SAP Build</STRONG>! This exciting addition allows developers to seamlessly work across their ABAP, Java or JavaScript, and low-code projects all from the convenient starting point of the SAP Build Lobby. With this new integration, developers can easily create new ABAP Cloud projects or work on existing ones starting from the SAP Build Lobby and then navigate to their ABAP development environment. Further there’s a </SPAN>tool bridge between ADT and SAP Business Application Studio, which connects the front-end with the back-end development. It keeps the context of the services and entities as input for the SAP Fiori UI generator. <SPAN>I highly recommend reading the following blog posts for further details:</SPAN></P><P><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/unveiling-today-sap-build-meets-abap-cloud/ba-p/13888970" target="_blank">Unveiling today: SAP Build meets ABAP Cloud!</A></SPAN></P><P><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/the-next-step-of-abaps-evolution-abap-cloud-now-part-of-sap-build/ba-p/13904306" target="_blank">The next step of ABAPs evolution: ABAP Cloud now part of SAP Build</A></SPAN></P><P><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Extending your </SPAN></STRONG><STRONG>SAP Business Technology Platform Applications</STRONG></P><P><SPAN>The <A href="https://help.sap.com/docs/build_code/d0d8f5bfc3d640478854e6f4e7c7584a/1e8ec75c9c784b51a91c7370f269ff98.html" target="_blank" rel="noopener noreferrer">Service Center</A> provides a single access point for accessing various services offered by multiple service providers. You can utilize the services as data sources or integrate events and functions from the Service Center into your application. It is now possible to extend your SAP BTP applications using Remote Function Calls or ABAP business objects:</SPAN></P><UL><LI><SPAN>A Remote Function Call (RFC) is the standard SAP interface for communication between SAP systems. You can now <A href="https://help.sap.com/docs/build_code/d0d8f5bfc3d640478854e6f4e7c7584a/892114ce078b4e17a9ff7e751e6330cc.html#explore-sap-system-functions" target="_blank" rel="noopener noreferrer">explore RFCs in the Service Center</A> and add them to your <EM>Full-Stack Application Using Productivity Tools</EM> project.</SPAN></LI></UL><P style=" text-align: center; "><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ServiceCenter.png" style="width: 600px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185214iC12C5C76423C0519/image-size/large?v=v2&amp;px=999" role="button" title="ServiceCenter.png" alt="ServiceCenter.png" /></span></SPAN><SPAN>Exploring SAP System Functions in the Service Center</SPAN></P><UL><LI>You can now generate a custom UI service for your project based on an <SPAN><A href="https://help.sap.com/docs/build_code/d0d8f5bfc3d640478854e6f4e7c7584a/892114ce078b4e17a9ff7e751e6330cc.html?version=SHIP#explore-sap-system-business-objects" target="_blank" rel="noopener noreferrer">ABAP business object</A></SPAN> using the Service Center. The service enables you to develop an SAP Fiori application based on your own custom UI service eliminating the requirement for the front end developer to integrate with other tooling outside SAP Build Code to create the needed service.&nbsp; Simply navigate to the service center and choose the Business Object on the system from the list provided.&nbsp; Click on the ‘Add to SAP Fiori Project’ button. Then the UI Service Generator will launch, enabling you to create the service.</LI></UL><P style=" text-align: center; "><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ServiceCenter2.png" style="width: 598px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185210iE9277DEBBADBFBAB/image-size/large?v=v2&amp;px=999" role="button" title="ServiceCenter2.png" alt="ServiceCenter2.png" /></span></SPAN><SPAN>Exploring SAP System Business Objects in the Service Center</SPAN></P><P style=" text-align: center; "><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="TheUIServiceGenerator.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/185072i67EACA5E40E08A67/image-size/medium?v=v2&amp;px=400" role="button" title="TheUIServiceGenerator.png" alt="TheUIServiceGenerator.png" /></span></STRONG>The UI Service Generator</P><P style=" text-align : left; ">&nbsp;</P><P data-unlink="true"><SPAN><STRONG>UI5 linter v1.0</STRONG>&nbsp;</SPAN><STRONG>Now Available</STRONG></P><P data-unlink="true"><SPAN>We are happy to announce the official release of UI5 linter v1.0, a static code analysis tool for UI5 projects initially <A href="https://community.sap.com/t5/technology-blogs-by-sap/introducing-ui5-linter/ba-p/13633898" target="_blank">introduced in March 2024</A>&nbsp;by Oliver Graeff&nbsp;. Over the past few months, we've incorporated valuable community feedback and enhanced the tool with additional detection features. Explore the improvements and experience the benefits of the newly released UI5 linter v1.0!</SPAN></P><P>To learn more about UI5 Linter v1.0, please read Florian Vogt’s blog post: <SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/release-of-ui5-linter-v1-0/ba-p/13880556" target="_blank">Release of UI5 linter v1.0</A></SPAN>.</P><P>&nbsp;</P><P><SPAN><STRONG>New Adaptation Editor for SAPUI5 Adaptation Projects</STRONG></SPAN></P><P><SPAN>Streamline your SAPUI5 extensions with the new Adaptation Editor in SAP Build Code. To improve the experience and harmonize the editors across different environments, SAP Business Application Studio now features the new Adaptation Editor, replacing the SAPUI5 Visual Editor. Developers benefit from its intuitive experience and improved performance. For further information I recommend reading this blog post: <A href="https://community.sap.com/t5/technology-blogs-by-sap/introducing-the-new-adaptation-editor-experience-for-sapui5-adaptation/ba-p/13923903" target="_blank">Introducing the new Adaptation Editor experience for SAPUI5 adaptation projects</A>.</SPAN></P><P><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>TechEd Highlights</SPAN></STRONG></P><P>SAP TechEd 2024 has come to a close, showcasing a wealth of exciting new innovations on the SAP Business Technology Platform (BTP). If you want to stay up-to-date on all the cutting-edge insights and innovations from the event, be sure to check out our on-demand content. Dive into the latest trends and solutions for app development with SAP technologies. You can still access all the replays via the <SPAN><A href="https://www.sap.com/events/teched/virtual/flow/sap/te24/catalog/page/catalog" target="_blank" rel="noopener noreferrer">session catalog of SAP TechEd Virtual 2024</A></SPAN>.<BR /><BR />For a summary of all the SAP Build Code sessions at SAP TechEd 2024 I recommend to read <SPAN>this&nbsp;</SPAN><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-build-code-sessions-at-sap-teched-in-2024/ba-p/13868358" target="_blank">blog post</A></SPAN>. In addition, I recommend the following session:</P><UL><LI><SPAN><A href="https://www.sap.com/events/teched/virtual/flow/sap/te24/catalog/page/catalog/session/1723227572896001ZimY" target="_blank" rel="noopener noreferrer">Build AI-enabled intelligent data applications to help keep the core clean</A></SPAN>. In this session, you learn how to build intelligent data applications using the development framework of SAP Business Technology Platform, including SAP Business Application Studio and SAP Cloud Application Programming Model, in combination with the native development capabilities of SAP HANA Cloud.</LI></UL><P><SPAN>&nbsp;</SPAN></P><P><STRONG>Take our User Survey</STRONG></P><P>We want to hear from you! Take just five minutes to complete our SAP Build Code user survey and shape the future of SAP Build Code with your input! To take part in the user survey visit the following link: <SPAN><A href="https://sapinsights.eu.qualtrics.com/jfe/form/SV_4Mwqjt6P4F98ke2" target="_blank" rel="noopener nofollow noreferrer">https://sapinsights.eu.qualtrics.com/jfe/form/SV_4Mwqjt6P4F98ke2</A></SPAN></P><P><SPAN>&nbsp;</SPAN></P><P>For further information on new features, please check our roadmaps: <SPAN><A href="https://roadmaps.sap.com/board?PRODUCT=73555000100800004515&amp;range=CURRENT-LAST#Q4%202024" target="_blank" rel="noopener noreferrer">roadmap for SAP Build Code</A></SPAN>, <SPAN><A href="https://roadmaps.sap.com/board?PRODUCT=73554900100800001361" target="_blank" rel="noopener noreferrer">SAPUI5 Road Map</A></SPAN>. And have a look at <SPAN><A href="https://help.sap.com/whats-new/cf0cb2cb149647329b5d02aa96303f56?Component=Cloud%20Logging%3BCloud%20Transport%20Management%3BContinuous%20Integration%20%26%20Delivery%3BDocument%20Management%20Service%3BMobile%20Services%3BSAP%20Alert%20Notification%20Service%3BSAP%20BTP,%20Cloud%20Foundry%20Runtime%3BSAP%20Build%3BSAP%20Business%20Application%20Studio&amp;locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">What's New in SAP Build Code</A></SPAN>, the <SPAN><A href="http://help.sap.com/disclaimer?site=https://help.sap.com/whats-new/67f60363b57f4ac0b23efd17fa192d60" target="_blank" rel="noopener noreferrer">What's New Viewer for SAPUI5</A></SPAN> and the <SPAN><A href="https://cap.cloud.sap/docs/releases/" target="_blank" rel="noopener nofollow noreferrer">SAP Cloud Application Programming Model Release Notes</A></SPAN><STRONG>. </STRONG><STRONG>If you want to stay up-to-date with news, learning resources, and product and strategy updates for SAP Build Code:&nbsp;</STRONG>follow our&nbsp;<SPAN><A href="https://community.sap.com/t5/c-khhcw49343/SAP%2520Build%2520Code/pd-p/73555000100800004372" target="_blank">tag</A></SPAN>.</P><P>We look forward to seeing how you use these new capabilities to create innovative solutions and drive your projects forward. Stay tuned for more updates and happy coding! <span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></P><P><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P> 2024-10-31T08:33:00.135000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-ui5-integration-cards-beginners-steps-understanding-of-json-to/ba-p/13926327 SAP UI5 Integration Cards - Beginners Steps ( Understanding of JSON) to transform into Dashboard 2024-11-02T09:04:31.601000+01:00 yogananda https://community.sap.com/t5/user/viewprofilepage/user-id/75 <H4 id="toc-hId-1332079003"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2024-11-02_08-48-07.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/186042i98175E24276152C4/image-size/large?v=v2&amp;px=999" role="button" title="2024-11-02_08-48-07.png" alt="2024-11-02_08-48-07.png" /></span>Understanding&nbsp;the&nbsp;<A href="https://ui5.sap.com/test-resources/sap/ui/integration/demokit/cardExplorer/webapp/index.html#/learn/cardManifest" target="_blank" rel="noopener noreferrer">Manifest.json&nbsp;</A>File:&nbsp;Detailed&nbsp;explanation&nbsp;of&nbsp;the&nbsp;<A href="https://ui5.sap.com/test-resources/sap/ui/integration/demokit/cardExplorer/webapp/index.html#/learn/configuration/manifestParameters" target="_blank" rel="noopener noreferrer">manifest.json&nbsp;</A>file&nbsp;and&nbsp;its&nbsp;key&nbsp;components.</H4><P>Reference blog : <A href="https://community.sap.com/t5/technology-blogs-by-sap/how-you-can-prepare-your-own-template-using-sap-ui5-integration-cards/ba-p/13881521" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/how-you-can-prepare-your-own-template-using-sap-ui5-integration-cards/ba-p/13881521</A></P><H3 id="toc-hId-1006482779">Prepare a Sample UI5 Integration Card with lightweight approach referencing your Odata API</H3><P><STRONG>index.html</STRONG></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-markup"><code>&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&gt; &lt;meta charset="utf-8"&gt; &lt;title&gt;Card As Custom Element&lt;/title&gt; &lt;script src="https://ui5.sap.com/resources/sap-ui-integration.js" id="sap-ui-bootstrap" data-sap-ui-theme="sap_horizon"&gt; &lt;/script&gt; &lt;style&gt; .myCard { margin: 1rem; width: 17rem; .sapFGridContainer { padding: 12rem; } } .myTable::after { margin: 1rem; width: 27rem; .sapFGridContainer { padding: 12rem; } } &lt;/style&gt; &lt;/head&gt; &lt;body class="sapUiBody"&gt; &lt;ui-integration-card badge="New" id="cardCustomElement" manifest="./manifest.json" data-mode="Active" base-url="./" class="myCard"&gt; &lt;/ui-integration-card&gt; &lt;/body&gt; &lt;/html&gt;</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>manifest.json</STRONG></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code>{ "_version": "1.14.0", "sap.app": { "id": "card.explorer.data.list.card", "type": "card", "title": "Sample for Client-Side Pagination in Cards", "subTitle": "Sample for Client-Side Pagination in Cards", "applicationVersion": { "version": "1.0.0" }, "sap.ui5": { "rootView": { "viewName": "sap.ui.integration.sample.Destinations.Destinations", "type": "json", "async": true }, "dependencies": { "libs": { "sap.f": {}, "sap.ui.core": {}, "sap.ui.integration": {} } }, "config": { } }, "shortTitle": "A short title for this Card", "info": "Additional information about this Card", "description": "A long description for this Card", "tags": { "keywords": [ "Data", "Pagination", "Card", "Sample" ] } }, "sap.card": { "type": "List", "data": { "request": { "url": "https://services.odata.org/V4/Northwind/Northwind.svc/Products", "parameters": { "$format": "json", "$top": 5, "$count": true } }, "path": "/value/" }, "header": { "title": "Products", "subTitle": "In Stock Information", "icon": { "src": "sap-icon://product" }, "status": { "text": "{= format.text(${i18n&gt;CARD.COUNT_X_OF_Y}, [${parameters&gt;/visibleItems}, ${/@odata.count}]) }" } }, "content": { "item": { "title": "{ProductName}", "description": "{UnitsInStock} units in stock", "description1": "UnitPrice {= format.currency(${UnitPrice}, 'EUR')}", "highlight": "{= ${Discontinued} ? 'Error' : 'Success'}" } } } }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Deployed Samples</STRONG> : <A class="" href="https://yogananda-muthaiah.github.io/UI5-Integration-Cards-samples/" target="_self" rel="nofollow noopener noreferrer">https://yogananda-muthaiah.github.io/UI5-Integration-Cards-samples/</A></P><P><A href="https://github.com/yogananda-muthaiah/UI5-Integration-Cards-samples" target="_blank" rel="noopener nofollow noreferrer">Source code : https://github.com/yogananda-muthaiah/UI5-Integration-Cards-samples</A></P><P><STRONG>Source code with simple :&nbsp;<A href="https://github.com/yogananda-muthaiah/ui5-integration-cards" target="_blank" rel="nofollow noopener noreferrer">https://github.com/yogananda-muthaiah/ui5-integration-cards</A>&nbsp;</STRONG></P><P>References : <A href="https://community.sap.com/t5/technology-blogs-by-sap/how-you-can-prepare-your-own-template-using-sap-ui5-integration-cards/ba-p/13881521" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/how-you-can-prepare-your-own-template-using-sap-ui5-integration-cards/ba-p/13881521</A></P> 2024-11-02T09:04:31.601000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/unlocking-efficiency-leveraging-sap-btp-document-management-service-in/ba-p/13929664 Unlocking Efficiency: Leveraging SAP BTP Document Management Service in Fiori Applications # 1 2024-11-11T04:39:26.769000+01:00 prajnaparmita https://community.sap.com/t5/user/viewprofilepage/user-id/589135 <P><STRONG>INTRODUCTION</STRONG></P><P>In today's digital landscape,efficient document management is crucial for businesses aiming to streamline operations and enhance productivity.The SAP Business Technology Platform (BTP) Document Management Service offers a robust solution for managing documents seamlessly within SAP Fiori applications.<BR />In this blog series we will explore different scenarios and find suitable solutions to integrate DMS into SAP Fiori Applications. This will help consultants to<BR /><STRONG>Blog # 1:</STRONG> Embed SAP BTP Attachment Reuse UI in a Custom Fiori App<BR /><STRONG>Blog # 2:</STRONG> Embed SAP BTP Attachment Reuse UI in an SAP Fiori Elements application<BR /><STRONG>Blog # 3:</STRONG> Using SAP BTP DMS in an SAP Business Process Automation and integrate to a Task UI application<BR /><STRONG>Blog # 4:</STRONG> Using SAP BTP DMS API for Custom requirements<BR />In the first part of the blog series, we’ll touch base on the features of SAP BTP DMS service, the Reusable UI component and its integration with a Fiori application.</P><P><STRONG>Understanding SAP BTP Document Management Service</STRONG></P><P>The SAP BTP Document Management Service provides organizations with a centralized repository for storing, managing, and retrieving documents. It's based on the OASIS (Organization for the Advancement of Structured Information Standards) industry standard CMIS (Content Management Interoperability Services)</P><P>Key features include:<BR />•<STRONG>Version Control:</STRONG> Manage document versions to ensure users access the most current information.<BR />•<STRONG>Access Control:</STRONG> Set permissions to safeguard sensitive documents and ensure only authorized personnel can view or edit them.<BR />•<STRONG>Integration Capabilities:</STRONG> Easily connect with various SAP and non-SAP applications, allowing for a holistic document management approach.<BR />You can consume the SAP Document Management Service in different ways:<BR /><STRONG>•SAP Document Management service, integration option</STRONG> lets you build document management capabilities for your business applications.<BR /><STRONG>•SAP Document Management service, application option</STRONG> is a stand-alone, ready-to-use web application that provides document management capabilities for your enterprise content.</P><P><STRONG>Key Benefits of Using Document Management Service in Fiori</STRONG></P><P>Integrating the Document Management Service into Fiori applications can yield significant advantages:</P><P>•Enhanced User Experience: Fiori’s intuitive design combined with the Document Management Service allows users to access and manage documents effortlessly within their workflow.<BR />•Increased Collaboration: Teams can share and collaborate on documents in real time, improving communication and decision-making processes.<BR />•Streamlined Processes: Automating document-related tasks reduces manual effort, allowing employees to focus on higher-value activities.</P><P><STRONG>Prerequisite</STRONG><BR />1.Set up a Dev Space in Business Application Studio<BR />2.Add Entitlement for following services in your subavcount<BR />a.SAP BTP Document Management Service, Integration Option – Standard (Instance)<BR />b.SAP BTP Document Management Service, Application Option – Standard (Subscription)<BR />3.Cloud Foundry</P><P><STRONG>Setting Up Document Management Service</STRONG><BR />SAP BTP Document Management Service set up is covered in multiple blogs and SAP Help. Hence, we are not getting in details.</P><P><A href="https://help.sap.com/docs/document-management-service/sap-document-management-service/initial-setup-for-document-management-service-integration-option" target="_self" rel="noopener noreferrer">https://help.sap.com/docs/document-management-service/sap-document-management-service/initial-setup-for-document-management-service-integration-option</A>&nbsp;<BR /><A href="https://help.sap.com/docs/document-management-service/sap-document-management-service/consume-reuse-ui-for-document-management-service" target="_self" rel="noopener noreferrer">https://help.sap.com/docs/document-management-service/sap-document-management-service/consume-reuse-ui-for-document-management-service</A>&nbsp;</P><P>For this blog series, we used “SAP BTP Document Management Services, Application option”.</P><P>1.Access Manage Repository app</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_0-1731256508956.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188869i103CCC7BD148056C/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_0-1731256508956.png" alt="prajnaparmita_0-1731256508956.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_1-1731256530732.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188870i797EAD0DC90D87FA/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_1-1731256530732.png" alt="prajnaparmita_1-1731256530732.png" /></span></P><P>2.Add a new Repository</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_2-1731256759624.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188871iBB410509EFCCC168/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_2-1731256759624.png" alt="prajnaparmita_2-1731256759624.png" /></span></P><P>3.Once the Repository is created use “View and Manage Repository Documents” app to add the folders we need for different scenarios in our series.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_3-1731256844381.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188872i5F8C31196365F1BC/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_3-1731256844381.png" alt="prajnaparmita_3-1731256844381.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_4-1731256867814.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188873iE85A9BECD9214A3A/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_4-1731256867814.png" alt="prajnaparmita_4-1731256867814.png" /></span></P><P>Note down the Repository ID and Folder ID (Object ID) for the “General” folder. This will be used in the current blog. If you are using DMS Application option, the Root ID and Folder ID can be retrieved form directly the url. It will be in format of&nbsp;</P><pre class="lia-code-sample language-abap"><code>https://&lt;sub-account-url&gt;/cp.portal/site#user-display?sap-ui-app-id-hint=com.sap.ecm.sdm.user&amp;/documents/v1/open/rep=&lt;RepositoryID&gt;&amp;obj=&lt;ObjectID&gt;</code></pre><P><BR />You may also use DMS API to retrieve the details. Please check the link shared earlier.</P><P><STRONG>Scenario # 1:</STRONG><BR />We start with a simple scenario. We need to provide user to be able to access “General/Scenario 1” folder in a custom Fiori App to manage the attachments.</P><P><STRONG>Step 1:</STRONG><BR />Create a new custom Fiori Application “dmsreuseuicustomapp” using SAP Fiori Generator wizard in Business Application Studio.</P><P><STRONG>Step 2:</STRONG><BR />Update Manifest file to use the Reuse UI.<BR />Add the Component usage following under “sap.ui5” section.</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>"componentUsages": { "documentTable": { "name": "com.sap.ecm.reuse.documentTable", "settings": { "destinationPath": "/comsapecmreuse.comsapecmreusedocumentTable/api", "repositoryId": &lt;RepositoryId&gt; "objectId": &lt;ObjectID&gt; } } },</code></pre><P>&nbsp;</P><P>After Component Usage, add the resource roots attributes</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>"resourceRoots": { "com.sap.ecm.reuse.documentTable": "./../../comsapecmreuse.comsapecmreusedocumentTable/", "com.sap.ecm.reuse.admin": "./../comsapecmreuse.comsapecmreuseadmin/" }</code></pre><P>&nbsp;</P><P>The standard Reuse UI comes in 2 variants “documentTable" and “admin”. We are going to use “documentTable” variant for this blog series.</P><P>The Repository ID and Object ID can be bound to a property in model or can be assigned through controller also. We will look into these options in subsequent blogs.</P><P><STRONG>Step 3:&nbsp;</STRONG></P><P>Update View file to include the Reuse Component using sap.ui.core.ComponentContainer control.</P><P>&nbsp;</P><pre class="lia-code-sample language-markup"><code>&lt;mvc:View controllerName="com.sap.demo.dmsreuseuicustomapp.controller.View1" xmlns:mvc="sap.ui.core.mvc" xmlns:core=”sap.ui.core” displayBlock="true" xmlns="sap.m"&gt; &lt;Page id="page" title="{i18n&gt;title}"&gt; &lt;content&gt; &lt;VBox id="vbox1"&gt; &lt;Title id="title1" text="Scenario #1: Embedding Reuse UI in Custom App"&gt;&lt;/Title&gt; &lt;core:ComponentContainer id="sdi-document" usage="documentTable" async="false" manifest="true"/&gt; &lt;/VBox&gt; &lt;/content&gt; &lt;/Page&gt; &lt;/mvc:View&gt;</code></pre><P>&nbsp;</P><P><STRONG>Step 4:</STRONG>&nbsp;</P><P>Update xs-app.json file to include route for DMS Integration API.</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code>{ "source": "^/comsapecmreuse.comsapecmreusedocumentTable/api(.*)$", "target": "$1", "authenticationType": "xsuaa", "service":"com.sap.ecm.reuse", "endpoint": "ecmservice" }</code></pre><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_5-1731257728800.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188893i5992222FE241B2AF/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_5-1731257728800.png" alt="prajnaparmita_5-1731257728800.png" /></span></P><P><STRONG>Step 5:</STRONG></P><P>Update MTA file to enable authentication and authorization using client credential between Fiori Application and DMS service.Add Document Management Service, Integration option as a module.</P><P>&nbsp;</P><pre class="lia-code-sample language-yaml"><code>- name: test-dms parameters: service-key: name: sdm-key</code></pre><P>&nbsp;</P><P>Add destination configuration for DMS instance using the client credentials.</P><P>&nbsp;</P><pre class="lia-code-sample language-yaml"><code>- Name: test-dms Authentication: OAuth2UserTokenExchange ServiceInstanceName: test-dms ServiceKeyName: sdm-key</code></pre><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_6-1731257965105.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188894i6733040083A2112F/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_6-1731257965105.png" alt="prajnaparmita_6-1731257965105.png" /></span></P><P>Finally, add the DMS instance under resources section</P><P>&nbsp;</P><pre class="lia-code-sample language-yaml"><code>- name: test-dms type: org.cloudfoundry.managed-service parameters: service: sdm service-name: test-dms service-plan: standard</code></pre><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_7-1731258045694.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188895i07E67D2B82CD6B48/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_7-1731258045694.png" alt="prajnaparmita_7-1731258045694.png" /></span></P><P><STRONG>Step 6:</STRONG><BR />Deploy your app in cloud Foundry environment. You may choose to use context menu in project or use terminal commands (mbt build &amp; cf deploy)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_8-1731258099795.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188896i707F7B62AA9539F8/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_8-1731258099795.png" alt="prajnaparmita_8-1731258099795.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_9-1731258122372.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188897iF039D382EC0064FF/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_9-1731258122372.png" alt="prajnaparmita_9-1731258122372.png" /></span></P><P><STRONG>Step 7:</STRONG><BR />Log-in to SAP BTP Cockpit and find the deployed application under „HTML Applications“ section.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_10-1731258171462.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188898iEA31272B551DDBE2/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_10-1731258171462.png" alt="prajnaparmita_10-1731258171462.png" /></span></P><P>Click on the application to launch it in a new tab.<BR />The application has the Reuse UI embedded and the „General“ folder is launched as Root folder.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_11-1731258239282.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188899i3E6E9A61A8213113/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_11-1731258239282.png" alt="prajnaparmita_11-1731258239282.png" /></span></P><P>&nbsp;</P><P><STRONG>Step 8:</STRONG><BR />Create a new folder named „Scenario 1“ and upload a new file in the folder.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_12-1731258292840.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188900iC05960DE229F8934/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_12-1731258292840.png" alt="prajnaparmita_12-1731258292840.png" /></span></P><P>Go back to the SAP BTP DMS, Application option service and check the standard application to verify the files are uploaded.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_13-1731258332777.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188901i922DF49ABBB03775/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_13-1731258332777.png" alt="prajnaparmita_13-1731258332777.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="prajnaparmita_14-1731258352976.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188902i1AB59C61C509AB04/image-size/medium/is-moderation-mode/true?v=v2&amp;px=400" role="button" title="prajnaparmita_14-1731258352976.png" alt="prajnaparmita_14-1731258352976.png" /></span></P><P><STRONG>Conclusion</STRONG></P><P>We learned how to embed the standard SAP BTP DMS Reuse UI in a custom Fiori App using few simple steps.<BR />In the next blog of the series we will try to embed the Reuse UI into Fiori Element apps.</P><P>&nbsp;</P><P>&nbsp;</P> 2024-11-11T04:39:26.769000+01:00 https://community.sap.com/t5/artificial-intelligence-and-machine-learning-blogs/how-generative-ai-can-assist-in-sap-fiori-applications-a-practical/ba-p/13933586 How Generative AI Can Assist in SAP Fiori Applications: A Practical Demonstration 2024-11-13T16:39:15.391000+01:00 caldasbernardo https://community.sap.com/t5/user/viewprofilepage/user-id/1443800 <P><EM>What if your SAP Fiori applications could anticipate your needs and provide intelligent suggestions to streamline your workflow?</EM> With the rapid advancements in artificial intelligence, integrating generative AI models into enterprise applications is no longer a distant future but a present opportunity to enhance efficiency and decision-making.</P><P>In this post, I'll share a practical demonstration of how I integrated a generative AI model into an SAP Fiori application using OpenUI5. This solution enhances the creation of maintenance orders by providing AI-generated suggestions based on the order's title and description, helping users avoid overlooking critical steps.</P><H2 id="toc-hId-1074749820">The Solution</H2><P>I developed a frontend application using <STRONG>OpenUI5</STRONG>, hosted on <STRONG>Vercel</STRONG>, that mirrors a maintenance order request interface in SAP Fiori. The key enhancement is the addition of AI-generated suggestions that appear as the user inputs the maintenance order's title and description.</P><P><STRONG>You can test the live application yourself here:&nbsp;<EM><A title="Maintenance Ai request" href="https://fiori-app-form.vercel.app/" target="_self" rel="nofollow noopener noreferrer">https://fiori-app-form.vercel.app/</A>&nbsp;</EM></STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="maintenanceRequest.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188950iC06F3233CD864DA6/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="maintenanceRequest.png" alt="maintenanceRequest.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MR-sugestions.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188951i806158716158393E/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="MR-sugestions.png" alt="MR-sugestions.png" /></span></P><P>&nbsp;These suggestions offer important steps for performing the task, effectively serving as a smart checklist to assist users in making informed decisions.</P><H2 id="toc-hId-878236315">Technical Details</H2><H3 id="toc-hId-810805529">Development Environment</H3><UL><LI><STRONG>Frontend</STRONG>: Built with OpenUI5 and deployed on the Vercel platform.</LI><LI><STRONG>Backend</STRONG>: A locally running API utilizing a generative AI model (LLM) to process user inputs and generate suggestions.</LI></UL><H3 id="toc-hId-614292024">Integration with AI</H3><P>The integration with the generative AI model is achieved through HTTP requests to the local API. When the user enters the maintenance order's title and description, this data is sent to the API, which processes it and returns a list of suggested steps.</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>.route('/infer', methods=['POST']) def infer(): """Endpoint para gerar conteúdo com a API do Google.""" data = request.get_json(force=True) if not data or 'prompt' not in data: return jsonify({'error': 'No prompt provided'}), 400 try: prompt_parts = [data['prompt']] response = model.generate_content(prompt_parts) output_text = response.text except Exception as e: logging.error(f"Erro na inferência: {e}") return jsonify({'error': str(e)}), 500 return jsonify({'output_text': output_text})</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H3 id="toc-hId-417778519">Interface Implementation</H3><P><SPAN>The user interface is crafted to be intuitive and familiar for SAP Fiori users, which helps to reduce the learning curve. Standard OpenUI5 components are utilized to gather user input and present AI-generated suggestions.</SPAN></P><P>&nbsp;</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MR-sugestions.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/188953i6E66547C9F8D1004/image-size/large/is-moderation-mode/true?v=v2&amp;px=999" role="button" title="MR-sugestions.png" alt="MR-sugestions.png" /></span></SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-markup"><code>&lt;!-- Botão "Gerar Sugestões" --&gt; &lt;Button id="generateSuggestionsButton" text="Gerar Sugestões" press="onGenerateSuggestions" class="sapUiSmallMarginTop" /&gt; &lt;!-- Lista de Passos Sugeridos --&gt; &lt;Label text="Passos Sugeridos" class="sapUiSmallMarginTop" /&gt; &lt;List id="suggestionsList" width="80%" items="{suggestionsModel&gt;/suggestions}"&gt; &lt;StandardListItem title="{suggestionsModel&gt;}" /&gt; &lt;/List&gt;</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId-92182295">Demonstration in Action</H2><P>Here's how the application works in practice:</P><OL><LI><STRONG>Title</STRONG>: "Air Filter Replacement"</LI><LI><STRONG>Description</STRONG>: "The air filter of the compressor needs to be replaced due to particle buildup."</LI></OL><P><EM>Upon entering this information, the user receives immediate suggestions:</EM></P><UL><LI><DIV class=""><DIV class=""><DIV class=""><FONT><FONT>1. Turn off the compressor and disconnect it from the electrical power.</FONT></FONT></DIV></DIV></DIV></LI><LI><DIV class=""><DIV class=""><DIV class=""><FONT><FONT>2. Locate the air filter, which is usually in a plastic or metal case.</FONT></FONT></DIV></DIV></DIV></LI><LI><DIV class=""><DIV class=""><DIV class=""><FONT><FONT>3. Loosen the screws or clips securing the air filter box.</FONT></FONT></DIV></DIV></DIV></LI><LI><DIV class=""><DIV class=""><DIV class=""><FONT><FONT>4. Remove the old air filter and inspect it for dirt and damage.</FONT></FONT></DIV></DIV></DIV></LI><LI><DIV class=""><DIV class=""><DIV class=""><FONT><FONT>5. Insert the new air filter into the housing and secure it with the screws or latches.</FONT></FONT></DIV></DIV></DIV></LI><LI><DIV class=""><DIV class=""><DIV class=""><FONT><FONT>6. Replace the air filter box on the compressor.</FONT></FONT></DIV></DIV></DIV></LI><LI><DIV class=""><DIV class=""><DIV class=""><FONT><FONT>7. Turn on the compressor and check for air leaks.</FONT></FONT></DIV><DIV class="">&nbsp;</DIV><DIV class="">&nbsp;</DIV></DIV></DIV></LI></UL><P><STRONG>You can test the live application yourself here:&nbsp;<EM><A title="Maintenance Ai request" href="https://fiori-app-form.vercel.app/" target="_self" rel="nofollow noopener noreferrer">https://fiori-app-form.vercel.app/</A>&nbsp;</EM></STRONG></P><P><SPAN>This practical demonstration highlights the potential of integrating generative AI models into SAP Fiori applications. While this example operates locally without OData communication, it showcases how AI can be leveraged to improve daily tasks and workflows.</SPAN></P><P>&nbsp;</P><P>I'm excited to hear your thoughts! Share your experiences, ideas, and questions in the comments.</P><HR /><P><STRONG>Thank you for reading!</STRONG> If you're interested in more technical details or have any questions, feel free to reach out.</P><P><a href="https://community.sap.com/t5/c-khhcw49343/SAP+Fiori/pd-p/73554900100700000977" class="lia-product-mention" data-product="18-1">SAP Fiori</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+AI+Core/pd-p/73554900100800003641" class="lia-product-mention" data-product="405-1">SAP AI Core</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+AI+Launchpad/pd-p/73555000100800003283" class="lia-product-mention" data-product="406-1">SAP AI Launchpad</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;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Maintenance+Assistant+mobile+app/pd-p/73555000100800003272" class="lia-product-mention" data-product="691-1">SAP Maintenance Assistant mobile app</a>&nbsp;</P> 2024-11-13T16:39:15.391000+01:00