https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-Fiori-blog-posts.xml SAP Community - SAP Fiori 2024-05-20T20:01:02.110347+00:00 python-feedgen SAP Fiori blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-sap/ux-is-incomplete-without-the-crucial-u-a-user-research-fellowship/ba-p/13625337 'UX' is incomplete without the crucial 'U': A User Research Fellowship Experience at SAP Design 2024-03-04T18:33:54.060000+01:00 TamasK https://community.sap.com/t5/user/viewprofilepage/user-id/177419 <P><FONT size="4"><STRONG>SAP offers flexible internal fellowships that allow people to grow by experiencing a different role and team. I completed a fellowship with the <A title="https://www.sap.com/design.html" href="https://www.sap.com/design.html" target="_blank" rel="noreferrer noopener">SAP Design</A> Research Foundations team, which increases end user engagement with user research services and training activities.&nbsp;</STRONG></FONT></P><P><FONT size="4">From the moment I embarked on my UX journey, my enthusiasm for user research has been unwavering. It became clear early on that 'UX' is incomplete without the crucial 'U'—understanding and learning from users. The prospect of a fellowship with the Research Foundations team first caught my attention during a tooling enablement session and I was instantly excited.</FONT></P><H1 id="toc-hId-858913633">&nbsp;</H1><H1 id="toc-hId-662400128"><FONT size="5"><SPAN>Learning through tooling management</SPAN></FONT></H1><P><FONT size="4"><SPAN>My role extended beyond learning about and managing research tools; I actively contributed to ongoing research projects. From managing tooling and conducting surveys to updating research enablement materials, I became an integral part of the team. This hands-on experience provided a holistic understanding of the research lifecycle and the impact it can have on product development.</SPAN></FONT></P><H1 id="toc-hId-465886623">&nbsp;</H1><H1 id="toc-hId-269373118"><FONT size="5"><SPAN>Navigating new waters with the SAP User Research Panel</SPAN></FONT></H1><P><FONT size="4"><SPAN>Also, it was</SPAN></FONT><SPAN> exc</SPAN><SPAN>iting</SPAN><FONT size="4"><SPAN> to experience first row how the team set up the new <A href="https://www.sap.com/design/stories-resources/sap-user-research-panel.html" target="_self" rel="noopener noreferrer">SAP User Research Panel</A></SPAN></FONT>.&nbsp;<FONT size="4">It will be a game changer for user research by easily connecting SAP users to the people who create the products. Their feedback helps shape existing and future products and participants can see new features exclusively before they release.&nbsp;</FONT></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Opt-in-for-blog-post-scaled.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/75046iFB50E441F963FA13/image-size/medium?v=v2&amp;px=400" role="button" title="Opt-in-for-blog-post-scaled.jpg" alt="Opt-in-for-blog-post-scaled.jpg" /></span></P><P>&nbsp;<EM>Opt-in form of the SAP User Research Panel.&nbsp;ALT text: Opt-in form for the SAP User Research Panel including a short welcoming, what to expect, and how to get started with the registration process. The blue SAP logo is shown on top of the form.</EM></P><P data-unlink="true"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Social Media Templates Square Large.jpeg" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/75041i9562DC737D84DB71/image-size/small?v=v2&amp;px=200" role="button" title="Social Media Templates Square Large.jpeg" alt="Social Media Templates Square Large.jpeg" /></span>Any SAP user can <A href="https://www.userinterviews.com/opt-in/GwhpKGdWcdHFZgbRtSqCyTy9" target="_self" rel="nofollow noopener noreferrer">sign up for it here</A>.&nbsp;More information about the panel is available on the <A href="https://www.sap.com/design/stories-resources/sap-user-research-panel.html" target="_self" rel="noopener noreferrer">official webpage.</A>&nbsp;</P><P><EM>ALT text: A smiling lady with a phone in her hands. On the top, the image says "Your voice matters".</EM>&nbsp;</P><H1 id="toc-hId-72859613">&nbsp;</H1><H1 id="toc-hId--123653892"><FONT size="5">Seamless integration with my design team</FONT></H1><P><SPAN>One of the major highlights of this fellowship was the ease with which I could convince my manager to let me participate. The prospect of bringing back valuable knowledge to the team was met with immediate support, emphasizing the forward-thinking culture within the organization. This smooth integration allowed for a seamless transition between teams, ensuring a collaborative and enriching experience.</SPAN></P><H1 id="toc-hId--320167397">&nbsp;</H1><H1 id="toc-hId--516680902"><SPAN>A vibrant mentorship with Dilara</SPAN></H1><P>From day one, Dilara Rousseau, my mentor, stood out with her infectious enthusiasm and a genuine passion for research. Her bubbly personality not only made the learning process enjoyable but also created an open space for exploration and creativity. Dilara's wealth of knowledge in research tools and methodologies became a guiding light for me as I delved into the world of user-centric research. Her hands-on approach and willingness to share insights made the learning process not only informative but also enjoyable.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture4.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/75047i1B36267530ED86BF/image-size/small?v=v2&amp;px=200" role="button" title="Picture4.png" alt="Picture4.png" /></span></P><H1 id="toc-hId--713194407">&nbsp;</H1><H1 id="toc-hId--909707912"><FONT size="5">Supportive leadership from Tracy</FONT></H1><P>Behind every successful team is a supportive leader, and in this case, it was Tracy, the team's manager. Tracy's leadership style centered around nurturing a culture of appreciation and teamwork. She genuinely cared about the development of each team member, fostering an environment where everyone felt valued. This supportive atmosphere played a pivotal role in our ability to explore new tools and methodologies.</P><P> <span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture5.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/75048iC158219283AB3163/image-size/small?v=v2&amp;px=200" role="button" title="Picture5.png" alt="Picture5.png" /></span></P><H1 id="toc-hId--336481334"><FONT size="5">Conclusion</FONT></H1><P>My fellowship with the research enablement team was a transformative experience, filled with knowledge, challenges, and growth. Dilara's mentorship, Tracy's leadership, and the collaborative environment made this journey unforgettable. As I return to my team armed with newfound insights and skills, I am not just a UX Designer with some research knowledge; I am an ambassador of a culture of continuous learning and innovation. As I move forward in my career, I carry with me the lessons learned and the appreciation for a team that exemplifies the true spirit of research enablement.</P> 2024-03-04T18:33:54.060000+01:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-fiori-for-sap-s-4hana-upgrade-faster-managing-app-lifecycle-impacts-on/ba-p/13626216 SAP Fiori for SAP S/4HANA – Upgrade Faster – Managing app lifecycle impacts on users 2024-03-05T04:01:52.255000+01:00 Jocelyn_Dart https://community.sap.com/t5/user/viewprofilepage/user-id/131660 <P><FONT color="#000080"><STRONG><EM>Latest Updates:</EM></STRONG>&nbsp;</FONT></P><UL><LI><EM><FONT color="#000080"><STRONG>March 2024</STRONG>&nbsp;- Some clarifications added following feedback. Some terminology has been clarified. The marking of superseded apps as&nbsp;<STRONG>Available with Successor</STRONG>&nbsp;has been adjusted to reflect that this is a soft stage and not used in every case.&nbsp; Some use cases that can influence the duration of an app in available with successor status have been listed. Also note that for SAP S/4HANA, app lifecycle can change as part of a major release or as part of a Feature Pack Stack.</FONT></EM></LI></UL><P>Every SAP S/4HANA (and SAP S/4HANA Cloud) release upgrade involves change – and mostly that’s a good thing, so long as you can roll with the changes.&nbsp; &nbsp;Each new release brings new innovations such as new apps, new processes, new features, new intelligent experiences (such as generative AI), better tools, and better performance.</P><P><FONT color="#FF00FF"><FONT color="#000000"><EM><STRONG>Hint:</STRONG>&nbsp;SAP S/4HANA and SAP S/4HANA Cloud are product suites.&nbsp;</EM></FONT><EM><FONT color="#000000">Apps are listed by product suite in the</FONT> <A href="https://url.sap/fiori-apps-library" target="_blank" rel="noopener nofollow noreferrer">SAP Fiori apps reference library</A>&nbsp;</EM></FONT></P><UL><LI><FONT color="#000000"><EM><STRONG>SAP S/4HANA Cloud</STRONG> is the product suite used by solution <STRONG>SAP S/4HANA Cloud Public Edition</STRONG>.&nbsp;</EM></FONT></LI><LI><FONT color="#000000"><EM><STRONG>SAP S/4HANA</STRONG> is the product suite used by solutions <STRONG>SAP S/4HANA Cloud Private Edition</STRONG> and <STRONG>SAP S/4HANA on-premise</STRONG>.&nbsp;</EM></FONT></LI></UL><P>To make space for the new, you may need to let go of the old. &nbsp;Replace the horse with the automobile. Replace the newspaper with the television. Replace the record player with the CD with the DVD with the Blu-ray with the iPod with the Spotify playlist.</P><P>Like hardware, software apps have a lifecycle.&nbsp; For consumer apps like Facebook and X, new versions of apps are usually forced upon you, and you just have to deal with it. In the SaaS world, where your business needs to keep running 24x7, you get a little more notice and guidance.</P><P>With SAP S/4HANA (and SAP S/4HANA Cloud), whenever you upgrade your release, you may need to replace your current apps with their successors. &nbsp;The app lifecycle determines when a successor app is available, and when you should stop using the predecessor app.&nbsp; That is:</P><UL><LI>By marking an app as <STRONG>deprecated </STRONG>SAP gives formal notice of the intent to make the app <STRONG>obsolete </STRONG>in a future release.</LI><LI>You must move to the recommended successor.</LI><LI>You can move as early as the successor becomes available, or as late as the predecessor app becomes obsolete.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_0-1710229892681.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79039i0470B83F2439C738/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_0-1710229892681.png" alt="Jocelyn_Dart_0-1710229892681.png" /></span></P><P>&nbsp;</P><P><EM><STRONG>Hint:</STRONG> In this context apps includes all UI technologies supported by the SAP Fiori launchpad i.e. SAP Fiori apps,&nbsp; ABAP Web Dynpro applications, Web Client Ui apps, and SAP GUI Transactions. <FONT color="#FF00FF"><FONT color="#000000">Lifecycle changes in classic Ui apps such as SAP GUI transactions, are typically announced as deprecated or obsolete as part of Simplifications.&nbsp;You can use the SAP Readiness Check for SAP S/4HANA Upgrades to find simplifications relevant to your usage or search the</FONT> <A href="https://me.sap.com/sic" target="_self" rel="noopener noreferrer">Simplification Database</A>.&nbsp;&nbsp;</FONT></EM></P><P><FONT color="#FF0000"><STRONG>IMPORTANT:</STRONG></FONT> It’s not just apps that may need to be replaced, you may also need to move to successor features, successor tools, and so on. Refer to the section in this blog post: <STRONG>Other types of UX changes you may encounter during upgrades</STRONG>.</P><P>Understanding the app lifecycle saves you time when:</P><UL><LI>planning your upgrade</LI><LI>executing your upgrade</LI><LI>deciding what new opportunities to explore post-upgrade</LI><LI>managing the change impacts on business users</LI></UL><P>In this blog post you will learn:</P><UL><LI><STRONG>Stages in the app lifecycle</STRONG></LI><LI><STRONG>Choosing the right time to move to the successor</STRONG></LI><LI><STRONG>How app lifecycle changes impact SAP S/4HANA release upgrades</STRONG></LI><LI><STRONG>Other types of UX changes you may encounter during upgrades</STRONG></LI><LI><STRONG>Tips for managing change impacts on business users</STRONG></LI></UL><P>You may have already noticed the deprecated mentions in the <A href="https://url.sap/fiori-apps-library" target="_self" rel="nofollow noopener noreferrer">SAP Fiori apps library</A>, in the <A href="https://help.sap.com/whats-new/5fc51e30e2744f168642e26e0c1d9be1" target="_self" rel="noopener noreferrer">What’s New Viewer for SAP S/4HANA</A>, and in the <A href="https://sap.com/rasd" target="_blank" rel="noopener noreferrer">RASD</A> (Release Assessment and Scope Dependency tool) for SAP S/4HANA Cloud.&nbsp; Just in case you haven’t, take a look at the final section:</P><UL><LI><STRONG>Where to find information on app lifecycle changes</STRONG></LI></UL><P><FONT color="#000000"><STRONG><FONT color="#FF0000">IMPORTANT:</FONT> </STRONG>For SAP S/4HANA, app lifecycle changes are usually announced as part of a major release. For example, SAP S/4HANA 2023. However, app lifecycle changes can also be announced as part of a Feature Pack Stack release. For example, from SAP S/4HANA 2023 FPS02.&nbsp;</FONT></P><H1 id="toc-hId-858942400"><FONT color="#000080">Stages in the app lifecycle</FONT></H1><P>The 4 main stages are:</P><OL><LI>Available</LI><LI><FONT color="#000000">(Optional) Available with successor, i.e. superseded</FONT></LI><LI>Deprecated</LI><LI>Obsolete</LI></OL><P>These stages are easy to understand.&nbsp; If your app is:</P><UL><LI><FONT size="4"><STRONG>Available </STRONG></FONT>– This means the app is currently available for use.</LI><LI><FONT size="4"><STRONG>Available with successor&nbsp;</STRONG></FONT>–&nbsp; The app is still available for use, however a successor app has been introduced. You should consider moving to the successor.&nbsp;<FONT color="#000000">"Available with successor" is a soft stage, which is not always used.&nbsp; Available with successor is used to highlight that a new and better app is available. You are invited to take early advantage of this innovation.&nbsp;&nbsp;</FONT></LI><LI><FONT size="4"><STRONG>Deprecated </STRONG></FONT>– This means the app still exists; however, SAP no longer recommends its use, and it will be deleted from the SAP Fiori launchpad in an upcoming release.&nbsp; You are recommended to move to the successor as soon as possible.</LI><LI><FONT size="4"><STRONG>Obsolete </STRONG></FONT>– This means the app must not be used.&nbsp; Usually, the app has been deleted and no longer exists. You must move to the successor.</LI></UL><P><FONT color="#000000"><EM><STRONG>Hint:</STRONG> These stages apply to the app regardless of how the app is accessed, including:</EM></FONT></P><UL><LI><FONT color="#000000"><EM>via SAP Start or SAP Build Work Zone, standard edition, </EM></FONT></LI><LI><FONT color="#000000"><EM>via SAP Fiori launchpad, </EM></FONT></LI><LI><FONT color="#000000"><EM>via SAP Business Client or SAP Logon.&nbsp;</EM></FONT></LI></UL><P>As soon as the successor app is available you can shift to the from the predecessor to the successor app.</P><UL><LI>When the app is superseded, it’s <STRONG>optional</STRONG>&nbsp;to move to the successor</LI><LI>When the app is deprecated, it’s <STRONG>recommended</STRONG> to move to the successor</LI><LI>When the app is made obsolete, it’s <STRONG>mandatory </STRONG>to move to the successor</LI></UL><P>You can see in the diagram below a summary of these stages.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_1-1710230048045.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79040i5FDF3FE26FECD319/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_1-1710230048045.png" alt="Jocelyn_Dart_1-1710230048045.png" /></span></P><P>&nbsp;</P><P><FONT color="#000080"><STRONG><EM>Hint:</EM></STRONG></FONT><EM> Occasionally an app may have minor changes applied by a new release, such as new features added to the floorplan to download tables to Excel, PDF, and Google Sheets, or new features to add related apps for simpler navigation. These minor changes are part of the app history and are not considered a change in lifecycle stage.&nbsp;<FONT color="#000000"> Similarly, the launchpad app descriptor item (i.e. target mapping and tiles) of an app, may occasionally be moved to a new launchpad catalog or its parameters may be changed.&nbsp; Changes in launchpad catalog organization are not considered a lifecycle change for the app itself.&nbsp;</FONT></EM></P><P><FONT color="#000080"><STRONG><EM>Hint:</EM></STRONG> </FONT><EM>When an app is superseded:</EM></P><UL><LI><EM>The app may be replaced one or more successors. </EM><EM>For example, split to different apps for different use cases.&nbsp;</EM></LI><LI><EM>The app may also have no successors, i.e. is no longer required.</EM></LI></UL><P><STRONG>For each app, these lifecycle stages usually occur across several releases. </STRONG></P><UL><LI>An app may be available for a long time before it moves to the other stages.&nbsp;&nbsp;</LI><LI>Once an app has a successor it may move quite quickly to other stages.</LI><LI>For example an app marked as <FONT color="#000000">"available with successor"</FONT> in one release, may be marked as deprecated in the next release.&nbsp;</LI><LI><FONT color="#000000">Officially, for SAP S/4HANA Cloud, there is a period of <U>at least</U> six months between the initial announcement of an app's deprecation and its deletion.</FONT> Refer to <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/55a7cb346519450cb9e6d21c1ecd6ec1/5efa551420f24d738131134c8101168a.html" target="_blank" rel="noopener noreferrer">Deprecation Process for Apps (SAP S/4HANA Cloud)</A>.</LI><LI><FONT color="#000000">For SAP S/4HANA the typical time between available, deprecated, and obsolete phases can be much longer.&nbsp;&nbsp;</FONT></LI><LI>However, with SAP S/4HANA upgrades the more distance between your current release and target upgrade release, the more deprecated and obsolete apps you are likely to encounter as part of your upgrade. Refer to <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/22bbe89ef68b4d0e98d05f0d56a7f6c8/6c804b66d19d43bd9f118435dbfc3dd1.html" target="_blank" rel="noopener noreferrer">Prepare the SAP Fiori Upgrade (SAP S/4HANA)</A></LI></UL><P><FONT color="#FF0000"><STRONG>IMPORTANT:</STRONG>&nbsp;</FONT><FONT color="#000000">There are some additional use cases to be aware of for the <STRONG>“available with successor”</STRONG> status that may influence how long the app may stay in this stage. Refer to the app documentation and related SAP Notes for the app where needed.</FONT></P><UL><LI><FONT color="#000000">An app can go from available to deprecated <U><STRONG>without</STRONG></U> passing through&nbsp;"available with successor".&nbsp;&nbsp;For example, SAP GUI transactions may be deprecated as part of Simplifications.</FONT></LI><LI><FONT color="#000000">An app's functionality may be split out to multiple successors, which may be introduced in different releases.&nbsp; This can extend the time in which the app remains in "available with successor" status.&nbsp; </FONT></LI><LI><FONT color="#000000">The status “available with successor” may be used to indicate a recommended alternative when you are using an advanced solution capability. For example the apps <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F1592')/S28OP" target="_self" rel="nofollow noopener noreferrer">F1592 Asset Master Worklist</A> and <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F1684')/S28OP" target="_self" rel="nofollow noopener noreferrer">F1684 Manage Fixed Assets</A> are superseded by <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F3425')/S28OP" target="_self" rel="nofollow noopener noreferrer">F3425 Manage Fixed Assets (new)</A> when you are using&nbsp;<STRONG>Universal Parallel Accounting</STRONG>. This can extend the time in which the app remains in "available with successor" status.</FONT></LI></UL><P>&nbsp;</P><H2 id="toc-hId-791511614"><FONT color="#000080">Examples of app lifecycle stages</FONT></H2><P>For example, app <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F0842')/S15OP" target="_blank" rel="noopener nofollow noreferrer">F0842 Manage Purchase Orders</A> was:</P><UL><LI>Available from SAP S/4HANA 1511</LI><LI>Superseded with release SAP S/4HANA 1709 with the introduction of app <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F0842A')/S27OP" target="_blank" rel="noopener nofollow noreferrer">F0842A Manage Purchase Orders (Version 2)</A></LI><LI>Deprecated with SAP S/4HANA 1909</LI><LI>Obsolete from SAP S/4HANA 2020. That is, the app was deleted from the solution.</LI></UL><P>Of course you may encounter the app at any lifecycle stage.</P><P>For example, the app <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F0717')/S28OP" target="_self" rel="nofollow noopener noreferrer">F0717 Manage Journal Entries</A>:</P><UL><LI>Was available from the beginning of SAP S/4HANA Cloud and SAP S/4HANA 1511,</LI><LI>Was superseded from SAP S/4HANA Cloud 2308 and SAP S/4HANA 2023.<UL><LI>The successor app is <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F0717A')/S28OP" target="_self" rel="nofollow noopener noreferrer">F0717A Manage Journal Entries – New Version</A>.</LI><LI>Refer to <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/unboxing-the-new-manage-journal-entries-app/ba-p/13562058" target="_blank">Unboxing the New Manage Journal Entries App</A></LI></UL></LI></UL><UL><LI>Is deprecated from SAP S/4HANA Cloud 2402.&nbsp;<UL><LI>It has not yet been deprecated in SAP S/4HANA, but this is expected to happen in an upcoming release.</LI></UL></LI><LI>A decision has not yet been made when the predecessor app will be made obsolete.<UL><LI><STRONG>Hint:</STRONG> This is normal.&nbsp; With very popular apps, the product owner may allow a little more time for customers to transition to the new app.</LI></UL></LI></UL><P>So at the time of writing (March 2024), you have some choices on when to move from F0717 Manage Journal Entries (old version) to F0717A Manage Journal Entries (new version):</P><UL><LI>You can choose to move to the successor early (from SAP S/4HANA Cloud 2308 or SAP S/4HANA 2023).<UL><LI>This is explained in the What’s New Viewer for SAP S/4HANA Additional Version of <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/f5d3e1005efd4e86acf9a65abf428082/0f0e1cf4203742dc929349d9f9647b73.html?version=2023.000" target="_blank" rel="noopener noreferrer">Manage Journal Entries</A></LI></UL></LI><LI>You can wait to move to the successor when recommended (from SAP S/4HANA Cloud 2402)</LI><LI>You can must move to the successor when F0717 becomes obsolete.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_2-1710230262049.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79043i68F6FA54FD47CDF1/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_2-1710230262049.png" alt="Jocelyn_Dart_2-1710230262049.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-465915390"><FONT color="#000080">Choosing the right time to move to the successor</FONT></H1><P>Consider which adopter profile suits your needs.&nbsp;</P><P>If you wish, you can use a different adopter profile for high-risk heavily used apps versus low-risk apps that you have only deployed to a few users.</P><P><STRONG>Adopter Profiles:</STRONG></P><UL><LI><FONT size="4"><STRONG>Innovation Adopter</STRONG></FONT> <STRONG>– Moves when a successor app becomes available</STRONG><UL><LI><STRONG>Pros </STRONG>– You get the new business value improvements of the successor app early as possible. You have time to evaluate and move at leisure post-upgrade. &nbsp;</LI><LI><STRONG>Considerations </STRONG>– Consider giving early feedback to SAP.&nbsp; You have time to ask for improvements if there’s anything you would like added or changed.</LI></UL></LI></UL><UL><LI><STRONG><FONT size="4">Conservative Adopter</FONT> – Moves when app is deprecated</STRONG><UL><LI><STRONG>Pros </STRONG>– You avoid commercial support issues, such as SAP Incidents being redirected to Consulting.</LI><LI><STRONG>Considerations </STRONG>– If it’s too complex to move during upgrade, for example because of extensions you want to apply, you still have time to transition to the new app post-upgrade.</LI></UL></LI></UL><UL><LI><FONT size="4"><STRONG>Forced Adopter</STRONG></FONT> <STRONG>– Moves when app is made obsolete</STRONG><UL><LI><STRONG>Considerations </STRONG>- You must move as part of upgrade. You accept the time pressure risk – you may have to make business decisions and complex changes in a rush. You risk not being able to apply adaptations or extensions you need for your processes.</LI></UL></LI></UL><P>You can see the adopter profiles summarized below, mapped against the journey from F0717 Manage Journal Entries to F0717A Manage Journal Entries - New Version:</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_3-1710230408526.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79045i36A0471354DB2D97/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_3-1710230408526.png" alt="Jocelyn_Dart_3-1710230408526.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-269401885"><FONT color="#000080">How app lifecycle changes impact SAP S/4HANA release upgrades</FONT></H1><P>Once you understand the app lifecycle, you can more easily manage release upgrades.</P><P>Release upgrades are your opportunity to take on new innovations and increase the business value of your solution. That said, with any release upgrade your business users are likely to expect a little disruption.&nbsp; With every release upgrade your aim should be to:</P><UL><LI><STRONG>When planning your upgrade</STRONG>, mass evaluate app lifecycle changes using upgrade tools such as SAP Readiness Check for SAP S/4HANA Upgrades or the SAP Fiori Upgrade Impact Analysis</LI><LI><STRONG>During release upgrades</STRONG>, minimize unnecessary disruption now and later for business users by focussing on mandatory changes and easy moves to successor apps.</LI><LI><STRONG>Post-upgrade</STRONG> is the ideal time to evaluate new opportunities, such as introducing new apps, to review interesting existing apps you are not yet using, and to make more complex moves to successor apps.</LI></UL><P>For each app lifecycle stage, there are some considerations to keep in mind.&nbsp;</P><P><STRONG>Obsolete apps:</STRONG></P><UL><LI>Must be replaced <STRONG>during release upgrade</STRONG>, as they no longer exist.</LI><LI>SAP-delivered business role templates are automatically updated.</LI><LI>You must replace the app in any custom business roles.</LI></UL><P><STRONG>Deprecated apps:</STRONG></P><UL><LI>Where you can do so easily, speed up and simply future upgrades by moving your custom business roles to successor apps <STRONG>during release upgrade</STRONG>.</LI><LI>Replacing deprecated apps<STRONG> before</STRONG> they become obsolete avoids disruption later and gives you extra time to manage the move to the successor. &nbsp;</LI><LI><STRONG>Post-upgrade</STRONG> is the right time to execute more complex must-change shifts to successor apps. For example, where you need to re-evaluate and re-apply extensions before you can adjust your custom business roles.</LI></UL><P><STRONG>Superseded apps ("</STRONG><STRONG>Available with successor"):</STRONG></P><UL><LI>Where you can, exploring <FONT color="#000000">successor </FONT>apps during <STRONG>post-upgrade</STRONG> when they are first <STRONG>superseded</STRONG> can avoid difficult “but how” discussions when they are made deprecated/obsolete.<UL><LI>There is time to raise queries about app behaviour and extension options.</LI><LI>If you wish, you can make the successor and predecessor versions available in the same custom business role, to encourage your users to try out the successor app.</LI></UL></LI></UL><P><STRONG>App changes:</STRONG></P><UL><LI>Changes to existing apps are usually minor, or part of the app’s floorplan. Most changes are automatically applied <STRONG>during upgrade</STRONG>. These can typically be reviewed during regression testing.</LI></UL><P><STRONG>New available apps:</STRONG></P><UL><LI>New available apps can be evaluated <STRONG>post-upgrade</STRONG>. It’s worth using the mass evaluation upgrade tools to capture a list of new apps. Having a ready-to-use list of new apps eases reviewing the new apps later.</LI></UL><P><STRONG>When you are ready to change your custom business roles</STRONG> you can use the appropriate tools.&nbsp;</P><UL><LI>For SAP S/4HANA Cloud you can use the app <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/55a7cb346519450cb9e6d21c1ecd6ec1/2e2f201d17b346c480bcc2c5610fa0a7.html?" target="_blank" rel="noopener noreferrer">F6955 Manage Business Role Changes after Upgrade</A>.</LI><LI>For SAP S/4HANA you can use the Launchpad Content Manager to apply quick fix changes. Refer to: <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-for-sap-s-4hana-how-to-fix-changed-and-outdated-catalogs/ba-p/13499229" target="_blank"><STRONG>SAP Fiori for SAP S/4HANA – How to fix Changed and Outdated Catalogs</STRONG></A><SPAN><STRONG>.</STRONG></SPAN></LI></UL><P><STRONG>In summary for each type of app change there is a matching upgrade impact:</STRONG></P><TABLE><TBODY><TR><TD width="236"><P><FONT face="arial black,avant garde" color="#000080"><STRONG>Type of App Change</STRONG></FONT></P></TD><TD width="387"><P><FONT face="arial black,avant garde" color="#000080"><STRONG>Upgrade Impact</STRONG></FONT></P></TD></TR><TR><TD width="236"><P>Existing app is <STRONG>obsolete</STRONG></P></TD><TD width="387"><P>Must replace <STRONG>during upgrade</STRONG></P></TD></TR><TR><TD width="236"><P>Existing app is <STRONG>deprecated</STRONG></P></TD><TD width="387"><P>Replace <STRONG>during upgrade</STRONG>, if possible.</P><P>If not, aim to move to the successor <STRONG>post-upgrade</STRONG>.</P></TD></TR><TR><TD width="236"><P>Existing app is <STRONG>superseded</STRONG></P></TD><TD width="387"><P>Evaluate the successor app <STRONG>post-upgrade</STRONG>, consider moving before next upgrade</P></TD></TR><TR><TD width="236"><P>Existing app <STRONG>has changes</STRONG></P></TD><TD width="387"><P>Automatically applied <STRONG>during upgrade</STRONG></P></TD></TR><TR><TD width="236"><P><STRONG>New app</STRONG> made available</P></TD><TD width="387"><P>Evaluate <STRONG>post-upgrade</STRONG></P></TD></TR></TBODY></TABLE><P>&nbsp;</P><H1 id="toc-hId-72888380"><FONT color="#000080">Other types of UX changes you may encounter during upgrades</FONT></H1><P>You should be aware of other UX changes that can impact your upgrade. Mostly you need to be aware of these changes, and make sure affected business users are also aware of these. In some cases, you may need to adjust regression tests.</P><P>The most important changes and their impact are summarized in the table below, along with a selection of examples from SAP S/4HANA 2023 and SAP S/4HANA Cloud 2402.</P><P><FONT color="#000000">The Upgrade Priority indicates whether you:</FONT></P><UL><LI><FONT color="#000000"><STRONG>Must prepare</STRONG> for the impact <STRONG>during your upgrade</STRONG></FONT></LI><LI><FONT color="#000000"><STRONG>Can defer&nbsp;to&nbsp;post-upgrade</STRONG> evaluation and move to the changed UX</FONT></LI></UL><P>A particular watchpoint are changes to CDS Views, which may impact custom analytics built on these views. Refer to <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/ee6ff9b281d8448f96b4fe6c89f2bdc8/bbce44e956784fde8d73507393692211.html?" target="_blank" rel="noopener noreferrer">Deprecated and Decommissioned CDS Views (SAP S/4HANA)</A> and <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/c0c54048d35849128be8e872df5bea6d/bbce44e956784fde8d73507393692211.html?" target="_blank" rel="noopener noreferrer">Deprecated and Decommissioned CDS Views (SAP S/4HANA Cloud)</A></P><P>The most important of these are covered in major release announcements such as</P><UL><LI><A href="https://www.youtube.com/watch?v=_2Z2ryribhc" target="_blank" rel="noopener nofollow noreferrer">SAP User Experience in SAP S/4HANA Cloud Public Edition 2402</A></LI><LI><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></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-update-more-products-with-horizon-entry-point-strategy-ux-news/ba-p/13556897" target="_blank">SAP Fiori Update: More Products with Horizon, Entry Point strategy, UX news for SAP S/4HANA and More</A></LI></UL><P>&nbsp;</P><TABLE width="100%"><TBODY><TR><TD width="25%" height="51px"><P><FONT face="arial black,avant garde" color="#000080"><STRONG>Type of Change </STRONG></FONT></P></TD><TD width="39%" height="51px"><P><FONT face="arial black,avant garde" color="#000080"><STRONG>Priority for Upgrade</STRONG></FONT></P></TD><TD width="35%" height="51px"><P><FONT face="arial black,avant garde" color="#000080"><STRONG>Examples</STRONG></FONT></P></TD></TR><TR><TD width="25%" height="179px"><P><STRONG>Launchpad feature changes</STRONG></P></TD><TD width="39%" height="179px"><P><STRONG>Must prepare – </STRONG>mandatory features</P><P><STRONG>Can defer to post-upgrade&nbsp;</STRONG>- optional features</P></TD><TD width="35%" height="179px"><P><STRONG>Mandatory</STRONG> - <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/ee9ee0ca4c3942068ea584d2f929b5b1/229eb428536f4be194a0f81d1d369d00.html" target="_blank" rel="noopener noreferrer">Time Zone Handling Enhanced (SAP S/4HANA Cloud)</A></P><P><STRONG>Optional </STRONG>- New launchpad features such as <A href="https://help.sap.com/docs/ABAP_PLATFORM/66906ae3920c4fc684cf588290fb9267/d985e2996ea84fa197ee09b20443658d.html" target="_blank" rel="noopener noreferrer">System Info Bar (SAP S/4HANA)</A></P></TD></TR><TR><TD width="25%" height="234px"><P>Changes in <STRONG>floorplans</STRONG>, such as List Report, Analytical List Page, Overview Page, Smart Business KPI Report, etc.</P></TD><TD width="39%" height="234px"><P><STRONG>Must prepare </STRONG>– mandatory features</P><P><STRONG>Can defer&nbsp;</STRONG><STRONG>to post-upgrade&nbsp;</STRONG><SPAN>- optional features</SPAN></P></TD><TD width="35%" height="234px"><P><STRONG>Mandatory </STRONG>– <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/ee9ee0ca4c3942068ea584d2f929b5b1/6166506f56494ee29f81734e214b2bb3.html?" target="_blank" rel="noopener noreferrer">New&nbsp;Copy&nbsp;Button for Copying to Clipboard (SAP S/4HANA Cloud)</A></P><P><STRONG>Optional</STRONG> - <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/ee9ee0ca4c3942068ea584d2f929b5b1/cc04064719e8497abb92601736aba245.html?" target="_blank" rel="noopener noreferrer">Share to Microsoft Teams(SAP S/4HANA Cloud)</A> &nbsp;and <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/f5d3e1005efd4e86acf9a65abf428082/3a648e3f3c734cc5af63ada6d0bbc750.html" target="_blank" rel="noopener noreferrer">Integrate Microsoft Teams (SAP S/4HANA)</A></P></TD></TR><TR><TD width="25%" height="309px"><P><STRONG>Business role changes</STRONG></P><P>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; New business roles</P><P>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Changed business roles, i.e. changes in business catalogs</P></TD><TD width="39%" height="309px"><P><STRONG>Can defer to post-upgrade&nbsp;</STRONG>- New SAP business role templates</P><P><STRONG>Must prepare – </STRONG>Changes to existing SAP business role templates</P><P><STRONG><FONT color="#FF0000">IMPORTANT:</FONT> </STRONG>You can minimize mandatory changes by creating custom business roles</P></TD><TD width="35%" height="309px"><P><STRONG>Mandatory </STRONG>- <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/f5d3e1005efd4e86acf9a65abf428082/7226cf68e15c4254999700aa69bb97c8.html?v" target="_blank" rel="noopener noreferrer">Change of Business Roles in Retail (SAP S/4HANA)</A></P><P><STRONG>Optional </STRONG>– new business role Master Data Specialist - Maintenance Management (SAP_BR_MD_SPECIALIST_EAM). Refer to <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/f5d3e1005efd4e86acf9a65abf428082/d1e7b3b6f898420886f8bf07909150b2.html?" target="_blank" rel="noopener noreferrer">Business Role Template for Master Data (SAP S/4HANA)</A></P></TD></TR><TR><TD width="25%" height="254px"><P><STRONG>CDS Views changes</STRONG></P><P>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; New CDS Views released</P><P>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDS Views can be changed, deprecated, or decommissioned (i.e. deleted)</P></TD><TD width="39%" height="254px"><P><STRONG>Can defer to post-upgrade&nbsp;</STRONG>– New CDS Views, CDS View deprecations</P><P><STRONG>Must prepare -</STRONG> CDS View changes + decommissioned CDS Views</P></TD><TD width="35%" height="254px"><P><STRONG>Mandatory</STRONG> – Adjust custom analytics using the changed/deprecated CDS View as soon as possible.</P><P>Refer to <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/f5d3e1005efd4e86acf9a65abf428082/2a978aa4e472441c9c1d5b286bceefe6.html?" target="_blank" rel="noopener noreferrer">Deprecated and Successor CDS Views for Collateral Management (SAP S/4HANA)</A></P></TD></TR><TR><TD width="25%" height="274px"><P><STRONG>Authorization/ Restriction changes</STRONG></P></TD><TD width="39%" height="274px"><P><STRONG>Must prepare –</STRONG> Changes to authorizations/restrictions affecting existing apps</P></TD><TD width="35%" height="274px"><P><STRONG>Mandatory</STRONG> - <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/ee9ee0ca4c3942068ea584d2f929b5b1/f7bc14d9f79c4d799bdf5aea46013625.html?p" target="_blank" rel="noopener noreferrer">IAM: Restriction Type "Functional Area" (SAP S/4HANA Cloud)</A></P><P><STRONG>Mandatory</STRONG> - <A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/f5d3e1005efd4e86acf9a65abf428082/d3629c11d9c442798d1df074e58ea49f.html?" target="_blank" rel="noopener noreferrer">Authorization Object for Maintenance Plans (SAP S/4HANA)</A></P></TD></TR><TR><TD width="25%" height="364px"><P><STRONG>Extensibility and Administration tooling changes</STRONG>, including Key User Extensibility changes</P></TD><TD width="39%" height="364px"><P><STRONG>Must prepare </STRONG>– changed, deprecated, and obsolete tools in use</P><P><STRONG>Can defer to post-upgrade</STRONG> – new tools</P></TD><TD width="35%" height="364px"><P><STRONG>Mandatory </STRONG>– <A href="https://help.sap.com/docs/ABAP_PLATFORM/66906ae3920c4fc684cf588290fb9267/d3f6152a399e4cc8847c6cc977a78a1f.html?" target="_blank" rel="noopener noreferrer">Launchpad Designer features deprecated (SAP S/4HANA)</A>. If you have created custom technical catalogs using the Launchpad Designer, use the new tool Migration of Technical Catalogs to move them to the Launchpad app manager.</P><P><STRONG>Optional - &nbsp;</STRONG><A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/ee9ee0ca4c3942068ea584d2f929b5b1/f8a54a2b8a614f8c89cb441d80099363.html?" target="_blank" rel="noopener noreferrer">New: Review Booklet Designer in the "Manage KPIs and Reports" App (SAP S/4HANA Cloud)</A></P></TD></TR></TBODY></TABLE><H1 id="toc-hId--123625125"><FONT color="#000080">Tips for managing impacts on business users</FONT></H1><P>Few people like surprises – even welcome surprises!&nbsp; Involving your business appropriately in release changes avoids confusion and helps you manage expectations.</P><P>You will usually want to work with your business stakeholders, for example you might ask them to recommend which business users should be involved in evaluating the successor apps and app changes.</P><P>For general app changes, it’s usually sufficient for the business user to take a look and see if any change management is necessary.</P><P>For successor apps:</P><OL><LI>Make sure <STRONG>users are aware</STRONG> that a successor app exists.</LI><LI>Work with the more pro-innovation / pro-active users to <STRONG>review the successor</STRONG> app.</LI><LI>Verify the <STRONG>SAP-delivered context-sensitive help</STRONG> (accessed via the help “?” icon) for the successor app is sufficient for your needs. Optionally, adjust the help content in SAP Enable Now.</LI><LI><STRONG>Discuss when to move </STRONG>to the successor app with your business stakeholders.</LI><LI>When applying changes, <STRONG>make sure changes to business roles are clear</STRONG>. If you are going to have the predecessor app and successor app available at the same time, make sure they are marked on the tile.</LI></OL><P><STRONG><EM>Hint:</EM></STRONG><EM> In SAP-delivered business role templates, </EM><EM>deprecated apps may no longer be available by default on the SAP Fiori launchpad. </EM></P><UL><LI><EM>In which case, you can find it in the app finder until it's deleted. </EM></LI><LI><EM>Alternatively, the app tile may be changed to add a text to show the app is deprecated.</EM></LI></UL><P><EM>Example below of the SAP delivered business role General Ledger Accountant in SAP S/4HANA 2023 (and SAP S/4HANA Cloud 2308), where Manage Journal Entries is superseded.&nbsp; Both the predecessor and successor have been made available and the tiles marked as “New Version Recommended” and “Old Version” to clarify successor and predecessor</EM>.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_3-1709469913689.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74657iBC9696D4B4584F79/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_3-1709469913689.png" alt="Jocelyn_Dart_3-1709469913689.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId--320138630"><FONT color="#000080">Where to find information on successor apps</FONT></H1><P>You can find information on the lifecycle stage of apps in many of the usual SAP resources, such as:</P><UL><LI><A href="https://help.sap.com/docs/link-disclaimer?site=https%3A%2F%2Fwww.sap.com%2Frasd" target="_blank" rel="noopener noreferrer">Release Assessment Scope Dependency (RASD)</A> tool for SAP S/4HANA Cloud</LI><LI><A href="https://help.sap.com/whats-new/5fc51e30e2744f168642e26e0c1d9be1?locale=en-US" target="_blank" rel="noopener noreferrer">What’s New Viewer for SAP S/4HANA</A> for SAP S/4HANA</LI></UL><P>In the What’s New Viewer adjust the type to find obsolete (deleted) and deprecated changes between your current SAP S/4HANA release and your upgrade target SAP S/4HANA release.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_4-1709469913704.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74658i5F3BB072471FA924/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_4-1709469913704.png" alt="Jocelyn_Dart_4-1709469913704.png" /></span></P><P>&nbsp;</P><P>For <STRONG>mass evaluation</STRONG> of all your current apps in SAP S/4HANA you can also use either of these tools:</P><UL><LI><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-readiness-check-for-sap-s-4hana-upgrades/ba-p/13493174" target="_blank"><STRONG>SAP Readiness Check for SAP S/4HANA upgrades</STRONG></A> when you are ready to plan your upgrade.<UL><LI>Refer to <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/new-check-for-app-availability-in-sap-readiness-check-for-sap-s-4hana-and/ba-p/13580428" target="_blank"><STRONG>New Check for App Availability in SAP Readiness Check for SAP S/4HANA and SAP Readiness Check for SAP S/4HANA upgrades</STRONG></A></LI></UL></LI><LI><STRONG>SAP Fiori Upgrade Impact Analysis </STRONG>at any time<UL><LI>Refer to <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-for-sap-s-4hana-upgrade-impact-analysis/ba-p/13553449" target="_blank"><STRONG>SAP Fiori for SAP S/4HANA – Upgrade Impact Analysis</STRONG></A></LI></UL></LI></UL><P><STRONG>IMPORTANT:</STRONG> These tools cover lifecycle changes in all UI technologies supported by SAP S/4HANA and SAP S/4HANA Cloud, including SAP Fiori apps, Web Dynpro ABAP apps, WebClient UI apps, and SAP GUI transactions.&nbsp; Custom apps can be submitted to the review and will be flagged as “unknown apps”.</P><P>These tools are mostly driven by the details in the&nbsp;<A href="https://url.sap/fiori-apps-library" target="_self" rel="nofollow noopener noreferrer">SAP Fiori apps library</A>.</P><P>In the SAP Fiori apps reference library apps are available by default.</P><P>When an app is deprecated, you may see a message “Deprecated for selected release version” as shown below for app F1662 Operational Supplier Evaluation.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_5-1709469913710.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74656iF52C303866331F24/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_5-1709469913710.png" alt="Jocelyn_Dart_5-1709469913710.png" /></span></P><P>&nbsp;</P><P>When an app is obsolete, you will not be able to select that version. For example, F1662 was made obsolete in SAP S/4HANA 2022. You cannot select the release SAP S/4HANA 2022 for that app.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_6-1709469913716.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74659i3D62CED58997A1DE/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_6-1709469913716.png" alt="Jocelyn_Dart_6-1709469913716.png" /></span></P><P>&nbsp;</P><P>You can find the successor app listed in the Related Apps tab. For example you can find that the successor app is F1662A Operational Supplier Evaluation (Version 2).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Jocelyn_Dart_7-1709469913724.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/74660iE9B2C58E50F9045E/image-size/large?v=v2&amp;px=999" role="button" title="Jocelyn_Dart_7-1709469913724.png" alt="Jocelyn_Dart_7-1709469913724.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId--516652135"><FONT color="#000080"><SPAN>Becoming a SAP Fiori for SAP S/4HANA guru</SPAN></FONT></H1><P>You’ll find much more on our&nbsp; <A href="https://community.sap.com/topics/fiori/s4hana" target="_blank">SAP Fiori for SAP S/4HANA topic page</A></P><P>Other helpful links:</P><UL><LI>See all questions and answers about <A href="https://community.sap.com/t5/c-khhcw49343/SAP+Fiori+for+SAP+S%25252F4HANA/pd-p/73555000100800000131" target="_blank">SAP Fiori for SAP S/4HANA&nbsp;</A></LI><LI>Follow <A href="https://blogs.sap.com/tags/73555000100800000131/" target="_blank" rel="noopener noreferrer">SAP Fiori for SAP S/4HANA</A> for more blogs and updates&nbsp;</LI><LI><A href="https://community.sap.com/t5/forums/postpage/choose-node/true/board-id/technology-questions?primaryTagId=73555000100800000131" target="_blank">Ask a Question about SAP Fiori for SAP S/4HANA</A></LI></UL><P><EM>Brought to you by the SAP S/4HANA RIG and Customer Care team. </EM></P> 2024-03-05T04:01:52.255000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/content-is-key-sap-mobile-start-now-supports-sap-analytics-cloud-kpis-on/ba-p/13631195 Content is Key – SAP Mobile Start now supports SAP Analytics Cloud KPIs on Tiles & Widgets 2024-03-07T14:38:04.247000+01:00 ThiloBerndt https://community.sap.com/t5/user/viewprofilepage/user-id/165819 <P style=" text-align : left; ">Accessing the right content at the right time is crucial for mobile users. We all know the situation – you are away from your desk but need to urgently look up some information, complete a business process, need to work on an urgent task or need to monitor an important KPI. With SAP Mobile Start, you can do this easily, as the app provides you with the right content like business workflows, apps and news - based on your business role/ your persona.</P><P style=" text-align : left; ">With the latest SAP Analytics Cloud release 2024.04, we add another important new content category: analytical KPIs. Now, You can see your SAP Analytics Cloud business KPIs in SAP Mobile Start as well.</P><P style=" text-align : left; ">The KPIs are shown on the respective tile or widget, and you can easily navigate to the details (analytical story) by tapping on them. Based on the configuration, analytical stories can be opened within the native SAP Analytics Cloud app or within the embedded web view of SAP Mobile Start.</P><P style=" text-align : left; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ThiloBerndt_0-1709804736963.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77039i7C88040EAD8F0D1D/image-size/medium?v=v2&amp;px=400" role="button" title="ThiloBerndt_0-1709804736963.png" alt="ThiloBerndt_0-1709804736963.png" /></span></P><P style=" text-align: center; ">SAP Mobile Start – SAP Analytics Cloud KPIs</P><P style=" text-align : left; "><STRONG>So, how does this work?</STRONG> It is quite straight forward: Each KPI in SAP Analytics Cloud can be retrieved with its ID via an URL, each analytical story can be opened via an URL. Those two URLs can be used to create the needed tile in SAP Build Work Zone, standard edition, which then can be made available within SAP Mobile Start. To show KPI information like color coding or trend indicators, we do leverage the well know concept of the advanced monitoring tiles.</P><P style=" text-align : left; ">In the following example, we do the configuration to open the SAP Analytics Cloud story within the SAP Mobile Start embedded web view.</P><P style=" text-align : left; ">For the following steps, you need to have <SPAN>admin or report designer rights for SAP Analytics Cloud and admin rights for SAP Build Work Zone, standard edition. </SPAN>Please also check the SAP Build Work Zone, standard edition <A href="https://help.sap.com/docs/build-work-zone-standard-edition/sap-build-work-zone-standard-edition/exposing-sap-analytics-cloud-widgets-in-sap-mobile-start?locale=en-US" target="_blank" rel="noopener noreferrer">SAP Help documentation.</A></P><P><STRONG>Step 1<BR /></STRONG>Get the analytical story URL from SAP Analytics Cloud via the story sharing feature. In your SAP Analytics Cloud story, go to the File Menu and select the share button. Then copy the default link, the URL that points to the SAP Analytics Cloud story.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ThiloBerndt_1-1709805269299.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77042i13DD6CCE227767F1/image-size/medium?v=v2&amp;px=400" role="button" title="ThiloBerndt_1-1709805269299.png" alt="ThiloBerndt_1-1709805269299.png" /></span></P><P style=" text-align: center; ">SAP Analytics Cloud - Share story pop-up</P><P><STRONG>Step 2<BR /></STRONG>In the SAP Build Work Zone, standard Edition site manager, create a new app with the following parameters:</P><UL><LI><STRONG>Open app</STRONG>: In new tab</LI><LI><STRONG>System</STRONG>: No system</LI><LI><STRONG>App UI technology</STRONG>: URL</LI><LI><STRONG>URL</STRONG>: Add the URL to the SAP Analytics Cloud story (step 1)</LI></UL><P>Certainly, you should also assign a good name and icon to the tile.</P><P>As always, you do need to assign navigation parameters on the navigation tab. You should use something that clearly describes the target, if possible in a unique way:</P><UL><LI><STRONG>Semantic Object</STRONG>: sacstory&lt;Story ID&gt;</LI><LI><STRONG>Action</STRONG><SPAN>: open</SPAN></LI></UL><P><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ThiloBerndt_2-1709805407953.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77043iB688CC30EEF16412/image-size/medium?v=v2&amp;px=400" role="button" title="ThiloBerndt_2-1709805407953.png" alt="ThiloBerndt_2-1709805407953.png" /></span></P><P style=" text-align: center; ">SAP Build Work Zone, standard edition – Content Manager&nbsp;</P><P><STRONG>Step 3<BR /></STRONG>In SAP Analytics Cloud, get the KPI ID by clicking on the respective context menu and select “More Options” and then just “Copy Widget ID”.<BR />Remark: The context menu option in edit mode needs to be enabled. Please also have a look at the respective SAP Analytics Cloud&nbsp;<FONT color="#000000"><A href="https://help.sap.com/docs/SAP_ANALYTICS_CLOUD/18850a0e13944f53aa8a8b7c094ea29e/4b3d4ca123df4315a425a00d53e8f4e1.html?locale=en-US" target="_blank" rel="noopener noreferrer">SAP Help documentation</A>&nbsp;<FONT color="#333333">and the SAP Build Work Zone, standard edition</FONT> <A href="https://help.sap.com/docs/build-work-zone-standard-edition/sap-build-work-zone-standard-edition/exposing-sap-analytics-cloud-widgets-in-sap-mobile-start?locale=en-US" target="_blank" rel="noopener noreferrer">SAP Help documentation.</A></FONT></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ThiloBerndt_3-1709805511755.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77044i44060C284AE1BEF1/image-size/medium?v=v2&amp;px=400" role="button" title="ThiloBerndt_3-1709805511755.png" alt="ThiloBerndt_3-1709805511755.png" /></span></P><P style=" text-align: center; ">SAP Analytics Cloud – Retrieving KPI widget ID&nbsp;</P><P><STRONG>Step 4<BR /></STRONG>Finally, go to the Visualisation Tab in the site manager and add the KPI ID at the end of the respective service URL in your site manager app.</P><P>&nbsp;Maintain the following information:</P><UL class="lia-list-style-type-disc"><LI><STRONG>Visualisation&nbsp;Type:</STRONG>&nbsp;Select "Dynamic App Launcher"</LI><LI><STRONG>Title:&nbsp;</STRONG><EM>auto filled</EM></LI><LI><STRONG>Subtitle:</STRONG>&nbsp;Generally, the subtitle will be fetched from&nbsp;<SPAN>SAC</SPAN>. &nbsp;</LI><LI><STRONG>Supported Devices:</STRONG>&nbsp;Check "Tablet" &amp; "Mobile" – certainly, you can also show the tile on the desktop.</LI><LI><STRONG>System:</STRONG>&nbsp;Select the SAP Analytics Cloud system.</LI><LI><STRONG>Service URL:</STRONG><SPAN>&nbsp;The relative&nbsp;</SPAN><SPAN>API</SPAN><SPAN>&nbsp;URL which returns the data structure needed for the advanced monitoring tiles.&nbsp;</SPAN>The service URL looks like below:&nbsp; "/dynamic_dest/<FONT color="#FF0000"><SPAN>SAC</SPAN></FONT><SPAN>/widgetquery/getWidgetData?storyId=<FONT color="#0000FF">4E182586C29ECA5EA35767AA45F13BC4</FONT>&amp;widgetId=<FONT color="#339966">Chart_1</FONT>&amp;type=kpiTile"</SPAN><P>This consists of the&nbsp;<FONT color="#FF0000">System (red)</FONT>,&nbsp;<FONT color="#0000FF">Story ID (blue)</FONT>&nbsp;and&nbsp;<FONT color="#339966">WidgetID (green)</FONT>&nbsp;which need to be configured by you.</P><UL><LI><P>The&nbsp;<STRONG>system</STRONG>&nbsp;is the same as selected above.&nbsp;</P></LI><LI><P>The&nbsp;<STRONG>Story ID</STRONG>&nbsp;can be fetched from the corresponding&nbsp;<SPAN>SAC</SPAN>&nbsp;tenant URL where you see the story board.&nbsp;<EM>For more information check the additional information section above.</EM></P></LI><LI><P><STRONG>The&nbsp;Widget ID&nbsp;</STRONG>(called ID in&nbsp;SAC) can be fetched when editing the&nbsp;KPI&nbsp;in the&nbsp;SAC&nbsp;tenant.&nbsp;<EM>For more information check the additional information section above</EM></P></LI></UL></LI></UL><P>Once all data is maintained as shown, press&nbsp;<STRONG>Save</STRONG>&nbsp;to create the app.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ThiloBerndt_4-1709807828042.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77085i2C9150E880618DA8/image-size/medium?v=v2&amp;px=400" role="button" title="ThiloBerndt_4-1709807828042.png" alt="ThiloBerndt_4-1709807828042.png" /></span></P><P style=" text-align: center; ">SAP Build Work Zone, standard edition – Content Manager</P><P>After assigning the app to the respective role and group/ section, users should get the tile, with the updated KPI. By tapping on the tile, the SAP Analytics Cloud story opens.</P><P>I hope you like our new analytical KPI content type within SAP Mobile Start, we will certainly continue to add more attractive content types. &nbsp;&nbsp;</P><P>For further information on the new topics, please check our SAP Mobile Start <A href="https://help.sap.com/docs/mobile-start?locale=en-US" target="_blank" rel="noopener noreferrer">documentation</A>.</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><SPAN>Visit </SPAN><SPAN><A href="https://community.sap.com/topics/mobile-experience" target="_blank">SAP Mobile Experience Community Page</A></SPAN> <SPAN>and click “follow” to get the&nbsp;latest&nbsp;development and innovation of our solutions.&nbsp;</SPAN>We look forward hearing about your experience with setting up the solution in your landscape; please do share your thoughts and comments below. <SPAN><A href="https://answers.sap.com/questions/ask.html?primaryTagId=73554900100800003452&amp;additionalTagId=246015353107843540080736084568477" target="_blank" rel="noopener noreferrer">Enter here </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-03-07T14:38:04.247000+01:00 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 User Experience Advances with SAP S/4HANA 2023 FPS01 (Private Cloud and On-Premise) 2024-03-12T12:04:04.613000+01:00 ThomasReiss https://community.sap.com/t5/user/viewprofilepage/user-id/149639 <P><STRONG><SPAN>The new proactive “My Home” page is now available via Feature Pack Stack 1 (FPS01) for SAP S/4HANA 2023. This release also allows customers to merge spaces and pages for a better user experience, and provides further cool ways to collaborate with Microsoft Teams. Beyond that, we’ve included further improvements in the user experience, including updates to the Horizon visual theme.&nbsp;Last but not least, SAP Start can now be integrated to the private cloud, and you can get an outlook on our plans for integrating Joule.</SPAN></STRONG></P><P>This post gives you an overview of user experience innovations relevant for SAP S/4HANA since the initial release last October: innovations which came with FPS01 as well as relevant design and technology updates.</P><P>If you haven’t already seen it, have a look at this post for the overview of what came with the initial 2023 release:</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></UL><P><SPAN>To see how good SAP S/4HANA Cloud, private edition, now looks across all the main product areas I thoroughly recommend that you have a look at the online <A href="https://www.sap.com/products/erp/s4hana-private-edition/product-tour.html" target="_blank" rel="noopener noreferrer">Product Tour</A>.<BR /><BR /></SPAN></P><H1 id="toc-hId-859807422"><SPAN>New <EM>My Home</EM> Page now available</SPAN></H1><P><SPAN>We have delivered as we had promised in October: the intuitive and powerful new My Home product home page with SAP S/4HANA 2023 Cloud Private Edition and SAP S/4HANA 2023 (on-premise) is available now. This builds on the spaces and pages functionality of the SAP Fiori launchpad, so if you have not yet moved from the launchpad’s classic home page, which uses groups, now is the time to get started!</SPAN></P><P><SPAN>Figure 1 shows the main features of this new start page, and the subsequent four-minute video lets you watch it in action: how to use it, as well as how to personalize it. <EM>My Home</EM> benefits from extensive feedback from users of SAP S/4HANA Cloud Public Edition, where it was first introduced over a year ago, and which has had three updates since then.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 1: The new My Home product home page." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/78748i88DC2966EE8A1B5D/image-size/large?v=v2&amp;px=999" role="button" title="01 My Home 2402 and 2023 FPS01.jpg" alt="Figure 1: The new My Home product home page." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 1: The new My Home product home page.</span></span></P><P><SPAN>The&nbsp;<STRONG>new&nbsp;<EM>My Home</EM></STRONG>&nbsp;is an easy-to-use product home page that supports business users in their everyday tasks and optimizes their work environment significantly. It orchestrates information, tasks, and applications so that you can access exactly what you need to get your job done with speed and agility.</SPAN></P><P><SPAN>Combining items from the ‘My Inbox’ and ‘My Situations’ SAP Fiori apps, it enables you to access and manage your to-dos and favorite pages and apps. Insights offer a particularly powerful capability: users can personalize which insight cards they want to have on the <EM>My Home</EM> page, by choosing from cards in their overview page apps, or by creating cards directly from SAP Fiori elements list report applications. In addition, the news section allows administrators to provide users with important news, and users can personalize the selection of topics.</SPAN></P><P><SPAN>The details matter if you want to provide a great user experience: Figure 2 shows how user feedback has led us to provide an option to refresh all the Insight Tiles with one click. We provide the same option for refreshing all the Insight Cards with one click too.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 2: My Home offers a menu for managing sections, pages, and insight cards directly next to the respective title, with a one-click refresh option for everything within an insight section." style="width: 522px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/78706i0BED7A22D9880B0C/image-dimensions/522x349?v=v2" width="522" height="349" role="button" title="02 My Home updates.jpg" alt="Figure 2: My Home offers a menu for managing sections, pages, and insight cards directly next to the respective title, with a one-click refresh option for everything within an insight section." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 2: My Home offers a menu for managing sections, pages, and insight cards directly next to the respective title, with a one-click refresh option for everything within an insight section.</span></span></SPAN></P><P><SPAN>Another feature which we added based on user feedback, which is shown right at the end of the video below, is the option for users to share their personalized <EM>My Home</EM> definition with colleagues, by exporting to a file, which each colleague can then import. This means that a key user could define an optimum <EM>My Home</EM> for their work and share with all the other colleagues in the team who have the same roles.</SPAN></P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_fk71fwtf" target="_self" rel="nofollow noopener noreferrer"><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Video 1: Look at the new My Home product home page, and how users can personalize it to their needs." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79074iF311EA6B0D1336B7/image-size/large?v=v2&amp;px=999" role="button" title="Video 01 - My Home.jpg" alt="Video 1: Look at the new My Home product home page, and how users can personalize it to their needs." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Video 1: Look at the new My Home product home page, and how users can personalize it to their needs.</span></span></SPAN></A></P><P><SPAN>Note that the above video is taken from an SAP S/4HANA Cloud Public Edition 2402 system, which includes one feature which is not yet available for SAP S/4HANA Cloud Private Edition, nor for SAP S/4HANA: support for direct collaboration with creators of tasks via Microsoft Teams chats or calls, described further below in the Collaboration section. We do however plan to provide this in Q4/2024. <EM>[Please note that, as with all such forward-looking statements, our plans are subject to change, but we hope to deliver as planned].</EM></SPAN></P><P><SPAN>You can read more about <EM>My Home</EM> in the documentation:</SPAN></P><UL><LI><SPAN>Documentation: <A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/a7b390faab1140c087b8926571e942b7/8a60279e8d2041b5ad8d3455fab0f3ef.html?version=202310.001" target="_blank" rel="noopener noreferrer">My Home in SAP S/4HANA</A>.</SPAN></LI></UL><P>&nbsp;</P><H1 id="toc-hId-663293917"><SPAN>Merging Spaces and Pages in the SAP Fiori Launchpad</SPAN></H1><P><SPAN>Beyond the new <EM>My Home</EM> page, we also give customers the means to improve the user experience of the other SAP Fiori launchpad spaces and pages: customers can choose to merge spaces, pages and even sections – those from SAP as well as custom ones.</SPAN></P><P><SPAN>Why would you want to do that? Basically, if a user has a few spaces which don’t contain many pages, or pages which don’t have many sections, you can optimize their navigation by merging them. Users then have fewer navigation options and see more applications at a glance on one page. Also, in some cases users can end up with pages or sections with the same name, so it would make sense for users to have these merged into just one page or section.</SPAN></P><P><SPAN>The layout is automatically adjusted, so this can be done with low effort. Figure 3 shows an example, where two spaces (“Billing” and “Customer Returns”), each with only one page, have been merged into one space (“Billing”), and where the two pages have been merged into one page. The two sections “Customer Returns” and “Flexible Analysis” from the “Customer Returns” page are automatically added behind the section “Billing Documents and Billing Document Requests” from the “Billing” page.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 3: Merging spaces and pages." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/78707iF53DCDB485D53BA8/image-size/large?v=v2&amp;px=999" role="button" title="03 Merging Spaces and Pages.jpg" alt="Figure 3: Merging spaces and pages." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 3: Merging spaces and pages.</span></span></P><P><SPAN>More information is available here:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/merging-spaces-and-pages/ba-p/13634304" target="_blank">Merging Spaces and Pages</A>.</SPAN></LI><LI><SPAN>Documentation: <A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/a7b390faab1140c087b8926571e942b7/655c6ce6f1444bcbac1897c304b2400a.html" target="_blank" rel="noopener noreferrer">Merging Spaces</A>.</SPAN></LI></UL><H2 id="toc-hId-595863131"><SPAN>Composite Roles supported by Apps for Managing Spaces and Pages</SPAN></H2><P><SPAN>Now, the <EM>Manage Launchpad Pages</EM> and the <EM>Manage Launchpad Spaces</EM> apps support composite roles. These are roles defined in SAP S/4HANA (private cloud and on-premise) which are comprised of multiple single roles. </SPAN></P><P><SPAN>This means that administrators who are using <EM>Manage Launchpad Pages</EM> to define pages for users with a composite role now see all the catalogs and tiles assigned to all of the single roles contained in the composite role. As a result, maintainenance is far less error-prone than before, where they had to select from the list of all tiles in all catalogs, rather than being shown the relevant subset.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-270266907"><SPAN>Collaboration: New Capabilities with Microsoft Teams </SPAN></H1><H2 id="toc-hId-202836121"><SPAN>Share as Card with Microsoft Teams Collaborative Stage View</SPAN></H2><P><SPAN>You can already share a link to an application in a Microsoft Teams chat, but now you can go a step further and share the application as a card in the chat. When the recipient opens the card by clicking on the “open” button, the shared application is opened within Microsoft Teams as a new chat window, which Microsoft calls the collaborative stage view. Users can work with the application and chat with colleagues in the same chat window. Figures 4, 5 and 6 show some of these steps, but to get the best impression, watch this recording from an SAP S/4HANA Cloud Public Edition 2402 system, which provides the same functionality:</SPAN></P><UL><LI><SPAN>Video: <A href="https://video.sap.com/media/t/1_8cu7skg5" target="_blank" rel="noopener noreferrer">Collaborative ERP: Share as Card based on Collaborative Stage View</A> (1:49).</SPAN></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 4: Share as Card – showing how the user Jim selects this for his sales order." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/78708i5DEB633AD3C87740/image-size/large?v=v2&amp;px=999" role="button" title="04 Share as card drop-down menu.jpg" alt="Figure 4: Share as Card – showing how the user Jim selects this for his sales order." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 4: Share as Card – showing how the user Jim selects this for his sales order.</span></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 5: Share as Card – this is what it looks like for the recipient, Alice, after Jim shared the card and later added in the chat “Hey Alice, can you please remove the delivery block? It’s urgent! Thanks.”" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/78709iFBEDD9E32C30FEED/image-size/large?v=v2&amp;px=999" role="button" title="05 Share as card - receiver view in Teams.jpg" alt="Figure 5: Share as Card – this is what it looks like for the recipient, Alice, after Jim shared the card and later added in the chat “Hey Alice, can you please remove the delivery block? It’s urgent! Thanks.”" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 5: Share as Card – this is what it looks like for the recipient, Alice, after Jim shared the card and later added in the chat “Hey Alice, can you please remove the delivery block? It’s urgent! Thanks.”</span></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 6: Share as Card – after Alice clicked on “Open” in the card, she sees the application in the Microsoft Teams collaborative stage view, next to the chat. In this example, she has already interacted with the app in-place and removed the delivery block, and is about to send off her reply in the chat to Jim." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/78710iC23F0AF65C03C33D/image-size/large?v=v2&amp;px=999" role="button" title="06 Share as card - full-window chat reply.jpg" alt="Figure 6: Share as Card – after Alice clicked on “Open” in the card, she sees the application in the Microsoft Teams collaborative stage view, next to the chat. In this example, she has already interacted with the app in-place and removed the delivery block, and is about to send off her reply in the chat to Jim." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 6: Share as Card – after Alice clicked on “Open” in the card, she sees the application in the Microsoft Teams collaborative stage view, next to the chat. In this example, she has already interacted with the app in-place and removed the delivery block, and is about to send off her reply in the chat to Jim.</span></span></P><H2 id="toc-hId-6322616"><SPAN>Planned: Initiate a Chat Directly from a Contact Card on the UI</SPAN></H2><P>Wherever a person’s name or e-mail address is shown with an assigned contact card, we plan to allow users to<SPAN> directly start a Microsoft Teams chat or call with that person. Figure 7 shows an example from the new <EM>My Home</EM> page, showing how you will be able to immediately start a chat, video call or voice call with the person, in this case the creator of the task; you can also see an example in the above <EM>My Home</EM> video. As mentioned above, we plan to provide this feature in Q4/2024. <EM>[Please note that, as with all such forward-looking statements, our plans are subject to change].</EM></SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 7 (preview): Chat, start a video call or a voice-only call with the creator of a task, via Microsoft Teams (planned for Q4/2024)." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79046i9FFE308AFE42C826/image-size/large?v=v2&amp;px=999" role="button" title="07 Preview - Collaboration - chat with contact.png" alt="Figure 7 (preview): Chat, start a video call or a voice-only call with the creator of a task, via Microsoft Teams (planned for Q4/2024)." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 7 (preview): Chat, start a video call or a voice-only call with the creator of a task, via Microsoft Teams (planned for Q4/2024).</span></span></P><P>&nbsp;</P><H1 id="toc-hId--319273608"><SPAN>Improvements in Details</SPAN></H1><P><SPAN>Below I’ve chosen some of the highlights which come with FPS01. To see all the new features, look at the documentation:</SPAN></P><UL><LI><SPAN><A href="https://help.sap.com/whats-new/6a9ccc848f4047178da63fe4eaa86d50?Business_Area=User%20Experience&amp;locale=en-US&amp;Version=ABAP%20Platform%202023%20FPS01" target="_blank" rel="noopener noreferrer">What’s New Viewer ABAP Platform (User Experience)</A></SPAN></LI></UL><H2 id="toc-hId--386704394"><SPAN>Copy and Paste in SAPUI5 Tables</SPAN></H2><P><SPAN>Users can easily select areas in SAPUI5-based tables now and copy the contents from the clipboard and then paste into other applications, such as an e-mail or a spreadsheet. The copy action can be triggered by a new button added to the table, as demonstrated in Figure 8, or via the keyboard.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 8: Copy and Paste from SAPUI5 tables." style="width: 815px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79047i1C65D2FFC2A96C66/image-size/large?v=v2&amp;px=999" role="button" title="08 Copy &amp; Paste SOFI S4H 2402 (small).gif" alt="Figure 8: Copy and Paste from SAPUI5 tables." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 8: Copy and Paste from SAPUI5 tables.</span></span></P><H2 id="toc-hId--583217899"><SPAN>Sorting in Tables by Name, Not Just by ID</SPAN></H2><P><SPAN>In tables, we often show the ID and the name of an entity in one column, as “ID (Name)”, rather than in two separate columns. With this release, the table sorting feature offers you the option to sort by name and not just by ID. Technically, this is a feature of the Smart Table in SAPUI5.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 9: Table columns can now be sorted by name in addition to ID. In this example, the Company Code column contains values with ID “0001” and name “SAP DEMO Company”; you can now sort by either of these." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79048i2636A759E8FCA00C/image-size/large?v=v2&amp;px=999" role="button" title="09 Sort table column by code name.jpg" alt="Figure 9: Table columns can now be sorted by name in addition to ID. In this example, the Company Code column contains values with ID “0001” and name “SAP DEMO Company”; you can now sort by either of these." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 9: Table columns can now be sorted by name in addition to ID. In this example, the Company Code column contains values with ID “0001” and name “SAP DEMO Company”; you can now sort by either of these.</span></span></P><H2 id="toc-hId--779731404"><SPAN>Enhanced Type Ahead for (Multi) Combo Boxes</SPAN></H2><P><SPAN>When entering data in the system, users want to do this as quickly as possible. Being able to very quickly select an entry from a drop-down combo box or multi-combo box helps a lot, and we have now made this easier by selecting all entries which have a match anywhere with what you have typed – and not just matching the first letters. Figure 10 shows two examples for the field <EM>Credit Check Rule</EM>: the entry is selected which matches the input somewhere – and the part which matches is highlighted in bold text.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 10: Enhanced type ahead functionality for combo boxes and multi-combo boxes." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79049i358F395EB27350AB/image-size/large?v=v2&amp;px=999" role="button" title="10 Type ahead enhanced for (multi) combo boxes.jpg" alt="Figure 10: Enhanced type ahead functionality for combo boxes and multi-combo boxes." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 10: Enhanced type ahead functionality for combo boxes and multi-combo boxes.</span></span></P><H2 id="toc-hId--628990552"><SPAN>Save as Tile Supports Dynamic Date Ranges</SPAN></H2><P><SPAN>You can now create dynamic tiles for your selected SAP Fiori launchpad pages which include dynamic date ranges in the selection. Figure 11 shows an example where the date range “This Year (01.01.2023 – 31.12.2023)” has been used to filter the list. From there, the user has called up the “Save as Tile” feature, resulting in a tile which always shows the values for “This Year”.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 11: Save as Tile supports dynamic date ranges." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79052iD83620E2386C82A0/image-size/large?v=v2&amp;px=999" role="button" title="11 Save as tile with dynamic date ranges.jpg" alt="Figure 11: Save as Tile supports dynamic date ranges." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 11: Save as Tile supports dynamic date ranges.</span></span></P><H2 id="toc-hId--825504057"><SPAN>Calendar Week Handling in User Settings</SPAN></H2><P><SPAN>Users can now choose how they want dates to be displayed in calendars, for example when choosing a date via value-help. In addition to using the default format from your system, you can now select between ISO_8601 format, Middle Eastern and Western Traditional, as you can see in Figure 12.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 12: Calendar week handling via the SAP Fiori launchpad user settings." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79051iF8023AA31A15ECC5/image-size/large?v=v2&amp;px=999" role="button" title="12 Calendar week handling.jpg" alt="Figure 12: Calendar week handling via the SAP Fiori launchpad user settings." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 12: Calendar week handling via the SAP Fiori launchpad user settings.</span></span></P><H2 id="toc-hId--1022017562"><SPAN>User ID Displayed in User Settings</SPAN></H2><P><SPAN>I’m glad to say that we now support one of our main customer requests: users can see their technical user ID in the SAP Fiori launchpad settings section, on the tab <EM>User Account</EM>. This helps in cases where support is needed, since the technical ID is logged rather than the user’s name.</SPAN></P><H2 id="toc-hId--1218531067"><SPAN>Select All in Tables</SPAN></H2><P><SPAN>Users can now select all the visible entries in a list report, using the select all checkbox in the table header. Since users might think that all entries in the database have been selected, when in fact only the entries which have been loaded to the UI are selected, a warning pop-up is shown – as you can see in Figure 13.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 13: Select all enabled by default for list reports." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79053i440EAB073E904555/image-size/large?v=v2&amp;px=999" role="button" title="13 Select all.jpg" alt="Figure 13: Select all enabled by default for list reports." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 13: Select all enabled by default for list reports.</span></span></P><H2 id="toc-hId--1415044572"><SPAN>Further Improvements</SPAN></H2><P><SPAN>I would also like to mention these improvements to tables:</SPAN></P><UL><LI><SPAN>Creation rows in tables indicate to users immediately if mandatory values are missing.</SPAN></LI><LI><SPAN>Creation rows in tables allow developers to disable fields which should not be open for entering data due to missing entries in other fields.</SPAN></LI></UL><P>&nbsp;</P><H1 id="toc-hId--1318155070"><SPAN>UI Design News </SPAN></H1><H2 id="toc-hId--1808071582"><SPAN>Design Improvements to the Horizon Visual Theme for SAP Fiori</SPAN></H2><P>Another area where we have been listening to user feedback is our current Horizon visual theme, which we first introduced two years ago to offer you a fresh and modern SAP Fiori experience and to help you get your job done faster, more intuitively, and with better outcomes. Taking your feedback to heart, we’ve improved a number of details such as:</P><UL><LI><SPAN>Improved contrast;</SPAN></LI><LI><SPAN>White input fields instead of gray;</SPAN></LI><LI><SPAN>Clearly identifiable buttons;</SPAN></LI><LI><SPAN>Reduced header size;</SPAN></LI><LI><SPAN>And more.</SPAN></LI></UL><P>Figure 14 summarizes most of these updates in one example UI. You can read more about this and look at more detailed examples in my blog post from September, where I gave an outlook on these planned improvements, which have now become available:</P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/improvements-coming-to-the-horizon-visual-theme-for-sap-fiori/ba-p/13576860" target="_blank">Improvements Coming to the Horizon Visual Theme for SAP Fiori</A></SPAN></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Figure 14: A summary of the updates to the Horizon visual theme, using the Flexible Column Layout pattern as an example to show what it used to look like before the update and what it now looks like after the update." style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79054i418972C02199880B/image-size/large?v=v2&amp;px=999" role="button" title="14 Horizon update (new).jpg" alt="Figure 14: A summary of the updates to the Horizon visual theme, using the Flexible Column Layout pattern as an example to show what it used to look like before the update and what it now looks like after the update." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Figure 14: A summary of the updates to the Horizon visual theme, using the Flexible Column Layout pattern as an example to show what it used to look like before the update and what it now looks like after the update.</span></span></P><H3 id="toc-hId-1996979202"><SPAN>Web Design Guidelines for SAP Fiori Updated: GenAI and SAP Web Components</SPAN></H3><P><SPAN>We have revamped the design guidelines for SAP Fiori for web, with a first set of guidelines in the new <A href="https://experience.sap.com/fiori-design-web/generative-ai-design/" target="_blank" rel="noopener noreferrer">subsection for designing for Generative AI</A> in the <A href="https://experience.sap.com/fiori-design-web/designing-intelligent-systems/" target="_blank" rel="noopener noreferrer">Designing Intelligent Systems section</A>. It covers:</SPAN></P><UL><LI><SPAN><A href="https://experience.sap.com/fiori-design-web/design-principles-for-generative-ai/" target="_blank" rel="noopener noreferrer">Design Principles for Generative AI</A>.</SPAN></LI><LI><SPAN><A href="https://experience.sap.com/fiori-design-web/building-trust-with-generative-ai/" target="_blank" rel="noopener noreferrer">Building Trust in Generative AI</A>.</SPAN></LI></UL><P><SPAN>We are releasing this early version of our generative AI design guidelines to share our discoveries early on with our broader SAP and UX community. The design guidelines in this section will evolve iteratively based on research, input from the community, and feedback from stakeholders.</SPAN></P><P><SPAN>Coming soon:</SPAN></P><UL><LI><SPAN>Designing Safety into Generative AI</SPAN></LI><LI><SPAN>Designing Sustainable Generative AI Experiences</SPAN></LI><LI><SPAN>Designing Effective AI Prompts</SPAN></LI></UL><P><SPAN>In 2H2023 we also provided a beta release of a new section <A href="https://experience.sap.com/fiori-design-web/web-components-overview/" target="_blank" rel="noopener noreferrer">UI Elements – SAP Web Components</A>, where you can interact directly with each web component, since they have been embedded into the respective guideline page.</SPAN></P><H2 id="toc-hId-2093868704"><SPAN>Mobile News</SPAN></H2><P><SPAN>We have enhanced the design of SAP Mobile Start, which can now also run on Apple Vision Pro, as well as enhancing the mobile design system. Find out more in these blog posts:</SPAN></P><UL><LI><SPAN><A href="https://blogs.sap.com/2023/09/29/exciting-new-features-with-sap-mobile-start-1.9-including-new-ios-17-features./" target="_blank" rel="noopener noreferrer">Exciting new features with SAP Mobile Start 1.9, including new iOS 17 features.</A></SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/apple-vision-pro-is-available-sap-mobile-start-v1-10-is-ready/ba-p/13583357" target="_blank">Apple Vision Pro is available – SAP Mobile Start V1.10 is ready</A>.</SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-for-android-7-1-and-ios-10-0-introducing-new-components-and/ba-p/13580515" target="_blank">SAP Fiori for Android 7.1 and iOS 10.0 – Introducing New Components and Mobile Card System</A>.</SPAN></LI></UL><P>&nbsp;</P><H1 id="toc-hId--2104209090"><SPAN>SAP Start with SAP S/4HANA 2023 Cloud Private Edition</SPAN></H1><P>The purpose of SAP Start is to bring together all truly relevant business information for each user in one central place in their web browser, and also to provide the one place to go to start your SAP applications in the cloud, no matter which product you want to use. SAP Start:</P><UL><LI>Gives you quick access to all your applications via the simple yet powerful search field;</LI><LI>Proactively informs you about your to-dos from all products which are connected to the SAP Task Center;</LI><LI>Gives you key insights via insight cards from products connected to SAP Start,</LI><LI>Assists you with Joule, your copilot for working with SAP.</LI></UL><P>As a result: SAP Start will be the best place to start, to simplify your access to multiple SAP cloud products.</P><P>Now, with FPS01, you can integrate SAP S/4HANA Cloud Private Edition 2023 with SAP Start. To find out more, have a look at the documentation:</P><UL><LI><A href="https://help.sap.com/docs/start/sap-start/what-is-sap-start" target="_blank" rel="noopener noreferrer">What is SAP Start?</A></LI><LI><A href="https://help.sap.com/docs/start/sap-start/integrate-sap-s-4hana-cloud-private-edition" target="_blank" rel="noopener noreferrer">Integrate SAP S/4HANA Cloud Private Edition</A><SPAN>.</SPAN></LI></UL><P>&nbsp;</P><H1 id="toc-hId--2132538904"><SPAN>What about Joule?</SPAN></H1><P><SPAN>Using natural language to ask for something is… natural! In other words: a very powerful way to interact with systems. With Joule, we are using the power of GenAI to give you a copilot for your interactions with SAP. It is generally available already today with SAP Start as well as with SAP SuccessFactors, providing an initial set of capabilities, and is available for selected customers of SAP S/4HANA Cloud Public Edition 2402 via an&nbsp;<A href="https://influence.sap.com/sap/ino/#/campaign/3612" target="_blank" rel="noopener noreferrer">Early Adopter Care program</A>.&nbsp;You can find out more about how it is being used in these products here:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-ux-innovations-in-public-cloud-products-joule-ai-entry-points-apple/ba-p/13594954" target="_blank">SAP UX Innovations in Public Cloud Products, Joule, AI, Entry Points, Apple Vision Pro and more</A>.</SPAN></LI></UL><P><SPAN>What about Joule for SAP S/4HANA Cloud Private Edition? Although the next release is planned for 2025, we do plan to incrementally start integrating Joule with SAP S/4HANA Cloud Private Edition 2023 in the course of this year – so keep your eyes peeled for updates about this! <EM>[Please note that, as with all such forward-looking statements, our plans are subject to change, but we hope to deliver as planned].</EM></SPAN><SPAN>&nbsp;</SPAN></P><P>If you’d like to get an idea of what this might look like, have a look at what we are working on for the Early Adopter Care program for SAP S/4HANA Cloud Public Edition. This presentation explains the three types of patterns (Navigational, Transactional and Informational) as well as providing an overview of our AI approach in general and a high-level description of the Joule technology stack:</P><UL><LI>PDF download link:&nbsp;<SPAN><A href="https://d.dam.sap.com/a/yCyykMs/Joule%20in%20SAP%20S4HANA%20Cloud%20public%20edition_PUBLIC.pdf?rc=10" target="_blank" rel="noopener noreferrer">Joule, the AI copilot in SAP S/4HANA Cloud Public Edition</A></SPAN>.</LI></UL><P>This video shows examples of using Joule with all three interaction patterns:</P><UL><LI>Video:&nbsp;<SPAN><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_kc0ahwm4" target="_blank" rel="noopener nofollow noreferrer">Joule in SAP S/4HANA Cloud Public Edition - Early Adopter Care in 2402.</A></SPAN></LI></UL><P>&nbsp;</P><H1 id="toc-hId-1965914887"><SPAN>Final Words</SPAN></H1><P><SPAN>Do keep posting your experiences and recommendations yourself in the SAP Community, with the SAP Fiori and/or the User Experience tag! In case you are wondering how to get a list of the most recent blog posts on SAP Fiori and User Experience in our new SAP Community, use these links:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/c-khhcw49343/SAP+Fiori/pd-p/73554900100700000977" target="_blank">Latest blog posts on SAP Fiori in the SAP Community</A>.</SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/c-khhcw49343/User+Experience/pd-p/4616d815-f39e-45c8-b13b-5a2d6679778f" target="_blank">Latest blog posts on User Experience in the SAP Community</A>.</SPAN></LI></UL><P><SPAN>For general information on design at SAP and SAP Fiori, check out:</SPAN></P><UL><LI><SPAN><A href="http://www.sap.com/design" target="_blank" rel="noopener noreferrer">www.sap.com/design</A>.</SPAN></LI><LI><SPAN><A href="https://pages.community.sap.com/topics/fiori" target="_blank" rel="noopener noreferrer">SAP Community: SAP Fiori topic page</A>.</SPAN></LI></UL> 2024-03-12T12:04:04.613000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/introducing-ui5-linter/ba-p/13633898 Introducing UI5 linter 2024-03-13T13:59:52.249000+01:00 OliverGraeff https://community.sap.com/t5/user/viewprofilepage/user-id/4124 <P>A linter is a static code analysis tool used to find programming bugs, stylistic errors and suspicious constructs. The usage of a linter has many advantages such as</P><UL><LI>introducing an agreed level of code quality resulting in fewer errors in production,</LI><LI>delivering readable and maintainable code,</LI><LI>using a consistent code style making code reviews more efficient,</LI><LI>validating code security, and</LI><LI>ensuring a solid knowledge about code quality for all developers.</LI></UL><TABLE border="1" width="100%"><TBODY><TR><TD width="100%"><P style=" text-align: center; ">The UI5 team introduces <STRONG>UI5 linter</STRONG> to help improve your UI5 code.<BR /><BR /></P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="300048_PayRelatedProcess_R.png" style="width: 105px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79070i4D987C8DE8FD4D97/image-dimensions/105x105?v=v2" width="105" height="105" role="button" title="300048_PayRelatedProcess_R.png" alt="300048_PayRelatedProcess_R.png" /></span></P><P><SPAN>A focus of the first version released now are capabilities to validate the compliance to </SPAN><A href="https://ui5.sap.com/#/topic/28fcd55b04654977b63dacbee0552712" target="_blank" rel="noopener noreferrer">Best Practices for UI5 Developers</A><SPAN>. Following these best practices for new as well as existing apps has always been … well, … best practice. Going forward, this will be even more relevant as these best practices will be the basis for bringing an app to UI5 2.x. Please refer to </SPAN><A href="https://community.sap.com/t5/open-source-blogs/introducing-openui5-2-x/ba-p/13580633" target="_blank">Introducing OpenUI5 2.x</A><SPAN> to understand the approach of removing everything not required to comply with the best practices.<BR /><BR /></SPAN></P><H1 id="toc-hId-859782564">Features</H1><P>UI5 linter is a static code analysis tool for UI5 projects. It checks JavaScript, XML, JSON, and other files in your project and reports the findings. It lists problematic code, which is not following the UI5 best practices, including</P><UL><LI>usage of deprecated APIs / libraries, which are going to be removed</LI><LI>synchronous loading mechanism negatively affecting overall performance, and</LI><LI>usage of global variables.</LI></UL><P><STRONG>Please note:</STRONG> While the initial version of UI5 linter already provides good value, it is not yet covering all aspects and not all best practices for UI5 2.x. The UI5 team plans more versions in the next weeks, which can reveal more findings.<BR /><BR /></P><H1 id="toc-hId-663269059">How To</H1><P>UI5 linter is installed via the npm package manager and can be used via the CLI. Find details on how to install and use it on <SPAN><A href="https://github.com/SAP/ui5-linter" target="_blank" rel="noopener nofollow noreferrer">https://github.com/SAP/ui5-linter</A></SPAN>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="299599_Checklist_R.png" style="width: 128px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79063iEB27A9D122CFA06B/image-dimensions/128x128?v=v2" width="128" height="128" role="button" title="299599_Checklist_R.png" alt="299599_Checklist_R.png" /></span></P><H1 id="toc-hId-466755554"><SPAN class=""><SPAN class="">Become a UI5 linter hero</SPAN></SPAN></H1><OL><LI>Use the new UI5 linter today to<UL><LI>improve the static code quality of your UI5 code,</LI><LI>validate its compliance to UI5 best practices, and</LI><LI>prepare your project for UI5 2.x.<BR /><BR /></LI></UL></LI><LI>Watch out for upcoming versions of the UI5 linter.</LI></OL> 2024-03-13T13:59:52.249000+01:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/user-experience-in-sap-s-4hana-cloud-public-edition-new-microlearning/ba-p/13638187 User Experience in SAP S/4HANA Cloud Public Edition: New Microlearning Available 2024-03-14T15:25:42.119000+01:00 huemayilmaz https://community.sap.com/t5/user/viewprofilepage/user-id/138965 <P>Find out what’s new: Our new blog post series allows our customers, partners, and colleagues a special heads-up on newly available microlearnings.</P><P>This new microlearning by <SPAN>Seyba Elik, a Business Process Senior Consultant</SPAN> with focus on Digital Supply Chain, Cloud Success Services is now available on:&nbsp;<A href="https://microlearning.opensap.com/media/Advanced%20Intercompany%20Sales%20Value%20Chain%20Analysis%20for%20SAP%20S_4HANA%20Cloud/1_koe9xb1g" target="_blank" rel="noopener noreferrer">Advanced Intercompany Sales Value Chain Analysis for SAP S/4HANA Cloud - openSAP Microlearning</A></P><P><SPAN>In this microlearning, you will learn about the involvements of advanced intercompany sales processes. The session delves into the end-to-end workflow, beginning with the significance of the initiating document, Sales Order 2. Through a detailed demonstration, you'll gain insights into key elements such as transit plants, pricing determination, and movement types. Additionally, the Value Chain Monitor app is introduced, offering a comprehensive tool for tracking and managing the sales process. The session concludes with essential prerequisites and configuration tips, ensuring a thorough understanding of the advanced intercompany sales landscape.</SPAN></P><P>Watch this comprehensive microlearning now!</P><P><A href="https://microlearning.opensap.com/media/Advanced%20Intercompany%20Sales%20Value%20Chain%20Analysis%20for%20SAP%20S_4HANA%20Cloud/1_koe9xb1g" target="_blank" rel="noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="huemayilmaz_0-1710405859774.jpeg" style="width: 628px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/80499iDF6D4F5E3B24B33A/image-dimensions/628x353?v=v2" width="628" height="353" role="button" title="huemayilmaz_0-1710405859774.jpeg" alt="huemayilmaz_0-1710405859774.jpeg" /></span></A></P><P>Stay tuned as more microlearnings are coming soon! New microlearnings will continuously be published in this&nbsp;<A href="https://blogs.sap.com/2020/08/20/sap-s-4hana-microlearning-op-cl-the-ultimate-collection-2/" target="_blank" rel="noopener noreferrer">overview</A>&nbsp;and on&nbsp;<A href="https://microlearning.opensap.com/" target="_blank" rel="noopener noreferrer">microlearning.opensap.com</A>.</P><P>&nbsp;</P><P><STRONG>SAP S/4HANA Cloud Enablement Assets</STRONG>&nbsp;</P><P><STRONG>Inside SAP S/4HANA Cloud</STRONG></P><P>There is no customer success without project success and product success! Leverage the unique knowledge and expertise of SAP S/4HANA Cloud experts, partners, and customers, sharing their SAP S/4HANA Cloud implementation project best practices and lessons learned – anywhere, anytime. In this podcast, we give you all ingredients to get to the next level and make your SAP S/4HANA Cloud project a success. <A href="https://podcast.opensap.info/inside-sap/" target="_blank" rel="nofollow noopener noreferrer">Subscribe now</A> and benefit from the shared knowledge.</P><P><STRONG>Your Voice Matters</STRONG></P><P>You want to learn more and actively engage with SAP subject matter experts on SAP S/4HANA Cloud topics? We have just the right place for you! Join our <A href="https://community.sap.com/" target="_blank">interactive community</A> where we bring together customers, partners, and SAP experts with a clear mission: To engage with one another about best practices and product solutions. We invite you to explore the ‘one-stop shop’ as the central place for all resources, tools, content questions, answers and to connect with experts who will guide you through your journey to the intelligent, sustainable enterprise.</P><P><STRONG>For more Information on SAP S/4HANA Cloud, check out the following links:&nbsp;</STRONG></P><UL><LI>Read up on the highlights of the SAP S/4HANA Cloud Public Edition 2402 release <SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/highlights-of-the-sap-s-4hana-cloud-public-edition-2402-release/ba-p/13587480" target="_blank">here</A></SPAN></LI><LI>Interested in an SAP S/4HANA Cloud Public Edition 2402 update on the intelligent ERP? Read all about it <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/sap-s-4hana-cloud-public-edition-2402-intelligent-erp-update/ba-p/13584760" target="_blank">here</A></LI><LI>Watch the replays of our exclusive SAP S/4HANA Cloud Public Edition 2402 Early Release Series <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/watch-the-replays-of-our-exclusive-sap-s-4hana-cloud-public-edition-2402/ba-p/13587019" target="_blank">here</A></LI><LI>Explore the ready-to-run cloud ERP <A href="https://www.sap.com/products/erp/s4hana.html" target="_blank" rel="noopener noreferrer">here</A></LI><LI>Watch our SAP S/4HANA Cloud product update videos on YouTube <SPAN><A href="https://www.youtube.com/playlist?list=PLWV533hWWvDnnyN2j-CcUheNN-GaNCb3H%20·%20Check%20out%20our%20digital%20enablement%20wheel%20here:%20https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset" target="_blank" rel="nofollow noopener noreferrer">here</A></SPAN></LI><LI>Find out how to switch from groups to spaces and pages <A href="https://blogs.sap.com/2023/11/06/deactivation-of-groups-in-the-sap-fiori-launchpad-in-sap-s-4hana-cloud-public-edition-2402-switching-to-spaces-and-pages-mandatory/" target="_blank" rel="noopener noreferrer">here</A></LI><LI>Become an early adopter for Joule in SAP S/4HANA Cloud Public Edition <A href="•%09https:/influence.sap.com/sap/ino/#campaign/3612" target="_blank" rel="nofollow noopener noreferrer">here</A></LI><LI>Check out the SAP Activate Roadmap for early adopters <A href="https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapOverviewPage/0894b61141a74a65b8da92db32685da5" target="_blank" rel="noopener noreferrer">here</A></LI><LI>Review the PPL content <A href="https://go.support.sap.com/roadmapviewer/#/group/658F507A-D6F5-4B78-9EE1-0300C5F1E40F/roadmapContentPage/0894b61141a74a65b8da92db32685da5:t8 · Listen to our podcast here: https://podcast.opensap.info/inside-sap/" target="_blank" rel="noopener noreferrer">here</A></LI><LI>Find best practices on SAP S/4HANA Cloud Public Edition <A href="https://me.sap.com/processnavigator/SolS/EARL_SolS-013/latest?region=DE" target="_blank" rel="noopener noreferrer">here</A></LI><LI>Check out what’s new <A href="https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226" target="_blank" rel="noopener noreferrer">here</A></LI><LI>Find help <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD" target="_blank" rel="noopener noreferrer">here</A></LI><LI>Read the feature scope description <A href="https://help.sap.com/doc/7c9e0bbbd1664c2581b2038a1c7ae4b3" target="_blank" rel="noopener noreferrer">here</A></LI></UL><P>&nbsp;</P> 2024-03-14T15:25:42.119000+01:00 https://community.sap.com/t5/application-development-blog-posts/fiori-analytical-list-page-using-cds-annotations-to-display-as-charts/ba-p/13632009 Fiori Analytical List Page using CDS Annotations to Display as Charts 2024-03-15T11:53:44.741000+01:00 Arun_21 https://community.sap.com/t5/user/viewprofilepage/user-id/1413983 <H2 id="toc-hId-988827526">Goal</H2><P>Create an Analytical List Page like the one below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_0-1709884299107.png" style="width: 832px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77474iFEB9419FD7E40CA0/image-dimensions/832x374?v=v2" width="832" height="374" role="button" title="Arun_21_0-1709884299107.png" alt="Arun_21_0-1709884299107.png" /></span></P><P><STRONG>Development environment</STRONG></P><UL><LI>Frontend: &nbsp;BTP</LI><LI>Backend: S/4HANA</LI></UL><H2 id="toc-hId-792314021">Data model</H2><P>The data model has a simple structure as shown below. The base has a table for recording expenditures (ZMY_EXPENSES) and an expenditure category master (ZEXCATEGORYTEXT). The views used in ALP are the same analytical views used in the query browser. The top view&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/15206">@analytics</a>.query: trueis annotated with , and the base view below it&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/15206">@analytics</a>.dataCategory: #CUBEis annotated with (or FACT, DIMENSION, HIERARCHY depending on the purpose).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_0-1709885061373.png" style="width: 524px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77477iDA43C2F6C836F21E/image-dimensions/524x368?v=v2" width="524" height="368" role="button" title="Arun_21_0-1709885061373.png" alt="Arun_21_0-1709885061373.png" /></span></P><P>ZMY_EXPENSES</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_1-1709885061381.png" style="width: 783px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77478i3E3AD08CCB4CE600/image-dimensions/783x214?v=v2" width="783" height="214" role="button" title="Arun_21_1-1709885061381.png" alt="Arun_21_1-1709885061381.png" /></span></P><P>The data is in the following format.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_2-1709885061384.png" style="width: 781px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77476iDDFC925E88E5E71D/image-dimensions/781x166?v=v2" width="781" height="166" role="button" title="Arun_21_2-1709885061384.png" alt="Arun_21_2-1709885061384.png" /></span></P><P>ZEXCATEGORYTEXT</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_3-1709885061389.png" style="width: 782px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77480i343C7CFB76C4B77A/image-dimensions/782x221?v=v2" width="782" height="221" role="button" title="Arun_21_3-1709885061389.png" alt="Arun_21_3-1709885061389.png" /></span></P><P>For simplicity, we will only have Five Categories.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_4-1709885061391.png" style="width: 570px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77479iD1094043F90ABD72/image-dimensions/570x239?v=v2" width="570" height="239" role="button" title="Arun_21_4-1709885061391.png" alt="Arun_21_4-1709885061391.png" /></span></P><P><STRONG>Steps</STRONG></P><OL><LI>Creating a CDS view</LI><LI>Output charts and tables</LI></OL><H3 id="toc-hId-724883235">1. Creating a CDS view</H3><H4 id="toc-hId-657452449">Expense Category View: ZI_Category_Text</H4><P>Create a view to retrieve expenditure categories.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AbapCatalog.sqlViewName: 'ZITEXTCAT' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'Text Category' @ObjectModel.dataCategory: #TEXT @ObjectModel.representativeKey: 'category' define view ZI_Category_Text as select from zexcategorytext { key category, @Semantics.language: true key language, @Semantics.text: true text }</code></pre><P>&nbsp;</P><P>&nbsp;</P><H4 id="toc-hId-460938944">Cube View for aggregation: ZI_Cube_MyExpenses</H4><P>Create a Cube View for aggregation. I_CalendarDate is a standard view that allows you to convert a date to year, year month, etc. I want to be able to select the year and month with the ALP filter, so I have I_CalendarDate and Association.</P><P>ZI_Cube_MyExpenses</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AbapCatalog.sqlViewName: 'ZIMYEXP' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'Cube for My Expenses' @Analytics.dataCategory: #CUBE define view ZI_Cube_MyExpenses as select from zmy_expenses association [0..1] to ZI_Category_Text as _Text on $projection.Cateogry = _Text.category association [0..1] to I_CalendarDate as _CalendarDate on $projection.PostingDate = _CalendarDate.CalendarDate { @ObjectModel.foreignKey.association: '_CalendarDate' posting_date as PostingDate, @ObjectModel.text.association: '_Text' category as Cateogry, @Semantics.amount.currencyCode: 'Currency' @DefaultAggregation: #SUM amount as Amount, @Semantics.currencyCode: true currency as Currency, _CalendarDate._CalendarYear.CalendarYear, _CalendarDate._YearMonth.YearMonth, _Text, _CalendarDate }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>The annotations required for use with ALP are as follows.</P><P>@Analytics.dataCategorySet&nbsp;to make it a view for analysis .&nbsp;Category is a combined view of transaction data (expenditures) and master data (expenditure categories)&nbsp;#CUBE.</P><P><SPAN>@</SPAN><SPAN>Analytics</SPAN><SPAN>.</SPAN><SPAN>dataCategory</SPAN><SPAN>:</SPAN> <SPAN>#</SPAN><SPAN>CUBE</SPAN></P><P>The analysis view must have items to be aggregated (measures).&nbsp;@DefaultAggregationItems marked with are subject to aggregation.</P><P><SPAN>@</SPAN><SPAN>DefaultAggregation</SPAN><SPAN>:</SPAN> <SPAN>#</SPAN><SPAN>SUM</SPAN>&nbsp;&nbsp;&nbsp; <SPAN>amount</SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN>as</SPAN> <SPAN>Amount</SPAN><SPAN>,</SPAN></P><P><STRONG>Consumption View</STRONG><STRONG>:</STRONG><STRONG>ZC_MY_Expenses</STRONG></P><P>Finally, create the top view that will be the source of the OData.</P><P>ZC_MY_Expenses</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AbapCatalog.sqlViewName: 'ZCMYEXP' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'My Expenses' @Analytics.query: true @OData.publish: true @Metadata.allowExtensions: true define view ZC_MY_Expenses as select from ZI_Cube_MyExpenses { PostingDate, @AnalyticsDetails.query.display: #KEY_TEXT Cateogry, Amount, Currency, @Semantics.calendar.year: true CalendarYear, @Semantics.calendar.yearMonth: true YearMonth }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>The important thing here&nbsp;@Analytics.query: true is the annotation. This view does not have a key, but it&nbsp;@Analytics.query: true is acceptable without a key.</P><P>Another important point is the following annotation.</P><P>&nbsp;&nbsp;&nbsp; @Semantics.calendar.year: true</P><P>&nbsp;&nbsp;&nbsp; CalendarYear,</P><P>&nbsp;&nbsp;&nbsp; @Semantics.calendar.yearMonth: true</P><P>&nbsp;&nbsp;&nbsp; YearMonth</P><P>The OData type for CalendarYear (year) and YearMonth (year and month) is edm.string. If left as is, it will not be recognized as a time-related item, so&nbsp;@Semantics.calendarit is necessary to add .</P><H3 id="toc-hId-135342720">2. Output charts and tables</H3><P>Next, let's create an app by adding the minimum annotations to output charts and tables.<BR />Create a Metadata Extension for ZC_MY_Expenses. First, define the selection field (selectionField) and the table column item (lineItem).</P><P>@Metadata.layer: #CORE</P><P>annotate view ZC_MY_Expenses</P><P>&nbsp;&nbsp;&nbsp; with</P><P>{</P><P>&nbsp;&nbsp;&nbsp; @UI:{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineItem: [{ position: 10 }]</P><P>&nbsp;&nbsp;&nbsp; }</P><P>&nbsp;&nbsp;&nbsp; PostingDate;</P><P>&nbsp;&nbsp;&nbsp; @UI:{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectionField: [{position: 10 }],</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineItem: [{ position: 20 }]</P><P>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;</P><P>&nbsp;&nbsp;&nbsp; Cateogry;</P><P>&nbsp;&nbsp;&nbsp; @UI:{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineItem: [{ position: 30 }]</P><P>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;</P><P>&nbsp;&nbsp;&nbsp; Amount;</P><P>&nbsp;&nbsp;&nbsp; @UI:{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectionField: [{position: 20 }]</P><P>&nbsp;&nbsp;&nbsp; }&nbsp;</P><P>&nbsp;&nbsp;&nbsp; CalendarYear;</P><P>&nbsp;&nbsp;&nbsp; @UI:{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectionField: [{position: 30 }]</P><P>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;</P><P>&nbsp;&nbsp;&nbsp; YearMonth;&nbsp;&nbsp;</P><P>}</P><P>Next, set the annotation to display the chart. Add the following above annotate view ZC_MY_Expenses...</P><P>This is an annotation that determines the display variant (presentationVariant) and selection variant (selectionVariant) when the app is opened. A qualifier (ID) of 'Default' is specified for each.</P><P>@UI.selectionPresentationVariant: [{</P><P>&nbsp;&nbsp;&nbsp; qualifier: 'Default',</P><P>&nbsp;&nbsp;&nbsp; presentationVariantQualifier: 'Default',</P><P>&nbsp;&nbsp;&nbsp; selectionVariantQualifier: 'Default'&nbsp;&nbsp;&nbsp;</P><P>&nbsp;}]</P><P>The contents of the actual variant are defined below.</P><P>presentationVariant indicates how the data is presented, that is, it is displayed as a chart (type:</P><P>@UI.presentationVariant: [{</P><P>&nbsp;&nbsp;&nbsp; qualifier: 'Default',</P><P>&nbsp;&nbsp;&nbsp; visualizations: [{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type: #AS_CHART,</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qualifier: 'ChartDefault'</P><P>&nbsp;&nbsp;&nbsp; }]</P><P>&nbsp;}]</P><P>@UI.selectionVariant: [{</P><P>&nbsp;&nbsp;&nbsp; qualifier: 'Default',</P><P>&nbsp;&nbsp;&nbsp; text: 'Default'</P><P>&nbsp;}]</P><P>Finally, let's define the chart. Create a stacked bar graph for each year and month and expense category.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_0-1709886806898.png" style="width: 783px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77492i4C6097D605021F44/image-dimensions/783x141?v=v2" width="783" height="141" role="button" title="Arun_21_0-1709886806898.png" alt="Arun_21_0-1709886806898.png" /></span></P><P>@UI.chart: [{</P><P>&nbsp;&nbsp;&nbsp; qualifier: 'ChartDefault',</P><P>&nbsp;&nbsp;&nbsp; chartType: #COLUMN_STACKED,</P><P>&nbsp;&nbsp;&nbsp; dimensions: ['Cateogry', 'YearMonth'],</P><P>&nbsp;&nbsp;&nbsp; measures: ['Amount'],</P><P>&nbsp;&nbsp;&nbsp; dimensionAttributes: [{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dimension: 'Cateogry',</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; role: #SERIES</P><P>&nbsp;&nbsp;&nbsp;&nbsp; },{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dimension: 'YearMonth',</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; role: #CATEGORY</P><P>&nbsp;&nbsp;&nbsp;&nbsp; }],</P><P>&nbsp;&nbsp;&nbsp; measureAttributes: [{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; measure: 'Amount',</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; role: #AXIS_1</P><P>&nbsp;&nbsp;&nbsp;&nbsp; }]</P><P>&nbsp; }]</P><P>The meanings of the items are as follows.</P><TABLE><TBODY><TR><TD><P><STRONG>project</STRONG></P></TD><TD><P><STRONG>explanation</STRONG></P></TD></TR><TR><TD><P>qualifier</P></TD><TD><P>Chart ID. Same as qualifier specified in presentationVariant</P></TD></TR><TR><TD><P>chartType</P></TD><TD><P>Chart type. #COLUM_STACKED is a stacked bar graph</P></TD></TR><TR><TD><P>dimensions</P></TD><TD><P>Specify the analysis axis. Multiple specifications can be specified depending on the chart type.</P></TD></TR><TR><TD><P>measures</P></TD><TD><P>Specify the numeric item to be analyzed. Multiple specifications can be specified depending on the chart type.</P></TD></TR><TR><TD><P>dimensionAttributes</P></TD><TD><P>Specify the role (use) for each analysis axis (*)</P></TD></TR><TR><TD><P>measureAttributes</P></TD><TD><P>Specify the role (purpose) for each numerical item. Specify which axis</P></TD></TR></TBODY></TABLE><P>*Meaning of role in dimension</P><UL><LI>category: Set for the dimension that is the X axis in a bar graph</LI><LI>series: Use when you want to separate classifications (colors) within the same category</LI><LI>category2: Second axis used in heatmap etc.</LI></UL><P>Creating &nbsp;an ALP with BTP(SAP Business Technology Platform)</P><P>Let's make OData public. TR - &gt; ( /IWFND/MAINT_SERVICE )</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_1-1709886806919.png" style="width: 780px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77493i871BED2044054BF8/image-dimensions/780x316?v=v2" width="780" height="316" role="button" title="Arun_21_1-1709886806919.png" alt="Arun_21_1-1709886806919.png" /></span></P><P>Select the Analytical List Page template.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_0-1709888407457.png" style="width: 781px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77504iBE1FED8ACAB2DB5F/image-dimensions/781x334?v=v2" width="781" height="334" role="button" title="Arun_21_0-1709888407457.png" alt="Arun_21_0-1709888407457.png" /></span></P><P>Provide the OData Service URL</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_1-1709888407476.png" style="width: 777px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77506i20C8BBEC732046C7/image-dimensions/777x338?v=v2" width="777" height="338" role="button" title="Arun_21_1-1709888407476.png" alt="Arun_21_1-1709888407476.png" /></span><BR />Specify the qualifier of the selection Presentation Variant set in step 2 in Qualifier.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_2-1709888407486.png" style="width: 773px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77505i2F94500CE989A759/image-dimensions/773x582?v=v2" width="773" height="582" role="button" title="Arun_21_2-1709888407486.png" alt="Arun_21_2-1709888407486.png" /></span></P><P>Next we have to provide the Project Attributes</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_3-1709888407493.png" style="width: 775px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77507iAC60E89D86746340/image-dimensions/775x428?v=v2" width="775" height="428" role="button" title="Arun_21_3-1709888407493.png" alt="Arun_21_3-1709888407493.png" /></span></P><P>On the Project2 we have to choose Preview Application here we have to Click on the Start Fiori Run First option in Dropdown.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_4-1709888407499.png" style="width: 776px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77508iE6D666876BBB7E63/image-dimensions/776x324?v=v2" width="776" height="324" role="button" title="Arun_21_4-1709888407499.png" alt="Arun_21_4-1709888407499.png" /></span></P><P>At this point, the pages section of manifest.json looks like this:-</P><P>manifest.json</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "pages": {</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "AnalyticalListPage|ZC_MYEXPENSES": {</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "entitySet": "ZC_MYEXPENSES",</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "component": {</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "name": "sap.suite.ui.generic.template.AnalyticalListPage",</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "list": true,</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "settings": {</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "condensedTableLayout": true,</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;"showGoButtonOnFilterBar": true,</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "tableType": "ResponsiveTable",</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "multiSelect": false,</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "qualifier": "Default",</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "autoHide": true,</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "smartVariantManagement": true,</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "keyPerformanceIndicators": {}</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "pages": {</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "ObjectPage|ZC_MYEXPENSES": {</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "entitySet": "ZC_MYEXPENSES",</P><P>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"component": {</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "name": "sap.suite.ui.generic.template.ObjectPage"</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P><P><STRONG>Execution result</STRONG></P><P>Nothing is displayed when it starts up.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_5-1709888407507.png" style="width: 778px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77509iBB5BF1B5E5955B9D/image-dimensions/778x391?v=v2" width="778" height="391" role="button" title="Arun_21_5-1709888407507.png" alt="Arun_21_5-1709888407507.png" /></span></P><P><BR />When you press Go, the chart and table are displayed.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_6-1709888407514.png" style="width: 782px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77511i275260A264CBDF74/image-dimensions/782x400?v=v2" width="782" height="400" role="button" title="Arun_21_6-1709888407514.png" alt="Arun_21_6-1709888407514.png" /></span></P><P>&nbsp;When you press the Compact Filter button on the top right, the filter items defined in selection Field will be displayed.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Arun_21_7-1709888407517.png" style="width: 784px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/77510iF498E184613C16EC/image-dimensions/784x96?v=v2" width="784" height="96" role="button" title="Arun_21_7-1709888407517.png" alt="Arun_21_7-1709888407517.png" /></span></P><P>Arrange graphs in year/month order</P><P>Add sort Order to presentation Variant. Arrange them in ascending order by Year Month and descending order by Posting Date. The reason why I include Posting Date is because this sort order also affects how the table looks, so I want the latest records to be at the First.</P><P>@UI.presentationVariant: [{</P><P>&nbsp;&nbsp;&nbsp; qualifier: 'Default',</P><P>&nbsp;&nbsp;&nbsp; sortOrder: [{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; by: 'PostingDate',</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; direction: #DESC</P><P>&nbsp;&nbsp;&nbsp;&nbsp; },{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; by: 'YearMonth',</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; direction: #ASC</P><P>&nbsp;&nbsp;&nbsp;&nbsp; }],&nbsp;&nbsp;&nbsp;</P><P>&nbsp;&nbsp;&nbsp; visualizations: [{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type: #AS_CHART,</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qualifier: 'ChartDefault'</P><P>&nbsp;&nbsp;&nbsp; }]</P><P>&nbsp;}]</P><P>Also add YearMonth to line Item. This is because an error will occur if the item specified in sort Order is not included in line Item.</P><P>&nbsp;&nbsp;&nbsp; @UI:{</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; selectionField: [{position: 30 }],</P><P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lineItem: [ { position: 40 } ]</P><P>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;</P><P>&nbsp;&nbsp;&nbsp; YearMonth;&nbsp;&nbsp;&nbsp;</P><P><STRONG>Conclusion.</STRONG></P><P>My impressions after creating ALP for the first time were that it was relatively easy to do in general, but I had a hard time with the small details (default filter, criticality settings, etc.). This time, I envisioned what I wanted to create and researched how to make it happen, so it was good that I realized what ALP can do and its limitations.</P><P><STRONG>Reference</STRONG></P><P><STRONG>blog</STRONG></P><UL><LI><A href="https://blogs.sap.com/2018/04/04/create-an-analytical-list-page-using-abap-cds-views-and-annotations/" target="_blank" rel="noopener noreferrer">Create an Analytical List Page using ABAP CDS views and annotations</A></LI><LI><A href="https://blogs.sap.com/2018/03/18/create-an-analytical-model-based-on-abap-cds-views/" target="_blank" rel="noopener noreferrer">Create an analytical model based on ABAP CDS views</A></LI><LI><A href="https://blogs.sap.com/2019/08/13/configuring-filters-area-of-an-analytical-list-page-alp-application/" target="_blank" rel="noopener noreferrer">Configuring filters area of an Analytical List Page (ALP) application</A></LI></UL><P>Document</P><UL><LI><A href="https://sapui5.hana.ondemand.com/#/topic/3d33684b08ca4490b26a844b6ce19b83" target="_blank" rel="noopener nofollow noreferrer">Analytical List Page</A></LI><LI><A href="https://help.sap.com/viewer/468a97775123488ab3345a0c48cadd8f/7.51.6/en-US/68e62adedfd44cd48cb6ebc418c8d95a.html" target="_blank" rel="noopener noreferrer">Chart Cards Used in Overview Pages</A></LI></UL><P><STRONG>Appendix</STRONG></P><P>Metadata Extension:-</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@Metadata.layer: #CORE @UI.presentationVariant: [{ qualifier: 'Default', sortOrder: [{ by: 'PostingDate', direction: #DESC },{ by: 'YearMonth', direction: #ASC }], visualizations: [{ type: #AS_CHART, qualifier: 'ChartDefault' }] }] @UI.chart: [{ qualifier: 'ChartDefault', chartType: #COLUMN_STACKED, dimensions: ['Cateogry', 'YearMonth'], measures: ['Amount'], dimensionAttributes: [{ dimension: 'Cateogry', role: #SERIES },{ dimension: 'YearMonth', role: #CATEGORY }], measureAttributes: [{ measure: 'Amount', role: #AXIS_1 }] }] annotate view ZC_MY_Expenses with { @UI:{ lineItem: [{ position: 10 }] } PostingDate; @UI:{ selectionField: [{position: 10 }], lineItem: [{ position: 20 }] } Cateogry; @UI:{ lineItem: [{ position: 30 }], dataPoint: { criticalityCalculation: { improvementDirection: #MINIMIZE, toleranceRangeHighValue: 100000, deviationRangeHighValue: 150000 } } } Amount; @UI:{ selectionField: [{position: 20 }] } CalendarYear; @UI:{ selectionField: [{position: 30 }], lineItem: [ { position: 40 } ] } YearMonth; }</code></pre><P>&nbsp;</P><P>&nbsp;</P> 2024-03-15T11:53:44.741000+01:00 https://community.sap.com/t5/technology-blogs-by-members/trigger-cpi-endpoint-from-sap-btp-cloud-application/ba-p/13648383 Trigger CPI Endpoint from SAP BTP cloud Application 2024-03-26T20:35:04.187000+01:00 Ranjith_Kumar https://community.sap.com/t5/user/viewprofilepage/user-id/136198 <P>In this blog post we going to see the steps to send mail content from Front end UI5 applications to CPI in which we configured the mail adapter for sending the contents to the configured mail id's.</P><P><STRONG>prerequisites for this demo requires:-</STRONG></P><OL><LI>&nbsp;SAP BTP free tier account</LI><LI>&nbsp;SAP Business Application studio</LI><LI>SAP Integration Suite&nbsp;</LI></OL><P><STRONG><U>STEPS TO CONFIGURE IFLOW:</U><BR /></STRONG></P><UL><LI>Create an artifacts with sender , receiver and configure the HTTP adapter as below with the sender, make sure to uncheck the CSRF protection<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MicrosoftTeams-image (5).png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85971i11E5D22226C6F51A/image-size/large?v=v2&amp;px=999" role="button" title="MicrosoftTeams-image (5).png" alt="MicrosoftTeams-image (5).png" /></span><BR /><BR /></LI><LI>We are going to pass JSON payload to this iflow so here we are converting it to xml using&nbsp; converter based on our requirement.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MicrosoftTeams-image (8).png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85973iF05B7E497AB6F50F/image-size/large?v=v2&amp;px=999" role="button" title="MicrosoftTeams-image (8).png" alt="MicrosoftTeams-image (8).png" /></span></LI><LI>Next in the content modifier we going to fetch the mail content from the xml using&nbsp; predefined xpath functionality, Basically content modifier is used to&nbsp;<STRONG>modify a message by adding additional data to it</STRONG><SPAN>.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MicrosoftTeams-image (9).png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86006i9AE4D19D261E480D/image-size/large?v=v2&amp;px=999" role="button" title="MicrosoftTeams-image (9).png" alt="MicrosoftTeams-image (9).png" /></span><BR /></SPAN></LI><LI>In the mail adapter we going to pass the property that we created in the content modifier.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MicrosoftTeams-image (10).png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86009iA8DB781EF1B2D8A1/image-size/large?v=v2&amp;px=999" role="button" title="MicrosoftTeams-image (10).png" alt="MicrosoftTeams-image (10).png" /></span></LI><LI>Now we can deploy the iflow once it is deployed we will be getting the generated endpoint which will be used to trigger the iflow<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 221136.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86194i6027B7CD79996901/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 221136.png" alt="Screenshot 2024-03-25 221136.png" /></span></LI></UL><P><U><STRONG>Configuring the CPI Endpoint in SAP destination service:<BR /></STRONG></U></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 222012.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86198iC6CF5CB043241D74/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 222012.png" alt="Screenshot 2024-03-25 222012.png" /></span></P><P><U><STRONG>CREATION OF SAP UI5 APPLICATION:-</STRONG></U><BR />&nbsp;Now it is time to create application since our requirement is to deploy the application in cloud foundry we are going to use standalone approuter for our development.<BR /><BR />1. select the view from the menu and click the command palette.<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot (2).png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86199iFA8BC53AA72E5687/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot (2).png" alt="Screenshot (2).png" /></span></P><P>2. Type route in the popup and select the router generator</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot (3).png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86200i9F379864812085FE/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot (3).png" alt="Screenshot (3).png" /></span></P><P>3. Create the router by selecting the standalone router from the drop down and also select the connectivity device then click finish<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 223912.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86201i2B96E5CE6C288427/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 223912.png" alt="Screenshot 2024-03-25 223912.png" /></span></P><P>4.Now the mta.yaml with router configuration file is generated by selecting the open folder option from the menu we can open our mailtocpi router like the below.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 224129.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86202iD1AD242632837AC2/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 224129.png" alt="Screenshot 2024-03-25 224129.png" /></span></P><P>5. Now Select the New project from template and click the sap fiori application tile.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 224450.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86203iE3E4803960259F20/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 224450.png" alt="Screenshot 2024-03-25 224450.png" /></span></P><P>6.Click start you will be getting the options like the below in that select basic and click next<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 224615.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86204iF425D8B7E9722230/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 224615.png" alt="Screenshot 2024-03-25 224615.png" /></span></P><P>7. Select none for data source and service selection<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 224845.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86205i323D23D82B5042B7/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 224845.png" alt="Screenshot 2024-03-25 224845.png" /></span></P><P>8.In the project attributes section make sure to define the path of the router we created it will be and select yes for adding the deployment configuration to the router mta.yaml it will add the ui dependencies in the yaml file.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 225051.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86206i74593FAE7642FB89/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 225051.png" alt="Screenshot 2024-03-25 225051.png" /></span></P><P>9.In deployment configuration select cloud foundry and the destination we configured.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-03-25 225503.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86207i877E5CBC73030142/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-25 225503.png" alt="Screenshot 2024-03-25 225503.png" /></span></P><P>10. configure your destination in the <STRONG>xs.app.json</STRONG> under the router folder like the below.</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code>{ "authenticationMethod": "none", "routes": [ { "source": "/http/sendmail(.*)$", "target": "/http/sendmail", "destination": "mail", "authenticationType": "none", "csrfProtection": false }, { "source": "^(?:/app|/app/.*)?/resources/(.*)$", "target": "/resources/$1", "authenticationType": "none", "destination": "ui5" }, { "source": "^(?:/app|/app/.*)?/test-resources/(.*)$", "target": "/test-resources/$1", "authenticationType": "none", "destination": "ui5" }], "welcomeFile":"./mailtocpi" }</code></pre><P>&nbsp;</P><P>11.&nbsp; Adding simple UI with text box and button<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture11.PNG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86353i5DB56AC13C6E9BB7/image-size/large?v=v2&amp;px=999" role="button" title="Capture11.PNG" alt="Capture11.PNG" /></span></P><P>12. Inorder to call the endpoint here we using the ajax call for the click event of the button.</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>sap.ui.define([ "sap/ui/core/mvc/Controller" ], /** * {typeof sap.ui.core.mvc.Controller} Controller */ function (Controller) { "use strict"; return Controller.extend("mailtocpi.controller.View1", { onInit: function () { }, onSend: function () { var text = this.getView().byId("mail").getValue(); var data = JSON.stringify({ "mail": text }); // data.mail = "hi im good" $.ajax({ type: "POST", url: "/http/sendmail", headers: { "content-Type": "application/json" }, data: data, success: function (resultData) { alert("Mail Sent Successfully"); } }); } }); });</code></pre><P>&nbsp;</P><P><U><STRONG>RUN APPLICATION LOCALLY IN BAS:-</STRONG></U></P><P>In-order to test locally the application in Business application studio we need to configure the path and the destination name in <STRONG>UI5.YAML </STRONG>like the below which will proxy and redirect our request to the destination</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture12.PNG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86358i49A93D1C6B639B7D/image-size/large?v=v2&amp;px=999" role="button" title="Capture12.PNG" alt="Capture12.PNG" /></span></P><P>select the data source as default from ui5.yaml<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture13.PNG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86367iA83D4DB4795D057A/image-size/large?v=v2&amp;px=999" role="button" title="Capture13.PNG" alt="Capture13.PNG" /></span></P><P><U><STRONG>Test Result locally:-<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture14.PNG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86372i359926A2D0D97EDD/image-size/large?v=v2&amp;px=999" role="button" title="Capture14.PNG" alt="Capture14.PNG" /></span><BR /></STRONG></U></P><P>Mail is been sent to the configured mail id.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MicrosoftTeams-image (11).png" style="width: 781px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86377iE9DB0FCA25FC2585/image-size/large?v=v2&amp;px=999" role="button" title="MicrosoftTeams-image (11).png" alt="MicrosoftTeams-image (11).png" /></span></P><P><U><STRONG>DEPLOYED APPLICATION IN CLOUD FOUNDRY:-<BR /></STRONG></U>Once we deploy our application to the cloud foundry space we will be getting the route url running in our space like the below.<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="tempsnip.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86387i7AF6B3DEA23E043E/image-size/large?v=v2&amp;px=999" role="button" title="tempsnip.png" alt="tempsnip.png" /></span><BR />If we configured the app router correctly by following the above steps you will be getting the api call successfully like the below from your deployed cloud foundry application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="tempsnip.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86391i486EE32F0120D5A3/image-size/large?v=v2&amp;px=999" role="button" title="tempsnip.png" alt="tempsnip.png" /></span></P><P><U><STRONG>CONCLUSION:-<BR /></STRONG></U></P><P>From this blog post we would have got the ideas about&nbsp; developing the CPI iflow , integration between BTP destination service to CPI , application development and deployment to the cloud fundry.</P> 2024-03-26T20:35:04.187000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/now-ai-helps-you-developing-sapui5-applications/ba-p/13649767 Now AI Helps You Developing SAPUI5 Applications 2024-03-27T18:52:57.706000+01:00 AndreasKunz https://community.sap.com/t5/user/viewprofilepage/user-id/189706 <P>As announced in <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">this blog post</A> by Oliver Graeff, the UI5 team is delighted to release its first foray into the world of Generative AI, a contribution to Joule in SAP Business Application Studio which helps with freestyle SAPUI5 development.</P><P>In this blog post, we explore how this SAP Build Code feature works and how you can benefit most from it. At the end, let’s not forget getting a glimpse of related AI features and prototypes.</P><H2 id="toc-hId-989966495">Get Help from Joule</H2><P>As a user of SAP Build Code, you get Joule as assistant in SAP Business Application Studio, accessible via this “Joule jewel” as I like to call it:&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="joule-jewel.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86574i60B7C70E25FBF2FD/image-size/small?v=v2&amp;px=200" role="button" title="joule-jewel.png" alt="joule-jewel.png" /></span></P><P>One important thing to note is that in the initial release, Joule is only available in dev spaces of type “<EM>Full-Stack Application Using Productivity Tools</EM>”. If you e.g. create a dev space of type “SAP Fiori”, you will not see it. The availability in more dev space types</P><P>The panel content is context sensitive. This means that for a random file in a random project, it may just tell you that it is not available, but when you open e.g. a UI5 view or controller or most other file types inside a UI5 application project, then it will greet you with all its violet-purple AI glory and ask for your requests:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="The Joule Panel" style="width: 352px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86577iC6DE0FD457163996/image-size/large?v=v2&amp;px=999" role="button" title="joule.jpg" alt="The Joule Panel" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">The Joule Panel</span></span></P><P>Simply enter your request in the chat window – adding, editing, replacing code… anything goes! – &nbsp;and Joule will respond with code and explanations.</P><P>Each code block in the response has a header with a “” and an “Accept” button. “Accept” transfers the code to the respective file, replacing its content. An answer can provide content for different files. If the file to which a code block belongs is currently not open or active, it will automatically be opened when you click “Accept”.</P><P>In case this “Accept” button is missing or you want to edit the suggested code first, you can use the ”Copy” button to get the code into the clipboard and paste it manually. This is also useful in the (rare) cases when only a code snippet is provided instead of the entire file, or parts of the previously existing code are omitted.</P><H2 id="toc-hId-793452990">Think BIG for Biggest Benefit</H2><P>Actually, those suggested samples in the Joule panel are just simple ones. We really recommend trying bigger steps! Don’t waste time (and AI tokens) by requesting a simple button.&nbsp;Try increments like:</P><UL><LI>Adding a new View with some content and setting up routing</LI><LI>Creating a new model with sample data and adding a table displaying certain properties as columns</LI><LI>Making all (hardcoded) texts within a view translatable and providing translations</LI></UL><P>Things like these seem like the sweet spot where Joule speeds up application development most. Taking bigger steps is also a good approach when the AI response times appear a little long. Performance varies, and Joule has no influence on this – most of the time is spent waiting for the response.</P><P>You know Generative AI has limits. Requests like the above typically work well, but of course the response can contain issues or be not exactly what you had in mind. Tweaking the result will usually still get you to your goal much faster than typing everything by hand. You can also use the pencil button to edit a request and try again.</P><P>In particular, sometimes the namespaces of newly added controls are not correct, despite our efforts to prevent this. Mentioning the library when requesting concrete controls may help.</P><P>Joule is a conversational chat assistant that keeps context. This means it “knows” what you have requested before and you can refer to this knowledge in further requests. Still, we recommend pressing the “Reset Conversation” button at the top once you request something different:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="clear.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86579i60B2C790107325A4/image-size/small?v=v2&amp;px=200" role="button" title="clear.png" alt="clear.png" /></span></P><P>This frees the conversation from previous ballast, keeps the AI focused and not least makes responses faster.</P><H2 id="toc-hId-596939485">Keep in Mind How to Get Joule</H2><P>As mentioned, the Joule assistant for freestyle UI5 development is active when it seems like you are working on UI5 resources. The actual logic behind that is longer than would fit this blog post, but when Joule’s suddenly not there and you need it, simply open a UI5 view or controller, or work below a directory with ui5.yaml file in it and you should see it again. This behavior, by the way, could change soon, as Joule is still growing up into its role of an always-available assistant with multiple capabilities.</P><H2 id="toc-hId-400425980">How Does it Work?</H2><P>There’s a lot of stuff going on behind the scenes.</P><P>For example, there is logic to select the files which are likely needed to be modified – or maybe just known – to fulfill your request. Of course, it would be too much to send <EM>all</EM> the code of your entire project along with every AI request.</P><P>Above you read that Joule keeps context and remembers the previous conversation. Yes, it has to, in order to reasonably converse with you. Otherwise, it would not be able to make sense of a request that is logically connected to what you did before. Still, it does not need to remember every single bit and byte for that! Hence, we condense the history to reduce the context size consumed by that.</P><P>Possibly there is some similarity to other AI tools you have seen recently, and this market is definitely a very agile and vivid one, but what differentiates this tool is its knowledge of UI5 and increasingly the knowledge how to support typical steps best which you are likely to do in any freestyle UI5 project.</P><P>Much of it is still evolving and being enhanced as you read this.</P><H2 id="toc-hId-203912475">More Joule Goodness: Create an Application from Business Requirements</H2><P>A related Joule feature provided by the Fiori tools team allows you to create an entire SAP Fiori elements list report application, including the respective CAP project, directly from your business requirements. <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-tools-2403-introduces-gen-ai-capability-and-more/ba-p/13650594" target="_self">Look here</A>&nbsp;for more details.</P><P>This gets you started with a pretty complete app – and with our Joule feature for freestyle UI5 development, you can continue from there, e.g. when using custom pages. So both of these Joule features nicely complement each other.</P><H2 id="toc-hId-7398970">Even More AI</H2><P>It’s only the beginning. We have been experimenting for quite some time with how Generative AI could benefit not only UI5 application developers, but also end-users.</P><P>One such prototype, internally dubbed “ChatUI5”, aims to help end-users to interact with UI5 applications in natural language. It will be presented in the upcoming “UI5ers live” webcast on April 11th. Others look at how setting complex filters in applications could be simplified or how the UI5 documentation could be made more helpful.</P><P>To make it very clear: that’s all prototypes and we can’t tell whether any of them will ever see the light of being productized. But we’re looking further into the topic for sure.</P> 2024-03-27T18:52:57.706000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/joule-for-freestyle-sapui5-development-in-sap-build-code/ba-p/13650005 Joule for freestyle SAPUI5 development in SAP Build Code 2024-03-27T18:53:12.396000+01:00 OliverGraeff https://community.sap.com/t5/user/viewprofilepage/user-id/4124 <P><A href="https://www.sap.com/products/artificial-intelligence/ai-assistant.html" target="_self" rel="noopener noreferrer">Joule</A> is SAP's AI co-pilot that truly understands your business. Joule also helps you writing freestyle SAPUI5 code in SAP Build Code. Ask Joule by typing code-related requests, in natural language, into Joule's chat window. For example, you could ask Joule to insert a control to a view, add an event handler to a controller, introduce a full new view with routing and much more. You don't need to have the respective file open in the editor, you just need to make sure that your request is sufficiently clear. Requested changes may span across several files. For example, you could ask Joule to define a new model in the manifest.json and use the model in a control in the view.</P><P>Each file for which Joule suggests changes, will appear in a code block within Joule's chat window. On top of each code block you'll see options to</P><UL><LI>'Copy', to copy the code to your clipboard for further usage, and</LI><LI>'Accept', to open the respective file and add the code directly at the correct place.</LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Screenshot 2024-03-26 at 15.51.58.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86798iC85613C4F29335E3/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-03-26 at 15.51.58.png" alt="Screenshot 2024-03-26 at 15.51.58.png" /></span><SPAN>Joule in SAP Business Application Studio</SPAN></P><P>Joule, your SAPUI5 assistant can handle both, any freestyle SAPUI5 application as well as custom pages following the SAP Fiori flexible programming model.</P><P>Joule is not only useful for writing code, it also helps you to understand the existing code or to find issues with it. You may ask questions about entire files, or you can select a block of code and then ask a question specifically about the selected code snippet.&nbsp;Beyond this, the implementation is not restricted to specific scenarios. Go ahead, explore, and try to find the limits…</P><P>Just note that Joule, like any other GenAI tool, may not always deliver 100% correct results. It is always a good practice to closely review the generated code. Still, Joule, your SAPUI5 assistant, will make you a more efficient SAPUI5 developer.<BR /><BR /></P><H1 id="toc-hId-861532263">How to use Joule for freestyle SAPUI5</H1><OL><LI>Launch SAP Business Application Studio in SAP Build Code.</LI><LI>Open a project containing freestyle SAPUI5 code and open a *.view.xml or *.controller.js / *.controller.ts file.</LI><LI>Launch Joule from the activity bar on the left and start asking Joule.</LI></OL><P>A first guide is available via the 'Guide Center' in the activity bar on the left: Open the guide 'Generative AI-Powered Development' -&gt; SAP Fiori UI -&gt; SAP Fiori Elements Custom Page and Freestyle SAPUI5. Read more details:</P><UL><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/now-ai-helps-you-developing-sapui5-applications/ba-p/13649767" target="_self">Now AI Helps You Developing SAPUI5 Applications</A>&nbsp;by&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/189706">@AndreasKunz</a></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-fiori-tools-2403-introduces-gen-ai-capability-and-more/ba-p/13650594" target="_self">SAP Fiori tools 2403 Introduces Gen AI Capability and more</A>&nbsp;by&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/316392">@tashley</a>&nbsp;</LI></UL> 2024-03-27T18:53:12.396000+01:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/turning-on-the-flp-parameters-quot-homepage-personalization-quot-quot/ba-p/13652668 Turning on the FLP Parameters "HOMEPAGE_PERSONALIZATION", "APPFINDER_ENABLED", "NAVIGATION_ALLMYAPPS 2024-03-29T14:00:00.050000+01:00 JaiSrinivasan https://community.sap.com/t5/user/viewprofilepage/user-id/129186 <P style=" text-align : justify; ">This blog explores the effects of activating the FLP Parameters <EM>"<STRONG>HOMEPAGE_PERSONALIZATION</STRONG>"</EM>, <EM>"<STRONG>APPFINDER_ENABLED</STRONG>"</EM>, <EM>"<STRONG>NAVIGATION_ALLMYAPPS</STRONG>"</EM>, and <EM>"<STRONG>SEARCH</STRONG>" </EM>in <STRONG>SAP S/4HANA Cloud Public Edition</STRONG>. Thanks to the following colleagues for reviewing the blog and providing content &amp; feedback based on their own experiences and knowledge: Andre Antunes da Cunha.</P><P style=" text-align : justify; ">In SAP S/4HANA Cloud Public Edition, the smallest entity to assign authorizations to a business user are business catalogs. If a business catalog is assigned to a business user via a business role, then the business user&nbsp;has access to all the apps included in the business catalog.</P><P style=" text-align : justify; ">The start authorization to apps included in a business catalog cannot be individually controlled and the apps for which the start authorization has been assigned to the business user can be launched from:</P><UL><LI>App Finder</LI><LI>"All My Apps" navigation</LI><LI>Search bar</LI><LI>Direct launch via URL</LI><LI>Forward navigation from within apps<STRONG>&nbsp;</STRONG></LI></UL><P><U><STRONG>App Finder</STRONG></U></P><P><U><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_20-1711637290076.png" style="width: 576px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88123i6121E8D7490D68EE/image-dimensions/576x255?v=v2" width="576" height="255" role="button" title="JaiSrinivasan_20-1711637290076.png" alt="JaiSrinivasan_20-1711637290076.png" /></span></U></P><P><U><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_21-1711637290085.png" style="width: 580px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88124iC976B70B93CB011D/image-dimensions/580x197?v=v2" width="580" height="197" role="button" title="JaiSrinivasan_21-1711637290085.png" alt="JaiSrinivasan_21-1711637290085.png" /></span></U></P><P>&nbsp;</P><P><U><STRONG>"All My Apps" navigation</STRONG></U></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_22-1711637290090.png" style="width: 465px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88122i1B1B54F7761B04D8/image-dimensions/465x363?v=v2" width="465" height="363" role="button" title="JaiSrinivasan_22-1711637290090.png" alt="JaiSrinivasan_22-1711637290090.png" /></span></P><P>&nbsp;</P><P><U><STRONG>Search Bar</STRONG></U></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_0-1711639552801.png" style="width: 594px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88149i414CD1E317F14A40/image-dimensions/594x153?v=v2" width="594" height="153" role="button" title="JaiSrinivasan_0-1711639552801.png" alt="JaiSrinivasan_0-1711639552801.png" /></span></P><P>&nbsp;</P><P><STRONG><U>Direct launch via URL (Intent-based Navigation)</U></STRONG></P><P style=" text-align : justify; ">With intent-based navigation, it is possible to access the Apps. In the following url, the value of the semantic object could be the business object and the value of the action could be for example., CREATE, DISPLAY, CHANGE or MANAGE etc.,</P><P style=" text-align : justify; "><SPAN>http://&lt;server&gt;:&lt;port&gt;/&lt;path&gt;/ui#&lt;semantic object&gt;-&lt;action&gt;</SPAN></P><P>&nbsp;</P><P><STRONG><U>Forward navigation&nbsp;from within apps</U></STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_24-1711637290101.png" style="width: 628px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88127i9C9116EA29596C16/image-dimensions/628x286?v=v2" width="628" height="286" role="button" title="JaiSrinivasan_24-1711637290101.png" alt="JaiSrinivasan_24-1711637290101.png" /></span></P><P>&nbsp;</P><P><STRONG><U>Prerequisite:</U></STRONG></P><P style=" text-align : justify; ">In the app <EM>"Manage Launchpad Settings"</EM> in SAP S/4HANA Cloud Public Edition, the customer can turn on or off the FLP Parameters namely <EM>"<STRONG>APPFINDER_ENABLED</STRONG>"</EM> and <EM>"<STRONG>HOMEPAGE_PERSONALIZATION</STRONG>"</EM>.</P><P style=" text-align : justify; ">There are certain FLP Parameters like <EM>"</EM><SPAN><STRONG><EM>NAVIGATION_ALLMYAPPS</EM></STRONG></SPAN><EM>"</EM> and <EM>"<STRONG>SEARCH</STRONG>"</EM> which are not currently exposed to the customer in SAP S/4HANA Cloud Public Edition, and it requires a ticket to disable or enable them.</P><P><STRONG><U>App Finder Enablement/Disablement</U></STRONG></P><UL><LI><STRONG>FLP parameters <EM>"APPFINDER_ENABLED"</EM></STRONG> &amp;<STRONG> <EM>"HOMEPAGE_PERSONALIZATION"</EM></STRONG></LI></UL><P style=" padding-left : 30px; text-align : justify; ">The FLP Parameter <EM>"<STRONG>APPFINDER_ENABLED</STRONG>" </EM>in combination with the FLP parameter <EM>"<STRONG>HOMEPAGE_PERSONALIZATION</STRONG>"</EM> can help with determining if users can have access to the app finder. If set to false, the app finder will only be available if personalization is enabled. Users can open all the apps in the app finder, which are assigned to them according to their role assignment.</P><P style=" padding-left : 30px; text-align : justify; ">In the app <EM>"Manage Launchpad Settings"</EM> in SAP S/4HANA Cloud Public Edition, you can set the FLP Parameters <EM>"<STRONG>APPFINDER_ENABLED</STRONG>"</EM> and <EM>"<STRONG>HOMEPAGE_PERSONALIZATION</STRONG>"</EM> to either ON or OFF.&nbsp; If the <EM>"<STRONG>APPFINDER_ENABLED</STRONG>"</EM> value is true, then the App Finder would be visible. If the <EM>"<STRONG>APPFINDER_ENABLED</STRONG>"</EM> value is false and <EM>"<STRONG>HOMEPAGE_PERSONALIZATION</STRONG>"</EM> value is false, then the App Finder would be invisible. Please note that for disablement of App Finder, it is important to disable personalization.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_25-1711637290104.png" style="width: 623px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88126i1D699D4358BF6B10/image-dimensions/623x92?v=v2" width="623" height="92" role="button" title="JaiSrinivasan_25-1711637290104.png" alt="JaiSrinivasan_25-1711637290104.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_26-1711637290106.png" style="width: 616px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88130i64B729226BC3C556/image-dimensions/616x72?v=v2" width="616" height="72" role="button" title="JaiSrinivasan_26-1711637290106.png" alt="JaiSrinivasan_26-1711637290106.png" /></span></P><P>When Parameter = True</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_27-1711637290108.png" style="width: 159px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88128i7CE85B5B360A5AB1/image-dimensions/159x366?v=v2" width="159" height="366" role="button" title="JaiSrinivasan_27-1711637290108.png" alt="JaiSrinivasan_27-1711637290108.png" /></span></P><P>&nbsp;</P><P>When Parameter = False</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_28-1711637290110.png" style="width: 169px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88129iADEAA430241FCCCA/image-dimensions/169x325?v=v2" width="169" height="325" role="button" title="JaiSrinivasan_28-1711637290110.png" alt="JaiSrinivasan_28-1711637290110.png" /></span></P><P>&nbsp;</P><P><STRONG><U>Add Tiles to "My Home"</U></STRONG></P><UL><LI><STRONG>FLP parameter <EM>"HOMEPAGE_PERSONALIZATION"</EM></STRONG></LI></UL><P style=" padding-left : 30px; ">This parameter helps with controlling what can be personalized in the home page or in pages. When "<STRONG>HOMEPAGE_PERSONALIZATION</STRONG>" is disabled, users cannot perform the following actions for all pages:</P><UL><LI>Move, rename, delete, reset, or create groups or sections.</LI><LI>Move or remove tiles.</LI></UL><P style=" padding-left : 30px; ">Note: When false, the App Finder is also disabled for users.</P><P>When Parameter "<STRONG>HOMEPAGE_PERSONALIZATION</STRONG>" = True,</P><P>My Home page:</P><P>&nbsp; &nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="JaiSrinivasan_29-1711637290113.png" style="width: 501px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88132i656BA8A17E89A019/image-dimensions/501x231?v=v2" width="501" height="231" role="button" title="JaiSrinivasan_29-1711637290113.png" alt="JaiSrinivasan_29-1711637290113.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="JaiSrinivasan_30-1711637290116.png" style="width: 109px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88131i39E6D0D08CFA398C/image-dimensions/109x240?v=v2" width="109" height="240" role="button" title="JaiSrinivasan_30-1711637290116.png" alt="JaiSrinivasan_30-1711637290116.png" /></span></P><P style=" text-align: center; ">&nbsp;</P><P style=" text-align: center; ">&nbsp;</P><P style=" text-align: center; ">&nbsp;</P><P style=" text-align: center; ">&nbsp;</P><P>&nbsp;</P><P>Accounts Receivable page:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_31-1711637290121.png" style="width: 597px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88133iEA9DFA27D0311E7C/image-dimensions/597x184?v=v2" width="597" height="184" role="button" title="JaiSrinivasan_31-1711637290121.png" alt="JaiSrinivasan_31-1711637290121.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_32-1711637290126.png" style="width: 483px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88136i9E0622BBF8AF9608/image-dimensions/483x226?v=v2" width="483" height="226" role="button" title="JaiSrinivasan_32-1711637290126.png" alt="JaiSrinivasan_32-1711637290126.png" /></span></P><P>&nbsp;</P><P>When Parameter "<STRONG>HOMEPAGE_PERSONALIZATION" </STRONG>= False,</P><P>My Home page:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="JaiSrinivasan_33-1711637290130.png" style="width: 493px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88135i767A0414B880174F/image-dimensions/493x228?v=v2" width="493" height="228" role="button" title="JaiSrinivasan_33-1711637290130.png" alt="JaiSrinivasan_33-1711637290130.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="JaiSrinivasan_34-1711637290132.png" style="width: 107px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88134iB9AB5C79CA16D5F6/image-dimensions/107x235?v=v2" width="107" height="235" role="button" title="JaiSrinivasan_34-1711637290132.png" alt="JaiSrinivasan_34-1711637290132.png" /></span></P><P>&nbsp;</P><P>Accounts Receivable page:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_35-1711637290136.png" style="width: 535px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88138iDE752F700E20D6A5/image-dimensions/535x174?v=v2" width="535" height="174" role="button" title="JaiSrinivasan_35-1711637290136.png" alt="JaiSrinivasan_35-1711637290136.png" /></span></P><P>The user can only add tile to My Home.</P><P>&nbsp;</P><P><STRONG><U>All My Apps</U></STRONG></P><UL><LI><STRONG>FLP parameter </STRONG><SPAN><STRONG><EM>"NAVIGATION_ALLMYAPPS"</EM></STRONG></SPAN></LI></UL><P style=" padding-left : 30px; text-align : justify; ">With the FLP parameter <SPAN><EM>"<STRONG>NAVIGATION_ALLMYAPPS</STRONG>"</EM></SPAN> you can specify whether the All My Apps navigation option is available to end users in the launchpad. The FLP Parameter <SPAN><EM>"<STRONG>NAVIGATION_ALLMYAPPS</STRONG>"</EM></SPAN> is not exposed to customer in SAP S/4HANA Cloud Public Edition and hence it can be disabled based on a request by a ticket. Please find below example screenshots of behavior before and after disabling the parameter.</P><P>When Parameter <SPAN><EM>"<STRONG>NAVIGATION_ALLMYAPPS</STRONG>"</EM></SPAN> = True</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_36-1711637290139.png" style="width: 510px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88137i2FC18382BB4A4211/image-dimensions/510x144?v=v2" width="510" height="144" role="button" title="JaiSrinivasan_36-1711637290139.png" alt="JaiSrinivasan_36-1711637290139.png" /></span></P><P>&nbsp;</P><P>When Parameter <SPAN><EM>"<STRONG>NAVIGATION_ALLMYAPPS</STRONG>"</EM></SPAN> = False</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_37-1711637290142.png" style="width: 524px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88140iE810ABC1BA569936/image-dimensions/524x148?v=v2" width="524" height="148" role="button" title="JaiSrinivasan_37-1711637290142.png" alt="JaiSrinivasan_37-1711637290142.png" /></span></P><P>&nbsp;</P><P><STRONG><U>Search</U></STRONG></P><UL><LI><STRONG>FLP parameter <EM>"SEARCH"</EM></STRONG></LI></UL><P style=" text-align : justify; padding-left : 30px; ">With the FLP parameter <EM>"<STRONG>SEARCH</STRONG>"</EM> you can specify whether the search option is displayed in the launchpad shell header bar. Please note that then also the search via business objects is disabled. The FLP parameter <STRONG><EM>Search </EM></STRONG>is not exposed to customer in SAP S/4HANA Cloud Public Edition and hence it can be disabled based on a request by a ticket.</P><P>When Parameter “<STRONG>SEARCH</STRONG>” = True</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_38-1711637290144.png" style="width: 528px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88142iF3F416F0DD0BA00B/image-dimensions/528x136?v=v2" width="528" height="136" role="button" title="JaiSrinivasan_38-1711637290144.png" alt="JaiSrinivasan_38-1711637290144.png" /></span></P><P>&nbsp;</P><P>When Parameter “<STRONG>SEARCH</STRONG>” = False</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="JaiSrinivasan_39-1711637290147.png" style="width: 532px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88141i6BB6ABB2D73F03EC/image-dimensions/532x141?v=v2" width="532" height="141" role="button" title="JaiSrinivasan_39-1711637290147.png" alt="JaiSrinivasan_39-1711637290147.png" /></span></P><P>&nbsp;</P><P><STRONG>References:</STRONG></P><UL><LI><A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/4fc8d03390c342da8a60f8ee387bca1a/22d573aead754b80abca18ec71872fb7.html?locale=en-US" target="_self" rel="noopener noreferrer"><STRONG>Link to SAP Help documentation on Manage Launchpad Settings in SAP S/4HANA Cloud Public Edition where you can find information about other FLP parameters.</STRONG></A><STRONG>&nbsp;</STRONG></LI></UL><P><STRONG>Additional Resources</STRONG></P><UL><LI><A href="https://community.sap.com/topics/s4hana-cloud/product-releases" target="_blank">SAP S/4HANA Cloud, public edition, release info</A></LI><LI><A href="https://rapid.sap.com/bp/#/browse/categories/sap_s%254hana/areas/cloud" target="_blank" rel="noopener noreferrer">Best practices for SAP S/4HANA Cloud, public edition</A></LI><LI><A href="https://community.sap.com/topics/s4hana-cloud" target="_blank">SAP S/4HANA Cloud, public edition, Community</A></LI><LI><A href="https://help.sap.com/doc/7c9e0bbbd1664c2581b2038a1c7ae4b3/latest/" target="_blank" rel="noopener noreferrer">Feature Scope Description</A></LI><LI><A href="https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226/latest/" target="_blank" rel="noopener noreferrer">What’s New</A></LI></UL><P><STRONG>&nbsp;</STRONG></P> 2024-03-29T14:00:00.050000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/generative-ai-based-sap-fiori-app-development-with-joule-directly-from-the/ba-p/13654153 Generative AI-based SAP Fiori App development with Joule directly from the business requirement 2024-04-01T15:43:06.089000+02:00 AnuradhaDhingan https://community.sap.com/t5/user/viewprofilepage/user-id/141341 <H1 id="toc-hId-861652541"><FONT color="#3366FF"><STRONG><U>Introduction</U></STRONG></FONT></H1><P>SAP Build Code, operating within SAP Business Technology Platform, is an application development environment for Java and JavaScript, providing developers with a turnkey solution for coding, testing, integration and application life cycle management. It provides a simplified developer experience, AI-based code generation with Joule copilot that drives productivity, is tailored for SAP development and supports fusion development by teams of professional and citizen developers. &nbsp;&nbsp;</P><P>This blog focuses on leveraging <STRONG>Joule’s generative AI features for SAP Fiori application development</STRONG> directly from the business requirement description(user story) prompt.</P><P>&nbsp;</P><H1 id="toc-hId-665139036"><FONT color="#3366FF"><STRONG><U>Business Requirement</U></STRONG></FONT></H1><P><FONT face="arial,helvetica,sans-serif">Create an SAP Fiori application as per the requirements outlined in the user story below:</FONT></P><P><FONT size="4"><U><STRONG>User Story</STRONG></U></FONT></P><P><FONT size="2" color="#808080"><EM>As a contract administrator, I want to create and manage contracts and ‘parties involved’ information in the system, so that I can effectively track and handle legal agreements and ‘parties involved’ interactions.</EM></FONT></P><P><FONT size="2" color="#808080"><EM>Contracts can cover a vast range of agreements, such as sales contracts, service agreements and employment contracts.</EM></FONT></P><P><FONT size="2" color="#808080"><EM>Party involved: A ‘party involved’ is an individual, organization, or entity that purchases goods, products, or services from another party, typically a business or seller.</EM></FONT></P><P><FONT size="2" color="#808080"><EM>Common attributes of a contract might include:</EM></FONT></P><OL><LI><FONT size="2" color="#808080"><EM>Contract ID: A unique identifier for the contract.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Party involved Identification Number: A unique identification number for the party&nbsp;</EM><EM>involved.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Contract Type: The type of contract (e.g. sales, service, employment).</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Start Date: The date on which the contract becomes valid.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>End Date: The date on which the contract expires (if applicable).</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Status: The current status of the contract (draft, active, expired, terminated, etc.)</EM></FONT></LI></OL><P><FONT size="2" color="#808080"><EM>A typical ‘party involved’ has the following attributes:</EM></FONT></P><OL><LI><FONT size="2" color="#808080"><EM>Party involved Identification Number</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Party involved Name: It refers to the given name of a person or entity, or a label by which they are addressed or identified.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Party involved Address: It refers to a physical location where an individual, business, or entity is situated or can be reached.</EM></FONT></LI><LI><FONT size="2" color="#808080"><EM>Party involved Contact Information</EM></FONT></LI></OL><P><FONT size="2"><STRONG><FONT color="#808080"><EM>Acceptance Criteria</EM></FONT></STRONG></FONT></P><P><FONT size="2"><STRONG><FONT color="#808080"><EM>Scenario 1: List All Contracts</EM></FONT></STRONG></FONT></P><P><FONT size="2"><FONT color="#808080"><EM>Given I am logged into the contract management system, when I launch the SAP Fiori application to maintain contracts, then I should be able to view the list of all the contracts in a list without pressing the GO button. The list of all the contracts should have : Contract ID, Party involved Identification Number, Contract Type and Start Date.&nbsp;</EM></FONT><FONT color="#808080"><EM>The list of filters should include Contract Type, Contract Status and Start Date.</EM></FONT></FONT></P><P><FONT size="2"><STRONG><FONT color="#808080"><EM>Scenario 2: View Contract Details&nbsp;</EM></FONT></STRONG></FONT></P><P><FONT size="2" color="#808080"><EM>Given I am logged into the contract management system, when I select a specific contract from the list of SAP Fiori application, then I should be able to view the contract details and parties involved information.</EM></FONT></P><P>&nbsp;</P><H1 id="toc-hId-468625531"><FONT color="#3366FF"><STRONG><U>Joule's&nbsp;Generative AI-based SAP Fiori App Development</U></STRONG></FONT></H1><H2 id="toc-hId-401194745"><U><STRONG>Prerequisites</STRONG></U></H2><UL><LI><FONT face="arial,helvetica,sans-serif" size="4"><A href="https://developers.sap.com/tutorials/hcp-create-trial-account.html" target="_blank" rel="noopener noreferrer">Get a Free Account on SAP BTP Trial</A></FONT></LI><LI><FONT face="arial,helvetica,sans-serif" size="4"><A href="https://developers.sap.com/tutorials/build-code-setup.html" target="_blank" rel="noopener noreferrer">Setup SAP Build Code</A></FONT></LI></UL><H2 id="toc-hId-204681240"><STRONG>1. Create a New Project using SAP Build Code</STRONG></H2><H3 id="toc-hId-137250454"><EM>1.1.&nbsp; Navigate to the SAP Build lobby</EM></H3><H3 id="toc-hId--59263051"><EM>1.2.&nbsp; Click on Create</EM></H3><H4 id="toc-hId--126693837"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="Create a Project" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89021i9975D6870D5C4018/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 1.07.36 PM.png" alt="Create a Project" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Create a Project</span></span></H4><P>&nbsp;</P><H4 id="toc-hId--323207342">&nbsp;</H4><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H3 id="toc-hId--648803566"><EM>1.3 Click the&nbsp;Build an Application&nbsp;tile</EM></H3><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Build an Application" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89177i6BA23969AD5E286B/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 1.11.18 PM.png" alt="Build an Application" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Build an Application</span></span></P><H3 id="toc-hId--920548440"><EM>1.4&nbsp; Click the&nbsp;SAP Build Code&nbsp;tile</EM></H3><P><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SAP Build Code" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89204iFC167A130F679D1C/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 1.14.16 PM.png" alt="SAP Build Code" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">SAP Build Code</span></span></EM></P><H3 id="toc-hId--1117061945"><EM>1.5&nbsp; Click the&nbsp;Full-Stack Application&nbsp;tile</EM></H3><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Full-Stack Application" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89059i0C5DEE4A28D9E992/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 1.15.56 PM.png" alt="Full-Stack Application" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Full-Stack Application</span></span></P><H3 id="toc-hId--1313575450"><EM>1.6 Create a full stack project.</EM></H3><P><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Contract Management Project" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89109iA38822C4A25105E2/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 1.37.32 PM.png" alt="Contract Management Project" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Contract Management Project</span></span></EM></P><P>&nbsp;</P><H2 id="toc-hId--1216685948"><STRONG>2. Create an SAP Fiori App via Prompt</STRONG></H2><H3 id="toc-hId--1706602460"><EM>2.1.&nbsp; Click the project to open it in&nbsp;SAP Business Application&nbsp;</EM><EM>Studio</EM></H3><H3 id="toc-hId--1903115965"><EM>2.2.&nbsp; Click the Open Guide</EM></H3><P><EM><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Open Guide" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89111iEED8467EAC1B544A/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 2.02.20 PM.png" alt="Open Guide" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Open Guide</span></span></EM></P><H3 id="toc-hId--2099629470"><EM>2.3. Expand the 'SAP Fiori UI Node'</EM></H3><P><FONT face="arial,helvetica,sans-serif" size="4">Expand the '<SPAN class="">Create an&nbsp;</SPAN><SPAN class="">SAP Fiori</SPAN><SPAN class="">&nbsp;Application Directly from Your Business Requirements'</SPAN>&nbsp;node. Click the<SPAN>&nbsp;</SPAN><SPAN class="">Open Joule</SPAN><SPAN>&nbsp;</SPAN>button to launch Joule's AI assistant for<SPAN>&nbsp;</SPAN><SPAN class="">SAP Fiori tools</SPAN>.</FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Joule's SAP Fiori Tools Generative AI" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89116iBD6C797518CFC0CF/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 2.19.08 PM.png" alt="Joule's SAP Fiori Tools Generative AI" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Joule's SAP Fiori Tools Generative AI</span></span></FONT></P><H3 id="toc-hId-1998824321"><EM>2.4. Send requirement prompt to Joule</EM></H3><P><FONT face="arial,helvetica,sans-serif" size="4">Prompt the user story description(refer to&nbsp;Business Requirement section above) to Joule and click send.</FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Send business requirement description to Joule" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89123i67214DAC20F49852/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 2.38.55 PM.png" alt="Send business requirement description to Joule" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Send business requirement description to Joule</span></span></FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4"><SPAN>Joule now checks the input against the list of features it supports and implements them.</SPAN></FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4"><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Joule's artifacts creation based on prompt" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89129i22FFFBB604248066/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 2.47.30 PM.png" alt="Joule's artifacts creation based on prompt" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Joule's artifacts creation based on prompt</span></span></SPAN></FONT></P><P><FONT size="4">Click<SPAN>&nbsp;</SPAN><SPAN class="">Show Result</SPAN><SPAN>&nbsp;</SPAN>to review the generated artifacts. If fine, accept the changes to generate the project in your file system.</FONT></P><P><FONT size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Accept Project Files" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89148i81AAB5D35285786D/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 3.05.12 PM.png" alt="Accept Project Files" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Accept Project Files</span></span></FONT></P><H3 id="toc-hId-1802310816"><EM>2.5. Preview the generated application</EM></H3><P><FONT face="arial,helvetica,sans-serif" size="4">Click run and debug.</FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Run and Debug" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89156iDDE79B3188404B5E/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 3.20.50 PM.png" alt="Run and Debug" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Run and Debug</span></span></FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4">The application's preview is displayed.</FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Application Preview" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89157i3674809E27A388A7/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 3.31.56 PM.png" alt="Application Preview" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Application Preview</span></span></FONT></P><P>Launch the contract management app.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Contract Management" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89160iF1A9225DABFE5EDD/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 3.40.32 PM.png" alt="Contract Management" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Contract Management</span></span></P><P>Select a contract from the list to view its details.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Select Contract" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89166i60CBA8ABFC8006B8/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 4.19.45 PM.png" alt="Select Contract" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Select Contract</span></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Contract details" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89174i13869678640CC231/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-01 at 4.25.10 PM.png" alt="Contract details" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Contract details</span></span></P><H1 id="toc-hId--2102363971"><FONT color="#3366FF"><STRONG><U>Conclusion</U></STRONG></FONT></H1><P><FONT face="arial,helvetica,sans-serif" size="4">Joule's&nbsp;<SPAN>SAP Fiori tools</SPAN>&nbsp;generative AI can really expedite the SAP Fiori&nbsp;development by directly translating the business requirements into an&nbsp;SAP Fiori elements&nbsp;application containing a list report and one or two object pages as part of a CAP project. The generated application can further be adapted to accommodate more complex functionalities.</FONT></P><P><FONT face="arial,helvetica,sans-serif" size="4">With SAP Build Code, application is developed automatically following the "golden path," utilising SAP best practices and integrated assistance to build quickly and integrate seamlessly.</FONT></P><H1 id="toc-hId--2130693785">&nbsp;</H1><H1 id="toc-hId-1967760006"><FONT color="#3366FF"><STRONG><U>Further Information</U></STRONG></FONT></H1><P><FONT face="arial,helvetica,sans-serif" size="4"><A title="SAP Build Code" href="https://pages.community.sap.com/topics/build-code" target="_blank" rel="noopener noreferrer">SAP Build Code</A></FONT></P><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>Please feel free to add a comment, should you have any queries.</SPAN><BR /><BR /><SPAN>Best Regards,</SPAN><BR /><SPAN>Anuradha Dhingan</SPAN></P> 2024-04-01T15:43:06.089000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/design-of-the-new-apple-vision-pro-app-for-sap-mobile-start/ba-p/13646876 Design of the new Apple Vision Pro App for SAP Mobile Start 2024-04-02T12:48:50.763000+02:00 Laura_Bergmann https://community.sap.com/t5/user/viewprofilepage/user-id/1422700 <P><SPAN class=""><SPAN class="">The new </SPAN><SPAN class="">Apple </SPAN><SPAN class="">Vision Pro App for SAP Mobile Start is officially </SPAN><SPAN class="">out! <span class="lia-unicode-emoji" title=":party_popper:">🎉</span></SPAN></SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_0-1711141322792.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85292i4DCD05EF53092665/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_0-1711141322792.png" alt="Laura_Bergmann_0-1711141322792.png" /></span></P><P style=" text-align: center; "><EM><SPAN class=""><SPAN class="">Screenshot – SAP Mobile Start for Apple Vision Pro</SPAN></SPAN></EM></P><P>&nbsp;</P><P><SPAN>3 months ago, around mid of October, w</SPAN><SPAN>e began designing and building SAP Mobile Start for a completely new and innovative platform: Apple Vision Pro. We made the first steps in the snow and explored the next era of spatial computing together with Apple.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN class=""><SPAN class="">From a design point of view, the past </SPAN><SPAN class="">few</SPAN><SPAN class=""> months were super exciting</SPAN><SPAN class=""> and filled with new learnings. We </SPAN><SPAN class="">had</SPAN> <SPAN class="">dive</SPAN><SPAN class="">d</SPAN><SPAN class=""> into a completely </SPAN><SPAN class="">new design</SPAN><SPAN class=""> system consisting of translucent materials</SPAN><SPAN class=""> that </SPAN><SPAN class="">need</SPAN><SPAN class="">ed</SPAN><SPAN class=""> to </SPAN><SPAN class="">work against real-world environments with different light and background conditions</SPAN><SPAN class="">. </SPAN><SPAN class="">Apple </SPAN><SPAN class="">Vision Pro offered</SPAN> <SPAN class="">new ways of navigating a UI by</SPAN><SPAN class=""> only</SPAN><SPAN class=""> using your </SPAN><SPAN class="">eyes</SPAN><SPAN class="">, </SPAN><SPAN class="">hands</SPAN><SPAN class="">, and voice</SPAN><SPAN class="">.</SPAN></SPAN></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_1-1711141362016.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85293i0B8218027F9C84BE/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_1-1711141362016.png" alt="Laura_Bergmann_1-1711141362016.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_2-1711141434923.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85294iABD316ADB1215274/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_2-1711141434923.png" alt="Laura_Bergmann_2-1711141434923.png" /></span></P><P style=" text-align: center; "><EM><SPAN class=""><SPAN class="">Gestures in </SPAN><SPAN class="">v</SPAN><SPAN class="">isionOS</SPAN><SPAN class=""> -</SPAN><SPAN class="">&nbsp;Apple WWDC 2023</SPAN><SPAN class="">,</SPAN><SPAN class=""> Designing for spatia</SPAN><SPAN class="">l </SPAN><SPAN class="">input</SPAN></SPAN></EM></P><P>&nbsp;</P><P><SPAN class=""><SPAN class=""><SPAN class="">B</SPAN><SPAN class="">efore </SPAN><SPAN class="">we</SPAN><SPAN class=""> could design </SPAN><SPAN class="">our own </SPAN><SPAN class="">app on Apple </SPAN><SPAN class="">Vision Pro, </SPAN><SPAN class="">we</SPAN> <SPAN class="">first needed to understand the foundations of spatial design by researching best practices for this </SPAN><SPAN class="">new </SPAN><SPAN class="">territory</SPAN><SPAN class="">. For that, </SPAN><SPAN class="">we</SPAN><SPAN class=""> studied the deep dive sessions from </SPAN></SPAN><A class="" href="https://developer.apple.com/videos/play/wwdc2023/10076" target="_blank" rel="noreferrer noopener nofollow"><SPAN class=""><SPAN class="">Apple’s WWDC </SPAN><SPAN class="">Vision Pro</SPAN></SPAN></A> <SPAN class=""><SPAN class="">announcement</SPAN><SPAN class="">, their first </SPAN></SPAN><A class="" href="https://developer.apple.com/design/human-interface-guidelines/designing-for-visionos" target="_blank" rel="noreferrer noopener nofollow"><SPAN class=""><SPAN class="">human interface guidelines</SPAN><SPAN class=""> for </SPAN><SPAN class="">visionOS</SPAN></SPAN></A><SPAN class=""><SPAN class="">,</SPAN><SPAN class=""> the </SPAN></SPAN><A class="" href="https://www.figma.com/community/file/1253443272911187215" target="_blank" rel="noreferrer noopener nofollow"><SPAN class=""><SPAN class=""><SPAN class="">UIKit</SPAN></SPAN></SPAN></A><SPAN class=""><SPAN class=""> for </SPAN><SPAN class="">visionOS</SPAN></SPAN> <SPAN class=""><SPAN class="">and the headset’s hardware capabilities in general.</SPAN></SPAN></SPAN></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_4-1711141502927.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85295iBAA4B21A29AEAA4D/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_4-1711141502927.png" alt="Laura_Bergmann_4-1711141502927.png" /></span></P><P style=" text-align: center; "><EM><SPAN class=""><SPAN class="">UI Kit for </SPAN><SPAN class="">visionOS</SPAN></SPAN></EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_5-1711141548963.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85296iAEAE497A5F90F45A/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_5-1711141548963.png" alt="Laura_Bergmann_5-1711141548963.png" /></span></P><P style=" text-align: center; "><EM><SPAN class=""><SPAN class="">Screenshot –</SPAN><SPAN class=""> Apple’s</SPAN> <SPAN class="">visionOS</SPAN> <SPAN class="">guidelines</SPAN></SPAN></EM></P><P>&nbsp;</P><P><SPAN class=""><SPAN class=""><SPAN class="">Now you could ask “Why not just </SPAN><SPAN class="">port </SPAN><SPAN class="">the existing iPad app </SPAN><SPAN class="">to </SPAN><SPAN class="">visionOS</SPAN><SPAN class="">?</SPAN><SPAN class="">”.</SPAN><SPAN class=""> In theory, this would have </SPAN><SPAN class="">probably been</SPAN><SPAN class=""> the easiest way to publish an app </SPAN><SPAN class="">for Apple </SPAN><SPAN class="">Visio</SPAN><SPAN class="">n Pro</SPAN><SPAN class="">.</SPAN><SPAN class=""> We soon learned that </SPAN><SPAN class="">even though </SPAN><SPAN class="">v</SPAN><SPAN class="">isionOS</SPAN> <SPAN class="">and </SPAN><SPAN class="">i</SPAN><SPAN class="">PadOS</SPAN> <SPAN class="">have many similarities, </SPAN><SPAN class="">v</SPAN><SPAN class="">isionOS</SPAN> <SPAN class="">has </SPAN><SPAN class="">unique </SPAN><SPAN class="">needs</SPAN> <SPAN class="">when it comes to interaction and visual design. To create a </SPAN><SPAN class="">v</SPAN><SPAN class="">isionOS</SPAN> <SPAN class="">app </SPAN><SPAN class="">with </SPAN><SPAN class="">the best</SPAN> <SPAN class="">user</SPAN> <SPAN class="">experience, </SPAN><SPAN class="">you must consider platform specifics and follow the respective patterns for that environment</SPAN><SPAN class="">.</SPAN></SPAN></SPAN></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_0-1711141708997.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85297iE62F93FB8F310A0F/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_0-1711141708997.png" alt="Laura_Bergmann_0-1711141708997.png" /></span></P><P style=" text-align: center; "><EM><SPAN class="">WWDC 2023, Principles of spatial design &amp; Design for spatial input</SPAN></EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_1-1711141733095.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85298i0667EB73D832635A/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_1-1711141733095.png" alt="Laura_Bergmann_1-1711141733095.png" /></span></P><P style=" text-align: center; "><EM><SPAN class=""><SPAN class="">visionOS</SPAN> <SPAN class="">Design – Best Practices</SPAN></SPAN></EM></P><P>&nbsp;</P><P><SPAN class=""><SPAN class="">For us, that meant challenging </SPAN><SPAN class="">some of the</SPAN><SPAN class=""> concepts we already had on the </SPAN><SPAN class="">iP</SPAN><SPAN class="">hone, </SPAN><SPAN class="">iPad</SPAN><SPAN class="">,</SPAN><SPAN class=""> and </SPAN><SPAN class="">Apple W</SPAN><SPAN class="">atch</SPAN><SPAN class=""> and re-think </SPAN><SPAN class="">them </SPAN><SPAN class="">for </SPAN><SPAN class="">Apple </SPAN><SPAN class="">Vision Pro. One example</SPAN><SPAN class=""> for this was the whole re-organization of the top-level app navigation and secondary navigation targets.</SPAN> <SPAN class="">We experimented with ornaments, three-</SPAN><SPAN class="">pane</SPAN><SPAN class=""> layouts</SPAN><SPAN class="">, extra windows, dialogs, </SPAN><SPAN class="">and</SPAN><SPAN class=""> lastly</SPAN> <SPAN class="">the sidebar to </SPAN><SPAN class="">optimize</SPAN><SPAN class=""> the experience of SAP Mobile Start for </SPAN><SPAN class="">the Infinite Canvas of Apple Vision Pro.</SPAN> <SPAN class="">The introduction of</SPAN><SPAN class=""> the sidebar required a re-design of several patterns like to-do details </SPAN><SPAN class="">or</SPAN><SPAN class=""> insight card details</SPAN><SPAN class="">. It also had an impact on our existing iPad app.</SPAN></SPAN></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_2-1711142251829.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85302iDC9C4DBA979173AB/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_2-1711142251829.png" alt="Laura_Bergmann_2-1711142251829.png" /></span></P><P style=" text-align: center; "><EM><SPAN class=""><SPAN class="">Screenshot – </SPAN><SPAN class="">To-Do Details</SPAN><SPAN class=""> Screen</SPAN></SPAN></EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_3-1711142289899.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85304i521D13653AB183C9/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_3-1711142289899.png" alt="Laura_Bergmann_3-1711142289899.png" /></span></P><P style=" text-align: center; "><EM><SPAN class=""><SPAN class="">Old draft</SPAN><SPAN class=""> – </SPAN><SPAN class="">To-Do Details</SPAN> <SPAN class="">as separate window</SPAN></SPAN></EM></P><P>&nbsp;</P><P><SPAN>With the help of dedicated concept review sessions with our developer support contacts at Apple, hands-on test sessions, and peer reviews with our design experts from the mobile design systems team, we managed to nudge our concept into the right direction and finalize it in a very short time.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>To finish the app for the launch of Apple Vision Pro, we needed a small team that was able to take fast decisions and quickly react. During this time, our core team – consisting of our two lead iOS developers and myself as the lead UX designer – collaborated very closely and synced daily or even sat together in one meeting room. We designed and developed in real-time and discussed new ideas together. This short feedback-loop helped us detect technical limitations and unfeasible designs at a very early stage.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>After the app development was finished and visuals for featuring the app had been provided, the SAP Mobile Start app for Apple Vision Pro was ready to be shipped to the App Store on </SPAN><SPAN>Feb 2nd</SPAN><SPAN>.</SPAN></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Laura_Bergmann_5-1711142370748.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85306i486002D3DDB03C9B/image-size/large?v=v2&amp;px=999" role="button" title="Laura_Bergmann_5-1711142370748.png" alt="Laura_Bergmann_5-1711142370748.png" /></span></P><P style=" text-align: center; "><EM><SPAN class=""><SPAN class="">Mockup</SPAN><SPAN class=""> – </SPAN><SPAN class="">SAP Mobile Start </SPAN><SPAN class="">in the App Store</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></EM></P><P>&nbsp;</P><P><SPAN>But as we all know: A good product is never finished. Stay tuned for updates to SAP Mobile Start for visionOS in the future!</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>If you want to know more about our 1.10 release, have a look at our release article </SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/apple-vision-pro-is-available-sap-mobile-start-v1-10-is-ready/ba-p/13583357" target="_blank"><SPAN>here</SPAN></A><SPAN>.</SPAN></P><P>&nbsp;</P><P>----------------------------------------------------------------------------------------------------------</P><P><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>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><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><SPAN>&nbsp;</SPAN></P><P><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></P> 2024-04-02T12:48:50.763000+02:00 https://community.sap.com/t5/technology-blogs-by-members/how-to-update-signing-certificate-in-saml2/ba-p/13653446 How to update signing certificate in SAML2 2024-04-03T10:54:59.498000+02:00 HarshilShah https://community.sap.com/t5/user/viewprofilepage/user-id/1427660 <P>Hello Everyone,</P><P>This blog is based on SAP note&nbsp;<A href="https://me.sap.com/notes/2462389" target="_blank" rel="noopener noreferrer"><SPAN>2462389 - SAML2.0: Renew IdP signing certificate on Service Provider on NetWeaver ABAP without downtime</SPAN></A>. In our environment, we have encountered situation to update Azure idP signing certificate, and I could not be able to find any relevant blog for step by step procedure except this SAP note. In this blog I have provided all the steps one-by-one to update signing certificate in SAML2 t-code.</P><P>&nbsp;</P><P>First of all go to STRUST t-code and check the validity of existing certificate by navigating to STRUST--&gt;SSF SAML2 Service Provider--&gt;Signature.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image1.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88438i1EB7C57A4A8F3CD1/image-size/large?v=v2&amp;px=999" role="button" title="Image1.JPG" alt="Image1.JPG" /></span></P><P>As per above screenshot, we can see that Signing certificate is about to expire on 22nd March, 2024. In our organization, we have dedicated Azure team who can provide new idP certificate. There are many formats available to download certificate like Base64 certificate download, PEM certificate download, Raw certificate download, Download federated certificate XML, etc. I have requested to provide certificate of Base64 type. Make sure you ask to provide certificate against registered SAP Provider otherwise SSO functionality would be break.</P><P>Once new Base64 type certificate received from Azure team, BASIS team member can execute t-code SAML2.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image2.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88444i4ADBD6035BDD780D/image-size/large?v=v2&amp;px=999" role="button" title="Image2.JPG" alt="Image2.JPG" /></span></P><P>Login with your SAP system user id and password. If you have SSO enabled for this system, you can request SAP security team to reset password for your id.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image3.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88447i61DEC828AAEFCD4D/image-size/large?v=v2&amp;px=999" role="button" title="Image3.JPG" alt="Image3.JPG" /></span></P><P>Once login successfully, we can go to Trusted Provider--&gt;Signature and Encryption tab.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image4.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88448iC00E205FD2979B0D/image-size/large?v=v2&amp;px=999" role="button" title="Image4.JPG" alt="Image4.JPG" /></span></P><P>From above screenshot, we can see there is Secondary Signing Certificate tab is there. Click on Edit button and then click on Browse to upload new signing certificate.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image5.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88450iB1DF4FB32C38258D/image-size/large?v=v2&amp;px=999" role="button" title="Image5.JPG" alt="Image5.JPG" /></span></P><P>Click on Choose File to upload certificate.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image6.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88451i48619BC6A6ED2A33/image-size/large?v=v2&amp;px=999" role="button" title="Image6.JPG" alt="Image6.JPG" /></span></P><P>Click on OK button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image7.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88452iB02A4E662E08BE2D/image-size/large?v=v2&amp;px=999" role="button" title="Image7.JPG" alt="Image7.JPG" /></span></P><P>One can click on Details button to see the validity and other details about certificate.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image8.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88453i6551F73571BE4D4C/image-size/large?v=v2&amp;px=999" role="button" title="Image8.JPG" alt="Image8.JPG" /></span></P><P>After clicking on Save button, it was not allowed to save and giving an error message as "<SPAN>Saving trusted provider data failed. You can get more information by collecting traces using tool http(s)://host:port/sap/bc/webdynpro/sap/sec_diag_tool?sap-clientXXX".</SPAN>&nbsp;<SPAN>I have collected the trace and it was giving an exception as SAML20 &nbsp;SAML20 CX_SAML20_CORE: Certificates cannot be saved in PSE: 'An exception with the type CX_SY_FILE_AUTHORITY wa'. Long text: Certificates cannot be saved in PSE: 'An exception with the type CX_SY_FILE_AUTHORITY wa. </SPAN></P><P><SPAN>I have followed multiple SAP notes but none of it helped to solve the issue. Finally it was resolved after providing proper authorization to my id. I have generated SU53 screenshot and provided the same to SAP security team, and once they have provided authorization, I could able to save it.</SPAN></P><P><SPAN>Following screenshot is error message of trace which I have collected.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image10.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88460i5BB028417CC735A3/image-size/large?v=v2&amp;px=999" role="button" title="Image10.JPG" alt="Image10.JPG" /></span></SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image9.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88454iEDA6B35956A2ABC4/image-size/large?v=v2&amp;px=999" role="button" title="Image9.JPG" alt="Image9.JPG" /></span></P><P>Once certificate is saved in SAML2 t-code, go to STRUST--&gt;SSF SAML2 Service Provider - Signature. we can see certificate updated there as well.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image11.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88461i5E038F5B65745F2A/image-size/large?v=v2&amp;px=999" role="button" title="Image11.JPG" alt="Image11.JPG" /></span></P><P>We can ask Azure idP team to activate the new certificate in order to see whether functionality is working fine or not.</P><P>Perform couple of tests like opening Fiori Launchpad and raising an FF ID.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image12.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88462iE4FF7C56FF41536B/image-size/large?v=v2&amp;px=999" role="button" title="Image12.JPG" alt="Image12.JPG" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image13.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88463i0C06949D43563B7D/image-size/large?v=v2&amp;px=999" role="button" title="Image13.JPG" alt="Image13.JPG" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image14.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88464iFEBCDD200D57F477/image-size/large?v=v2&amp;px=999" role="button" title="Image14.JPG" alt="Image14.JPG" /></span></P><P>Now, we can remove old certificate from STRUST. We can follow SAP note:&nbsp;<A href="https://me.sap.com/notes/2541887" target="_blank" rel="noopener noreferrer"><SPAN>2541887 - SAML2.0: Signing Certificate can't be uploaded to Trusted Providers configuration in transaction SAML2</SPAN></A>&nbsp;for the same.</P><P>Inside STRUST click on Edit button and go to Certificate--&gt;Address Book</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image15.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88466i1D02A1418195024F/image-size/large?v=v2&amp;px=999" role="button" title="Image15.JPG" alt="Image15.JPG" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image16.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88470iE9097543F7607161/image-size/large?v=v2&amp;px=999" role="button" title="Image16.JPG" alt="Image16.JPG" /></span></P><P>We can see total two certificates. One is new one and another one is older. Scroll right and select the old validity date line to delete the same.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image17.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88472iDE9FA6CC1A5CEA31/image-size/large?v=v2&amp;px=999" role="button" title="Image17.JPG" alt="Image17.JPG" /></span></P><P>Once the certificate is deleted with old expiration date, we can see only one certificate is listed in Address Book.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image18.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88473i344664A7547CA93B/image-size/large?v=v2&amp;px=999" role="button" title="Image18.JPG" alt="Image18.JPG" /></span></P><P>To verify whether certificate is removed or not, open SAML2 and go to Trusted Provider--&gt;Signature and Encryption tab.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image19.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88474iBFC9702E7F09BFCC/image-size/large?v=v2&amp;px=999" role="button" title="Image19.JPG" alt="Image19.JPG" /></span></P><P>This removal won't impact in certificate list inside STRUST, so we have to manually delete from there.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image20.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88475i0444C457729D0F04/image-size/large?v=v2&amp;px=999" role="button" title="Image20.JPG" alt="Image20.JPG" /></span></P><P>After removal from Certificate List, we can see only new signing certificate is visible at both places (inside STRUST and SAML2).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Image21.JPG" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/88476i6CE523B2DA2BFEDA/image-size/large?v=v2&amp;px=999" role="button" title="Image21.JPG" alt="Image21.JPG" /></span></P><P>I hope this would help to BASIS team members to update signing certificate in SAML2. Kindly check and let me know the feedback in comment section.</P><P>Regards,</P><P>Harshil Shah</P><P>&nbsp;</P><P>&nbsp;</P> 2024-04-03T10:54:59.498000+02:00 https://community.sap.com/t5/technology-blogs-by-members/downloading-multiple-files-as-a-single-zip-folder-in-sap-ui5-application/ba-p/13656364 Downloading multiple files as a single zip folder in SAP UI5 Application 2024-04-03T11:02:43.393000+02:00 Rahul_Kanti https://community.sap.com/t5/user/viewprofilepage/user-id/155536 <P><STRONG>Introduction<BR /></STRONG></P><P><SPAN><SPAN class="">In this blog we will learn to download multiple files within a single zip file using JSZip javascript library. We will also be using jsPDF library inorder to generate PDF.</SPAN></SPAN></P><P>Before proceeding lets have a brief on the libraries being used&nbsp;<BR />JSZip : A library for creating, reading and editing .zip files with JavaScript.<BR />jsPDF : A library for generating .pdf files with Javascript<BR /><STRONG><BR />Application Development</STRONG></P><P>Inorder to use the above mentioned libraries we have to add the below script tags in our index.html file</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> &lt;script src="https://cdn.jsdelivr.net/npm/html-to-pdfmake/browser.js"&gt;&lt;/script&gt; &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.54/vfs_fonts.js"&gt;&lt;/script&gt; &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.6.0/jszip.min.js"&gt;&lt;/script&gt; &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"&gt;&lt;/script&gt;</code></pre><P>&nbsp;</P><P>Next, we are creating a simple button which once clicked will download the zip file containing a PDF(.pdf) file and a text(.txt) file.</P><P>So in the view file the button named Download-zip is binded to onPress function as seen below:</P><P>&nbsp;</P><pre class="lia-code-sample language-markup"><code>&lt;mvc:View controllerName="com.demo.project1.controller.Home" xmlns:mvc="sap.ui.core.mvc" displayBlock="true" xmlns="sap.m"&gt; &lt;Page id="page" &gt; &lt;content&gt; &lt;Button type="Accept" text="Download Zip" press="onPress" ariaDescribedBy="acceptButtonDescription genericButtonDescription"/&gt; &lt;/content&gt; &lt;/Page&gt; &lt;/mvc:View&gt;</code></pre><P>&nbsp;</P><P><SPAN><SPAN class="">Lets jump into the logic for the onPress function in our controller file</SPAN></SPAN></P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code>onPress: function () { var doc=new jsPDF() doc.setFontSize(12); doc.text(10, 10, "Hello, this is a pdf file."); var pdfBlob = doc.output('blob'); zipContent.push({ name: 'Document.pdf', content: pdfBlob }); var txtBlob = new Blob(['Hello, this is a text file.'], { type: 'text/plain' }); zipContent.push({ name: 'DemoTextFile.txt', content: txtBlob }) var zip = new JSZip(); var count = 0; var totalFiles = zipContent.length; function addFileToZip(index) { var file = zipContent[index]; var filename = file.name; var content = file.content; zip.file(filename, content, { binary: true }); count++; if (count === totalFiles) { zip.generateAsync({ type: "blob" }).then(function (content) { // Create a download link var link = document.createElement("a"); link.href = URL.createObjectURL(content); link.download = "data.zip"; link.click(); URL.revokeObjectURL(link.href); }); } } for (var i = 0; i &lt; totalFiles; i++) { addFileToZip(i); } }</code></pre><P>&nbsp;</P><P><SPAN><SPAN class="">Here first we are generating a blob of the contents of a jsPDF document and then pushing it as an object inside an array named “zipContent”, Then again we are creating a Blob of a demo text content and again pushing its as an object to the zipContent array. Now our “zipConent” array has two objects which means two different types of files namely Document1.pdf and Document2.txt so we create a new instance of the JSZip then iterate over the files in the zipContent array and add each file to the JSZip object generating the zip file asynchronously and, once completed, a download link for the zip file is created . This link is triggered to initiate the download.</SPAN></SPAN></P><P><STRONG>Output</STRONG></P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="UI Screen" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90084i2C52BD718E268929/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-02 at 11.10.39 PM.png" alt="UI Screen" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">UI Screen</span></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="UI Screen" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90086iB8C9572F361CEFD1/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-02 at 11.10.54 PM.png" alt="UI Screen" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">UI Screen</span></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Folder with files" style="width: 802px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90083iDB5DD69299B608D1/image-size/large?v=v2&amp;px=999" role="button" title="image (3).png" alt="Folder with files" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Folder with files</span></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Text File" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90085i8E4F407E7E2FB590/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-02 at 11.02.29 PM.png" alt="Text File" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Text File</span></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="PDF File" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90087i42296EB5F7D303F4/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-04-02 at 11.03.06 PM.png" alt="PDF File" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">PDF File</span></span></STRONG></P><P><STRONG><STRONG><STRONG>Conclusion<BR /></STRONG></STRONG></STRONG><SPAN class="">In this blog, We learned how to download multiple files as single ZIP file using the popular JSZip library of the javascript.<BR /><BR />Hope this blog was helpful in enrichining your knowledge.<BR /><BR /><STRONG>Thanks!</STRONG></SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-04-03T11:02:43.393000+02:00 https://community.sap.com/t5/technology-blogs-by-members/elevating-customer-engagement-harnessing-the-power-of-sap-chatbots-for-a/ba-p/13663214 Elevating Customer Engagement: Harnessing the Power of SAP Chatbots for a Personalized Experience 2024-04-09T08:31:48.902000+02:00 TrusPatel https://community.sap.com/t5/user/viewprofilepage/user-id/137142 <P class="">In below blog series, It is all about Benefits and usecases of custom Chatbot that I have built.</P><P style=" padding-left : 30px; ">Business Blogs :&nbsp;</P><P style=" padding-left : 60px; ">Blog 1 :<SPAN>&nbsp;</SPAN><A title="This blog" href="https://community.sap.com/t5/technology-blogs-by-members/embrace-the-future-transform-and-standardize-operations-with-chatbot/ba-p/13662643#M166808" target="_self">Why Chatbots in SAP ?</A><BR />Blog 2 :&nbsp;<A title="How Chatbot can help Vendors?" href="https://community.sap.com/t5/technology-blogs-by-members/empowering-vendors-the-transformative-impact-of-sap-chatbot/ba-p/13663154" target="_blank">How Chatbot can help Vendors?</A>&nbsp;<BR />Blog 3 : <A title="How Chatbot can help Customers?" href="https://community.sap.com/t5/technology-blogs-by-members/elevating-customer-engagement-harnessing-the-power-of-sap-chatbots-for-a/ba-p/13663214" target="_self">How Chatbot can help Customers? ( This Blog )</A></P><P style=" padding-left : 30px; ">Technical Blogs :&nbsp;</P><P style=" padding-left : 60px; ">Blog 1 : ... will publish soon ..</P><P style=" padding-left : 60px; ">Blog n :&nbsp;<A title="Dynamic Response from Chatbot using Factory function in SAPUI5 [ Aggregation Binding ]" href="https://community.sap.com/t5/technology-blogs-by-members/dynamic-response-from-chatbot-using-factory-function-in-sapui5-aggregation/ba-p/13569679" target="_self">Dynamic Response from Chatbot using Factory function in SAPUI5 [ Aggregation Binding ]</A>&nbsp;</P><P style=" padding-left : 30px; ">&nbsp;</P><H2 id="toc-hId-991629828">Problem statement</H2><P class=""><SPAN>Why reserve an expensive workforce for repetitive and mundane customer queries? Why not automate using a custom-built chatbot? Customers often ask the following questions as part of their frequently asked questions.&nbsp;&nbsp;&nbsp;</SPAN></P><UL><LI>How do I create a new customer account?</LI><LI>What are the steps to reset my account password?</LI><LI>Can I view my order history and status updates in real-time?</LI><LI>How do I track the shipment of my recent purchase?</LI><LI>What payment methods are available for online purchases?</LI><LI>Is there an option for express shipping, and what are the additional costs?</LI><LI>How can I modify or cancel my order after placing it?</LI><LI>What is your return policy for online purchases?</LI><LI>How do I report an issue with a product I received?</LI><LI>Can I schedule a product demo or consultation before purchase?</LI><LI>Are there any current promotions or discounts I can take advantage of?</LI><LI>How do I redeem my loyalty points or apply a coupon code?</LI><LI>What warranty coverage comes with my product purchase?</LI><LI>Where can I find user manuals or installation guides for my products?</LI><LI>How do I sign up for your newsletter or promotional updates?</LI><LI>Can I get assistance in selecting the right product for my needs?</LI><LI>What are the steps to submit feedback or a service review?</LI><LI>How do I contact customer support for a personalized service request?</LI><LI>Where can I find information on your sustainability and ethical sourcing practices?</LI><LI>How can I update my billing and shipping information on file?</LI></UL><H2 id="toc-hId-795116323">How custom made SAP Chatbots can help ?&nbsp;</H2><PRE>Chatbots in SAP can enhance collaboration, process efficiency and productivity</PRE><H3 id="toc-hId-727685537">Introduction</H3><P>In my previous blogs, we laid the groundwork by discussing the transformative role of chatbots in standardizing operations and empowering vendors within the SAP ecosystem. This time, Lets shift our focus towards the end-users who are the heart of any business—the customers. Chatbots are not just operational tools; they are vital in forging stronger relationships with customers by providing personalized, responsive, and engaging experiences. In my third blog, we delve into how SAP chatbots are redefining customer engagement and driving satisfaction to new heights.</P><H3 id="toc-hId-531172032">Scenario 1: Real-Time Order Management</H3><P>A customer places an order and wants immediate confirmation and updates on the order status. The chatbot provides a real-time update, including order confirmation, order creation, estimated delivery time, and dispatch details. If the customer needs to make changes, the chatbot can guide them through the modification or cancellation process.</P><H3 id="toc-hId-334658527">Scenario 2: Personalized Product Recommendations</H3><P>A customer is browsing for products but isn't quite sure which item best fits their needs. The chatbot asks a series of questions to understand the customer's preferences and requirements and then provides personalized product recommendations based on their responses, enhancing the shopping experience. The chatbot, being deployed on shell bar of Fiori launchpad, can suggest products by tracking movements of customer from any product or sales related fiori app.&nbsp;</P><H3 id="toc-hId-138145022">Scenario 3: Seamless Post-Purchase Support</H3><P>After receiving a product, a customer has questions regarding installation or encounters an issue. The chatbot offers step-by-step guidance, troubleshooting tips, or can schedule a service appointment. It can also assist with return processes and provide information on warranty claims.</P><H3 id="toc-hId--58368483">Scenario 4: Loyalty Program Engagement</H3><P>A customer wants to know how many loyalty points they have and how they can redeem them. The chatbot checks their loyalty points balance, informs them of possible redemption options, and guides them through the process of redeeming their points for discounts or special offers.</P><H3 id="toc-hId--254881988">Scenario 5: Feedback Collection and Issue Escalation</H3><P>Post-interaction or purchase, a customer wishes to provide feedback. The chatbot can collect this feedback, thank the customer for their input, and if necessary, escalate any issues to the appropriate human agent for further resolution, ensuring customer concerns are addressed promptly.</P><H2 id="toc-hId--580478212">Solution</H2><P>A custom chatbot, integrated with CRM or any other customer portal, can answer all the repetitive queries.</P><P>Custom Chatbots are Not only restricted to QnA but also are able to make changes to business objects and perform complex task. Chatbots are capable of understanding customer queries, intention of query, context, entities such as Sales Order Number, Material. Additionally, it can understand keywords such as "my", "latest", and so on. Below are few example of prompts customer can enter and have personalized chat experience with chatbot.&nbsp;</P><UL><LI>Track my latest order #490000002</LI><LI>what is the delivery status for my sales order?</LI><LI>check availability of 1000 Laptops in next quarter</LI><LI>tell me my Account receivables</LI><LI>what is my account balance?</LI><LI>Place an order for fiber optics ( place order )</LI><LI>provide me quotation for raw material - xyz quantity. - ( simulate Order )&nbsp;</LI><LI>Show my order history</LI></UL><H3 id="toc-hId--647908998">Conclusion</H3><P>As we continue to explore the potential of chatbots in the SAP landscape, it's clear that their benefits extend well beyond operational efficiencies. For customers, SAP chatbots represent a new era of engagement, marked by personalization, convenience, and seamless service. By embracing these intelligent conversational agents, businesses can create a customer experience that not only meets but exceeds expectations, fostering lasting relationships and driving brand loyalty.</P><P>Stay tuned for next blog, where we'll explore the technical intricacies of SAP chatbot integration and the future of AI in SAP.</P> 2024-04-09T08:31:48.902000+02:00 https://community.sap.com/t5/technology-blogs-by-members/consuming-capm-application-s-odata-service-into-sap-fiori-application-in/ba-p/13667392 Consuming CAPM Application's OData service into SAP Fiori Application in Business Application Studio 2024-04-16T12:50:31.978000+02:00 Chetan_Bhatt https://community.sap.com/t5/user/viewprofilepage/user-id/1429690 <P style=" text-align : justify; "><STRONG>OBJECTIVE-:</STRONG></P><P style=" text-align : justify; ">Consuming OData Service of CAPM Application into SAP Fiori Application in Business Application Studio.</P><P style=" text-align : justify; "><STRONG>CAPM (Cloud Application Programming Model)-:</STRONG></P><P style=" text-align : justify; ">It is an open-source framework that uses tools, libraries, and languages to create applications that can be used across multiple SAP products. CAPM is a multi-target application that runs at different times, with the persistence layer running in the HANA DB run time, the server layer running in the Node.js run time, and the UI/UX layer running in the browser run time.</P><P style=" text-align : justify; ">CAPM is one of the approaches to developing cloud applications using the BTP platform. CAPM offers a more structured and seamless framework for data modelling and enhancing integration with services.</P><P style=" text-align : justify; "><STRONG>Advantage of CAPM over other approaches-:</STRONG></P><UL style=" text-align : justify; "><LI>It enables full-stack development in the same environment. (BAS), eliminating the need to switch between different environments for the backend and frontend development.</LI><LI>It offers flexibility in language selection, allowing developers to work with multiple languages according to their needs. BAS provides easy connectivity to required extensions for this purpose.</LI><LI>Seamless integration with git and other applications via APIs facilitating extension or development of the application.</LI><LI>Automatically handling dependencies to a certain extent, reducing frustration, and improving development speed. For example, handling the OData after exposing all entities and making it easier to consume in the UI.</LI></UL><P style=" text-align : justify; "><STRONG>Prerequisites-:</STRONG></P><UL style=" text-align : justify; "><LI>Create a CAPM project.</LI><LI>Log in to Cloud Foundry Credentials.</LI><LI>Ensure the HANA Database is created and running (I Used it for storage and data creation).</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_0-1712859475702.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95284iF96BE8EFB182149E/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_0-1712859475702.png" alt="Chetan_Bhatt_0-1712859475702.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_1-1712859475728.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95285iC96312CDDC8F56E6/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_1-1712859475728.png" alt="Chetan_Bhatt_1-1712859475728.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Set up a Dev Space.</LI><LI>Create a SAP Build Work Zone instance to act as a Fiori Launchpad for the CAPM Application</LI></UL><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; "><STRONG>You Have to create a new Destination in BTP (Connectivity -&gt; Destination)-:</STRONG></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_2-1712859475732.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95283i2F37A3A4212C375A/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_2-1712859475732.png" alt="Chetan_Bhatt_2-1712859475732.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">This destination will be used for passing system information when creating a Fiori Application.</P><P style=" text-align : justify; ">For the URL, DEPLOY YOUR APPLICATION IN CLOUD FOUNDRY (Cloud Foundry -&gt;Spaces -&gt;Dev (Space Name)-&gt;Your Service (here it is CAPMChetan-srv) and copy Application Routes).</P><P style=" text-align : justify; ">This URL will be shown only when you deploy your CAPM Application in Cloud Foundry-&gt; A new blog will be there to deploy the CAPM Application.</P><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_3-1712859475740.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95288i831E1DE5FA2B9750/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_3-1712859475740.png" alt="Chetan_Bhatt_3-1712859475740.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">For Authorization, use the same authorization as created in the package.json -&gt; a new blog will create a security configuration.</P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">Now that the destination for the service is configured, proceed to create a FIORI APP: -</P><UL style=" text-align : justify; "><LI>Open SAP BAS (Business Application Studio).</LI><LI>Open DEV Space where you want to create a Fiori Application.</LI><LI>Go to File -&gt; New Project From template.</LI><LI>Choose a project from the Template (SAP Fiori Application).</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_4-1712859475749.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95287i3F3554B2250D61A3/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_4-1712859475749.png" alt="Chetan_Bhatt_4-1712859475749.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Choose any Template of your choice.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_5-1712859475756.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95286iD67EBDD9E6AB118C/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_5-1712859475756.png" alt="Chetan_Bhatt_5-1712859475756.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>In Data Source choose to connect to a system.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_6-1712859475760.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95290iDCCA5D3A65D7000B/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_6-1712859475760.png" alt="Chetan_Bhatt_6-1712859475760.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_7-1712859475765.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95289i29335856F2EFABAA/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_7-1712859475765.png" alt="Chetan_Bhatt_7-1712859475765.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Specify the Destination created earlier.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_8-1712859475769.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95291i0B4CF5E35759FC40/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_8-1712859475769.png" alt="Chetan_Bhatt_8-1712859475769.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>In the service path, specify the service path of the OData service that can be obtained by running the command “cds watch –profile hybrid” in your CAPM Project.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_9-1712859475773.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95292i7F0BC76D1160938D/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_9-1712859475773.png" alt="Chetan_Bhatt_9-1712859475773.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Click on next.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_10-1712859475781.jpeg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95293i7930C75401EC6C12/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_10-1712859475781.jpeg" alt="Chetan_Bhatt_10-1712859475781.jpeg" /></span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Select any entity from the given list of entities &nbsp;you created in your project.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_11-1712859475788.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95294i28FD073ED8BABEB0/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_11-1712859475788.png" alt="Chetan_Bhatt_11-1712859475788.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Customize the project attributes.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_12-1712859475796.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95295i56DC0BF8208D9582/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_12-1712859475796.png" alt="Chetan_Bhatt_12-1712859475796.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Choose the target as Cloud Foundry and select the Destination name among the list of destination names (You can go with either Local CAPM Project API and the name of your destination too).</LI></UL><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_13-1712859475804.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95297i448D5B4C126A031A/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_13-1712859475804.png" alt="Chetan_Bhatt_13-1712859475804.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Now, your FIORI project is created and is ready to use.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_14-1712859475814.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95296i4C2BAADDC20B1DDD/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_14-1712859475814.png" alt="Chetan_Bhatt_14-1712859475814.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>Go to run configuration and start the project as usual.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_15-1712859475821.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95298i8507FAEBE3A69EB2/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_15-1712859475821.png" alt="Chetan_Bhatt_15-1712859475821.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><UL style=" text-align : justify; "><LI>You can now run this Fiori Application which is the result of an Application created from CAPM.</LI></UL><P style=" text-align : justify; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Chetan_Bhatt_16-1712859475830.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95299iEBFF2F273E03EB7A/image-size/medium?v=v2&amp;px=400" role="button" title="Chetan_Bhatt_16-1712859475830.png" alt="Chetan_Bhatt_16-1712859475830.png" /></span></P><P style=" text-align : justify; ">&nbsp;</P><P style=" text-align : justify; ">&nbsp;</P> 2024-04-16T12:50:31.978000+02:00 https://community.sap.com/t5/application-development-blog-posts/create-full-stack-app-use-entity-drafts-use-joule-to-create-action-code/ba-p/13676527 Create full-stack app, use entity drafts, use Joule to create action code. 2024-04-24T10:50:40.906000+02:00 lukcad https://community.sap.com/t5/user/viewprofilepage/user-id/888780 <P><STRONG>Goals:</STRONG></P><P><STRONG>1--</STRONG>&nbsp;create one Full-Stack application for management orders based on model from Northwind service&nbsp;<A href="http://services.odata.org/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>http://services.odata.org</SPAN></A></P><P><STRONG>2--</STRONG><SPAN>&nbsp;</SPAN><SPAN>enhance application to meet the business requirements</SPAN><SPAN> manually to avoid impact of Low Code generator for custom code.</SPAN></P><P><STRONG>3--</STRONG> enhance application by new logic using Joule with Low code generator</P><P><STRONG>4--</STRONG> test code that no regression in code by using Low code generator and Joule.</P><P><STRONG>Minimal </STRONG><STRONG>Business requirements:</STRONG></P><P><SPAN>1-- Main list of </SPAN><SPAN>orders </SPAN><SPAN>should have at least</SPAN><SPAN> these columns: Order ID, Order Created, City, Country, Status</SPAN></P><TABLE><TBODY><TR><TD><P>Order ID</P></TD><TD><P>&nbsp;value of Order ID</P></TD></TR><TR><TD><P>Order Created</P></TD><TD><P>&nbsp;value of the Creation Date</P></TD></TR><TR><TD><P>Ship City</P></TD><TD><P>&nbsp;value of shipment City</P></TD></TR><TR><TD><P>Ship Country</P></TD><TD><P>&nbsp;value of Shipment Country</P></TD></TR><TR><TD><P>Ship Status</P></TD><TD><P>&nbsp;Calculated: criticality + value ( shipped or not)</P></TD></TR></TBODY></TABLE><P><SPAN>2</SPAN><SPAN>-- Each record can be editable on</SPAN><SPAN> Details page and have two sections</SPAN><SPAN> `</SPAN><SPAN>Order Header</SPAN><SPAN>`</SPAN><SPAN> which contains general information about order</SPAN> <SPAN>and `Order Items` which is list of item positions in orders.</SPAN></P><P>3-- Each position `Order items` has columns:</P><TABLE><TBODY><TR><TD><P>Product</P></TD><TD><P>Editable (chosen from list)</P></TD></TR><TR><TD><P>Quantity</P></TD><TD><P>Editable value of quantity</P></TD></TR><TR><TD><P>Unit price</P></TD><TD><P>Read only:&nbsp; should be taken from Unit Price of Product</P></TD></TR><TR><TD><P>Discount</P></TD><TD><P>Editable value of discount</P></TD></TR><TR><TD><P>Cost</P></TD><TD><P>Calculated field: (Quantity * Unit Price - Discount)</P></TD></TR><TR><TD><P>Status Product</P></TD><TD><P>Calculated: criticality + value (Active or Discontinued)</P></TD></TR></TBODY></TABLE><P>4-- For additional enhancement you can add action `Loyalty`</P><UL><LI>in this version action will return the information pop-up with total cost per current order.</LI></UL><P><STRONG>Prerequisites:</STRONG></P><P>As a developer to go through steps of this article:</P><UL><LI>you have an account in SAP BTP.</LI><LI>you know SAP BTP and know how to create dev Full-Stack environment.</LI><LI>you have GitHub where you can save your project</LI><LI>you added application SAP Build Code to your subaccount</LI><LI>you know how to develop CAP and UI by Fiori elements</LI><LI>you understand CDS and know about any consequences if model in CDS should be changed.</LI><LI>you have heard about `Joule`.</LI></UL><P><STRONG>Creating project for </STRONG><STRONG>orders</STRONG></P><P>In this document, you will create project according to our goals and the business requirements, steps will be like these:</P><UL><LI>Prepare project</LI><UL><LI>creating project</LI></UL><LI>Generate components of project</LI><UL><LI>generate data model and data by Joule</LI><LI>generate FIORI UI</LI></UL><LI>Implement business requirements</LI><UL><LI>enhance data model</LI><LI>create persistence model for development</LI><LI>modify FIORI pages</LI><LI>modify srv/service.js</LI></UL><UL><LI>create srv/code/orderdetails_draft_create_logic.js</LI><LI>create srv/code/orderdetails_draft_update_logic.js</LI></UL><UL><LI>manual testing business requirements</LI></UL><LI>Add additional functionality(action)</LI><UL><LI>add action</LI><LI>commit to GitHub version 1.0.0</LI><LI>generate data logic of action by Joule</LI><LI>testing action</LI><LI>commit to GitHub version 1.0.1</LI></UL></UL><P><STRONG>Preparation of project</STRONG></P><P>Go to SAP BTP and open tool `SAP Build Code` which you previously adjusted by Booster or by documentation.</P><P>Go to `Lobby` of your applications and create new application with name `zorders` (you can use your name).</P><P>Use this road map to create project:</P><P>Create -&gt; Build Application -&gt; SAP Build Code -&gt; Full-Stack Application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_0-1713550070760.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99029iE74724AF19977D2A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_0-1713550070760.png" alt="lukcad_0-1713550070760.png" /></span></P><P>Once project is prepared in your Lobby, open it by hitting Name from list of projects:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_1-1713550070761.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99027iB14B55CB4FE6310F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_1-1713550070761.png" alt="lukcad_1-1713550070761.png" /></span></P><P>You will have opened SAP build tool with generated application which you will develop:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_2-1713550070761.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99028iF1562086A919AF33/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_2-1713550070761.png" alt="lukcad_2-1713550070761.png" /></span></P><P>Before go with `Joule` I recommend use GitHub to save your versions (if something wrongly generated and you did accept it you will be able to restore everything to save time):</P><P><SPAN>we add our project to GitHub by creating repository, in this example it is `</SPAN><SPAN>zorders</SPAN><SPAN>`</SPAN></P><P>Preparation is done.</P><P><STRONG>Generate components of project</STRONG></P><P><STRONG>Generate </STRONG><STRONG>model</STRONG><STRONG> and data by Joule</STRONG></P><P><SPAN>For generating model u</SPAN><SPAN>se this road map:</SPAN></P><P>Go to Joule -&gt;Open Guide-&gt;Data Model and Service Creation</P><TABLE><TBODY><TR><TD><P><SPAN>Past</SPAN><SPAN>e</SPAN><SPAN> for Joule:</SPAN></P></TD><TD><P><SPAN>create model from Northwind service which is placed on</SPAN><SPAN>&nbsp;</SPAN><A href="http://services.odata.org/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>http://services.odata.org</SPAN></A></P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_3-1713550070762.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99031i9E2E982B5DADD366/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_3-1713550070762.png" alt="lukcad_3-1713550070762.png" /></span></P><P>Once Joule is finished, you have to accept changes and you can verify your model by CDS Graphical Modeler:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_4-1713550070763.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99030iD0713AFD16BC4E68/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_4-1713550070763.png" alt="lukcad_4-1713550070763.png" /></span></P><P>For generating data use this road map:</P><P>Joule-&gt;Open Guide-&gt;Sample Data-&gt;Generate Sample Data</P><TABLE><TBODY><TR><TD><P>Tell to Joule:</P></TD><TD><P>Generate sample data for model.</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_5-1713550070764.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99032i3AE143B1339668AA/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_5-1713550070764.png" alt="lukcad_5-1713550070764.png" /></span></P><P>once sample data are generated by Joule, and you accept it, you will find all of those into Sample Data editor (you can open it later on by command palette: <STRONG>PT&nbsp; Open Sample Data Editor</STRONG>)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_6-1713550070765.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99035iC114E891B74547C6/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_6-1713550070765.png" alt="lukcad_6-1713550070765.png" /></span></P><P>make one record manually with empty value for `ShippedDate` in `Orders` entity.</P><P>open terminal and run `<STRONG>cds w</STRONG>`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_7-1713550070766.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99034i96AF3D3DF7C1FA7A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_7-1713550070766.png" alt="lukcad_7-1713550070766.png" /></span></P><P>Open proposed link, usually it is&nbsp;<A href="http://localhost:4004/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>http://localhost:4004</SPAN></A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_8-1713550070767.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99033i57CD5D8C6D219184/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_8-1713550070767.png" alt="lukcad_8-1713550070767.png" /></span></P><P>Check that there are data, try open any service, for example Orders:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_9-1713550070767.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99038i4EB7D4B41E396DC8/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_9-1713550070767.png" alt="lukcad_9-1713550070767.png" /></span></P><P><SPAN>Model </SPAN><SPAN>and data are </SPAN><SPAN>prepared by Joule and verified by you.</SPAN><SPAN> You can go to the next step to generate UI by `Fiori elements`.</SPAN></P><P><STRONG>Genera</STRONG><STRONG>te Fiori </STRONG><STRONG>UI</STRONG></P><P>On this step you generate UI.</P><P>Use this road map:</P><P><SPAN>Open Palette-&gt;FIORI: </SPAN><SPAN>Open Application Generator</SPAN></P><P>Choose `Worklist Page`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_10-1713550070768.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99036i7FC5A28E3DED242F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_10-1713550070768.png" alt="lukcad_10-1713550070768.png" /></span></P><P><SPAN>choose template&nbsp; </SPAN><SPAN>List Report </SPAN><SPAN>Page -&gt; Use local CAP project</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_11-1713550070769.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99037i9A37B3BBAD340576/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_11-1713550070769.png" alt="lukcad_11-1713550070769.png" /></span></P><P>Press Next</P><P><SPAN>Choose main entity </SPAN><SPAN>`Orders` and Navigation entity `orderDetails`</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_12-1713550070769.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99041i97AB253A9548C730/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_12-1713550070769.png" alt="lukcad_12-1713550070769.png" /></span></P><P>Press next</P><P>Give these parameters:</P><TABLE><TBODY><TR><TD><P>Module name</P></TD><TD><P>orders</P></TD></TR><TR><TD><P>Application title</P></TD><TD><P>Orders</P></TD></TR><TR><TD><P>Description</P></TD><TD><P><SPAN>Orders </SPAN><SPAN>management</SPAN></P></TD></TR><TR><TD><P>Allow FLP configuration</P></TD><TD><P>Yes</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_13-1713550070770.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99040i78AA6E38C19313CA/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_13-1713550070770.png" alt="lukcad_13-1713550070770.png" /></span></P><P>Press next</P><P>Give these parameters for FLP:</P><TABLE><TBODY><TR><TD><P>Semantic Object</P></TD><TD><P>zmlorders</P></TD></TR><TR><TD><P>Action</P></TD><TD><P>Management</P></TD></TR><TR><TD><P>Title</P></TD><TD><P><SPAN>Orders </SPAN><SPAN>Management</SPAN></P></TD></TR></TBODY></TABLE><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_14-1713550070771.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99039i88AD9915FA8D257E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_14-1713550070771.png" alt="lukcad_14-1713550070771.png" /></span></P><P>Press Finish</P><P>Finally you should be able for app/products by opening context menu choose `Show Page Map`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_15-1713550070771.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99044i6ED15F6F1D86CEB7/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_15-1713550070771.png" alt="lukcad_15-1713550070771.png" /></span></P><P>Verify application, by start prepared run configuration or start cds server via terminal.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_16-1713550070772.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99042iB32823254DCA9449/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_16-1713550070772.png" alt="lukcad_16-1713550070772.png" /></span></P><P>This Home will be opened for our application:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_17-1713550070773.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99043i3825037CD351ED2E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_17-1713550070773.png" alt="lukcad_17-1713550070773.png" /></span></P><P><SPAN>Open our Fiori application `</SPAN><SPAN>Orders</SPAN><SPAN>`</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_18-1713550070774.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99047iC0B10FE2A88896C4/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_18-1713550070774.png" alt="lukcad_18-1713550070774.png" /></span></P><P>Open details for order:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_19-1713550070775.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99046i27DF643A0538F19F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_19-1713550070775.png" alt="lukcad_19-1713550070775.png" /></span></P><P>Our application contains all needing components of application to start implementation of business requirements.</P><P><STRONG>Implement business requirements</STRONG></P><P><SPAN>On this phase you have</SPAN><SPAN> to implement </SPAN><SPAN>the </SPAN><SPAN>business requirements:</SPAN></P><P><SPAN>1-- Main list of </SPAN><SPAN>orders </SPAN><SPAN>should have at least</SPAN><SPAN> these columns: Order ID, Order Created, City, Country, Status</SPAN></P><TABLE><TBODY><TR><TD><P>Order ID</P></TD><TD><P>&nbsp;value of Order ID</P></TD></TR><TR><TD><P>Order Created</P></TD><TD><P>&nbsp;value of the Creation Date</P></TD></TR><TR><TD><P>Ship City</P></TD><TD><P>&nbsp;value of shipment City</P></TD></TR><TR><TD><P>Ship Country</P></TD><TD><P>&nbsp;value of Shipment Country</P></TD></TR><TR><TD><P>Ship Status</P></TD><TD><P>&nbsp;Calculated: criticality + value ( shipped or not)</P></TD></TR></TBODY></TABLE><P><SPAN>2</SPAN><SPAN>-- Each record can be editable on</SPAN><SPAN> Details page and have two sections</SPAN><SPAN> `</SPAN><SPAN>Order Header</SPAN><SPAN>`</SPAN><SPAN> which contains general intormation about order</SPAN> <SPAN>and `Order Items` which is list of item positions in orders.</SPAN></P><P>3-- Each position `Order items` has columns:</P><TABLE><TBODY><TR><TD><P>Product</P></TD><TD><P>Editable (chosen from list)</P></TD></TR><TR><TD><P>Quantity</P></TD><TD><P>Editable value of quantity</P></TD></TR><TR><TD><P>Unit price</P></TD><TD><P>Read only:&nbsp; should be taken from Unit Price of Product</P></TD></TR><TR><TD><P>Discount</P></TD><TD><P>Editable value of discount</P></TD></TR><TR><TD><P>Cost</P></TD><TD><P>Calculated field: (Quantity * Unit Price - Discount)</P></TD></TR><TR><TD><P>Status Product</P></TD><TD><P>Calculated: criticality + value (Active or Discontinued)</P></TD></TR></TBODY></TABLE><P>4-- For additional enhancement you can add action `Loyalty`</P><UL><LI>in this version action will return the information pop-up with total cost per current order.</LI></UL><P><STRONG>enhance data model </STRONG></P><P>On level data model we need to apply so named materialized calculated fields. fields that we add as extension to our data model and those will be recalculated and saved in database each time when values in record were changed. This is most effective way to keep calculated fields in database.</P><P>We need according to business requirements 3 calculated fields:</P><P>Into `db/schema.cds` file we add these 3 calculated fields using extend of the correspondent database:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> /** * * Products has crtiticality positive if it is not discontinued */ extend Products with { criticality : Integer = (case when Discontinued = False then 3 else 2 end ) stored; ProductStatus : String(15) = (case when Discontinued = False then 'Active' else 'Discontinued' end ) stored; } /** * * Orders has crtiticality positive if it is shipped */ extend Orders with { criticality : Integer = (case when ShippedDate is not null then 3 else 2 end ) stored; ShipStatus : String(15) = (case when ShippedDate is not null then 'Shipped' else 'Not' end ) stored; } /** * Cost per each element is needing to easily calculate total price */ extend OrderDetails with { cost : Decimal(10,4) = ( UnitPrice * Quantity - Discount ) stored; }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_20-1713550070775.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99045iC6E89C9F281BF385/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_20-1713550070775.png" alt="lukcad_20-1713550070775.png" /></span></P><P>&nbsp;</P><P>You can open SQL Preview of schema.cds file and check how it looks like on DB level:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_21-1713550070777.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99049i8433A5E8FA6197D0/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_21-1713550070777.png" alt="lukcad_21-1713550070777.png" /></span></P><P>Preview CDS on service layer after added fields:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_22-1713550070778.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99051i495559DE071BC549/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_22-1713550070778.png" alt="lukcad_22-1713550070778.png" /></span></P><P><STRONG>create persistence model for development</STRONG></P><P>Use persistence data base instead of `in-memory` for this example.</P><P>You should add this JSON fragment into `package.json` of project to cluster of settings under `cds/requires`:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-json"><code> , "[development]": { "db": { "kind": "sqlite", "credentials": { "url": "zorders.sqlite" } } }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_23-1713550070779.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99048i59BA87C3548AF99E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_23-1713550070779.png" alt="lukcad_23-1713550070779.png" /></span></P><P>And run this command in terminal to create your persistence in the SQLite based database.</P><P style=" text-align : left; padding-left : 30px; "><STRONG>cds deploy</STRONG></P><P>You will find that database for persistence is appeared in your project.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_24-1713550070780.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99054i9EB12AF17419DBB3/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_24-1713550070780.png" alt="lukcad_24-1713550070780.png" /></span></P><P>&nbsp;</P><P><STRONG>modify FIORI pages</STRONG></P><P>Execute `Show Page Map` by using context menu for folder `app/orders`</P><P>Delete third Page, we need only two pages:</P><UL><LI>List Report</LI><LI>Object Page</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_25-1713550070780.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99053iAEF5B3007C17F817/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_25-1713550070780.png" alt="lukcad_25-1713550070780.png" /></span></P><P>Open page `List Report` in Edit mode and for Columns of Table add these fields and remove not necessary.</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Field:</P></TD><TD><P>Label:</P></TD></TR><TR><TD><P>OrderID</P></TD><TD><P>Order ID</P></TD></TR><TR><TD><P>OrderDate</P></TD><TD><P>Order Created</P></TD></TR><TR><TD><P>ShipCIty</P></TD><TD><P>Ship City</P></TD></TR><TR><TD><P>ShipCountry</P></TD><TD><P>Ship Country</P></TD></TR><TR><TD><P>ShipName</P></TD><TD><P>Ship Name</P></TD></TR><TR><TD><P>ShipStatus</P></TD><TD><P>Ship Status</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_26-1713550070781.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99052iBB2DA9C6653BF378/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_26-1713550070781.png" alt="lukcad_26-1713550070781.png" /></span></P><P>For `Ship Status` set Criticality to `criticality` field.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_27-1713550070782.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99056iF27AEB723A009EF9/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_27-1713550070782.png" alt="lukcad_27-1713550070782.png" /></span></P><P>Return to `Page Map` and start Edit `Object Page`</P><P>Rename Section `General Information` to `Order Header`</P><P>Add section `Order Items` by using `Add Table Section` with parameters:</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>&nbsp;Label</P></TD><TD><P>Order Items</P></TD></TR><TR><TD><P>Value Source</P></TD><TD><P>orderDetails</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_28-1713550070782.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99055i4AC7753790AC329F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_28-1713550070782.png" alt="lukcad_28-1713550070782.png" /></span></P><P>You should have 2 sections added:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_29-1713550070783.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99057iD5456F1DBC06DF0E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_29-1713550070783.png" alt="lukcad_29-1713550070783.png" /></span></P><P>Open Section `Order Header` and change fields in Fields of Form :</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Field:</P></TD><TD><P>Label:</P></TD></TR><TR><TD><P>OrderId</P></TD><TD><P>Order ID</P></TD></TR><TR><TD><P>OrderDate</P></TD><TD><P>Order Created</P></TD></TR><TR><TD><P>RequiredDate</P></TD><TD><P>Order Required</P></TD></TR><TR><TD><P>ShippedDate</P></TD><TD><P>Order Shipped</P></TD></TR><TR><TD><P>ShipVia</P></TD><TD><P>Ship Via</P></TD></TR><TR><TD><P>Freight</P></TD><TD><P>Freight</P></TD></TR><TR><TD><P>ShipName</P></TD><TD><P>Ship Name</P></TD></TR><TR><TD><P>ShipAddress</P></TD><TD><P>Ship Address</P></TD></TR><TR><TD><P>ShipCity</P></TD><TD><P>Ship City</P></TD></TR><TR><TD><P>ShipRegion</P></TD><TD><P>Ship Region</P></TD></TR><TR><TD><P>ShipPostalCode</P></TD><TD><P>Ship Postal Code</P></TD></TR><TR><TD><P>ShipCountry</P></TD><TD><P>Ship Country</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_30-1713550070783.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99058i10CA186C7CDB483A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_30-1713550070783.png" alt="lukcad_30-1713550070783.png" /></span></P><P>Open Section `Order Items` and add fields in columns of Table:</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Field:</P></TD><TD><P>Label:</P></TD><TD><P>Text</P></TD><TD><P>Restriction</P></TD><TD><P>Text Arragement</P></TD><TD><P>criticality</P></TD></TR><TR><TD><P>product_ID</P></TD><TD><P>Product</P></TD><TD><P>product/ProductName</P></TD><TD><P>&nbsp;</P></TD><TD><P>Text Only</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>Quantity</P></TD><TD><P>Quantity</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>UnitPrice</P></TD><TD><P>Unit Price</P></TD><TD><P>&nbsp;</P></TD><TD><P>Read only</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>Discount</P></TD><TD><P>Discount</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>cost</P></TD><TD><P>Cost</P></TD><TD><P>&nbsp;</P></TD><TD><P>Read Only</P></TD><TD><P>&nbsp;</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><P>ProductStatus</P></TD><TD><P>Product Status</P></TD><TD><P>&nbsp;</P></TD><TD><P>Read Only</P></TD><TD><P>&nbsp;</P></TD><TD><P>product/criticality</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_31-1713550070784.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99059iEEC9D58827DA0D0E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_31-1713550070784.png" alt="lukcad_31-1713550070784.png" /></span></P><P>For field Product you should make more adjustments to let user choose Product by name from value help name with two additional fields `Unit Price` and `Discontinued`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_32-1713550070785.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99060iB8E5A3FF91AB6CCC/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_32-1713550070785.png" alt="lukcad_32-1713550070785.png" /></span></P><P>If you now start use this application and go to for modification of product in position of order (section&nbsp; `Order Items` ), you will have inconsistency for `Unit Price` after saving, even you will be able to see correct price by dropdown list `out` determination.</P><P>As example of wrong behavior of currently achieved UI:</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Before your change:</P></TD><TD><P>What is wrong?</P></TD></TR><TR><TD><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_33-1713550070785.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99062iA6AB2FC4BC38ADF5/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_33-1713550070785.png" alt="lukcad_33-1713550070785.png" /></span></TD><TD>&nbsp;</TD></TR><TR><TD><P>After your change of product:</P></TD><TD><P>&nbsp;</P></TD></TR><TR><TD><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_34-1713550070786.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99061i0D2A910FB8CA6A06/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_34-1713550070786.png" alt="lukcad_34-1713550070786.png" /></span><P>&nbsp;</P><P>&nbsp;</P></TD><TD><P>Unit price has not changed together with product during editing `Order Items`, so Cost is wrong as well</P></TD></TR></TBODY></TABLE><P>&nbsp;</P><P>It will be not acceptable by customer.</P><P>So what you can do with it, we have to extend manually code in srv/service.js and create in folder `srv/code` files with manual methods of our code, you can't use here Joule in this piece of programming currently, because we create code witch suppose to interact with drafts records of table `OrderDetails`.</P><P>This is what you can do:</P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>-- modify</P><P><STRONG>srv/service.js</STRONG></P></TD><TD><P>you add new two event handlers here to feel modification of&nbsp; `<STRONG>OrderDerails.drafts</STRONG>` (notice name of entity with draft information against service looks like adding suffix `.drafts`)</P></TD></TR><TR><TD><P>-- add</P><P><STRONG>srv/code/orderdetails_draft_create_logic.js</STRONG></P></TD><TD><P>your custom code for creating draft record, here your code does simple set up of filed `Discount` if it is null.</P></TD></TR><TR><TD><P>-- add</P><P><STRONG>srv/code/orderdetails_draft_update_logic.js</STRONG></P></TD><TD><P>your custom code for updating draft record, here your code does modification of `UnitPrice` according to chosen `Product`</P></TD></TR></TBODY></TABLE><P><STRONG>modify srv/service.js</STRONG></P><P>Put this code into your file:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> /** * Code is auto-generated by Application Logic, DO NOT EDIT. * @version(2.0) */ const LCAPApplicationService = require('@sap/low-code-event-handler'); const orders_Loyalty_Logic = require('./code/orders-loyalty-logic'); const orderdetails_draft_update_Logic = require('./code/orderdetails_draft_update_logic'); const orderdetails_draft_create_Logic = require('./code/orderdetails_draft_create_logic.js'); class NorthwindSrv extends LCAPApplicationService { async init() { this.on('Action1', 'Orders', async (request, next) =&gt; { await orders_Loyalty_Logic(request); return next(); }); this.before(['UPDATE'], 'OrderDetails.drafts', async (request) =&gt; { await orderdetails_draft_update_Logic(request); }); this.before(['CREATE'], 'OrderDetails.drafts', async (request) =&gt; { await orderdetails_draft_create_Logic(request); }); return super.init(); } } module.exports = { NorthwindSrv };</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_35-1713550070786.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99063i0B78E5FE3C3113A5/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_35-1713550070786.png" alt="lukcad_35-1713550070786.png" /></span></P><P><STRONG>create srv/code/orderdetails_draft_create_logic.js</STRONG></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> /** * This initiate default value of Discount to avoid null for new records * @Before(event = { "CREATE" }, entity = "NorthwindSrv.OrderDetails.drafts") * {Object} req - User information, tenant-specific CDS model, headers and query parameters */ module.exports = async function (req) { // Your code here if (!req.data.Discount) { req.data.Discount = 0 } }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_36-1713550070787.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99065i981D993B31D00B08/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_36-1713550070787.png" alt="lukcad_36-1713550070787.png" /></span></P><P><STRONG>create srv/code/orderdetails_draft_update_logic.js</STRONG></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code> /** * This changes UnitPrice in draft record to expose it when record is applied * @Before(event = { "UPDATE" }, entity = "NorthwindSrv.OrderDetails.drafts") * {Object} req - User information, tenant-specific CDS model, headers and query parameters */ module.exports = async function(req) { // Your code here if (req) { if (req.data) { if (req.data.product_ID) { const northSrv = await cds.connect.to("NorthwindSrv"); let prod_id = req.data.product_ID let sqlprod = SELECT.from`Products`.where` ID=${prod_id}` let productstm = await northSrv.get(sqlprod) req.data.UnitPrice = productstm[0].UnitPrice } } } }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_37-1713550070787.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99064i0933D9B1C7F53EBD/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_37-1713550070787.png" alt="lukcad_37-1713550070787.png" /></span></P><P><STRONG>manual testing</STRONG><STRONG> business requirements</STRONG></P><P>Now you can go and test application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_38-1713550070788.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99067i1A74735D58AA311A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_38-1713550070788.png" alt="lukcad_38-1713550070788.png" /></span></P><P>You can see that all fields in list and Ship Status should Shipped with criticality level 3 (green)</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_39-1713550070789.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99070iE91E7C983342E459/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_39-1713550070789.png" alt="lukcad_39-1713550070789.png" /></span></P><P>You add new order without pointing shipment date:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_40-1713550070790.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99068i68F5FB02ABAD0310/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_40-1713550070790.png" alt="lukcad_40-1713550070790.png" /></span></P><P>&nbsp;</P><P>As a result of adding new record which is not not shipped (date of shipment was not entered) you can see that orders has `Ship status` with value Not and criticality 2 (orange).</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_41-1713550070790.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99069i8837C8647DC19E3A/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_41-1713550070790.png" alt="lukcad_41-1713550070790.png" /></span></P><P>&nbsp;</P><P>You can add new order Item in Edit mode by pressing `Create` for section `Order Items` and you see that `Discount` has value by default 0:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_42-1713550070791.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99073iCEF0A25FFC975569/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_42-1713550070791.png" alt="lukcad_42-1713550070791.png" /></span></P><P>You can change product `Chai` to `Chef Anton's Cajun Seasoning` which has different unit price:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_43-1713550070791.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99074iAC43EC44F83926B4/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_43-1713550070791.png" alt="lukcad_43-1713550070791.png" /></span></P><P>After saving your change of product you can find that `Order Items` has modified product with proper Unit Price:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_44-1713550070792.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99072iD4597CD5022E88EC/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_44-1713550070792.png" alt="lukcad_44-1713550070792.png" /></span></P><P><STRONG>Add additional functionality(action).</STRONG></P><P>We will add action which will be used in future to let manager of orders press action `Loyalty` to understand total cost of order and add any another information (this will be added by another document, so here just for understanding approach will be added in information message after pressing action just simple total cost of order which will be dynamically calculated by code which Joule will be able to generate).</P><P><STRONG>add action</STRONG></P><P>Open `srv/service.cds` by `CDS Graphical Modeler` and for `Orders` entity choose `Add Action `</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_45-1713550070792.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99075i0FF520B36FF1ED7F/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_45-1713550070792.png" alt="lukcad_45-1713550070792.png" /></span></P><P>Add `Action1` and choose details for action to set up return type to `LargeString`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_46-1713550070793.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99078iFC1591B4CCF15B82/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_46-1713550070793.png" alt="lukcad_46-1713550070793.png" /></span></P><P>If you look at `srv/service.cds` file of your project you will find where and how your action has been added.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_47-1713550070794.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99077i274559CE6DA9F672/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_47-1713550070794.png" alt="lukcad_47-1713550070794.png" /></span></P><P>Open for folder app/orders context menu and choose `Show Page Map` and open `Object page` for edit mode</P><P>and go to sections `Order header` and `Actions` of Form</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_48-1713550070795.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99080i8F85FD7C7F90370E/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_48-1713550070795.png" alt="lukcad_48-1713550070795.png" /></span></P><P>Add action `Northwind.Action1`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_49-1713550070795.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99079iFA8DC6EB6AF7EE75/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_49-1713550070795.png" alt="lukcad_49-1713550070795.png" /></span></P><P>Change Label of action from `Action1` to `Loyalty`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_50-1713550070796.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99081iD6FA3B6A83BA6FD6/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_50-1713550070796.png" alt="lukcad_50-1713550070796.png" /></span></P><P>Go back to Graphical representation of `srv/service.cds` and start applying logic to Action1.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_51-1713550070797.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99083iCFABE1C83A472B55/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_51-1713550070797.png" alt="lukcad_51-1713550070797.png" /></span></P><P>Add application logic with name `orders-loyalty-logic`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_52-1713550070798.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99082i178CBF82702EF398/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_52-1713550070798.png" alt="lukcad_52-1713550070798.png" /></span></P><P>And open code editor for implementation logic</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_53-1713550070798.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99084i38542004F0134885/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_53-1713550070798.png" alt="lukcad_53-1713550070798.png" /></span></P><P>You are in position where you can ask Joule to find for you code to implement your idea.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_54-1713550070799.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99085i44073CC3AB76E390/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_54-1713550070799.png" alt="lukcad_54-1713550070799.png" /></span></P><P><STRONG>commit your project to GitHub with version 1.0.0</STRONG></P><P>&nbsp;</P><P><STRONG>generate data logic of action by Joule</STRONG></P><P>&nbsp;</P><TABLE><TBODY><TR><TD><P>Tell to Joule:</P></TD><TD><P>select all rows from `OrderDetails` that associated to selected `ID` from `Orders`. and then calculate sum of by field `cost` as `totalcost`. show result into `info` pop-up.</P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_55-1713550070800.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99088iFBD71730B41BA685/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_55-1713550070800.png" alt="lukcad_55-1713550070800.png" /></span></P><P>You should just slightly change code which Joule is generated, use order ID from parameter of request instead of selection:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-javascript"><code> /** * * (event = { "Action1" }, entity = "NorthwindSrv.Orders") * {Object} req - User information, tenant-specific CDS model, headers and query parameters */ module.exports = async function(req) { const tx = cds.transaction(req); const orderID = req._params[0].ID; // req.data.ID; const orderDetails = await tx.run( SELECT .from('NorthwindSrv.OrderDetails') .where({ order_ID: orderID }) ); let totalCost = 0; for (const detail of orderDetails) { totalCost += detail.cost; } req.info(`The total cost of order ${orderID} is ${totalCost}`); }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_56-1713550070801.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99086iE98E66AE7F6D68F3/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_56-1713550070801.png" alt="lukcad_56-1713550070801.png" /></span></P><P><STRONG>testing action</STRONG></P><P>run your application</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_57-1713550070802.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99090iE993390A8B708EC8/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_57-1713550070802.png" alt="lukcad_57-1713550070802.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_58-1713550070803.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99089iEA84A908CA4D6746/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_58-1713550070803.png" alt="lukcad_58-1713550070803.png" /></span></P><P>go to details, find in `Order header` link 'Loyalty`</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_59-1713550070803.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99091iCEA88CF698A2A1D0/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_59-1713550070803.png" alt="lukcad_59-1713550070803.png" /></span></P><P>press loyalty, you should have `Information` message about total cost of order.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukcad_60-1713550070804.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/99093iB78CDD353F44DEA6/image-size/large?v=v2&amp;px=999" role="button" title="lukcad_60-1713550070804.png" alt="lukcad_60-1713550070804.png" /></span></P><P><STRONG>commit your project to GitHub with version 1.0.1</STRONG></P><P>Thank you,</P><P>you have ready-to-use simplified application for management orders.</P><P>Main take aways from this example:</P><UL><LI>the DB model can be enhanced by materialized calculation fields.</LI><LI>on level Fiori pages you can provide value help with out determinations to modify related data.</LI><LI>how you can modify related data in draft records.</LI><LI>how to add action and expose result of action to pop-up.</LI><LI>how to use Joule for creating model, samples of data and for generating code.</LI></UL><P>&nbsp;</P><P>Happy programming!</P><P>Yours sincerely,</P><P>Mikhail.</P><P>PS: you can find code on GitHub here:</P><P><A href="https://github.com/lukcad/zorders.git" target="_blank" rel="noopener nofollow noreferrer">https://github.com/lukcad/zorders.git</A></P> 2024-04-24T10:50:40.906000+02:00 https://community.sap.com/t5/technology-blogs-by-members/fiori-po-approver-app-accept-and-reject-button-customization-from-ecc/ba-p/13690701 Fiori PO Approver app Accept and Reject button customization from ECC backend 2024-05-03T12:45:30.531000+02:00 jayesh_mudaliar https://community.sap.com/t5/user/viewprofilepage/user-id/230182 <P><BR />Please go through the <A title="Fiori PO Approver app Forward button customization from ECC backend" href="https://community.sap.com/t5/technology-blogs-by-members/fiori-po-approver-app-forward-button-customization-from-ecc-backend/ba-p/13580901" target="_self">Part 1 Forward Button customization</A> for better understanding.<BR /><BR />Many time there are custom requirements for which it requires the need of creating Enhancement in standard SAP functionality.</P><P><STRONG>Overview</STRONG> : PO Approvers are maintained in Release Strategy. Once the PO is generated it is set to be approved by PO approvers based on the levels maintained in PPOME structure. Only then the PO will be set to 03 status in EKKO.</P><P><STRONG>Pre-requisite</STRONG> : All the roles and authorization must be given to the approvers to access the PO Approval Tile in SAP Fiori.</P><P><STRONG>Requirement :</STRONG>&nbsp; If the approver find the PO is incorrect, he will reject the PO. The rejection of PO must contain the rejection text. Since the Text is an optional there comes up the challenge to make it mandatory.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_0-1714728155246.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105445i32339ED69C7F9204/image-size/medium?v=v2&amp;px=400" role="button" title="jayesh_mudaliar_0-1714728155246.png" alt="jayesh_mudaliar_0-1714728155246.png" /></span></P><P>Solution:&nbsp;</P><P>There are many ways to do this&nbsp;<BR />1. Doing changes in Front-End using <STRONG>BTP/WEB IDE</STRONG>.</P><P>2. Making it mandatory from ECC</P><P>I chose the 2nd method since there was some issue in licensing the BTP and it was not configured correctly.</P><P style=" text-align: center; "><STRONG>Making it mandatory from ECC</STRONG></P><P><BR />My PO tile looks like this&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_1-1714728363065.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105446iF97130EE3239AD3D/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_1-1714728363065.png" alt="jayesh_mudaliar_1-1714728363065.png" /></span></P><P>When the approver click on the Reject button , he must enter the Rejection note. If he doesn't then the PO should not be rejected.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_0-1714728155246.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105445i32339ED69C7F9204/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_0-1714728155246.png" alt="jayesh_mudaliar_0-1714728155246.png" /></span></P><P>SAP has provided only few objects which can be modified without the BTP framework. PO Approval is one of it. The main thing to note and find the Odata.</P><P><BR /><STRONG>How to find the OData&nbsp;which will can be used for my development?</STRONG><BR />You can find the OData from going to Fiori tile -&gt; Do Frontend debugging-&gt; Refresh the page-&gt; Navigate&nbsp;to Network Tab -&gt; Find Path starting with key words&nbsp;<SPAN>/sap/opu/odata</SPAN></P><P>In my case the OData is&nbsp;<SPAN><FONT color="#00FFFF"><FONT color="#FF0000">GBAPP_POAPPROVAL</FONT></FONT></SPAN><BR /><SPAN>/sap/opu/odata/SAP/<FONT color="#00FFFF"><FONT color="#FF0000">GBAPP_POAPPROVAL</FONT></FONT></SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_4-1714730619543.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105473iCFE3D31B0F477579/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_4-1714730619543.png" alt="jayesh_mudaliar_4-1714730619543.png" /></span></P><P>You can also find it through the XML file&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_5-1714730797939.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105474iF251FFB9B0616D94/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_5-1714730797939.png" alt="jayesh_mudaliar_5-1714730797939.png" /></span></P><P>Now you have the Standard OData name, it must be implemented so that it could connect with the backend system by providing the system name in External system.&nbsp;</P><P><STRONG>Odata Implementation</STRONG>: The ODATA deployment is Central HUB . We have separate GW systems for hosting Fiori Tiles.</P><P>Tcode : /n/iwfnd/maint_service</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_2-1714729367937.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105456iC3B2581217FA8B08/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_2-1714729367937.png" alt="jayesh_mudaliar_2-1714729367937.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_3-1714729398317.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105457i60B32F9842C23355/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_3-1714729398317.png" alt="jayesh_mudaliar_3-1714729398317.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_7-1714731093754.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105476i8F62AAB6848CB0FD/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_7-1714731093754.png" alt="jayesh_mudaliar_7-1714731093754.png" /></span></P><P>Now one must get 200 response after connecting it with backend system.&nbsp;<BR />Tcode : /n/iwfnd/gw_client</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_8-1714731232808.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105477i7302CB66ECBDA47D/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_8-1714731232808.png" alt="jayesh_mudaliar_8-1714731232808.png" /></span></P><P>Till now OData is successfully configured. Now its time to find the BADI in ECC system to implement. This can be found in my previous&nbsp;<A title="Fiori PO Approver app Forward button customization from ECC backend" href="https://community.sap.com/t5/technology-blogs-by-members/fiori-po-approver-app-forward-button-customization-from-ecc-backend/ba-p/13580901" target="_self">Blog</A><BR />Let me directly jump to the method which would be required to implement.<BR />The method is&nbsp;<STRONG>Change SET_DECISION method</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_9-1714731665289.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105482iE231BA2816773A03/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_9-1714731665289.png" alt="jayesh_mudaliar_9-1714731665289.png" /></span></P><P>Here the SAP Standard documentation is pretty clear about the way of processing. You can go through it.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_10-1714731777859.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105487i5BCB7CF143028431/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_10-1714731777859.png" alt="jayesh_mudaliar_10-1714731777859.png" /></span></P><P><!-- StartFragment --><STRONG>Accept : iv_decision&nbsp;= 1.</STRONG><BR /><STRONG>Reject :&nbsp;<!-- StartFragment -->iv_decision&nbsp; = 2.<BR />If you want nothing should happen mark&nbsp;<!-- StartFragment -->ev_decision_processed&nbsp;<SPAN class="">=&nbsp;</SPAN><SPAN class="">'X'</SPAN><SPAN class="">.</SPAN>&nbsp;</STRONG></P><P><!-- StartFragment --><SPAN><SPAN class="">METHOD&nbsp;</SPAN>IF_GBAPP_EX_APV_PO_RDP<SPAN class="">~</SPAN>CHANGE_SET_DECISION<SPAN class="">.</SPAN><BR /><SPAN class="">"&nbsp;Standard&nbsp;Documentation:&nbsp;Do&nbsp;not&nbsp;delete</SPAN><BR /><BR /><SPAN class="">*&nbsp;This&nbsp;method&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;enable&nbsp;execution&nbsp;of&nbsp;a&nbsp;workitem</SPAN><BR /><SPAN class="">*&nbsp;without&nbsp;updating&nbsp;a&nbsp;purchase&nbsp;order.&nbsp;The&nbsp;customer&nbsp;should</SPAN><BR /><SPAN class="">*&nbsp;implement&nbsp;the&nbsp;method&nbsp;and&nbsp;call&nbsp;a&nbsp;corresponding&nbsp;function&nbsp;to&nbsp;execute</SPAN><BR /><SPAN class="">*&nbsp;the&nbsp;workitem&nbsp;followed&nbsp;by&nbsp;COMMIT&nbsp;WORK.</SPAN><BR /><SPAN class="">*&nbsp;To&nbsp;avoid&nbsp;update&nbsp;of&nbsp;the&nbsp;purchase&nbsp;order,&nbsp;it&nbsp;is&nbsp;necessary&nbsp;to&nbsp;set&nbsp;the</SPAN><BR /><SPAN class="">*&nbsp;output&nbsp;parameter&nbsp;EV_DECISION_PROCESSED&nbsp;to&nbsp;'X'.</SPAN><BR /><SPAN class="">*&nbsp;Preventing&nbsp;update&nbsp;of&nbsp;a&nbsp;document&nbsp;can&nbsp;be&nbsp;necessary,&nbsp;if&nbsp;the&nbsp;customer</SPAN><BR /><SPAN class="">*&nbsp;uses&nbsp;his&nbsp;own&nbsp;workflow&nbsp;where&nbsp;update&nbsp;of&nbsp;purchase&nbsp;order&nbsp;takes&nbsp;place</SPAN><BR /><SPAN class="">*&nbsp;in&nbsp;a&nbsp;separate&nbsp;background&nbsp;workflow&nbsp;step.</SPAN><BR />&nbsp;&nbsp;<SPAN class="">IF&nbsp;</SPAN>iv_decision&nbsp;<SPAN class="">EQ&nbsp;</SPAN><SPAN class="">2</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">IF&nbsp;</SPAN>iv_rejection_text&nbsp;<SPAN class="">IS&nbsp;</SPAN><SPAN class="">INITIAL</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ev_decision_processed&nbsp;<SPAN class="">=&nbsp;</SPAN><SPAN class="">'X'</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">ELSE</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">DATA&nbsp;</SPAN><SPAN class="">:&nbsp;</SPAN>t_return&nbsp;<SPAN class="">TYPE&nbsp;</SPAN><SPAN class="">STANDARD&nbsp;</SPAN><SPAN class="">TABLE&nbsp;</SPAN><SPAN class="">OF&nbsp;&nbsp;</SPAN>BAPIRET2<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">CALL&nbsp;</SPAN><SPAN class="">FUNCTION&nbsp;</SPAN><SPAN class="">'ZFIORI_PO_APPROVAL_REJ_CHG'&nbsp;</SPAN><SPAN class="">IN&nbsp;</SPAN><SPAN class="">UPDATE&nbsp;</SPAN><SPAN class="">TASK</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">EXPORTING</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iv_ebeln&nbsp;<SPAN class="">=&nbsp;</SPAN>iv_pc_number<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">TABLES</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_return&nbsp;<SPAN class="">=&nbsp;</SPAN>t_return<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">COMMIT&nbsp;</SPAN><SPAN class="">WORK</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">ENDIF</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;<SPAN class="">ENDIF</SPAN><SPAN class="">.</SPAN><BR /><SPAN class="">ENDMETHOD</SPAN><SPAN class="">.</SPAN></SPAN></P><P><BR />As per my requirement if the approver accept I should not check anything and simply make it happen, hence I have not done anything with<!-- StartFragment --> <SPAN>iv_decision</SPAN>&nbsp;= 1. If you want, you can add your custom requirement under it.&nbsp;<BR />For me I have marked&nbsp;<!-- StartFragment --><SPAN>ev_decision_processed&nbsp;<SPAN class="">=&nbsp;</SPAN><SPAN class="">'X', if rejection text/ note in not provided.<BR />I have used a Update Task FM because these were the async call hence the system was giving dump while updating the EKKO. So as to correct&nbsp;this I have divided it in 2 Logical unit. A wait of 5 secs have introduced so that the previous&nbsp;task gets over.<BR /></SPAN></SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jayesh_mudaliar_12-1714732313298.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/105495i06177F492E739D15/image-size/large?v=v2&amp;px=999" role="button" title="jayesh_mudaliar_12-1714732313298.png" alt="jayesh_mudaliar_12-1714732313298.png" /></span></P><P><SPAN><SPAN class=""><BR /><!-- StartFragment --><SPAN class="">FUNCTION&nbsp;</SPAN>zfiori_po_approval_rej_chg<SPAN class="">.</SPAN><BR /><SPAN class="">*"----------------------------------------------------------------------</SPAN><BR /><SPAN class="">*"*"Update&nbsp;Function&nbsp;Module:</SPAN><BR /><SPAN class="">*"</SPAN><BR /><SPAN class="">*"*"Local&nbsp;Interface:</SPAN><BR /><SPAN class="">*"&nbsp;&nbsp;IMPORTING</SPAN><BR /><SPAN class="">*"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE(IV_EBELN)&nbsp;TYPE&nbsp;&nbsp;EBELN</SPAN><BR /><SPAN class="">*"&nbsp;&nbsp;TABLES</SPAN><BR /><SPAN class="">*"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T_RETURN&nbsp;STRUCTURE&nbsp;&nbsp;BAPIRET2</SPAN><BR /><SPAN class="">*"----------------------------------------------------------------------</SPAN><BR /><SPAN class="">*"*"Update&nbsp;Function&nbsp;Module:</SPAN><BR />&nbsp;&nbsp;<SPAN class="">WAIT&nbsp;</SPAN><SPAN class="">UP&nbsp;</SPAN><SPAN class="">TO&nbsp;</SPAN><SPAN class="">5&nbsp;</SPAN>SECONDS<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;<SPAN class="">DATA</SPAN><SPAN class="">:&nbsp;</SPAN>lr_po&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">TYPE&nbsp;</SPAN><SPAN class="">REF&nbsp;</SPAN><SPAN class="">TO&nbsp;</SPAN>cl_po_header_handle_mm<SPAN class="">,</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls_bapi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>bapiret2<SPAN class="">,</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;l_result&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>mmpur_bool<SPAN class="">,</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lv_procstat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>ekko<SPAN class="">-</SPAN>procstat<SPAN class="">,</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls_document&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>mepo_document<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;<SPAN class="">CONSTANTS</SPAN><SPAN class="">:&nbsp;</SPAN>lc_status&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>ekko<SPAN class="">-</SPAN>procstat&nbsp;<SPAN class="">VALUE&nbsp;</SPAN>'08'<SPAN class="">,</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc_set_status&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>ekko<SPAN class="">-</SPAN>procstat&nbsp;<SPAN class="">VALUE&nbsp;</SPAN>'03'<SPAN class="">,</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc_process&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>char16&nbsp;<SPAN class="">VALUE&nbsp;</SPAN>'PO_PROCESS'<SPAN class="">,</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc_trtyp&nbsp;TYPE&nbsp;char1&nbsp;VALUE&nbsp;'VER',</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc_trtyp&nbsp;TYPE&nbsp;char1&nbsp;VALUE&nbsp;'V',</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc_ind&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>char40&nbsp;<SPAN class="">VALUE&nbsp;</SPAN>'RELEASE'<SPAN class="">,</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lc_tcode&nbsp;<SPAN class="">TYPE&nbsp;</SPAN>SY<SPAN class="">-</SPAN>TCODE&nbsp;<SPAN class="">VALUE&nbsp;</SPAN>'ME29N'<SPAN class="">.</SPAN><BR /><BR /><BR />&nbsp;&nbsp;<SPAN class="">SELECT&nbsp;</SPAN><SPAN class="">SINGLE&nbsp;</SPAN>procstat&nbsp;<SPAN class="">FROM&nbsp;</SPAN>ekko&nbsp;<SPAN class="">INTO&nbsp;</SPAN>lv_procstat&nbsp;<SPAN class="">WHERE&nbsp;</SPAN>ebeln&nbsp;<SPAN class="">=&nbsp;&nbsp;</SPAN>iv_ebeln<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;<SPAN class="">IF&nbsp;</SPAN>lv_procstat&nbsp;<SPAN class="">EQ&nbsp;</SPAN>lc_status<SPAN class="">.</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;prepare&nbsp;creation&nbsp;of&nbsp;PO&nbsp;instance</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;ls_document<SPAN class="">-</SPAN>process&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>'PO_PROCESS'<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;ls_document<SPAN class="">-</SPAN>trtyp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>'VER'<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;ls_document<SPAN class="">-</SPAN>doc_key<SPAN class="">(</SPAN><SPAN class="">10</SPAN><SPAN class="">)&nbsp;</SPAN><SPAN class="">=&nbsp;</SPAN>iv_ebeln<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;ls_document<SPAN class="">-</SPAN>initiator<SPAN class="">-</SPAN>initiator&nbsp;<SPAN class="">=&nbsp;</SPAN>'RELEASE'<SPAN class="">.</SPAN><BR /><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">CREATE&nbsp;</SPAN>OBJECT&nbsp;lr_po<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;lr_po<SPAN class="">-&gt;</SPAN>for_bapi&nbsp;<SPAN class="">=&nbsp;</SPAN>'X'<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;lr_po<SPAN class="">-&gt;</SPAN>po_initialize<SPAN class="">(&nbsp;</SPAN>ls_document&nbsp;<SPAN class="">)</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;lr_po<SPAN class="">-&gt;</SPAN>set_po_number<SPAN class="">(&nbsp;</SPAN>iv_ebeln&nbsp;<SPAN class="">)</SPAN><SPAN class="">.</SPAN><BR /><BR /><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">CALL&nbsp;</SPAN><SPAN class="">FUNCTION&nbsp;</SPAN>'MEPO_DOC_READ'<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">EXPORTING</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im_ebeln&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>iv_ebeln<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im_tcode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>lc_tcode<SPAN class="">"'ME29N'</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im_trtyp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>ls_document<SPAN class="">-</SPAN>trtyp<BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;&nbsp;IM_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im_document&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>ls_document<BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;IM_NO_MESSAGING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;IM_NO_MESSAGE_REQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;IM_NO_AUTHORITY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=</SPAN><BR /><SPAN class="">*&nbsp;EXCEPTIONS</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;DOC_NUMBER_MISSING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;TRANSACTION_CODE_MISSING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;2</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;TRANSACTION_TYPE_MISSING&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;3</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;INVALID_CALL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;4</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;OTHERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;5</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">IF&nbsp;</SPAN>sy<SPAN class="">-</SPAN>subrc&nbsp;&lt;&gt;&nbsp;<SPAN class="">0</SPAN><SPAN class="">.</SPAN><BR /><SPAN class="">*&nbsp;Implement&nbsp;suitable&nbsp;error&nbsp;handling&nbsp;here</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">ENDIF</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">DATA&nbsp;</SPAN><SPAN class="">:&nbsp;</SPAN>ex_data&nbsp;&nbsp;<SPAN class="">LIKE&nbsp;&nbsp;</SPAN>mepoheader<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">CALL&nbsp;</SPAN><SPAN class="">FUNCTION&nbsp;</SPAN>'MEPO_DOC_HEADER_GET'<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">IMPORTING</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex_ekko&nbsp;<SPAN class="">=&nbsp;</SPAN>ex_data<SPAN class="">.</SPAN><BR /><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">IF&nbsp;</SPAN>cl_process_state_mm<SPAN class="">=&gt;</SPAN>is_allowed<SPAN class="">(</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im_bstyp&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>ex_data<SPAN class="">-</SPAN>bstyp<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im_state&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>ex_data<SPAN class="">-</SPAN>procstat<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im_process&nbsp;<SPAN class="">=&nbsp;</SPAN>cl_process_state_mm<SPAN class="">=&gt;</SPAN>c_pr_reset_rej&nbsp;<SPAN class="">)</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">EQ&nbsp;</SPAN>mmpur_no<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">MESSAGE&nbsp;</SPAN>e806<SPAN class="">(</SPAN>mepo<SPAN class="">)&nbsp;</SPAN><SPAN class="">WITH&nbsp;</SPAN>ex_data<SPAN class="">-</SPAN>procstat&nbsp;<SPAN class="">RAISING&nbsp;</SPAN>failed<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">ENDIF</SPAN><SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;ex_data<SPAN class="">-</SPAN>procstat&nbsp;<SPAN class="">=&nbsp;</SPAN>cl_process_state_mm<SPAN class="">=&gt;</SPAN>c_active<SPAN class="">.</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;lr_po<SPAN class="">-&gt;</SPAN>set_data<SPAN class="">(&nbsp;</SPAN>ex_data&nbsp;<SPAN class="">)</SPAN><SPAN class="">.</SPAN><BR /><BR /><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">UPDATE&nbsp;</SPAN>ekko&nbsp;<SPAN class="">SET&nbsp;</SPAN>procstat&nbsp;<SPAN class="">=&nbsp;</SPAN>lc_set_status&nbsp;<SPAN class="">WHERE&nbsp;</SPAN>ebeln&nbsp;<SPAN class="">EQ&nbsp;</SPAN>iv_ebeln<SPAN class="">.</SPAN><BR /><SPAN class="">*&nbsp;&nbsp;&nbsp;&nbsp;UPDATE&nbsp;ekko&nbsp;SET&nbsp;PROCSTAT&nbsp;=&nbsp;ex_data-procstat&nbsp;where&nbsp;ebeln&nbsp;eq&nbsp;iv_ebeln.</SPAN><BR />&nbsp;&nbsp;<SPAN class="">ENDIF</SPAN><SPAN class="">.</SPAN><BR /><BR /><SPAN class="">ENDFUNCTION</SPAN><SPAN class="">.</SPAN><BR /></SPAN></SPAN></P> 2024-05-03T12:45:30.531000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/your-sherlock-homes-how-to-find-missing-business-catalogs/ba-p/13704139 Your Sherlock Homes - How to Find Missing Business Catalogs? 2024-05-17T04:13:00.535000+02:00 George_Yu https://community.sap.com/t5/user/viewprofilepage/user-id/131765 <H1 id="toc-hId-885664031">Introduction</H1><P>In my previous blogs (see references), I talked about Business Catalogs, Business Roles and Fiori application authorizations; the concept and what to do during an upgrade.&nbsp; While browsing the questions raised in the SAP Community, one question got my attention (I borrowed the title to be my blog title):</P><P>&nbsp;</P><P style=" padding-left : 120px; "><FONT face="comic sans ms,sans-serif">Hello!</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">I'm looking for business catalogs below.</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">According to the Fiori Apps Reference Library, they are necessary for accessing some apps we want to use. However, even scope item (2XT) is activated, they aren't show on the business roll setting screen.</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">Could someone tell me how to find or set up missing business catalogs?</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">-----------------------------------------------------------------------------------------------</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">Missing Catalogs and Application that we would like to use↓</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">Catalogs:</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">SAP_MM_BC_CPO_PROCESS_PC</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">SAP_PRC_BC_PURCHASER_CPC</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">SAP_PRC_BC_PURCHASER_CRFQ</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">SAP_PRC_BC_PURCHASER_SRC</FONT><BR /><BR /><BR /><FONT face="comic sans ms,sans-serif">Applications:</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">F3292 'Manage Purchase Orders Centrally'</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">F6634 'Manage Central Supplier Confirmations'</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">F3676 'Monitor Purchase Order Items Centrally'</FONT><BR /><BR /><FONT face="comic sans ms,sans-serif">F3144 'Manage Central Purchase Contracts'</FONT></P><P>In summary, here is this community member’s ask: I want to access four purchase related apps.&nbsp; They are supposed to be controlled by four business catalogs, but I cannot find those business catalogs in my system.</P><P>I put on Sherlock Holmes’ hat, rolled up my sleeves and started a quick investigation.</P><P>&nbsp;</P><H1 id="toc-hId-689150526">Step 1: Conduct Investigation in the SAP Fiori Apps Reference Library</H1><P>Whenever talking about Fiori apps, their functions as well authorizations to them, the SAP Fiori Apps Reference Library is my first resource.&nbsp; By browsing through <A href="https://fioriappslibrary.hana.ondemand.com/" target="_blank" rel="noopener nofollow noreferrer">SAP Fiori Apps Reference Library</A>, I can find the Business Catalogs and Business Role Templates associated with these four apps, listed in the below table.</P><P>&nbsp;</P><TABLE><TBODY><TR><TD width="623"><TABLE><TBODY><TR><TD width="111.969px"><P><STRONG>App</STRONG></P></TD><TD width="269.109px"><P><STRONG>Business Catalogs</STRONG></P></TD><TD width="252.266px"><P><STRONG>Business Role Templates</STRONG></P></TD></TR><TR><TD width="111.969px"><P>F3292 'Manage Purchase Orders Centrally'</P></TD><TD width="269.109px"><P>SAP_MM_BC_CPO_PROCESS_PC</P></TD><TD width="252.266px"><P>SAP_BR_CENTRAL_PURCHASER</P></TD></TR><TR><TD width="111.969px"><P>F6634 'Manage Central Supplier Confirmations'</P></TD><TD width="269.109px"><P>SAP_MM_BC_CSC_PROCESS_PC</P></TD><TD width="252.266px"><P>SAP_BR_CENTRAL_PURCHASER</P></TD></TR><TR><TD width="111.969px"><P>F3676 'Monitor Purchase Order Items Centrally'</P></TD><TD width="269.109px"><P>SAP_MM_BC_CPO_PROCESS_PC</P></TD><TD width="252.266px"><P>SAP_BR_CENTRAL_PURCHASER</P></TD></TR><TR><TD width="111.969px"><P>F3144 'Manage Central Purchase Contracts'</P></TD><TD width="269.109px"><P>SAP_MM_BC_CPC_PROCESS_PC</P><P>SAP_MM_BC_CRFQ_PROCESS_PC</P><P>SAP_MM_BC_SRC_PROCESS_PC</P></TD><TD width="252.266px"><P>SAP_BR_CENTRAL_PURCHASER</P><P>SAP_BR_SOURCING_MANAGER</P></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><P>This investigation reveals the following:</P><UL><LI>3 out of 4 apps can be accessed if a user has a Business Role created from the template SAP_BR_CENTRAL_PURCHASER, although each app requires one or more different Business Catalogs.</LI><LI>All Business Catalogs have a prefix of SAP_MM_BC_xxx. None of them has a prefix of SAP_PRC_BC_PURCHASER_xxx. Where are the later ones coming from?</LI><LI>The App <STRONG><EM>Manage Central Purchase Contracts</EM></STRONG> can be accessed by assigning a Business Role derived from either one of two Business Role Templates; and three Business Catalogs grant the access to the app.</LI><LI>There are four unique Business Catalogs listed above.</LI><LI>A Business Role derived from the template SAP_BR_CENTRAL_PURCHASER can access 44 apps, including the four apps in our investigation.&nbsp; This is a super Business Role Template.</LI></UL><P>&nbsp;</P><H1 id="toc-hId-492637021">Step 2: Conduct Investigation in A Starter System</H1><P>There are only three Business Role Templates available in a brand-new SAP S/4HANA Cloud Public Edition system.&nbsp; Only after you activated the scopes in the Central Business Configuration (CBC) system, the relevant Business Catalogs and Business Role Templates are transferred from the CBC to the Customization (D-100) and Development Tenants (D-080) of the Development System.</P><P>To prepare the Fit-to-Standard Workshop or explore the potential features of the SAP S/4HANA Cloud Public Edition, users activate as many scopes as possible on the Starter System. So, this is the place I will investigate the existence of these Business Catalogs and Apps.</P><P>In my Starter System, I have 2198 Business Catalogs, and 260 Business Role Templates. This is more than enough for the investigation.</P><P>By using the <STRONG><EM>Business Catalogs</EM></STRONG> app, I found the following:</P><UL><LI>Three out of four unique Business Catalogs exist in the system, except SAP_MM_BC_SRC_PROCESS_PC.</LI><LI>Considering the Business Catalog SAP_MM_BC_SRC_PROCESS_PC is marked as deprecated from Release 2402 (see below), I don’t need to pay further attention to it.</LI><LI>The Business Catalog SAP_MM_BC_CPO_PROCESS_PC controls five applications, including <STRONG><EM>F3292 Manage Purchase Orders Centrally</EM></STRONG> and <STRONG><EM>F3676 Monitor Purchase Order Items Centrally</EM></STRONG>.</LI></UL><P>By using the <STRONG><EM>Business Role Templates</EM></STRONG> app, I found the following:</P><UL><LI>The Business Role Template SAP_BR_CENTRAL_PURCHASER has ten Business Catalogs assigned:</LI></UL><P style=" padding-left : 90px; ">Commodity Management - Commodity Code Migration: SAP_CMM_BC_CMMDTY_MIGRTN_PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Commodity Management - Commodity Pricing Configuration: SAP_CMM_BC_PRICING_CONFIG_PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Master Data - Product Display: SAP_CMD_BC_PRODUCT_DSP_PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Master Data - Supplier Display: SAP_CMD_BC_SUPPLIER_DSP_PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Material Management - Central Purchasing Analytics: SAP_MM_BC_PUR_CNTRL_ANA_PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Material Management - Central Supplier Confirmations: SAP_MM_BC_CSC_PROCESS_PC&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Materials Management - Central Purchase Contracts: SAP_MM_BC_CPC_PROCESS_PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Materials Management - Central Purchase Orders: SAP_MM_BC_CPO_PROCESS_PC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Materials Management - Central Purchase Requisitions: SAP_MM_BC_CPR_PROCESS_PC&nbsp;&nbsp;&nbsp;&nbsp;</P><P style=" padding-left : 90px; ">Materials Management - Central Quotation Processing: SAP_MM_BC_CRFQ_PROCESS_PC</P><UL><LI>The Business Role Template SAP_BR_SOURCING_MANAGER has five Business Catalogs and all of them have been declared as Deprecated in Release 2402. For that reason, I can suspect this Business Role Template will be deprecated soon as well.&nbsp; In other words, we don’t need to spend any effort on it.</LI></UL><P>&nbsp;</P><H1 id="toc-hId-296123516">Step 3: Check SAP Note 2975653</H1><P>Until now I am quite comfortable about which Business Catalog and Business Role Template grant access to these four apps. However, I still don’t have a clue about three Business Catalogs starting with SAP_PRC_BC_PURCHASER_xxx. Is it possible these are the old names, and there are replacement Business Catalogs?</P><P>To answer this question, I use the SAP Note <A href="https://me.sap.com/notes/2975653" target="_blank" rel="noopener noreferrer">2975653 Identity and Access Management (IAM): Change Overview for SAP S/4HANA Cloud</A>.&nbsp; This is a central note.&nbsp; For each major release, there is a subsequent note about changes made at that release, from Release 1911 to 2402.&nbsp; One important feature of these notes is an Excel attachment, which lists all the changes made in the areas of Business Catalogs and Business Role Templates (new, changed, deprecated).&nbsp; For example, for 2402 Release, the Excel file is <EM>Delta_S4CE_2402-2308.xlsx</EM>.</P><P>After downloading all the relevant Excel files, I did a search.&nbsp; There are still no Business Catalogs like SAP_PRC_BC_PURCHASER_xxx listed in any of these files.&nbsp; Now I can draw a conclusion that these Business Catalogs might not be there from the beginning, or at least after Release 1911.</P><P>Business Catalog SAP_MM_BC_CPO_PROCESS_PC is listed in several Excel files when it contributes to certain Business Role Templates.&nbsp; This proves this Business Catalog is well and alive.</P><P>&nbsp;</P><H1 id="toc-hId-99610011">Conclusion</H1><P>With above investigation, my conclusions are:</P><OL><LI>Business Catalogs SAP_PRC_BC_PURCHASER_xxx don’t exist, at least from Release 1911.</LI><LI>To access these four apps, just derive a Business Role from the template SAP_BR_CENTRAL_PURCHASER.&nbsp; It has all necessary Business Catalogs to access these apps.</LI><LI>Four unique Business Catalogs provide the access to all four apps:<UL><LI>SAP_MM_BC_CPO_PROCESS_PC</LI><LI>SAP_MM_BC_CSC_PROCESS_PC</LI><LI>SAP_MM_BC_CPC_PROCESS_PC</LI><LI>SAP_MM_BC_CRFQ_PROCESS_PC</LI></UL></LI></OL><P>&nbsp;</P><H1 id="toc-hId--96903494">References</H1><UL><LI>Blog: <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/review-business-role-changes-before-a-major-upgrade-in-the-sap-s-4hana/ba-p/13644413" target="_blank">Review Business Role Changes before a Major Upgrade in the SAP S/4HANA Cloud Public Edition</A></LI></UL><UL><LI>Blog: <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/review-business-role-changes-before-a-major-upgrade-in-the-sap-s-4hana/ba-p/13644413" target="_blank">Review Business Role Changes before a Major Upgrade in the SAP S/4HANA Cloud Public Edition</A></LI><LI>Blog:&nbsp;<A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/using-restrictions-to-enhance-user-authorizations-in-the-sap-s-4hana-cloud/ba-p/13575978" target="_blank">Using Restrictions to Enhance User Authorizations in the SAP S/4HANA Cloud, public edition</A></LI><LI>Blog:&nbsp;<A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/user-management-in-a-nutshell-for-the-sap-s-4hana-cloud-public-edition/ba-p/13556782" target="_blank">User Management in a Nutshell for the SAP S/4HANA Cloud, public edition</A></LI></UL><P>&nbsp;</P><P>&nbsp;</P> 2024-05-17T04:13:00.535000+02:00