https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/ABAP-Development-blog-posts.xml SAP Community - ABAP Development 2024-07-26T23:00:03.375887+00:00 python-feedgen ABAP Development blog posts in SAP Community https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/replacing-a-wrapped-bapi-with-a-released-business-object-interface/ba-p/13729947 Replacing a wrapped BAPI with a released business object interface 2024-06-13T15:11:13.346000+02:00 kaidehmann https://community.sap.com/t5/user/viewprofilepage/user-id/14159 <P>Last year, I announced the&nbsp;release of&nbsp;the <A href="https://developers.sap.com/group.sap-s4hana-extensibility-wrap-api.html" target="_self" rel="noopener noreferrer">Mitigate Missing Released SAP API in the 3-tier Extensibility Model</A> tutorial group via the <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/abap-cloud-mitigate-missing-released-sap-apis-in-the-3-tier-extensibility/ba-p/13580268" target="_self">ABAP Cloud – Mitigate missing released SAP APIs in the 3-tier extensibility model: a tutorial how to wrap a BAPI and integrate it into a custom RAP business object</A>&nbsp;blog.&nbsp;The tutorial group shows how to wrap the BAPI_PR_CREATE function module (BAPI) in tier 2, how to release it for consumption in tier 1, and then how to consume it from a shopping cart RAP business object in tier 1.</P><P>We have just extended the tutorial group with the <A href="https://developers.sap.com/tutorials/abap-s4hanacloud-purchasereq-replace-wrapper.html" target="_self" rel="noopener noreferrer">Replace Wrapper by Released API</A>&nbsp;tutorial. As the name suggests, this tutorial shows how to replace the wrapper once a released API is available. That is, the wrapper for the BAPI_PR_CREATE function module is replaced by the released I_PurchaseRequisitionTP business object interface. Since the business object interface is already available, you can try it out immediately. So, don't hesitate and get your hands dirty <span class="lia-unicode-emoji" title=":winking_face:">😉</span></P> 2024-06-13T15:11:13.346000+02:00 https://community.sap.com/t5/application-development-blog-posts/sap-developer-news-june-13th-2024/ba-p/13729642 SAP Developer News, June 13th 2024 2024-06-13T21:00:00.029000+02:00 qmacro https://community.sap.com/t5/user/viewprofilepage/user-id/53 <P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F7n16u-Rx8IY%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D7n16u-Rx8IY&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F7n16u-Rx8IY%2Fhqdefault.jpg&amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;type=text%2Fhtml&amp;schema=youtube" width="600" height="337" scrolling="no" title="ABAP Open-Source, June Dev Challenge, CAP May Rel, CodeTalk, Ref Architecture | SAP Developer News" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P><STRONG>ITEMS&nbsp;</STRONG></P><P><SPAN>ABAP Open Source Updates, ABAP2UI5 and apm</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>abap2UI5 - Integration with SAP Business Technology Platform (1/3) - Installation &amp; Configuration </SPAN><A href="https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-13-installation-lf1re" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-13-installation-lf1re</SPAN></A><SPAN>&nbsp;</SPAN></LI><LI><SPAN>abap2UI5 repository </SPAN><A href="https://github.com/abap2UI5/abap2UI5" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://github.com/abap2UI5/abap2UI5</SPAN></A><SPAN>&nbsp;</SPAN></LI><LI><SPAN>apm homepage </SPAN><A href="https://abappm.com/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://abappm.com/</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>June Developer Challenge – Week 2</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>SAP HANA multi-model Developer Challenge: </SPAN><A href="https://community.sap.com/t5/application-development-blog-posts/developer-challenge-sap-hana-multi-model-using-python-in-sap-business/ba-p/13722560" target="_blank"><SPAN>https://community.sap.com/t5/application-development-blog-posts/developer-challenge-sap-hana-multi-model-using-python-in-sap-business/ba-p/13722560</SPAN></A> <SPAN>&nbsp;</SPAN></LI><LI><SPAN>Developer Keynote at SAP TechEd 2023: </SPAN><A href="https://www.youtube.com/live/kLbF0ooStZs?t=2145s" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://www.youtube.com/live/kLbF0ooStZs?t=2145s</SPAN></A><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Business meets AI hackathon: </SPAN><A href="https://events.sap.com/ch/hackathon2024/en/home" target="_blank" rel="noopener noreferrer"><SPAN>https://events.sap.com/ch/hackathon2024/en/home</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>SAP Cloud Application Programming Model – May Release</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Release notes </SPAN><A href="https://cap.cloud.sap/docs/releases/may24" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://cap.cloud.sap/docs/releases/may24</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>SAP BTP reference architecture for SAP Build Process Automation</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Integrate and extend SAP and non-SAP solutions with SAP Build Process Automation </SPAN><A href="https://discovery-center.cloud.sap/refArchDetail/ref-arch-build-process-automation" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://discovery-center.cloud.sap/refArchDetail/ref-arch-build-process-automation</SPAN></A> <SPAN>&nbsp;</SPAN></LI><LI><SPAN>BTP Solution Diagrams </SPAN><A href="https://sap.github.io/btp-solution-diagrams/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://sap.github.io/btp-solution-diagrams/</SPAN></A> <SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>Two new SAP CodeTalk Podcast episodes, Frank Densborn and Riley Rainey</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Frank Densborn episode Generative AP from the SAP Apphaus </SPAN><A href="https://podcast.opensap.info/sap-developers/2024/05/28/sap-codetalk-frank-densborn-from-sap-apphaus-discussing-generative-ai-and-llms/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://podcast.opensap.info/sap-developers/2024/05/28/sap-codetalk-frank-densborn-from-sap-apphaus-discussing-generative-ai-and-llms/</SPAN></A> <SPAN>&nbsp;</SPAN></LI><LI><SPAN>SAP AppHaus GenAI Explore workshop to identify AI use cases </SPAN><A href="https://apphaus.sap.com/resource/generative-ai-explore-workshop" target="_blank" rel="noopener noreferrer"><SPAN>https://apphaus.sap.com/resource/generative-ai-explore-workshop</SPAN></A> <SPAN>&nbsp;</SPAN></LI><LI><SPAN>New AppHaus GenAI Discover/Design workshop with GenAI cards </SPAN><A href="https://apphaus.sap.com/resource/generative-ai-discover-and-design-workshop" target="_blank" rel="noopener noreferrer"><SPAN>https://apphaus.sap.com/resource/generative-ai-discover-and-design-workshop</SPAN></A> <SPAN>&nbsp;</SPAN></LI><LI><SPAN>Riley Rainey episode on the SAP Developer Insights Survey Report </SPAN><A href="https://podcast.opensap.info/sap-developers/2024/06/11/sap-codetalk-riley-rainey-discusses-the-sap-developer-insights-survey-report-with-josh-bentley/" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://podcast.opensap.info/sap-developers/2024/06/11/sap-codetalk-riley-rainey-discusses-the-sap-developer-insights-survey-report-with-josh-bentley/</SPAN></A> <SPAN>&nbsp;</SPAN></LI><LI><SPAN>Developer Insights Survey Report </SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/the-2024-developer-insights-survey-the-report/ba-p/13686151" target="_blank"><SPAN>https://community.sap.com/t5/technology-blogs-by-sap/the-2024-developer-insights-survey-the-report/ba-p/13686151</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>New YouTube Shorts 60 second videos on CAP Node.js</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>The “CAP Node.js - Good To Know!” playlist </SPAN><A href="https://www.youtube.com/playlist?list=PL6RpkC85SLQDZ18v94otZSJJrpcNkPPV9" target="_blank" rel="noopener nofollow noreferrer"><SPAN>https://www.youtube.com/playlist?list=PL6RpkC85SLQDZ18v94otZSJJrpcNkPPV9</SPAN></A><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>&nbsp;</SPAN><STRONG>CHAPTER TITLES&nbsp;&nbsp;</STRONG></P><P><SPAN>0:00 Intro</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>0:07 ABAP Open Source Updates, ABAP2UI5 and apm</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>1:39 June Developer Challenge – Week 2</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>2:42 CAP May Release</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>4:51 SAP BTP reference architecture for SAP Build Process Automation</SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>5:36 Two new SAP CodeTalk Podcast episodes, Frank Densborn and Riley Rainey </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>7:04 New YouTube Shorts 60 second videos on CAP Node.js </SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG>TRANSCRIPT</STRONG></P><P>This is the SAP Developer News for the 13th June 2024.</P><P>[Rich]<BR />Hey folks, Rich Heilman here. I hope you all are doing well. This week, I'd like to share some news around the abap2UI5 project from our friend, Oblomov. He has posted on LinkedIn about the newly released abap2UI5 SAP BTP connector, which allows developers to call abap2UI5 apps via BTP from anywhere and integrate them into SAP Build Work Zone or SAP MobileStart. This is the first of a three-part series and in this post he explains the initial installation and configuration while sharing a bit about how the connector works. If you are a fan of abap2UI5 as I am, check out this latest post and learn about the abap2UI5 BTP connector today. Now while I have you, did you know that APM was launched last week at at the ABAP conference at Code Connect. Our friend Mark Bernard announced the availability of APM, an ABAP package management and registration tool. I don't have a whole lot of details to share right now, other than providing the website where you can check out the announcement video from the conference last week, and also review the presentation, and of course sign up for access to APM. I've done so already. I highly recommend for you to sign up yourself today. So check out the website for more information. Bye for now.</P><P>[Witalij]<BR />Hi everyone, welcome from Zurich where we are having right now "AI Meets Business" hackathon. And I would like to introduce you to all the SAP colleagues who are coaches here. And now back to our regular update. It is great to see that quite many teams here at the hackathon are using SAP HANA Cloud Vector Engine. If you are participating in the Developer Challenge for this month, then you might see that the week 2 challenge is already posted, and this is where I'm inviting you to try Vector Engine yourself. We will be able to recreate the part of the demo, which I presented during our Developer Keynote at SAP TechEd, 2023. Happy coding and I'm looking forward to your submission.</P><P>[Tom]<BR />We're happy to announce the May release of the SAP Cloud Application Programming model. This month we only have new features on the Java Runtime. This is because the CAP team is busy preparing for the big annual release, so expect major new things coming soon to the cloud application programming model. In the meantime, the CAP version this month has several new features that we'll highlight. First of all, there's a new difference processor. This is an API that can compare two entities and will tell you the differences. It can be really useful if you're wanting to, for instance, track changes at two different states of the same entity. We also see with the built-in change tracking now through an annotation, you can specify what key you want to be recorded in the change track. So instead of the technical key, you could perhaps store the business key. We see a new beta feature for fuzzy HANA search. We also have a new feature for setting the max age of an HTTP response via annotation. particularly useful when you have a MIME response. And we have the OData v4 key as a segment. This helps with building and simplifying the URL parameters for keys when requesting an OData entity. And finally there's a feature that I hope will be coming to the JavaScript version as well and that's the new Developer dashboard. Now this is an alpha version of the developer dashboard and it contains all kinds of cool information that helps you during the development process. Now the the notes are really clear that you should never use this in production because it would expose sensitive data. It looks like an incredible new developer tool and I can't wait to check it out. So all these great new things coming to the Java version of CAP in the May release and keep your eye out for the big major release coming soon for the Cloud Application Programming Model as well.</P><P>[DJ]<BR />Are you working with the SAP Business Technology Platform? Then if so, this news item is for you. The reference architecture for SAP Build Process Automation has been released. There's a wealth of resources collected together on this reference architecture over on the SAP Discovery Center. Not only that, but if you're building BTP solution diagrams, there's a repository with a starter kit, examples, and guidelines, as well as templates for you to use that are in draw IO format. Links to the SAP Discovery Center page and the GitHub repository are in the description.</P><P>[Josh]<BR />Hey everybody, Mr. Bluebeard, Josh Bentley, And I'm here to give you a couple of updates real quick on the SAP CodeTalk podcast series. I was lucky enough to get to do two podcast episodes recently. The first was with Frank Densborn and he's from our SAP AppHaus team. The AppHaus co-innovates with our customers. They dive deep on a use case and they come up with some code that actually can solve that use case problem. So Frank Densborn goes through this with me in the podcast episode and then he goes down to SAP Sapphire in Orlando and dives deeper with the customers on how we're using large language models and chatGPT and generative AI to solve some of these use cases. So very topical and very cool stuff that Frank and the team at the AppHaus are putting out. The next episode I recorded was with Riley Rainey. Riley is from our developer advocates team and he helps put out the Developer Insight Survey. So if you see that survey coming out and you fill in those questions with your answers, We actually take that back to the committee and we go through those answers and put out a report and Riley goes through the methodology and some of the most recent answers that were given in the Developer Insight Survey. So link to that below in this Developer News episode and if you're not already subscribing to the SAP Code Talk podcast, wherever you listen to podcasts, please subscribe and also you can keep watching it here on the SAP Developer YouTube channel. And finally, happy Pride Month. Bye.</P><P>[DJ]<BR />The developer advocates are always looking for new ways to help developers. With that in mind, we've started creating some YouTube Shorts. A Short is in portrait format, no more than 60 seconds, which is basically then ideal for consuming quickly, on the go, on your phone. The current series is on CAP Node.js with tips and tricks that are good to know. For example, this week's short, just released, is all about the <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/179624">@Path</a> annotation for service definitions. There's a link to the entire playlist so far in the description, so head on over there and check them all out.</P> 2024-06-13T21:00:00.029000+02:00 https://community.sap.com/t5/application-development-blog-posts/cleaning-up-the-core-and-using-events-to-decouple-your-enhancements/ba-p/13732395 Cleaning up the core and using events to decouple your enhancements 2024-06-18T12:25:38.779000+02:00 Siarljp https://community.sap.com/t5/user/viewprofilepage/user-id/137342 <P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SAP starship.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124206iDA7000B316183052/image-size/large?v=v2&amp;px=999" role="button" title="SAP starship.jpg" alt="SAP starship.jpg" /></span></SPAN></P><P><SPAN>Sometimes I worry that SAP are in danger of leaving us all behind. It seems that they are on a starship shooting off at light speed to the stars of Generative AI and cloud everything. SAP customers meanwhile are still trying to get their on premiss SAP ECC biplanes off the ground. I know that SAP have to do this, as they have to stay ahead of the game, to compete, and they currently do this through focussing on BTP, and all the goodies around this, and then incorporating generative AI is all the buzz at the moment. Yet the majority of SAP customers are mostly wrestling with how they will upgrade to S/4 before the deadline of 2027. I understand that SAP must be innovation focussed and so it often falls to SAP tech architects working for customers or SAP partners to ensure that customers can stay on track with their vision to someday catchup to where SAP are at (by which point in time SAP will be somewhere else probably in a far away galaxy</SPAN><span class="lia-unicode-emoji" title=":winking_face:">😉</span><SPAN>).</SPAN></P><P><SPAN>“Keep the core clean” has been the SAP mantra now for at least 6 years and probably for a lot longer, I personally first remember it from Teched 2018 in Barcelona. As a software engineer I read “keep the core clean” instead as “decouple your custom code from the standard solution”, admittedly its not as catchy... </SPAN></P><P><SPAN>&nbsp;As many SAP customers are still preparing for S/4 upgrades, then many customers are still in the stages where cleaning up the core is very much a key focus area.</SPAN></P><P><SPAN>What you as an SAP customer can do to prepare for cleaning the core varies a bit depending on &nbsp;where you are in your SAP journey. </SPAN></P><P><SPAN>Keeping the core clean does not have to be done pre-S/4 – but it should make life simpler, the sooner you start, and what you are essentially doing is cleaning up your technical code debt.<BR /></SPAN></P><P><SPAN>If you are pre S/4 upgrade, I would begin with the quick wins, and this is by focussing on enhancement code that is often simply not encapsulated at all, and so not coded using ABAP Objects, and called from within SAP enhancement points, BADIs or user exits. </SPAN></P><P><SPAN>Probably the best approach is to focus on encapsulating all your enhancements, ensuring that it is relatively simple to relocate them when the need arises, ensuring there is a clear, well scoped boundary from where standard code ends and custom code begins. Following clean code principles and using SOLID OOPs design techniques enables you to begin to decouple your deeply embedded custom code, in preparation for a future redesign, and or relocation to BTP. </SPAN></P><P><SPAN>My own experience with custom code from various SAP customers over the years, means that I suspect that many enhancements are just loosely coded ABAP code placed directly wherever the functionality is needed, often with little thought to encapsulation, this kind of code is essentially code debt. Cleaning this code up will help to make your S4 upgrade journey smoother and simpler, or if you are on S/4 it could make your future journeys considerably smoother.</SPAN></P><P><SPAN>So the main principles are quite simple object oriented principles, that Robert C Martin is famous for defining.</SPAN></P><P><SPAN>Aim for Single responsibility in the classes that you introduce. Think carefully about their interfaces, their contract to the places that call them, exposing the bare minimum as public, but enough to allow for long term requirements. Try to unknit your spaghetti code, into purposeful methods that don’t do too much. Aim to keep code simple. Don’t be afraid to create additional classes if a class is doing too much work, if its losing its singular responsibilities. </SPAN></P><P><SPAN>Its often useful to define interfaces that the classes then implement, the interface is then defining a public contract, and can also be useful for unit testing purposes, and the creation of test-doubles. Using interfaces creates a layer of decoupling, and definition, that introduces future flexibility into your solution.</SPAN></P><P><SPAN>We need to take a methodical approach to all of our enhancements, and slowly redesign them by these simple decoupling techniques.</SPAN></P><P><SPAN>One of the purposes of this blog is to point out an approach to decoupling that I only fairly recently stumbled upon. This is through using events via ABAP message channels, together with ABAP Daemons, something which Olga has described in a blog back in 2015 and then again in 2018, and also gets a passing mention in ABAP to the Future (Paul Hardy SAPPress) Olga’s blogs are here:</SPAN></P><P><SPAN><A href="https://community.sap.com/t5/application-development-blog-posts/introduction-to-abap-channels/bc-p/13097526" target="_blank">https://community.sap.com/t5/application-development-blog-posts/introduction-to-abap-channels/bc-p/13097526</A><BR /></SPAN></P><P><SPAN><A href="https://community.sap.com/t5/application-development-blog-posts/abap-daemons-always-available-abap-sessions-to-handle-events/ba-p/13380833" target="_blank">https://community.sap.com/t5/application-development-blog-posts/abap-daemons-always-available-abap-sessions-to-handle-events/ba-p/13380833</A>.</SPAN></P><P><SPAN>&nbsp;This approach only becomes relevant when you are on an S/4 system, as it requires 7.52 as well as 1809. With this approach, you can for example, raise an event in an enhancement point, and then subscribe to the event from a custom class that is then triggered by an ABAP Daemon process. The daemon processes are considered robust by SAP from 1809 onwards – in that they get restarted if the system is restarted, and events are not at risk of being lost. So switching your enhancements to an event driven programming model really takes another step towards decoupling your custom code to the standard SAP code. </SPAN></P><P><SPAN>This kind of design means the enhancement is solely used to raise an event and pass the necessary information onto the subscribing class. This means your implementing class for your enhancement is almost fully decoupled. Ready to be migrated to the possibility of a BTP solution or alternative solution. I was quite surprised to find this great possibility was there and I simply hadn’t realised it was there, so I mention it here in the hope to spread the news a little further. Further down this road we have Event mesh and the possibility then to use events &nbsp;for external interfaces, I think many are aware of the event mesh approach, but perhaps less aware that events can be built straight into regular ABAP (this at least was the case for me and a few colleagues that I have talked with).</SPAN></P><P><SPAN>As always there are pros and cons to this approach. The pros I think are as mentioned, the looser coupling, tied then to all the advantages loose coupling brings (increased future flexibility), one of the cons comes down to the need for atomicity. If you for instance need to update a custom table within the same logical unit of work as the SAP code, then this approach will not allow for that, but I would argue that you probably should not need to be this tightly coupled to SAPs updates, this kind of thinking is what we need to move away from to keep the core clean. The other con being what if the event handling fails. Well we are told that this approach is quite robust now with 1809 support for ABAP Daemons, and so most of the negatives of this approach I think are laid to rest.</SPAN></P><P><SPAN>In my next blog (probably a month or two away) I want to focus on the enhancement options that SAP are providing for cleaning the core in S/4, and their defined methodologies that are there for helping customers decide for what solution is best for them, and how this fits in with your decoupling efforts. </SPAN></P> 2024-06-18T12:25:38.779000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/clean-core-custom-checks-in-a-production-order/ba-p/13737811 Clean Core: custom checks in a Production Order 2024-06-20T17:33:42.157000+02:00 Caetano https://community.sap.com/t5/user/viewprofilepage/user-id/121014 <P>I recently came across an interesting thread in the SAP Community, where a user was asking if he can block users to change the production order quantity. I think that this is the perfect business requirement to demonstrate how we can implement a simple custom logic that is compliant with the clean core approach.</P><P><STRONG>Note: </STRONG>If you are not familiar with clean core, I suggest that you go through the following learning journey: <A href="https://learning.sap.com/learning-journeys/practicing-clean-core-extensibility-for-sap-s-4hana-cloud/introducing-the-clean-core-approach_fcb6c662-7041-4c99-88bd-345636fae7f3" target="_blank" rel="noopener noreferrer">https://learning.sap.com/learning-journeys/practicing-clean-core-extensibility-for-sap-s-4hana-cloud/introducing-the-clean-core-approach_fcb6c662-7041-4c99-88bd-345636fae7f3</A></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="blog custom logic.png" style="width: 190px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126376i8AF1AA1A9611E5FE/image-size/medium?v=v2&amp;px=400" role="button" title="blog custom logic.png" alt="blog custom logic.png" /></span></P><P>SAP S/4HANA 2023 Private Cloud Edition introduced the new Fiori App <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('F6957')/S28OP" target="_blank" rel="noopener nofollow noreferrer">Custom Logic</A> (F6957), which allows us to create implementation of BAdIs that were released by SAP and that are clean core compatible.</P><P>You can access this app in the Fiori Launchpad if role&nbsp;SAP_BR_EXTENSIBILITY_SPEC is assigned to your user.&nbsp;</P><P>&nbsp;</P><P>In this blog we will use this app to create a new implementation of BAdI <STRONG>Manufacturing Order Check Before Save – BD_MFGORDER_CHECK_BEFORE_SAVE</STRONG>, and we will introduce a new check that will throw an error message whenever an user tries to change the order quantity, after the order creation.&nbsp;</P><P>The first step to create our BAdI implementation is to launch this app in&nbsp;the Fiori Launchpad. We will then see a list of the existing BAdI implementations, which can be managed in the app. We will then click the button <STRONG>Create</STRONG> to generate a new BAdI implementation.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom logic 2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126363iDC3A152D925DAA9F/image-size/large?v=v2&amp;px=999" role="button" title="Custom logic 2.png" alt="Custom logic 2.png" /></span></P><P>In the following screen, we will search for the extension point that will be used for our custom logic, and if we search by MFGORDER, we can find all the extension points available for manufacturing orders.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom logic 3.png" style="width: 957px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126364i9BDC941D9C1557E3/image-size/large?v=v2&amp;px=999" role="button" title="Custom logic 3.png" alt="Custom logic 3.png" /></span></P><P>We can find more information about each one of the extension points by clicking button <STRONG>View Documentation</STRONG>, where a popup screen will be shown with additional details about the BAdI, as we can see in the figure below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom Logic 4.png" style="width: 890px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126365i225A8A8F545C6021/image-size/large?v=v2&amp;px=999" role="button" title="Custom Logic 4.png" alt="Custom Logic 4.png" /></span></P><P>Step 2 is not relevant in this example, as don’t need connectors or filters, so we can go straight to step 3, where we will define the Implementation ID and provide a description.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom Logic 5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126366iCB002637B2AB045D/image-size/large?v=v2&amp;px=999" role="button" title="Custom Logic 5.png" alt="Custom Logic 5.png" /></span></P><P>After that, we should click button <STRONG>Review</STRONG>, and we will be able to see all the information about the New Implementation in a single screen. Here, we can proceed with the creation by clicking button <STRONG>Create</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom Logic 6.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126367iF1B35579119AE2AE/image-size/large?v=v2&amp;px=999" role="button" title="Custom Logic 6.png" alt="Custom Logic 6.png" /></span></P><P>With our implementation created, we need to publish it, by clicking the button <STRONG>Publish</STRONG> (might take a few seconds), and we will finally be able to branch in the editor, by clicking the <STRONG>Open Code Editor</STRONG> button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom Logic 7.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126368iDE092E50BA518459/image-size/large?v=v2&amp;px=999" role="button" title="Custom Logic 7.png" alt="Custom Logic 7.png" /></span></P><P>The code editor is quite simple, and we have the code in the left side, and the available parameters in the right side. If we click the button Show Sample Code, we can see a popup screen with a sample implementation provided by SAP, as we can see below. The code of this sample implementation is very simple, and there are comments to make it easily understandable.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom Logic 8.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126369i074D79562606D697/image-size/large?v=v2&amp;px=999" role="button" title="Custom Logic 8.png" alt="Custom Logic 8.png" /></span></P><P>I have copied the code provided from SAP, and adapted it to create my own implementation, where I’m going to compare the new order quantity with the old order quantity and thrown an error message when they are different.</P><P>Here is the code of my BAdI implementation:</P><pre class="lia-code-sample language-abap"><code>* only perform the implementation for order category is "Production Order" CHECK manufacturingorder-manufacturingordercategory = if_mfgorder_check_before_save=&gt;con_productionorder. * check if the production order quantity has been changed IF manufacturingorder-MFGORDERPLANNEDTOTALQTY &lt;&gt; manufacturingorder_old-MFGORDERPLANNEDTOTALQTY AND manufacturingorder_old-MFGORDERPLANNEDTOTALQTY &lt;&gt; 0. * add the an error message with helpful information to the message table INSERT VALUE #( messagetype = 'E' messagetext = |Production order quantity cannot be changed| ##NO_TEXT ) INTO TABLE messages. ENDIF. </code></pre><P>Here, it is important to mention that this editor uses Restricted ABAP, which does not support all the features originally available in ABAP. This <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/s-4hana-extensibility-concept-details-restricted-abap/ba-p/13189431" target="_blank">blog</A> provides more details about Restricted ABAP and the supported features.</P><P>Whenever we finish the code, we can click button <STRONG>Save and Publish</STRONG> to activate our implementation.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom Logic 9.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126370i5B4CA4E609CF00C6/image-size/large?v=v2&amp;px=999" role="button" title="Custom Logic 9.png" alt="Custom Logic 9.png" /></span></P><P>&nbsp;</P><P>With our implementation published, we can go to transaction CO02 and try to change the order quantity, to see what will happen. As shown in the figure below, an error message is triggered if we try to save an order with a different quantity.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Custom Logic 10.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126371iC85DF6B71EE99C0F/image-size/large?v=v2&amp;px=999" role="button" title="Custom Logic 10.png" alt="Custom Logic 10.png" /></span></P><P>This is just a very simple example, used to demonstrate how the Fiori App Custom Logic can be used to implement custom checks in a production order, but you can use it as a starting point for your own implementation. For example, you can add a tolerance for the quantity change, you can allow changes for orders that are not released, or you can add any check that your business need.</P><P>&nbsp;</P><P><STRONG>Brought to you by the SAP S/4HANA RIG</STRONG></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-06-20T17:33:42.157000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/customer-amp-partner-roundtable-for-sap-btp-abap-environment-14/ba-p/13741880 Customer & Partner Roundtable for SAP BTP ABAP Environment #14 2024-06-25T11:16:39.932000+02:00 iwona_hahn https://community.sap.com/t5/user/viewprofilepage/user-id/4326 <DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId-1147441053"><STRONG><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span></SPAN>&nbsp;The call for contributions for one of the upcoming roundtables is open!&nbsp;</STRONG></H3><P>&nbsp;</P><DIV><TABLE><TBODY><TR><TD>If you want to show a demo or share a use case scenario for SAP BTP ABAP Environment send us an<SPAN>&nbsp;</SPAN><A href="mailto:sap_btp_abap_environment@sap.com" target="_blank" rel="noopener nofollow noreferrer">email</A>&nbsp;and we will get back to you.</TD></TR></TBODY></TABLE><SPAN>&nbsp;</SPAN></DIV><H2 id="toc-hId-821844829">Introduction</H2><P>&nbsp;</P><DIV><SPAN class="">A</SPAN><SPAN class="">s<SPAN>&nbsp;</SPAN></SPAN><A class="" href="https://www.sap.com/products/technology-platform/abap.html" target="_blank" rel="noreferrer noopener"><SPAN class="">SAP&nbsp;BTP&nbsp;ABAP&nbsp;environment (aka Steampunk)</SPAN></A><SPAN>&nbsp;</SPAN>and ABAP Cloud<SPAN>&nbsp;</SPAN><SPAN class="">became&nbsp;more&nbsp;</SPAN><SPAN class="">and more popular</SPAN><SPAN class=""><SPAN>&nbsp;</SPAN>inside and outside of SAP, there is a high demand for rolling out the latest product news and updates, asking questions, and of course showing demos.&nbsp;</SPAN><BR /><BR /><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":light_bulb:">💡</span></SPAN>&nbsp;If you weren’t able to join one of our previous roundtables, you can find the slides presented, recordings, and further references in this<SPAN>&nbsp;</SPAN><A href="https://github.com/iwonahahn/SAP-BTP-ABAP-Environment-Roundtable/tree/main" target="_blank" rel="noopener nofollow noreferrer">GitHub repository</A>.<BR /><BR /></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="iwona_hahn_1-1711369871866.jpeg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85948i899EEF37EF74A54C/image-size/medium?v=v2&amp;px=400" role="button" title="iwona_hahn_1-1711369871866.jpeg" alt="iwona_hahn_1-1711369871866.jpeg" /></span><H2 id="toc-hId-625331324"><BR />Meeting Information<BR /><BR /></H2><STRONG>When:&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;</STRONG><BR /><UL><LI><STRONG><SPAN class="">July 30th</SPAN></STRONG>, 10:00 - 11:00 AM CET&nbsp; –<SPAN>&nbsp;</SPAN><A href="https://sap-se.zoom.us/meeting/register/tJIsdOGgpjsiH9IDXq_yv4ZPu87bQILQ4ZKW" target="_blank" rel="nofollow noopener noreferrer">Zoom Meeting</A>&nbsp;(<STRONG>please register</STRONG><SPAN>&nbsp;</SPAN>in advance)&nbsp;</LI></UL></DIV><DIV>&nbsp;</DIV><DIV><STRONG>Who:</STRONG><UL><LI>All interested&nbsp;<STRONG>customers, partners,</STRONG>&nbsp;and&nbsp;<STRONG>stakeholders</STRONG>&nbsp;are invited to join and exchange ideas and feedback with others and the product team</LI><LI><STRONG>Steampunk team</STRONG>:&nbsp;<STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/4296" target="_blank">Frank Jentsch</A></STRONG><SPAN>&nbsp;</SPAN><SPAN class="">(Product Lead for SAP BTP ABAP&nbsp;Environment), <STRONG>Daniela Fenderl</STRONG>, <STRONG>Chris Swanepoel</STRONG>,&nbsp;</SPAN><STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/4326" target="_self"><SPAN class="">Iwona Hahn</SPAN></A></STRONG>&nbsp;&amp;&nbsp;<STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/151005" target="_self">Burcu Karlidag</A></STRONG><SPAN class="">&nbsp;</SPAN><BR /><BR /></LI></UL></DIV><DIV><STRONG>Preliminary Agenda:</STRONG><BR /><UL><LI>Product news and outlook</LI><LI>Hello, ABAP Cloud! Landing Page</LI><LI>Q&amp;A</LI></UL><SPAN>Looking forward to meeting you!</SPAN></DIV><DIV>&nbsp;</DIV><DIV><A href="https://sap-se.zoom.us/meeting/register/tJIsdOGgpjsiH9IDXq_yv4ZPu87bQILQ4ZKW" target="_blank" rel="noopener nofollow noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="iwona_hahn_2-1711369871851.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85947i01677A9AE51AAC1D/image-size/medium?v=v2&amp;px=400" role="button" title="iwona_hahn_2-1711369871851.png" alt="iwona_hahn_2-1711369871851.png" /></span></A><BR /><BR /><SPAN>Check out our</SPAN><SPAN>&nbsp;</SPAN><A href="https://pages.community.sap.com/topics/btp-abap-environment" target="_blank" rel="noopener noreferrer">SAP Business Technology ABAP Environment</A><SPAN>&nbsp;page in SAP Community&nbsp;</SPAN><SPAN>for&nbsp;</SPAN><SPAN>product&nbsp;</SPAN><SPAN>updates&nbsp;</SPAN><SPAN>and&nbsp;</SPAN><SPAN>upcoming events.</SPAN><P>&nbsp;</P></DIV></DIV></DIV></DIV><DIV class="">&nbsp;</DIV> 2024-06-25T11:16:39.932000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/st05-application-programming-interface/ba-p/13634607 ST05: Application Programming Interface 2024-06-26T11:32:10.598000+02:00 ManfredMensch https://community.sap.com/t5/user/viewprofilepage/user-id/165193 <P>After a little more than one year I am now adding one more blog post to my series<SPAN>&nbsp;</SPAN><A href="https://blogs.sap.com/2023/02/24/use-st05-to-monitor-the-communication-of-the-abap-work-process-with-external-resources/" target="_blank" rel="noopener noreferrer">Use ST05 to Analyze the Communication of the ABAP Work Process with External Resources</A><SPAN>.&nbsp;</SPAN>All previous blog posts in this sequence have assumed that you work interactively with dialog transaction <STRONG><FONT face="courier new,courier">ST05</FONT></STRONG> to start and stop trace recording and to display and analyze the resulting traces. However, there may be circumstances where this approach is inconvenient, cumbersome, or outright impossible. Examples are requirements where you need to monitor regularly or even frequently the communication of multiple applications with external resources. This is certainly beneficial for the detection of regressions early in the development process so that you can counteract immediately. In other cases you may want to very restrictively limit the tracing to dedicated parts of your application which you suspect to use external entities in a way that impairs performance or scalability. In all these situations you want to use the API functions that come with the&nbsp;<STRONG><FONT face="courier new,courier">ST05</FONT></STRONG> software. They are contained in function group <STRONG><FONT face="courier new,courier">ST05_API&nbsp;</FONT></STRONG>within SAP_BASIS, also known as ABAP Platform.</P><P>In this blog post I cover the most important of these API functions and describe their intended use. The focus is very much on the technicalities of using the APIs. Please refer to my other blog posts in the series for an explanation of the&nbsp;semantics of the provided data.</P><P>The functions can be subdivided into three categories:</P><OL><LI>Functions that deal with the activation or deactivation of tracing.</LI><LI>Functions that retrieve trace records with a level of detail or aggregation that best supports your intended investigation.</LI><LI>Functions that permanently store trace records in the system's database or on your local hard disc.</LI></OL><P>&nbsp;</P><H1 id="toc-hId-859810153"><STRONG>Trace Recording</STRONG></H1><P>Let me begin with functions related to writing the trace records, especially the complementary pair of functions to start and stop trace recording.</P><H2 id="toc-hId-792379367"><!-- StartFragment --><SPAN><FONT face="courier new,courier"><STRONG>ST05_Activate_Trace</STRONG></FONT></SPAN></H2><P><SPAN>With this remote-enabled function you switch tracing on. Through the function's&nbsp;<STRONG><FONT face="courier new,courier">IMPORTING</FONT> </STRONG>parameters you specify the communication interface you want to monitor, and you set filter criteria for the events to be covered. Functionally, the parameters cover everything that is available via the SAP GUI option <EM>Activate Trace with Filter</EM> described in my blog post <A href="https://blogs.sap.com/2023/03/08/st05-activate-trace-recording-with-filter/" target="_blank" rel="noopener noreferrer">Activate Trace Recording with Filter</A>. Please visit this post for a more comprehensive explanation of the supported filter conditions.</SPAN><SPAN><BR /></SPAN></P><UL><LI><SPAN><STRONG><FONT face="courier new,courier">TRACE_TYPES&nbsp; TYPE&nbsp; ST05_API_TRACE_TYPES</FONT></STRONG><BR />With this mandatory parameter you define the trace types, i.e., the communication channels, you want to monitor. Structure&nbsp;<FONT face="courier new,courier"><STRONG>ST05_API_TRACE_TYPES</STRONG></FONT> contains Boolean fields (TRUE = 'X' ; FALSE = ' ') for all trace types supported by <STRONG><FONT face="courier new,courier">ST05</FONT></STRONG> (SQL, BUF, ENQ, RFC, HTTP, APC, AMC), and additionally for the authorization trace (AUTH) covered by <STRONG><FONT face="courier new,courier">ST01</FONT></STRONG>. The fields are called <STRONG><FONT face="courier new,courier">&lt;type&gt;_ON</FONT></STRONG>. At least one trace type must be selected, otherwise the call of the function ends with exception&nbsp;<!-- StartFragment --><FONT face="courier new,courier"><STRONG>MISSING_TRACE_TYPE</STRONG></FONT>.</SPAN></LI><LI><SPAN><FONT face="courier new,courier"><STRONG>TRACE_FILTER&nbsp; TYPE&nbsp; ST05_API_TRACE_FILTER</STRONG></FONT><BR /></SPAN><SPAN>This optional parameter allows you to precisely filter individual communication events triggered by the application which shall be traced. The default imposes no restrictions. The&nbsp;<FONT face="courier new,courier"><STRONG>TRACE_FILTER</STRONG></FONT> consists of fields:</SPAN><OL><LI><SPAN><SPAN><FONT face="courier new,courier"><STRONG>CLIENT&nbsp; TYPE&nbsp; SYMANDT</STRONG></FONT><BR />This is very new. Previously, trace recording was not client-specific but always cross-client. Now (ABAP Release 9.12 (quarterly) / 8.16 (biennially</SPAN></SPAN><SPAN>); ABAP platform 2408 (cloud) / 2025 (classic); Kernel Release 9.12) you can define the client via this field. With a closing wildcard (e.g., 00*) you can activate tracing on multiple clients matching the given pattern.</SPAN></LI><LI><SPAN><FONT face="courier new,courier"><STRONG>TRACE_USER&nbsp; TYPE&nbsp; ST05_USER_NAME_PATTERN</STRONG></FONT><BR />This field limits the trace activation to the specified back-end user. Only&nbsp;her or his activities are recorded. User name patterns with the asterisk&nbsp;*&nbsp;as a terminating wildcard character are supported.<BR /></SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">TRANSACTION_CODE&nbsp; TYPE&nbsp; PTC_TRANSACTION_CODE</FONT></STRONG><BR /><STRONG><FONT face="courier new,courier">PROGRAM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TYPE&nbsp; PTC_PROGRAM_NAME</FONT></STRONG><BR /><STRONG><FONT face="courier new,courier">RFC_FUNCTION&nbsp; &nbsp; &nbsp; TYPE&nbsp; ST05_RFC_FUNCTION_NAME</FONT></STRONG><BR /><STRONG><FONT face="courier new,courier">URL&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TYPE&nbsp; ST05_URL</FONT></STRONG><BR />With this group of four fields, you can&nbsp;limit the captured events to those that are triggered while executing a particular application. Because this application must be at the very top of the call hierarchy, you may give a value for at most one of the fields. Patterns with the asterisk&nbsp;*&nbsp;as a terminating wildcard are allowed.<BR /></SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">WP_ID&nbsp; TYPE&nbsp; PTC_WP_ID</FONT></STRONG><BR />Setting the <STRONG><FONT face="courier new,courier">WP_ID </FONT></STRONG>field&nbsp;confines the trace recording to events called from the given ABAP work process. This is hardly ever useful in an API call, i.e., there the benefit of this filter criterion is even smaller than in the SAP GUI dialog option <EM>Activate Trace with Filter</EM>.<BR /></SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">INCLUDED_TABLES&nbsp; TYPE&nbsp; ST05_OBJECT_INCL_EXCL</FONT></STRONG><BR /><STRONG><FONT face="courier new,courier">EXCLUDED_TABLES&nbsp; TYPE&nbsp; ST05_OBJECT_INCL_EXCL</FONT></STRONG><BR /><STRONG><FONT face="courier new,courier">INCLUDE_MISSING_TABLE_NAME_ON&nbsp; TYPE&nbsp; PTC_BOOLEAN</FONT></STRONG><BR />For an SQL trace, you can&nbsp;restrict the recording of SQL statements to those that work on certain database tables&nbsp;(or database views, including CDS views). You may define up to 5 tables to be included. Similarly, you can exclude up to 5 database tables. Statements accessing these excluded tables will then not be recorded. For both options, you may filter on groups of tables by terminating entries in&nbsp;</SPAN><SPAN>fields <STRONG><FONT face="courier new,courier">INCLUDED_TABLES </FONT></STRONG>or <STRONG><FONT face="courier new,courier">EXCLUDED_TABLES </FONT></STRONG>with an asterisk&nbsp;*. For implemented Open SQL&nbsp;JOINs, the table name filter applies to the first of the&nbsp;JOINed database tables. If a database table matches entries in both fields <STRONG><FONT face="courier new,courier">INCLUDED_TABLES </FONT></STRONG>and <STRONG><FONT face="courier new,courier">EXCLUDED_TABLES</FONT></STRONG>, SQL statements against this table will <U>not</U> be recorded.<BR />If you specify a table in the <STRONG><FONT face="courier new,courier">INCLUDED_TABLES</FONT></STRONG>, and also want to trace all statements that do not directly affect an individual table (e.g.,&nbsp;COMMITs,&nbsp;ROLLBACKs,&nbsp;SET SESSION VARIABLE,&nbsp;SET CLIENT INFO), you must set the Boolean field <STRONG><FONT face="courier new,courier">INCLUDE_MISSING_TABLE_NAME_ON </FONT></STRONG>to 'X'.<BR /></SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">STACK_TRACE_ON&nbsp; TYPE&nbsp; PTC_BOOLEAN</FONT></STRONG><BR />With this field you determine whether the trace records shall contain the ABAP call hierarchy for the recorded events. The advantages (and disadvantages) of this option are described in detail in my blog post <A href="https://blogs.sap.com/?p=1689314&amp;preview=true&amp;preview_id=1689314" target="_self" rel="noreferrer noopener">ST05: Basic Use</A>. For use cases that call the <STRONG><FONT face="courier new,courier">ST05</FONT></STRONG> APIs, the stack trace is typically not needed, and you should not request it to minimize the trace recording overhead.</SPAN></LI></OL></LI><LI><SPAN><STRONG><FONT face="courier new,courier">ALL_SERVERS&nbsp; TYPE&nbsp; PTC_BOOLEAN</FONT></STRONG><BR />By default, function&nbsp;<FONT face="courier new,courier"><STRONG>ST05_Activate_Trace</STRONG> <FONT face="arial,helvetica,sans-serif">starts trace recording only on the server where it is running. With the optional Boolean parameter <FONT face="courier new,courier"><STRONG>ALL_SERVERS </STRONG></FONT>you can request the activation on all application server instances of the system. This works like the option &lt;ALL&gt; for field <EM>Instance</EM>&nbsp;in the filter conditions popup when you&nbsp;<EM>Activate Trace with Filter</EM> in <FONT face="courier new,courier"><STRONG>ST05</STRONG></FONT>.&nbsp;</FONT></FONT></SPAN></LI></UL><P><SPAN>Via&nbsp;<STRONG><FONT face="courier new,courier">EXPORTING</FONT></STRONG><SPAN>&nbsp;parameter&nbsp;</SPAN><STRONG><FONT face="courier new,courier">SERVER_INFORMATION_TABLE </FONT></STRONG><FONT face="arial,helvetica,sans-serif">(of </FONT><STRONG><FONT face="courier new,courier">TYPE&nbsp; ST05_SERVER_INFORMATION_TABLE</FONT></STRONG><SPAN>), function&nbsp;</SPAN><STRONG><FONT face="courier new,courier">ST05_Activate_Trace</FONT></STRONG><SPAN>&nbsp;reports back to its caller where tracing was activated (fields <STRONG><FONT face="courier new,courier">INSTANCE</FONT> </STRONG>and <STRONG><FONT face="courier new,courier">HOST</FONT></STRONG>) and when (fields <STRONG><FONT face="courier new,courier">DATE</FONT> </STRONG>and <STRONG><FONT face="courier new,courier">TIME</FONT></STRONG>). Field <STRONG><FONT face="courier new,courier">IS_LOCAL</FONT> </STRONG>marks the application server instance where the function was executed. The <FONT face="courier new,courier"><STRONG>GUID</STRONG></FONT> will always be initial, i.e., a string of 32 zeros.</SPAN></SPAN></P><P><SPAN><SPAN>Through several <FONT face="courier new,courier"><STRONG>EXCEPTIONS</STRONG></FONT>, function&nbsp;<STRONG><FONT face="courier new,courier">ST05_Activate_Trace&nbsp;</FONT></STRONG>informs its caller if errors occurred during its runtime.</SPAN></SPAN></P><UL><LI>NO_AUTHORITY<BR /><!-- StartFragment --><SPAN>The&nbsp;user&nbsp;has insufficient&nbsp;authorizations. Required is value<!-- StartFragment --> ST0M for field&nbsp;<!-- StartFragment -->S_ADMI_FCD&nbsp;in object&nbsp;<!-- StartFragment -->S_ADMI_FCD&nbsp;.</SPAN></LI><LI>MISSING_TRACE_TYPE<BR /><!-- StartFragment --><SPAN><SPAN class="">No&nbsp;</SPAN>trace&nbsp;<SPAN class="">type&nbsp;</SPAN>has&nbsp;been&nbsp;selected, i.e., <STRONG><FONT face="courier new,courier">IMPORTING</FONT> </STRONG>parameter&nbsp;<FONT face="courier new,courier"><STRONG>TRACE_TYPES</STRONG></FONT> is <STRONG><FONT face="courier new,courier">INITIAL</FONT></STRONG>.</SPAN></LI><LI>NO_CROSS_CLIENT_TRACING<BR />Cross client tracing from an application client to another client is forbidden. An application client is recognized if a call to method&nbsp;<!-- StartFragment --><SPAN>cl_system_client_check<SPAN class="">=&gt;</SPAN>is_system_client<SPAN class="">(&nbsp;</SPAN><SPAN class="">) returns ' ' (blank). This is relevant only in systems with tenant separation.</SPAN></SPAN></LI><LI>USER_MISMATCH<BR /><!-- StartFragment --><SPAN>Tracing is already active&nbsp;<SPAN class="">for&nbsp;</SPAN>another&nbsp;user. It is not possible to change this user without first completely deactivating the trace recording.</SPAN></LI><LI>ACTIVATION_ERROR<BR />Trace recording cannot be activated for other reasons.</LI><LI>NO_SERVER_LIST<BR />This exception is not yet used, i.e., never <FONT face="courier new,courier"><STRONG>RAISE</STRONG></FONT>d.</LI><LI>INTERNAL_ERROR<BR />Some internal error prevented the trace activation.</LI></UL><H2 id="toc-hId-595865862"><!-- StartFragment --><SPAN><FONT face="courier new,courier"><STRONG>ST05_Deactivate_Trace</STRONG></FONT><BR /></SPAN></H2><P><SPAN>With this remote-enabled function you switch tracing off. Functionally, it corresponds to the SAP GUI options&nbsp;<EM>Deactivate Trace</EM>&nbsp;or <EM>Deactivate Trace on All Instances</EM>.<BR />With the function's&nbsp;<STRONG><FONT face="courier new,courier">IMPORTING</FONT> </STRONG>parameters you precisely control what the trace deactivation shall achieve.<BR /></SPAN></P><UL><LI><SPAN><SPAN><FONT face="courier new,courier"><STRONG>TRACE_TYPES&nbsp; TYPE ST05_API_TRACE_TYPES<BR />ALL&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TYPE&nbsp; PTC_BOOLEAN<BR /></STRONG><FONT face="arial,helvetica,sans-serif">With an appropriate combination of these two optional parameters you specify the trace types for which you want to deactivate the recording. Typically, this will be the set of trace types you have previously passed into function&nbsp;</FONT></FONT></SPAN></SPAN><FONT face="courier new,courier"><STRONG>ST05_Activate_Trace</STRONG></FONT><FONT face="arial,helvetica,sans-serif">. Then it will be convenient to set&nbsp;<STRONG><FONT face="courier new,courier">ALL</FONT></STRONG> to 'X' and leave&nbsp;<FONT face="courier new,courier"><STRONG>TRACE_TYPES</STRONG></FONT> initial. This is also the approach to establish clean initial conditions where all components of the <EM>System Trace</EM> (<STRONG><FONT face="courier new,courier">ST01</FONT></STRONG>) are switched off - even those not accessible to <STRONG><FONT face="courier new,courier">ST05</FONT></STRONG>. If you want to deactivate tracing only for a subset of the currently monitored communication channels, set the corresponding fields in&nbsp;<SPAN><FONT face="courier new,courier"><STRONG>TRACE_TYPES</STRONG></FONT></SPAN> to 'X'. Do not let the field names of structure&nbsp;<SPAN><FONT face="courier new,courier"><STRONG>ST05_API_TRACE_TYPES</STRONG></FONT></SPAN> confuse you: they are called&nbsp;<SPAN><STRONG><FONT face="courier new,courier">&lt;type&gt;_ON</FONT></STRONG>, but function <FONT face="courier new,courier"><STRONG>ST05_Deactivate_Trace</STRONG><FONT face="arial,helvetica,sans-serif">&nbsp;</FONT></FONT>will switch off the recording when they are set to 'X'.<BR />If both,&nbsp;<FONT face="courier new,courier"><STRONG>TRACE_TYPES</STRONG></FONT>&nbsp;and&nbsp;<STRONG><FONT face="courier new,courier">ALL</FONT></STRONG>, are initial, the function will terminate with exception <STRONG><FONT face="courier new,courier">MISSING_TRACE_TYPE</FONT></STRONG>. If <STRONG><FONT face="courier new,courier">ALL</FONT></STRONG> is set to 'X', it will overwrite whatever is passed into&nbsp;<FONT face="courier new,courier"><STRONG>ST05_Deactivate_Trace</STRONG></FONT> with parameter <FONT face="courier new,courier"><STRONG>TRACE_TYPES</STRONG></FONT>, i.e., then the content of this parameter will be ignored.</SPAN></FONT></LI><LI><STRONG><FONT face="courier new,courier">ALL_SERVERS&nbsp; TYPE&nbsp; PTC_BOOLEAN<BR /></FONT></STRONG><FONT face="arial,helvetica,sans-serif"><SPAN>If you set this optional parameter to 'X', trace recording will be switched off on all application server instances of the system.</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN><STRONG><FONT face="courier new,courier">ALL_USERS&nbsp; TYPE&nbsp; PTC_BOOLEAN</FONT></STRONG><BR /><SPAN class="">If&nbsp;</SPAN>this optional flag has the value 'X', the selected <FONT face="courier new,courier"><STRONG>TRACE_TYPES&nbsp;</STRONG></FONT>will be deactivated, independent of who activated them.<SPAN class="">&nbsp;Otherwise and if the trace recording was activated by another user, the function will terminate with exception <STRONG><FONT face="courier new,courier">DEACTIVATION_ERROR</FONT></STRONG>.</SPAN></SPAN></FONT></LI></UL><P><FONT face="arial,helvetica,sans-serif"><SPAN><SPAN class="">As with function <STRONG><FONT face="courier new,courier">ST05_Activate_Trace</FONT></STRONG>, the&nbsp;<STRONG><FONT face="courier new,courier">EXPORTING</FONT></STRONG>&nbsp;parameter&nbsp;<STRONG><FONT face="courier new,courier">SERVER_INFORMATION_TABLE </FONT></STRONG>(<STRONG><FONT face="courier new,courier">TYPE&nbsp; ST05_SERVER_INFORMATION_TABLE</FONT></STRONG>) informs callers of function&nbsp;<STRONG><FONT face="courier new,courier">ST05_Deactivate_Trace</FONT></STRONG>&nbsp;where tracing was deactivated (fields <STRONG><FONT face="courier new,courier">INSTANCE</FONT> </STRONG>and <STRONG><FONT face="courier new,courier">HOST</FONT></STRONG>) and when (fields <STRONG><FONT face="courier new,courier">DATE</FONT> </STRONG>and <STRONG><FONT face="courier new,courier">TIME</FONT></STRONG>). Field <STRONG><FONT face="courier new,courier">IS_LOCAL</FONT> </STRONG>marks the application server instance where the function was executed. The value of the&nbsp;<FONT face="courier new,courier"><STRONG>GUID</STRONG> </FONT>field identifies the trace directory entry corresponding to the just ended trace recording. Please refer to my blog post&nbsp;<A href="https://blogs.sap.com/2023/04/28/st05-trace-directory/" target="_blank" rel="noopener noreferrer">Trace Directory</A> for more details on this component of <STRONG><FONT face="courier new,courier">ST05</FONT></STRONG>.</SPAN></SPAN></FONT></P><P><SPAN><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">Similar to&nbsp;</FONT></FONT><STRONG><FONT face="courier new,courier">ST05_Activate_Trace</FONT></STRONG><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">,&nbsp;function </FONT></FONT><STRONG><FONT face="courier new,courier">ST05_Deactivate_Trace&nbsp;</FONT></STRONG>communicates errors to its caller by several <FONT face="courier new,courier"><STRONG>EXCEPTIONS</STRONG></FONT>:</SPAN></P><UL><LI>NO_AUTHORITY<BR /><!-- StartFragment --><SPAN>The&nbsp;user&nbsp;has insufficient&nbsp;authorizations. Required is value<!-- StartFragment --> ST0M for field&nbsp;<!-- StartFragment -->S_ADMI_FCD&nbsp;in object&nbsp;<!-- StartFragment -->S_ADMI_FCD&nbsp;.</SPAN></LI><LI>MISSING_TRACE_TYPE<BR /><!-- StartFragment --><SPAN><SPAN class="">No&nbsp;</SPAN>trace&nbsp;<SPAN class="">type&nbsp;</SPAN>has&nbsp;been&nbsp;selected, i.e., <STRONG><FONT face="courier new,courier">IMPORTING</FONT> </STRONG>parameters&nbsp;<FONT face="courier new,courier"><STRONG>TRACE_TYPES</STRONG></FONT>&nbsp;and&nbsp;<FONT face="arial,helvetica,sans-serif"><STRONG><FONT face="courier new,courier">ALL</FONT></STRONG></FONT>&nbsp;are&nbsp;<STRONG><FONT face="courier new,courier">INITIAL</FONT></STRONG>.</SPAN></LI><LI>DEACTIVATION_ERROR<BR />Trace recording cannot be activated for other reasons.<BR />Example: Tracing was activated by another user and parameter <STRONG><FONT face="courier new,courier">ALL_USERS</FONT> </STRONG>was not set.</LI><LI>NO_SERVER_LIST<BR />This exception is not yet used, i.e., never <FONT face="courier new,courier"><STRONG>RAISE</STRONG></FONT>d.</LI><LI>INTERNAL_ERROR<BR />Some internal error prevented the trace deactivation.</LI></UL><P>Pseudo code for a typical scenario that uses these two functions:</P><P>&nbsp;</P><pre class="lia-code-sample language-c"><code>CALL FUNCTION 'ST05_ACTIVATE_TRACE' ... . Execute some part of the application which communicates with external resource in a potentially critical way. CALL FUNCTION 'ST05_DEACTIVATE_TRACE' ... .</code></pre><P>&nbsp;</P><P>If you have passed appropriate arguments into functions&nbsp;<SPAN><STRONG><FONT face="courier new,courier">ST05_Activate_Trace&nbsp;</FONT></STRONG></SPAN>and&nbsp;<SPAN><STRONG><FONT face="courier new,courier">ST05_Deactivate_Trace</FONT></STRONG></SPAN>, you have recorded traces of your application's accesses to external resources. The corresponding trace records are stored in the file systems of the application server instances. From there you can fetch the traces for detailed analyses as described in the following section <EM>Trace Analysis</EM>.</P><H2 id="toc-hId-399352357"><STRONG><FONT face="courier new,courier">ST05_GET_TRACE_STATE</FONT></STRONG></H2><P><FONT face="arial,helvetica,sans-serif">This function (also remote-enabled) is closely related to the two functions explained above. It retrieves the current trace state from the application server instance where it was called. You would use it to convince yourself that it is possible and safe to call function <STRONG><FONT face="courier new,courier">ST05_ACTIVATE_TRACE</FONT></STRONG> without interfering with ongoing trace recordings of other users, or to double-check that previous calls to&nbsp;<STRONG><FONT face="courier new,courier">ST05_ACTIVATE_TRACE</FONT></STRONG>&nbsp; or&nbsp;<FONT face="courier new,courier"><STRONG><SPAN class="">ST05_Deactivate_Trace</SPAN></STRONG></FONT> were successful.<BR />The function's sole <STRONG><FONT face="courier new,courier">EXPORTING</FONT></STRONG> parameter&nbsp;<!-- StartFragment --><STRONG><FONT face="courier new,courier">TRACE_STATE</FONT></STRONG> of type&nbsp;<STRONG><FONT face="courier new,courier">ST05_TRACE_STATE</FONT></STRONG> has the components</FONT></P><UL><LI><STRONG><FONT face="courier new,courier"><SPAN>CLIENT&nbsp; TYPE&nbsp; SYMANDT</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>TRACE_USER&nbsp; TYPE&nbsp; ST05_USER_NAME_PATTERN</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>MODIFICATION_USER&nbsp; TYPE&nbsp; SYUNAME<BR /></SPAN></FONT></STRONG><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">Name of the user who has last changed the trace state on the local application server instance.</FONT></FONT></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>MODIFICATION_DATE&nbsp; TYPE&nbsp; DATS<BR /></SPAN></FONT></STRONG><STRONG><FONT face="courier new,courier"><SPAN>MODIFICATION_TIME&nbsp; TYPE&nbsp; TIMS<BR /></SPAN></FONT></STRONG><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">Date and Time when the trace state was last changed&nbsp;on the local application server instance.</FONT></FONT></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>TRACE_TYPES&nbsp; TYPE&nbsp; ST05_TRACE_TYPES</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>FILTER_ON&nbsp; TYPE&nbsp; PTC_BOOLEAN<BR /></SPAN></FONT></STRONG><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">Flag to indicate whether trace recording was activated with filter.</FONT></FONT></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>TRANSACTION_CODE&nbsp; TYPE&nbsp; PTC_TRANSACTION_CODE<BR /></SPAN></FONT></STRONG><STRONG><FONT face="courier new,courier"><SPAN>PROGRAM&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TYPE&nbsp; PTC_PROGRAM_NAME<BR /></SPAN></FONT></STRONG><STRONG><FONT face="courier new,courier"><SPAN>RFC_FUNCTION&nbsp; &nbsp; &nbsp; TYPE&nbsp; ST05_RFC_FUNCTION_NAME<BR /></SPAN></FONT></STRONG><STRONG><FONT face="courier new,courier"><SPAN>URL&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;TYPE&nbsp; ST05_URL</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>WP_ID&nbsp; TYPE&nbsp; PTC_WP_ID</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>INCLUDED_TABLES&nbsp; TYPE&nbsp; ST05_OBJECT_INCL_EXCL</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>EXCLUDED_TABLES&nbsp; TYPE&nbsp; ST05_OBJECT_INCL_EXCL</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>INCLUDE_MISSING_TABLE_NAME_ON&nbsp; TYPE&nbsp; PTC_BOOLEAN</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>STACK_TRACE_ON&nbsp; TYPE&nbsp; PTC_BOOLEAN</SPAN></FONT></STRONG></LI><LI><STRONG><FONT face="courier new,courier"><SPAN>PROGRESS_INDICATOR_ON&nbsp; TYPE&nbsp; PTC_BOOLEAN<BR /></SPAN></FONT></STRONG><FONT face="arial,helvetica,sans-serif">This flag has no meaning any more.</FONT></LI></UL><P><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">Structure components that are not explained in the above list correspond to the matching fields of the</FONT></FONT> <STRONG><FONT face="courier new,courier"><SPAN>IMPORTING</SPAN></FONT></STRONG> <FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">parameter</FONT></FONT><STRONG><FONT face="courier new,courier"><SPAN> TRACE_FILTER</SPAN></FONT></STRONG> <FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">of function</FONT></FONT> <STRONG><FONT face="courier new,courier"><SPAN>ST05_ACTIVATE_TRACE</SPAN></FONT></STRONG><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">. They are described above.</FONT></FONT></P><P>&nbsp;</P><H1 id="toc-hId-73756133"><STRONG>Trace Analysis</STRONG></H1><P>Let me now move on and continue with the API based processing and analysis of previously recorded traces. Three functions support different levels of detail for your investigation. I have already explained the available aggregation options in my blog post <A title="Aggregate Trace Records" href="https://community.sap.com/t5/technology-blogs-by-sap/st05-aggregate-trace-records/ba-p/13569482" target="_self">Aggregate Trace Records</A>. The most comprehensive function is&nbsp;<STRONG><FONT face="courier new,courier">ST05_GET_TRACE_TABLES</FONT></STRONG>, which supplies internal tables of trace records for all supported degrees of aggregation plus the raw format of the ABAP call stack. Function&nbsp;<STRONG><FONT face="courier new,courier">ST05_GET_SUMMARY_TABLES</FONT></STRONG> focuses on the summarized trace records, and function&nbsp;<STRONG><FONT face="courier new,courier">ST05_GET_TABLE_ACCESS_RECORDS</FONT></STRONG> only provides the database table access trace records.<BR />Functions <STRONG><FONT face="courier new,courier">ST05_GET_TRACE_TABLES</FONT></STRONG>&nbsp;and&nbsp;<STRONG><FONT face="courier new,courier">ST05_GET_SUMMARY_TABLES</FONT></STRONG> have the same <STRONG><FONT face="courier new,courier">IMPORTING</FONT></STRONG>&nbsp;parameters, a subset of which is also available to <STRONG><FONT face="courier new,courier">ST05_GET_TABLE_ACCESS_RECORDS</FONT></STRONG>.</P><UL><LI><STRONG><FONT face="courier new,courier">TRACE_TYPES&nbsp; TYPE&nbsp; ST05_TRACE_TYPES</FONT></STRONG><BR />Specify the trace types you are interested in by setting the corresponding flags&nbsp;<STRONG><FONT face="courier new,courier">&lt;type&gt;_ON</FONT></STRONG> to 'X'. The flags&nbsp;<STRONG><FONT face="courier new,courier">AUTH_ON</FONT></STRONG> and&nbsp;<STRONG><FONT face="courier new,courier">ST01_ON</FONT></STRONG> have no effect.</LI><LI><STRONG><FONT face="courier new,courier">TRACE_INTERVAL&nbsp; TYPE&nbsp; ST05_TRACE_INTERVAL</FONT></STRONG><BR />Indicate the trace period by giving its&nbsp;<STRONG><FONT face="courier new,courier">START_DATE</FONT> </STRONG>and&nbsp;<STRONG><FONT face="courier new,courier">START_TIME</FONT></STRONG>, and its&nbsp;<STRONG><FONT face="courier new,courier">END_DATE</FONT> </STRONG>and&nbsp;<STRONG><FONT face="courier new,courier">END_TIME</FONT></STRONG>. You will typically fill these fields with values obtained from functions&nbsp;<SPAN><STRONG><FONT face="courier new,courier">ST05_Activate_Trace</FONT></STRONG><FONT face="courier new,courier">&nbsp;</FONT></SPAN>and&nbsp;<SPAN><STRONG><FONT face="courier new,courier">ST05_Deactivate_Trace</FONT></STRONG></SPAN>&nbsp;via their <STRONG><FONT face="courier new,courier">EXPORTING</FONT></STRONG> parameter <FONT face="arial,helvetica,sans-serif"><SPAN><SPAN class=""><STRONG><FONT face="courier new,courier">SERVER_INFORMATION_TABLE</FONT></STRONG></SPAN></SPAN></FONT>.<BR />(Fields&nbsp;<STRONG><FONT face="courier new,courier">START_MS</FONT> </STRONG>and&nbsp;<STRONG><FONT face="courier new,courier">END_MS</FONT></STRONG>&nbsp;allow to set the beginning and end, respectively, of the trace interval to milli-second precision. They are hardly ever meaningful.)</LI><LI><FONT face="courier new,courier"><STRONG>READ_FILTER_CONDITIONS&nbsp; TYPE&nbsp; ST05_READ_FILTER_CONDITIONS<BR /></STRONG><FONT face="arial,helvetica,sans-serif">With this parameter you restrict the set of trace records to those that are associated with EPP root context IDs contained in </FONT><STRONG>EPP_ROOT_CONTEXT_ID_RANGE</STRONG><FONT face="arial,helvetica,sans-serif">. This is of limited value because you seldom know the EPP root context ID, and if you have managed to "very restrictively limit the tracing" almost all trace records will have identical&nbsp;EPP root context IDs.<BR /></FONT></FONT></LI><LI><FONT face="courier new,courier"><STRONG>GUID&nbsp; TYPE&nbsp; SYSUUID_X16</STRONG><STRONG><BR /></STRONG><FONT face="arial,helvetica,sans-serif">If you specify this parameter, the corresponding trace directory entry will be processed. T</FONT></FONT><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">he</FONT> <STRONG><SPAN>GUID </SPAN></STRONG><FONT face="arial,helvetica,sans-serif">takes precedence over the</FONT> <STRONG><SPAN>TRACE_TYPES<FONT face="arial,helvetica,sans-serif">,</FONT> TRACE_INTERVAL</SPAN></STRONG><FONT face="arial,helvetica,sans-serif">, and&nbsp;</FONT><STRONG><SPAN>READ_FILTER_CONDITIONS</SPAN></STRONG><FONT face="arial,helvetica,sans-serif">&nbsp;<SPAN class="">parameters.<BR />If flag <FONT face="courier new,courier"><STRONG>SAVE_TO_DB</STRONG></FONT> is set, and there is not yet a trace directory entry that permanently stores the trace records in the database, it will be created and identified with this <STRONG><FONT face="courier new,courier">GUID</FONT></STRONG>.</SPAN></FONT></FONT></LI><LI><STRONG><FONT face="courier new,courier">KIND&nbsp; TYPE&nbsp; CHAR4</FONT></STRONG><BR />Control the level of detail or aggregation of the trace records to be provided by the API functions. Possible values are<OL><LI><STRONG><FONT face="courier new,courier">CDS</FONT></STRONG><BR /><!-- StartFragment --><SPAN>statistics&nbsp;<SPAN class="">on&nbsp;</SPAN>CDS&nbsp;view&nbsp;usage</SPAN></LI><LI><STRONG><FONT face="courier new,courier">ALL</FONT> </STRONG>(default)<BR />all of the following levels</LI><LI><STRONG><FONT face="courier new,courier">MAIN</FONT></STRONG><BR />main trace records</LI><LI><STRONG><FONT face="courier new,courier">DET</FONT></STRONG><FONT face="arial,helvetica,sans-serif"> (not supported by function&nbsp;<STRONG><FONT face="courier new,courier">ST05_GET_SUMMARY_TABLES</FONT></STRONG>)</FONT><BR />detailed trace records</LI><LI><STRONG><FONT face="courier new,courier">DET+</FONT></STRONG> (not supported by function&nbsp;<STRONG><FONT face="courier new,courier">ST05_GET_SUMMARY_TABLES</FONT></STRONG>)<BR />detailed trace records plus kernel format of the ABAP call stack</LI><LI><STRONG><FONT face="courier new,courier">STRU</FONT></STRONG><BR />structure-identical trace records</LI><LI><STRONG><FONT face="courier new,courier">VAL</FONT></STRONG><BR />value-identical trace records</LI><LI><STRONG><FONT face="courier new,courier">TAB</FONT></STRONG><BR />table accesses trace records</LI></OL></LI><LI><STRONG><FONT face="courier new,courier">ACCEPT_INCOMPLETE_TRACE&nbsp; TYPE&nbsp; PTC_BOOLEAN</FONT></STRONG><BR />As I have described in my blog post <A href="https://community.sap.com/t5/technology-blogs-by-sap/st05-technical-background-of-trace-recording-and-analysis/ba-p/13551465" target="_self">Technical Background of Trace Recording and Analysis</A>, a trace may be partially overwritten due to the round-robin approach used internally for the trace file administration. The default behaviour of the <STRONG><FONT face="courier new,courier">ST05</FONT></STRONG> API functions in this case is to return no trace records at all. You can overrule this by setting the flag&nbsp;&nbsp;<STRONG><FONT face="courier new,courier">ACCEPT_INCOMPLETE_TRACE</FONT></STRONG> to 'X'. Then&nbsp; the functions will supply all appropriate trace records that are still available.</LI><LI><STRONG><FONT face="courier new,courier">SAVE_TO_DB&nbsp; TYPE&nbsp; PTC_BOOLEAN</FONT></STRONG><BR />Set this flag if you want the trace records to be stored in a trace directory entry on the database to ensure that they are not overwritten.<BR />This is a special option for dedicated internal purposes. If you wish to save trace records to the database I advise you to instead use the generic function <STRONG><FONT face="courier new,courier">ST05_SAVE_TRACE</FONT></STRONG>, which I describe below in section <EM>Trace Administration</EM>.</LI></UL><P><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">Function&nbsp;<FONT face="courier new,courier"><STRONG>ST05_GET_TABLE_ACCESS_RECORDS</STRONG></FONT>&nbsp;does not support&nbsp;<FONT face="courier new,courier"><STRONG>IMPORTING</STRONG></FONT> parameters <FONT face="courier new,courier"><STRONG>READ_FILTER_CONDITIONS</STRONG></FONT>, <FONT face="courier new,courier"><STRONG>KIND</STRONG></FONT>, and <FONT face="courier new,courier"><STRONG>SAVE_TO_DB</STRONG></FONT>, but offers the Boolean flag <STRONG><FONT face="courier new,courier">CONDENSE</FONT></STRONG>. I</FONT></FONT>f set to 'X', INSERTs, DELETEs, UPDATEs as well as various buffer accesses to a database table will be summarized.</P><P><SPAN>The functions'&nbsp;<STRONG><FONT face="courier new,courier">EXPORTING</FONT></STRONG> parameters provide trace records in ABAP internal tables to their callers. Please refer to my&nbsp;<A title="Aggregate Trace Records" href="https://community.sap.com/t5/technology-blogs-by-sap/st05-aggregate-trace-records/ba-p/13569482" target="_self">Aggregate Trace Records</A>&nbsp;blog post for an explanation of the fields in the underlying structures.</SPAN></P><UL><LI><SPAN><STRONG><FONT face="courier new,courier">DETAILED_RECORD_TABLE&nbsp; TYPE&nbsp; ST05_DETAILED_RECORD_TABLE</FONT></STRONG><BR />This internal table does not summarize the trace records, thus can support all conceivable investigations.&nbsp;</SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">MAIN_RECORD_TABLE&nbsp; TYPE&nbsp; ST05_MAIN_RECORD_TABLE</FONT></STRONG><BR />I have described the purpose and the most relevant fields of this level of aggregation in my&nbsp;<A title="Basic Use" href="https://community.sap.com/t5/technology-blogs-by-sap/st05-basic-use/ba-p/13554382" target="_self">Basic Use</A>&nbsp;blog post.</SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">STRUCTURE_ID_RECORD_TABLE&nbsp; TYPE&nbsp; ST05_IDENTICAL_RECORD_TABLE</FONT></STRONG><BR />For many types of investigation this is the appropriate level of detail. It perfectly balances the available information granularity with the size of the internal table. It also augments the trace records with meta data on the accessed database tables.</SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">VALUE_ID_RECORD_TABLE&nbsp; TYPE&nbsp; ST05_IDENTICAL_RECORD_TABLE</FONT></STRONG><BR />Use this internal table to detect redundant accesses to database tables. They fetch identical result sets from the database. This creates unnecessary load on the central database server and slows down the application. Please note that superfluous database accesses do not necessarily lead to value-identical trace records, i.e., even if&nbsp;<STRONG><FONT face="courier new,courier">VALUE_ID_RECORD_TABLE</FONT></STRONG> is empty, the traced application may need some performance optimization.</SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">TABLE_ACCESS_RECORD_TABLE&nbsp; TYPE&nbsp; ST05_TABLE_ACCESS_RECORD_TABLE</FONT></STRONG><BR />This internal table aggregates SQL trace records corresponding to statements of the same category (e.g., SELECT, INSERT, UPDATE, DELETE) that access a table or view. It also summarizes BUF trace records that access an object with the same number of key fields. Other trace types are not covered.</SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">KERNEL_CALL_STACK&nbsp; TYPE&nbsp; ST05_KERNEL_CALL_STACK</FONT></STRONG><BR />This is the raw format of the ABAP call hierarchy. As I have already mentioned, it is not relevant for the typical use cases that call the <STRONG><FONT face="courier new,courier">ST05</FONT></STRONG> APIs, and you should not even record it.</SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">TRACE_DIRECTORY_ENTRY&nbsp; TYPE&nbsp; PTC_DIRECTORY_ENTRY</FONT></STRONG><BR />This is only available if the <STRONG><FONT face="courier new,courier">IMPORTING</FONT></STRONG> parameter <STRONG><FONT face="courier new,courier">GUID</FONT> </STRONG>was specified. Then it contains the corresponding entry from the trace directory. For the use cases covered in this blog post, it is not&nbsp;relevant.</SPAN></LI><LI><SPAN><STRONG><FONT face="courier new,courier">INCOMPLETE_TRACE&nbsp; TYPE&nbsp; PTC_BOOLEAN</FONT></STRONG><BR />If the functions set this Boolean flag to 'X', the trace and therefore the internal tables are potentially incomplete. You want to repeat the trace recording with a more restrictive filter passed into function <STRONG><FONT face="courier new,courier">ST05_Activate_Trace</FONT></STRONG>.</SPAN></LI></UL><P><SPAN><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">Function&nbsp;<STRONG><FONT face="courier new,courier">ST05_GET_SUMMARY_TABLES</FONT></STRONG>&nbsp;does not support <STRONG><FONT face="courier new,courier">EXPORTING</FONT></STRONG>&nbsp;parameters&nbsp;<STRONG><FONT face="courier new,courier">DETAILED_RECORD_TABLE</FONT>&nbsp;</STRONG>and <STRONG><FONT face="courier new,courier">KERNEL_CALL_STACK</FONT></STRONG><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">.&nbsp;<BR /></FONT></FONT></FONT></FONT></SPAN><SPAN><FONT face="courier new,courier"><FONT face="arial,helvetica,sans-serif">Function&nbsp;<STRONG><FONT face="courier new,courier">ST05_GET_TABLE_ACCESS_RECORDS</FONT></STRONG>&nbsp;only offers </FONT><STRONG>EXPORTING</STRONG><FONT face="arial,helvetica,sans-serif"> parameters&nbsp;<FONT face="courier new,courier"><STRONG>TABLE_ACCESS_RECORD_TABLE</STRONG></FONT> and <STRONG><FONT face="courier new,courier">INCOMPLETE_TRACE</FONT></STRONG>.</FONT></FONT></SPAN></P><P>&nbsp;</P><H1 id="toc-hId--122757372"><STRONG>Trace Administration</STRONG></H1><P>With functions <STRONG><FONT face="courier new,courier">ST05_SAVE_TRACE</FONT></STRONG> and <STRONG><FONT face="courier new,courier">ST05_EXPORT_TRACE</FONT></STRONG> you can save sets of trace records to the trace directory on the database or export them to your local front end file system, respectively. In either case, this will persist the trace records so that you can analyze them even when they are no longer in the application server instance's file system.</P><P>Both functions offer <STRONG><FONT face="courier new,courier">IMPORTING</FONT></STRONG> parameters <STRONG><FONT face="courier new,courier">TRACE_TYPES</FONT></STRONG> and <STRONG><FONT face="courier new,courier">TRACE_INTERVAL</FONT></STRONG> as described above.</P><P>If you specify a <STRONG><FONT face="courier new,courier">DESCRIPTION</FONT></STRONG> when calling <STRONG><FONT face="courier new,courier">ST05_SAVE_TRACE</FONT></STRONG>, this will be used for the trace directory entry. If you leave the&nbsp;<STRONG><FONT face="courier new,courier">DESCRIPTION</FONT></STRONG> empty, the user will be prompted in a dialog to describe the set of trace records.<BR />Function&nbsp;<STRONG><FONT face="courier new,courier">ST05_SAVE_TRACE</FONT></STRONG> supports Boolean flags&nbsp;<STRONG><FONT face="courier new,courier">ACCEPT_INCOMPLETE_TRACE</FONT></STRONG>&nbsp;and <STRONG><FONT face="courier new,courier">ALL_SERVERS</FONT></STRONG>. If you set&nbsp;<STRONG><FONT face="courier new,courier">ALL_SERVERS</FONT></STRONG> = 'X' the function will go through all application server instances and save trace records that match the filter criteria into individual trace directory entries.</P><P>With function&nbsp;<STRONG><FONT face="courier new,courier">ST05_EXPORT_TRACE</FONT></STRONG> you may specify a <STRONG><FONT face="courier new,courier">GUID</FONT></STRONG>&nbsp;<!-- StartFragment --><SPAN><SPAN class="">of&nbsp;</SPAN>a&nbsp;trace&nbsp;that&nbsp;<SPAN class="">is already&nbsp;</SPAN>stored&nbsp;<SPAN class="">in&nbsp;</SPAN>the trace directory. This trace will then be exported to your hard disc, and parameters&nbsp;<STRONG><FONT face="courier new,courier">TRACE_TYPES</FONT></STRONG> and <STRONG><FONT face="courier new,courier">TRACE_INTERVAL</FONT></STRONG> will be ignored.<BR />With the <STRONG><FONT face="courier new,courier">FORMAT</FONT></STRONG> parameter you can determine whether the trace shall be exported in binary format ( value 'BIN', suitable for later re-import and further analysis with <STRONG><FONT face="courier new,courier">ST05</FONT></STRONG>), or in ASCII format (value 'CSV_*', where * indicates the aggregation level), e.g., for subsequent analysis with spreadsheet software.<BR />The <STRONG><FONT face="courier new,courier">FILE_NAME</FONT></STRONG> parameter will be used to name&nbsp;the file&nbsp;<SPAN class="">on&nbsp;</SPAN>the front&nbsp;<SPAN class="">end.&nbsp;</SPAN><SPAN class="">If no name is&nbsp;passed into function <STRONG><FONT face="courier new,courier">ST05_EXPORT_TRACE</FONT></STRONG>, it will prompt the user.</SPAN> </SPAN></P> 2024-06-26T11:32:10.598000+02:00 https://community.sap.com/t5/technology-blogs-by-members/abap-restful-application-programming-model-rap/ba-p/13743339 ABAP RESTful Application Programming Model (RAP) 2024-06-28T16:07:38.695000+02:00 Rijul_VN https://community.sap.com/t5/user/viewprofilepage/user-id/1457629 <P><STRONG><U>Introduction</U></STRONG></P><P>The SAP landscape has evolved significantly, with businesses seeking simpler, more efficient solutions that offer excellent user experiences. Many organizations remain deeply embedded in the SAP ecosystem, primarily focusing on ABAP over other languages. So, is it possible to develop feature-rich applications without other frontend languages? Yes, leveraging ABAP with RAP (ABAP Restful Application Programming) makes it possible.</P><P>Restful Application Programming is an ABAP programming model for creating business applications and services in an AS ABAP or BTP ABAP environment. RAP offers a standardized way of developing applications using Core Data Services (CDS), the modernized extended ABAP language, OData protocol, and the concept of business objects and services. RAP applications can only be created through ABAP development tools (ADT) and it’s available in SAP BTP ABAP Environment, SAP S/4 HANA Cloud, and AS ABAP &gt;=7.56.</P><P>Before digging deeper into RAP, let’s explore CDS, annotations, and business services. To illustrate these concepts, let’s create a simple read-only list report application.</P><P><STRONG><U>Developing an OData Service for simple list reporting</U></STRONG></P><P>An OData service follows the best practices for developing and consuming RESTful APIs. This service can be used in SAP Fiori applications and can also be exposed as Web APIs. Below are the steps for creating a simple list report application:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Rijul_Haridasan_0-1719405864152.png" style="width: 568px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128959i0D0B7F884BD841E5/image-dimensions/568x199?v=v2" width="568" height="199" role="button" title="Rijul_Haridasan_0-1719405864152.png" alt="Rijul_Haridasan_0-1719405864152.png" /></span></P><P>Let’s explore each step in detail by creating the application.</P><P>Sample requirement: Create a read-only list report application which shows purchase order information.</P><UL><LI>Create an interface CDS view which takes data from Purchase Order Header (EKKO) and Item (EKPO).</LI></UL><P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_2-1719405962814.png" style="width: 469px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128963i723AA4D2D8A8EEC6/image-dimensions/469x156?v=v2" width="469" height="156" role="button" title="Rijul_Haridasan_2-1719405962814.png" alt="Rijul_Haridasan_2-1719405962814.png" /></span></P><P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_5-1719406138616.png" style="width: 483px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128967iC713BC2798FA1AEC/image-dimensions/483x250?v=v2" width="483" height="250" role="button" title="Rijul_Haridasan_5-1719406138616.png" alt="Rijul_Haridasan_5-1719406138616.png" /></span></P><P>&nbsp; &nbsp; &nbsp; &nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_6-1719406201461.png" style="width: 480px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128968iF82725627F783085/image-dimensions/480x186?v=v2" width="480" height="186" role="button" title="Rijul_Haridasan_6-1719406201461.png" alt="Rijul_Haridasan_6-1719406201461.png" /></span></P><P>&nbsp;&nbsp;</P><UL><LI>Create two interface CDS views for showing master data of purchase order type and material details.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_7-1719406268505.png" style="width: 479px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128969iA2BC3F4D3689D062/image-dimensions/479x219?v=v2" width="479" height="219" role="button" title="Rijul_Haridasan_7-1719406268505.png" alt="Rijul_Haridasan_7-1719406268505.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_8-1719406312400.png" style="width: 476px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128970i4188CFAC4C729F7A/image-dimensions/476x207?v=v2" width="476" height="207" role="button" title="Rijul_Haridasan_8-1719406312400.png" alt="Rijul_Haridasan_8-1719406312400.png" /></span></P><DIV class="">&nbsp;</DIV><P>&nbsp;</P><UL><LI>Make an association between the purchase order type CDS view and material details CDS view from the purchase order header/item CDS view. The associated views will act as Search Help in the list report after applying the annotations.<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_9-1719406407548.png" style="width: 521px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128971i1A435154E00D5269/image-dimensions/521x250?v=v2" width="521" height="250" role="button" title="Rijul_Haridasan_9-1719406407548.png" alt="Rijul_Haridasan_9-1719406407548.png" /></span><P>&nbsp;</P><UL><LI>Create a consumption view on top of the Purchase Order Header/Item interface view (<STRONG>ZI_PURCHASE_ORDER_RVN</STRONG>).</LI></UL><P>The UI annotations needed for the application are written in the consumption CDS View or Metadata Extensions.</P><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_10-1719406543553.png" style="width: 474px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128973i36191613A1DC5757/image-dimensions/474x270?v=v2" width="474" height="270" role="button" title="Rijul_Haridasan_10-1719406543553.png" alt="Rijul_Haridasan_10-1719406543553.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_11-1719406620405.png" style="width: 473px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128974iC736122CB48DEA97/image-dimensions/473x115?v=v2" width="473" height="115" role="button" title="Rijul_Haridasan_11-1719406620405.png" alt="Rijul_Haridasan_11-1719406620405.png" /></span><P>&nbsp;</P><P>Now, we have the data model and the required annotations to manifest semantics for it. The next step is to create the OData service and binding the service.</P><P>To define a service, we first need to create a service definition. In service definition, we specify the CDS entities that need to be exposed. In this example, the gateway client is replaced by the service definition and service binding.</P><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_13-1719406801073.png" style="width: 500px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128977iC1F52E86F3513638/image-dimensions/500x244?v=v2" width="500" height="244" role="button" title="Rijul_Haridasan_13-1719406801073.png" alt="Rijul_Haridasan_13-1719406801073.png" /></span><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_14-1719406869451.png" style="width: 501px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128978iAC5327643E120712/image-dimensions/501x262?v=v2" width="501" height="262" role="button" title="Rijul_Haridasan_14-1719406869451.png" alt="Rijul_Haridasan_14-1719406869451.png" /></span><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_1-1719407201734.png" style="width: 498px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128984i973606333B8DF392/image-dimensions/498x96?v=v2" width="498" height="96" role="button" title="Rijul_Haridasan_1-1719407201734.png" alt="Rijul_Haridasan_1-1719407201734.png" /></span><P>As a last step, create the service binding for service definition.</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_2-1719407258464.png" style="width: 500px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128985i1E9B8BB0FC5542D6/image-dimensions/500x191?v=v2" width="500" height="191" role="button" title="Rijul_Haridasan_2-1719407258464.png" alt="Rijul_Haridasan_2-1719407258464.png" /></span><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_4-1719407352780.png" style="width: 497px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128987i0620E0281B5907F6/image-dimensions/497x302?v=v2" width="497" height="302" role="button" title="Rijul_Haridasan_4-1719407352780.png" alt="Rijul_Haridasan_4-1719407352780.png" /></span><P>Set the binding type as OData V2 – UI, since this is an OData V2 service.</P><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_8-1719407475099.png" style="width: 499px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128991iA07EFAFB74BEF9F8/image-dimensions/499x175?v=v2" width="499" height="175" role="button" title="Rijul_Haridasan_8-1719407475099.png" alt="Rijul_Haridasan_8-1719407475099.png" /></span><P>After publishing the service, the exposed entity and associated entities will be visible. Click on the entity and click the preview button to see the preview of the application.</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_9-1719407529639.png" style="width: 508px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128992iFD1B3C8B4A9F982A/image-dimensions/508x232?v=v2" width="508" height="232" role="button" title="Rijul_Haridasan_9-1719407529639.png" alt="Rijul_Haridasan_9-1719407529639.png" /></span><P>&nbsp;</P><P>Purchasing Doc Type Search Help</P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_10-1719407587236.png" style="width: 489px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128993iB4FFF6C23B36146B/image-dimensions/489x298?v=v2" width="489" height="298" role="button" title="Rijul_Haridasan_10-1719407587236.png" alt="Rijul_Haridasan_10-1719407587236.png" /></span><P>&nbsp;</P></LI></UL><P>&nbsp; &nbsp; &nbsp; &nbsp; Material Search Help</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_11-1719407636266.png" style="width: 431px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128994i9F9D6E0E816D6BCC/image-dimensions/431x265?v=v2" width="431" height="265" role="button" title="Rijul_Haridasan_11-1719407636266.png" alt="Rijul_Haridasan_11-1719407636266.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Rijul_Haridasan_12-1719407740867.png" style="width: 517px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128995i45168752B35931F6/image-dimensions/517x225?v=v2" width="517" height="225" role="button" title="Rijul_Haridasan_12-1719407740867.png" alt="Rijul_Haridasan_12-1719407740867.png" /></span></P><P>&nbsp;</P><P><STRONG><U>Conclusion</U></STRONG></P><P>This blog serves as an introduction to developing OData services for simple list reporting using the ABAP Restful Application Programming (RAP) model. By following the steps outlined, you can create a read-only list report application that showcases purchase order information. We have covered the basics of creating CDS views, defining and binding OData services, and incorporating annotations for enhanced functionality.</P><P>This is just the beginning of what you can achieve with RAP. As you explore further, you will discover more advanced features and capabilities that can help you build robust, scalable, and user-friendly applications within the SAP ecosystem.</P><P>Happy Learning and exploring the vast possibilities with RAP!</P><P>&nbsp;</P><P><EM>References</EM></P><P><A href="https://help.sap.com/docs/abap-cloud/abap-rap/abap-restful-application-programming-model" target="_blank" rel="noopener noreferrer"><EM>https://help.sap.com/docs/abap-cloud/abap-rap/abap-restful-application-programming-model</EM></A></P><P><A href="https://help.sap.com/docs/abap-cloud/abap-rap/cds-annotations" target="_blank" rel="noopener noreferrer"><EM>https://help.sap.com/docs/abap-cloud/abap-rap/cds-annotations</EM></A></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-06-28T16:07:38.695000+02:00 https://community.sap.com/t5/application-development-blog-posts/abap-sdk-for-ibm-watsonx-v1-1-0-released/ba-p/13745623 ABAP SDK for IBM watsonx v1.1.0 released 2024-06-28T16:09:55.197000+02:00 christian_bartels https://community.sap.com/t5/user/viewprofilepage/user-id/184450 <P>On March 28, 2024, IBM had published the first release of its ABAP® Software Development Kit (SDK) for IBM® watsonx™ services. The IBM watsonx AI and data platform brings together new generative AI (gen AI) capabilities powered by foundation models and traditional machine learning (ML). Using IBM Watson Machine Learning, you can build analytic models and neural networks, trained with your own data, that you can deploy for use in applications. Using IBM watsonx.ai, you can run text inference and more on Large Language Models (LLM). The SDK provides a class library that can be downloaded to SAP systems using<SPAN>&nbsp;</SPAN><A href="https://abapgit.org/" target="_blank" rel="noopener nofollow noreferrer">abapGit</A><SPAN>&nbsp;</SPAN>and comes in two flavors:</P><OL><LI><A href="https://github.com/IBM/abap-sdk-nwas-x" target="_blank" rel="noopener nofollow noreferrer">ABAP SDK for IBM watsonx, using SAP NetWeaver</A><SPAN>&nbsp;</SPAN>for the SAP Business Suite running on SAP NetWeaver 7.50 or above and for the SAP S/4HANA on-premises edition.</LI><LI><A href="https://github.com/IBM/abap-sdk-btp-x" target="_blank" rel="noopener nofollow noreferrer">ABAP SDK for IBM watsonx, using SAP BTP ABAP Environment</A><SPAN>&nbsp;</SPAN>for the SAP Business Technology Platform ABAP Environment.</LI></OL><P>On June 27, 2024, version 1.1.0 of the SDK was released by IBM. Enhancements in this release include a new method<SPAN>&nbsp;</SPAN><FONT face="courier new,courier">Text_Embeddings</FONT><SPAN>&nbsp;</SPAN>for the watsonx.ai service and the support of various update methods in the Watson Machine Learning and watsonx.ai services for SAP NetWeaver AS ABAP 7.50+. More information about the changes in version 1.1.0 can be found in the repositories in the migration document MIGRATION-V1.1.0.md.</P><P>Detailed information on how to setup and use the SDK can be found in the README.md files of the GitHub repositories. The README.md files also provide two comprehensive examples to show how the supported services can be used. An even more elaborated article about how use watsonx services with the ABAP SDK can be found in Joachim Rese's blog article<SPAN>&nbsp;</SPAN><A href="https://community.sap.com/t5/application-development-blog-posts/how-to-bring-generative-ai-to-your-abap-program-using-the-abap-sdk-for-ibm/ba-p/13694067" target="_blank">How to Bring Generative AI to Your ABAP Program Using the ABAP SDK for IBM watsonx</A>.</P> 2024-06-28T16:09:55.197000+02:00 https://community.sap.com/t5/technology-blogs-by-members/full-screen-list-in-maintenance-views/ba-p/13748628 Full screen list in Maintenance Views 2024-07-03T09:30:06.101000+02:00 MateuszAdamus https://community.sap.com/t5/user/viewprofilepage/user-id/205384 <H1 id="toc-hId-889482052">Introduction</H1><P><SPAN>Hi and welcome to my next SAP Community blog post.</SPAN></P><P><SPAN>With or without Fiori in the picture, Maintenance View is one of the main tools for maintaining SAP configuration. Reliable and easy to use, it is a proverbial workhorse. </SPAN></P><P><SPAN>However, since widescreen monitors became a standard, it has always been frustrating to me to see how much space is left unused (not to say wasted) in the list of a Maintenance View. The obvious solution was to modify the screen manually, but this was overwritten whenever a list was recreated.</SPAN></P><P><SPAN>Today, I will show you a way of making the Maintenance View list use as much space as possible, always.</SPAN></P><H1 id="toc-hId-692968547"><SPAN>Implementation</SPAN></H1><P><SPAN>To achieve this, a modification has to be done to a standard SAP include responsible for creating the screen. The include is called <FONT face="courier new,courier">MSVIMF21</FONT>.</SPAN></P><P><SPAN>The list screen is created by a function call <FONT face="courier new,courier">RPY_DYNPRO_INSERT</FONT> in two places - line 167 and 226.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mateuszadamus_0-1719914191649.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131203i54412D8554B835E0/image-size/medium?v=v2&amp;px=400" role="button" title="mateuszadamus_0-1719914191649.png" alt="mateuszadamus_0-1719914191649.png" /></span></P><P>To have a list as wide as possible, the calls' parameters have to be modified - a new screen and list size has to be provided and buttons moved (to make the room for the bigger list). This can be achieved by modifying following parameters:</P><UL><LI>HEADER - here a new maximum size for the screen has to be provided<BR /><DIV class="">&nbsp;</DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mateuszadamus_2-1719914335787.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131207i1C67738033CD2D50/image-size/medium?v=v2&amp;px=400" role="button" title="mateuszadamus_2-1719914335787.png" alt="mateuszadamus_2-1719914335787.png" /></span></LI><LI>FLDS_TO_CONT - here a new position for the Maintenance View list buttons has to be provided<UL><LI>For NAME = VIM_POSI_PUSH<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mateuszadamus_3-1719914427835.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131210iEA75385136B7BBA9/image-size/medium?v=v2&amp;px=400" role="button" title="mateuszadamus_3-1719914427835.png" alt="mateuszadamus_3-1719914427835.png" /></span></LI><LI>For NAME = VIM_POSITION_INFO<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mateuszadamus_5-1719914481434.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131212i90B8C3500E65944C/image-size/medium?v=v2&amp;px=400" role="button" title="mateuszadamus_5-1719914481434.png" alt="mateuszadamus_5-1719914481434.png" /></span></LI></UL></LI><LI>CONT - last but not least, the new size for the table with the records<BR />To be precise, HEIGHT = 198 - LINE.<BR /><DIV class="">&nbsp;</DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mateuszadamus_1-1719914631918.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131214i9D6737924A5452BB/image-size/medium?v=v2&amp;px=400" role="button" title="mateuszadamus_1-1719914631918.png" alt="mateuszadamus_1-1719914631918.png" /></span></LI></UL><P>After these changes are done, the new screen will be generated with a maximum size allowed and with resizing options checked (these are checked by default) - which makes the screen to be sized down in case of a lower resolution.</P><H1 id="toc-hId-496455042">Summary</H1><P>Thanks to this modification, a list screen of all Maintenance Views will use as much space as possible, making it easier to view and/or maintain configuration. The difference between the standard size&nbsp;and the modified size&nbsp;is clearly visible.</P><P>Standard:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mateuszadamus_0-1719915201616.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131224i759319D6D451A79B/image-size/large?v=v2&amp;px=999" role="button" title="mateuszadamus_0-1719915201616.png" alt="mateuszadamus_0-1719915201616.png" /></span></P><P>Modified:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mateuszadamus_1-1719915242253.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131226i6F9863C86E8ACC72/image-size/large?v=v2&amp;px=999" role="button" title="mateuszadamus_1-1719915242253.png" alt="mateuszadamus_1-1719915242253.png" /></span></P> 2024-07-03T09:30:06.101000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/analyzing-unexpected-runtime-behavior-of-cds-annotations-values-in-your/ba-p/13749161 Analyzing Unexpected Runtime Behavior of CDS Annotations Values in Your ABAP Data Model 2024-07-03T10:46:47.238000+02:00 wolfgang_woehrle https://community.sap.com/t5/user/viewprofilepage/user-id/190964 <P>Picture this: you've just added a CDS annotation to a data definition. But, the annotation's value isn't showing up as expected in your ABAP data model (ADM). What's your next move to analyze the runtime behavior? Are you familiar with the relevant CDS tools in ABAP development tools for Eclipse (ADT) to figure this out? If not, sit back, relax, and enjoy this blog post.</P><P>Note: You can use CDS annotations for the whole CDS object, elements, and parameters to add domain-specific metadata, like text labels, object names, layer information, switch status, and so on, to your ADM.</P><P>For more information, see <A href="https://help.sap.com/docs/abap-cloud/abap-data-models/annotations-in-abap-cds-b22c173af13f426689e977ecff7ccf2b" target="_self" rel="noopener noreferrer">Annotations in ABAP CDS</A></P><H1 id="toc-hId-889507155">Active Annotations View</H1><P>The <EM>Active Annotations</EM> view displays the whole structure of a data definition with its elements and parameters in a tree. In addition, you can see here the according active values, texts, and the names of the contributing original resources column-wise.</P><P>This means, you get here a clear overview with all the relevant information that relates to your data definition with only a few clicks. That’s great, isn’t?</P><P>For more information, see <A href="https://help.sap.com/docs/abap-cloud/abap-cds-tools-user-guide/active-annotations-view" target="_self" rel="noopener noreferrer">Active Annotations View</A></P><H2 id="toc-hId-822076369"><SPAN>Activation and Evaluation of CDS Annotations</SPAN></H2><P>When activating a CDS object, the values of the containing annotations will be saved in internal system tables. From here, they can be accessed and used for evaluation.</P><P>The evaluation of annotations is performed in a predefined order. This means, if there is a value for the same element several times provided in your ADM, the system will consider the relevant values in accordance. If the value is …</P><OL><LI>handled by a metadata extension, it will be on top. This means, no other value of this element will then be considered.</LI><LI>a direct annotation that is defined and handled in the <STRONG>actual</STRONG> data definition, this value will be considered when no value of the same element is provided by a metadata extension.</LI><LI>a indirect annotation that is selected, derived, or inherited from <STRONG>another</STRONG> data sources, this value will be considered when the cases from step 1 and 2 don’t apply.</LI></OL><P>For more information, see</P><UL><LI><A href="https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abencds_annotations_analysis.htm" target="_self" rel="noopener noreferrer">ABAP CDS - Evaluation of Annotations</A></LI><LI><A href="https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abencds_meta_data_extension_eval.htm" target="_self" rel="noopener noreferrer">ABAP CDS - Evaluation of Metadata Extensions</A></LI></UL><H2 id="toc-hId-625562864">Sample</H2><P>Here, the <EM>Active Annotation </EM>view has been opened for the <EM>CDS_View_Test_2</EM> data definition. The structure with the annotations that are defined for the whole CDS object is followed by the entity annotations that are effective for the respective elements. In addition to the values, the additional metadata, such as the annotation value, label text, and so on, is displayed column-wise.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="annotat_active.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131419i8F2F3FDB079EC785/image-size/large?v=v2&amp;px=999" role="button" title="annotat_active.png" alt="annotat_active.png" /></span></P><P>The active values are displayed in accordance to the order how the CDS annotations are evaluated. See above. Beside visualizing the ADM, you can also navigate, for example, to the origin data source from the displayed annotation value. To do this, just double-click the relevant name.</P><P>Note that you can switch between the flat and structured representation. For example, if you work with a huge ADM and you prefer a flat structure, don’t worry and just click the icon with the 3 dots in the integrated toolbar and choose <EM>Flat representation</EM>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="annotat_active_toolbar_flat.png" style="width: 791px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131420i2F327FD7662862B7/image-size/large?v=v2&amp;px=999" role="button" title="annotat_active_toolbar_flat.png" alt="annotat_active_toolbar_flat.png" /></span></P><H2 id="toc-hId-429049359">Use</H2><P>You can trigger this view for …</P><OL><LI>the complete data definition: Select the data definition in the <EM>Project Explorer</EM> or select the name of the CDS entity.</LI><LI>the complete CDS entity: Select the name of the CDS entity in the ABAP CDS source code.</LI><LI>a specific element or parameter: Select the relevant element/parameter in the ABAP CDS source code.</LI></OL><P>After your selection, choose <EM>Open With… &gt; Active Annotation </EM>from the context menu.</P><H1 id="toc-hId-103453135">Annotation Propagation View</H1><P>The <EM>Annotation Propagation</EM> view visualizes from which CDS view, ABAP Dictionary object, or metadata extension the annotation values have been merged as well as which values have not been considered in a tabular way. This means, you get a list with all relating data sources and their metadata per row.</P><P>If there is a value for the annotation from a data source, this value will then be evaluated as I have described it above. The value which will be considered is coloured black otherwise in grey.</P><P>For more information, see</P><UL><LI><A href="https://help.sap.com/docs/abap-cloud/abap-cds-tools-user-guide/annotation-propagation-view" target="_self" rel="noopener noreferrer">Annotation Propagation View</A></LI><LI><A href="https://help.sap.com/docs/abap-cloud/abap-data-models/propagation-of-annotations" target="_self" rel="noopener noreferrer">Propagation of Annotations</A></LI></UL><H2 id="toc-hId-36022349">Sample</H2><P>Here, the <EM>Annotation Propagation</EM> view has been triggered for <EM>field_4</EM> that is used in the <EM>CDS_View_Test_2</EM> data definition. The respective annotation value for this field is merged from the metadata extension <EM>CUSTOMER_EXTENSION_2 </EM>and the data definition<EM> CDS_VIEW_TEST_1</EM>. The values from higher levels are marked in black. This means, these values are active. The value from the metadata extension <EM>PARTNER_EXTENSION_2</EM> is marked in grey. This means, this value is inactive and won’t be considered.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="annotat_prop_view_1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131421iED74FB29E1CC61DC/image-size/large?v=v2&amp;px=999" role="button" title="annotat_prop_view_1.png" alt="annotat_prop_view_1.png" /></span></P><P>You can easily adapt your selection and update the content to be displayed. In the A<EM>nnotations For</EM> input field choose <EM>Browse…</EM> and add the relevant new basis.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="annotat_propagation_navi.png" style="width: 902px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131697iD23EAFE55EA86040/image-size/large?v=v2&amp;px=999" role="button" title="annotat_propagation_navi.png" alt="annotat_propagation_navi.png" /></span></P><P>In addition, you can also navigate to the displayed data source. To do this, just double-click the name of the relevant object.</P><H2 id="toc-hId--160491156">Use</H2><P>You open this view on the same way how the <EM>Active Annotation</EM> view. Open the context menu from the relevant position and choose <EM>Open With… &gt;&nbsp;</EM><EM>Annotation Propagation</EM> from the context menu. The <EM>Annotation Propagation</EM> view will then be opened in a new view below the editor.</P><H1 id="toc-hId--486087380">Data Preview</H1><P>I'm sure you're already familiar with the data preview. It shows you the values of the data records that are retrieved from your ADM on a tabular way. This helps you to get a clear overview about the values that are selected from your CDS view quickly.</P><P>For more information, see <A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/data-preview" target="_self" rel="noopener noreferrer">Data Preview</A></P><H2 id="toc-hId--553518166">Sample</H2><P>Here, the data preview has been opened for the R_TRAVEL_D data definition. It shows the data and values that are retrieved with your ADM.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview.png" style="width: 782px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131423i4677453E97223414/image-size/large?v=v2&amp;px=999" role="button" title="data_preview.png" alt="data_preview.png" /></span></P><H2 id="toc-hId--750031671">Use</H2><P>You have the following possibilities to open the data preview from the context menu.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_open_options.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131424iFC766F334A0CEC7F/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_open_options.png" alt="data_preview_open_options.png" /></span></P><P>The <EM>Data Preview…</EM> option with the 3 dots allows you to limit the number of elements to be displayed.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_open_options_deselect.png" style="width: 911px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131425iE0F0333A7E8947FD/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_open_options_deselect.png" alt="data_preview_open_options_deselect.png" /></span></P><P>This limits the number of columns and makes it more reader-friendly for you. You can change filter whenever you need it. Just select or deselect the relevant entries.</P><P>In addition, you can trigger filtering also from the integrated toolbar:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_filtering_toolbar.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131426iEA16D79C1A31A3CC/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_filtering_toolbar.png" alt="data_preview_filtering_toolbar.png" /></span></P><P>In a new tab, the filter field is then opened.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_filtering_input.png" style="width: 222px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131427i3EAFED8B5556EAB9/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_filtering_input.png" alt="data_preview_filtering_input.png" /></span></P><P>Here, you can start typing your search string.</P><P>Note that you might need to consider lower and upper case. To bring your search input into the relevant style, you can use the following shortcuts:</P><TABLE><TBODY><TR><TD width="179"><P><STRONG>Shortcut</STRONG></P></TD><TD width="359"><P><STRONG>Description</STRONG></P></TD></TR><TR><TD width="179"><P>Ctrl+Shift+X</P></TD><TD width="359"><P>Converting entries in the input field to upper case</P></TD></TR><TR><TD width="179"><P>Ctrl+Shift+Y</P></TD><TD width="359"><P>Converting entries in the input field to lower case</P></TD></TR></TBODY></TABLE><H2 id="toc-hId--599290819">Features</H2><P>When selecting an entry in the data preview, you have the following possibilities to trigger certain functionalities from the context menu:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_context_menu.png" style="width: 777px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131428iD2EAEDD97DAFC0AA/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_context_menu.png" alt="data_preview_context_menu.png" /></span></P><P>From the context menu, you can choose:</P><UL><LI>Quick Filter On</LI><LI>Distinct Values For</LI><LI>Follow Association</LI><LI>Copy / Copy All Rows As</LI></UL><H3 id="toc-hId--1089207331">Quick Filter On</H3><P>You can filter the data preview for a specific value very easily. Select the relevant value and choose <EM>Quick Filter On</EM> from the context menu.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_quick_filters.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131429iC994C42BA3F6DF68/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_quick_filters.png" alt="data_preview_quick_filters.png" /></span></P><P>Then, only the lines with the respective values are displayed.</P><H3 id="toc-hId--1285720836">Distinct Values For</H3><P>Choose this function if you want to find the duplicate values that are merged by your CDS view. Click the relevant value in the table and choose <EM>Distinct Values For</EM> in the context menu.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_distinct.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131431i60B0B0E0EAB728FC/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_distinct.png" alt="data_preview_distinct.png" /></span></P><P>You will then get an overview how often a value is duplicate in your ADM.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_distinct_value.png" style="width: 386px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131432iC0E17BC2DCAEC761/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_distinct_value.png" alt="data_preview_distinct_value.png" /></span></P><P>This list helps you investigate duplicates in your ADM. In addition, you can use it to estimate if the ADM selects the expected data.</P><H3 id="toc-hId--1482234341">Following Associations</H3><P>In the data preview, you can toggle through the association order of a value. This means, you can check from which data source the associated value is merged from. ADT will bring you to your target.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_follow_assoc_context.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131434i5B442285ED336913/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_follow_assoc_context.png" alt="data_preview_follow_assoc_context.png" /></span></P><P>After selection, the list of associations is displayed in a dialog.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_follow_assoc.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131437iAB663EC74AEDA2B4/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_follow_assoc.png" alt="data_preview_follow_assoc.png" /></span></P><P>From here you can navigate to the relevant association. If you want to get back to the original data preview, use the breadcrumb on top of the <EM>Data Preview</EM> view.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_follow_assoc_breadcrump.png" style="width: 872px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131439i9EB12FE3B4A23C7B/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_follow_assoc_breadcrump.png" alt="data_preview_follow_assoc_breadcrump.png" /></span></P><H3 id="toc-hId--1678747846">Copy Features</H3><H4 id="toc-hId-2126302938">Copy</H4><P>You can copy the content of a cell, row, or the selected column.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="data_preview_copy.png" style="width: 425px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131440i4D9629B987164B6B/image-size/large?v=v2&amp;px=999" role="button" title="data_preview_copy.png" alt="data_preview_copy.png" /></span>&nbsp;</P><H4 id="toc-hId-1929789433">Copy All Rows As</H4><P>You can copy and export all displayed row as ABAP value statement or CSV file.</P><H1 id="toc-hId--1681482347">Feedback &amp; Discussion</H1><P>Was this content helpful for you? Do you have further question? Just leave a comment below and let’s have a discussion! I look forward to hearing from you!</P> 2024-07-03T10:46:47.238000+02:00 https://community.sap.com/t5/technology-blogs-by-members/a-comprehensive-guide-to-using-ole-objects-in-sap-abap/ba-p/13748512 A Comprehensive Guide to Using OLE Objects in SAP ABAP 2024-07-03T14:37:38.532000+02:00 Yeshica https://community.sap.com/t5/user/viewprofilepage/user-id/1468973 <P>In this blog, we’ll explore how to use OLE objects in SAP ABAP to automate tasks in Microsoft Word. We will cover the basics, including how to create an OLE object, manipulate data, and handle errors.</P><P><STRONG>Introduction to OLE in SAP ABAP</STRONG></P><P>OLE Automation in ABAP enables you to control Microsoft Office applications. You can create documents, fill in data, format cells, and even run macros—all from within your ABAP programs. This is particularly useful for generating reports, exporting data, and performing complex calculations.</P><P><STRONG>Prerequisites</STRONG></P><P>Before you begin, ensure that:</P><P>You have access to a Microsoft Office installation on the machine running the SAP GUI.</P><P>You have basic knowledge of ABAP programming.</P><P><STRONG>Creating an OLE Object</STRONG></P><P>To start using OLE in ABAP, you first need to create an OLE object. The CREATE OBJECT statement in ABAP is used for this purpose.</P><H4 id="toc-hId-1276729211"><SPAN>This code will extract the data from database table ‘mara’ and populate into the word file using the concept of OLE .</SPAN></H4><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>REPORT ZTEST_BLOGYS. PARAMETERS: p_file TYPE localfile DEFAULT 'C:\Users\Yeshica.Sharma\Downloads\p0.docx'. “we are declaring file pathwhere we need to store word file. INCLUDE ole2incl.</code></pre><P>&nbsp;</P><H3 id="toc-hId-951132987"><SPAN>We are declaring data and creating ole object</SPAN></H3><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>DATA: “we are declaring data for ole object *** OLE Object gs_word TYPE ole2_object, "Word Object gs_documents TYPE ole2_object, "List of documents gs_document TYPE ole2_object, "Current / Active document gs_selection TYPE ole2_object, "Current Cursor Selection gs_actdoc TYPE ole2_object , "Active document gs_font TYPE ole2_object , "Font gs_parformat TYPE ole2_object , "Paragraph format gs_tables TYPE ole2_object , "Tables gs_table TYPE ole2_object, gs_range TYPE ole2_object, gs_cell TYPE ole2_object, gs_border TYPE ole2_object, gs_interior TYPE ole2_object, gs_application TYPE ole2_object, "Application gv_pos(5) TYPE n , "Position information for table wf_lines TYPE i, wf_counter TYPE i, lv_date TYPE char15, lv_data TYPE string, lv_copyrightdata TYPE string. "Create word object CREATE OBJECT gs_word 'WORD.APPLICATION'. * Setting object's visibility property SET PROPERTY OF gs_word 'Visible' = 1. * Opening a new document CALL METHOD OF gs_word 'Documents' = gs_documents. CALL METHOD OF gs_documents 'Add' = gs_document. * Activating the sheet CALL METHOD OF gs_document 'Activate'. * Getting active document handle GET PROPERTY OF gs_word 'ActiveDocument' = gs_actdoc. * Getting applications handle GET PROPERTY OF gs_actdoc 'Application' = gs_application. * Getting handle for the selection which is here the character at the cursor position GET PROPERTY OF gs_application 'Selection' = gs_selection. GET PROPERTY OF gs_selection 'Font' = gs_font. GET PROPERTY OF gs_selection 'ParagraphFormat' = gs_parformat.</code></pre><P>&nbsp;</P><H3 id="toc-hId-754619482">We are declaring data and getting a data from Database table Mara</H3><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>Types : Begin of ty_mara, Matnr type mara-matnr, ersda type mara-ersda, ernam type mara-ernam, end of ty_mara. data : it_mara type table of mara, wa_mara type mara. select matnr ersda ernam from mara into corresponding fields of table it_mara UP TO 5 ROWS.</code></pre><P>&nbsp;</P><H3 id="toc-hId-558105977">We are creating table and populating data into a word file</H3><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>CALL METHOD OF gs_selection 'TypeText' EXPORTING #1 = 'DATA OF MARA TABLE'. GET PROPERTY OF gs_actdoc 'Tables' = gs_tables. GET PROPERTY OF gs_selection 'Range' = gs_range. DESCRIBE TABLE it_mara LINES wf_lines. wf_lines = wf_lines + 1. IF sy-subrc NE 0. ENDIF. CALL METHOD OF gs_tables 'Add' = gs_table EXPORTING #1 = gs_range #2 = wf_lines #3 = '3'. "Columns GET PROPERTY OF gs_table 'Borders' = gs_border. SET PROPERTY OF gs_border 'Enable' = '1'. IF sy-subrc NE 0. ENDIF. CALL METHOD OF gs_table 'Cell' = gs_cell EXPORTING #1 = '1' #2 = '1'. * *setting the bg color CALL METHOD OF gs_cell 'Shading' = gs_interior. SET PROPERTY OF gs_interior 'BackgroundPatternColor' = -570376193. GET PROPERTY OF gs_cell 'Range' = gs_range. SET PROPERTY OF gs_range 'Text' = 'matnr'. CALL METHOD OF gs_range 'Font' = gs_font. SET PROPERTY OF gs_font 'Bold' = '1'. " Make the text bold CALL METHOD OF gs_range 'SetFont' = gs_font. IF sy-subrc NE 0. ENDIF. ************************* Col 2 CALL METHOD OF gs_table 'Cell' = gs_cell EXPORTING #1 = '1' #2 = '2'. * *setting the bg color CALL METHOD OF gs_cell 'Shading' = gs_interior. SET PROPERTY OF gs_interior 'BackgroundPatternColor' = -570376193. GET PROPERTY OF gs_cell 'Range' = gs_range. SET PROPERTY OF gs_range 'Text' = 'ersda'. CALL METHOD OF gs_range 'Font' = gs_font. SET PROPERTY OF gs_font 'Bold' = '1'. " Make the text bold CALL METHOD OF gs_range 'SetFont' = gs_font. IF sy-subrc NE 0. ENDIF. ********************** Col 3 CALL METHOD OF gs_table 'Cell' = gs_cell EXPORTING #1 = '1' #2 = '3'. * *setting the bg color CALL METHOD OF gs_cell 'Shading' = gs_interior. SET PROPERTY OF gs_interior 'BackgroundPatternColor' = -570376193. GET PROPERTY OF gs_cell 'Range' = gs_range. SET PROPERTY OF gs_range 'Text' = 'ernam'. CALL METHOD OF gs_range 'Font' = gs_font. SET PROPERTY OF gs_font 'Bold' = '1'. " Make the text bold CALL METHOD OF gs_range 'SetFont' = gs_font. IF sy-subrc NE 0. ENDIF. wf_counter = 1. LOOP AT it_mara INTO wa_mara. wf_counter = wf_counter + 1. CALL METHOD OF gs_table 'Cell' = gs_cell EXPORTING #1 = wf_counter #2 = '1'. GET PROPERTY OF gs_cell 'Range' = gs_range. SET PROPERTY OF gs_range 'Text' = wa_mara-matnr. IF sy-subrc NE 0. ENDIF. CALL METHOD OF gs_table 'Cell' = gs_cell EXPORTING #1 = wf_counter #2 = '2'. GET PROPERTY OF gs_cell 'Range' = gs_range. SET PROPERTY OF gs_range 'Text' = wa_mara-ersda. IF sy-subrc NE 0. ENDIF. CALL METHOD OF gs_table 'Cell' = gs_cell EXPORTING #1 = wf_counter #2 = '3'. GET PROPERTY OF gs_cell 'Range' = gs_range. SET PROPERTY OF gs_range 'Text' = wa_mara-ernam. IF sy-subrc NE 0. ENDIF. ENDLOOP. *--Advancing the cursor to the end of the table GET PROPERTY OF gs_table 'Range' = gs_range . GET PROPERTY OF gs_range 'End' = gv_pos . SET PROPERTY OF gs_range 'Start' = gv_pos . CALL METHOD OF gs_range 'Select' . DO 2 TIMES. CALL METHOD OF gs_selection 'TypeParagraph' . ENDDO. IF sy-subrc NE 0. ENDIF.</code></pre><P>&nbsp;</P><P><SPAN>Output is like below -</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Yeshica_0-1719907053754.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131131i2369486E14DC598B/image-size/medium?v=v2&amp;px=400" role="button" title="Yeshica_0-1719907053754.png" alt="Yeshica_0-1719907053754.png" /></span></P><P><STRONG>Conclusion</STRONG><BR /><SPAN><SPAN class="">Integrating OLE objects in SAP ABAP provides a seamless way to leverage the powerful functionalities of Microsoft Office applications directly within your SAP environment. By automating tasks in Excel, Word, or PowerPoint, you can enhance productivity, streamline workflows, and create dynamic reports. Understanding how to create and manipulate OLE objects in ABAP opens up a myriad of possibilities for SAP developers, allowing for the creation of sophisticated solutions that integrate the best of SAP and Microsoft Office capabilities. With the steps and examples provided, you are now equipped to start incorporating OLE automation into your ABAP programs, making your SAP applications more versatile and efficient.</SPAN></SPAN></P><P><BR />Hope this may helpful.&nbsp;</P> 2024-07-03T14:37:38.532000+02:00 https://community.sap.com/t5/technology-blogs-by-members/abap-cds-select-from-dynamic-data-source/ba-p/13748502 ABAP CDS Select from dynamic data source 2024-07-08T14:20:49.192000+02:00 AbdelrahmanZaki https://community.sap.com/t5/user/viewprofilepage/user-id/175819 <P>Hello friends,<BR /><BR />I faced a little problem while reporting in Fund Management (FM) module as the tables are generated automatically while creating derivation rules with dynamic names and differs by system /client.</P><P>The rule entries are stored in the generated table "FMFMOAXXXYYYZZZZ", where XYZ symbols means as follows:</P><UL><LI>XXX is the system specification (<STRONG>e.g., DE1 or QE1)</STRONG></LI><LI>YYY is the client number (<STRONG>e.g., 120 or 200)</STRONG></LI></UL><P>ZZZZ is the number of the derivation rule (<STRONG><STRONG><STRONG>which you should have as per your table 31, 51, 64, or 61)</STRONG></STRONG></STRONG></P><P><BR />To be able to move my report / solution I had to selecting from dynamic source which is not supported in CDS!</P><P>After investing some time I came to try it using AMDP with table function</P><P>Now let's explain it as simple as possible.&nbsp;</P><P>&nbsp;</P><P><STRONG>*Step 1 create a table function&nbsp; *</STRONG></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@EndUserText.label: 'demo table function' define table function zcds_amdp_demo_tf with parameters @Environment.systemField:#CLIENT clnt5 : abap.clnt, derivation : char4 returns { MANDT : mandt ; SOUR1_FROM : ps_posid ; SOUR1_TO : ps_posid ; VALID_FROM : abaintab ; TARGET1 : fistl; DELETE_FLG : abadrdelflag; ADDED_BY : abadrerfasser; ADDED_ON : erdat; } implemented by method zcl_amdp_demo=&gt;get_data; ​</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><STRONG><BR /><STRONG>*Step 2 Create the class <SPAN>zcl_amdp_demo*</SPAN></STRONG></STRONG></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>CLASS zcl_amdp_demo DEFINITION PUBLIC FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES: if_amdp_marker_hdb, if_oo_adt_classrun. CLASS-METHODS get_data FOR TABLE FUNCTION zcds_amdp_demo_tf. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_amdp_demo IMPLEMENTATION. METHOD get_data BY DATABASE FUNCTION FOR HDB LANGUAGE SQLSCRIPT OPTIONS READ-ONLY USING tadir. declare lv_fm_tab string; declare tablename string; declare clientnumber string; declare systemid string; declare deriv string; *must be the same data types as consuming cds also in same order declare it_fm_tab table ( MANDT nvarchar(3), SOUR1_FROM nvarchar(24), SOUR1_TO nvarchar(24), VALID_FROM nvarchar(10), TARGET1 nvarchar(16), DELETE_FLG nvarchar(1), ADDED_BY nvarchar(12), added_on nvarchar(10) ); * fmfmoaxxxyyyzzzz *fields from parameters clientnumber = clnt5; select srcsystem into systemid from tadir where pgmid = 'HEAD' and object = 'SYST'; *'COST' =&gt; Cost Element = Commitment Item *'WBSE' =&gt; wbs Element = Funds Center if derivation = 'COST' then if systemid = 'DS1' then deriv = '0051'; end if; if systemid = 'QS1' then deriv = '0062'; end if; if systemid = 'PS1' then deriv = '0051'; end if; else if systemid = 'DS1' then deriv = '0052'; end if; if systemid = 'QS1' then deriv = '0064'; end if; if systemid = 'PS1' then deriv = '0041'; end if; end if; tablename = 'FMFMOA' || systemid || clientnumber || deriv; EXECUTE immediate 'select MANDT, SOUR1_FROM, SOUR1_TO, VALID_FROM, TARGET1, DELETE_FLG, ADDED_BY, ADDED_ON from ' || tablename into it_fm_tab ; RETURN SELECT * FROM :it_fm_tab; ENDMETHOD. ENDCLASS. ​</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><STRONG><STRONG><SPAN><BR /><SPAN>*<STRONG>Step 3 and final Create a sonsumable CDS view*</STRONG></SPAN></SPAN></STRONG></STRONG></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AbapCatalog.sqlViewName: 'ZCDS_AMDP_DEMO_V' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'CDS that consuming the TF' define view zcds_amdp_demo as select from zcds_amdp_demo_tf (clnt5 : $session.client, derivation : 'COST' ) //COST =&gt; Cost Element = Commitment Item //WBSE =&gt;WBS Element = Funds Center { * }​</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>Output:</P><P>A Closer look: if you change the parameter from 'COST' to 'WBSE' the return changes which makes it dynamic selection now <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span> .. congratulations!</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AbdelrahmanZaki_0-1720444829925.png" style="width: 766px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133789i59E73C96096EA043/image-dimensions/766x324?v=v2" width="766" height="324" role="button" title="AbdelrahmanZaki_0-1720444829925.png" alt="AbdelrahmanZaki_0-1720444829925.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AbdelrahmanZaki_1-1720444858014.png" style="width: 739px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133790i4ED45EDBB7150539/image-dimensions/739x357?v=v2" width="739" height="357" role="button" title="AbdelrahmanZaki_1-1720444858014.png" alt="AbdelrahmanZaki_1-1720444858014.png" /></span></P><P>&nbsp;</P><P><STRONG><STRONG><SPAN><SPAN><STRONG><BR /></STRONG></SPAN></SPAN></STRONG></STRONG>Please feel free to comment any observations, enhancements or recommendations.</P><P><STRONG><STRONG><SPAN><SPAN><STRONG>Regards,<BR />Abdelrahman Zaki<BR /></STRONG></SPAN></SPAN></STRONG></STRONG></P> 2024-07-08T14:20:49.192000+02:00 https://community.sap.com/t5/technology-blogs-by-members/switch-framework-sap/ba-p/13755608 Switch Framework-SAP 2024-07-10T17:23:37.182000+02:00 Shruthisampath https://community.sap.com/t5/user/viewprofilepage/user-id/128334 <P>The main purpose of the Switch Framework is to simplify an ABAP-based system landscape by adopting one or more industry solutions in a standard system. The Switch Framework allows you to externally control the visibility of repository objects or their components by means of switches.</P><OL><LI>A switch&nbsp;is a repository object that controls the visibility of other repository objects.</LI><LI>A business function is a self-contained function from a business perspective and consists of a set of switches</LI><LI>A business function set&nbsp;corresponds to an industry solution and is a group of business functions</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.png" style="width: 289px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134322i6B3AECC629AE5C26/image-dimensions/289x261?v=v2" width="289" height="261" role="button" title="1.png" alt="1.png" /></span></P><P><STRONG>Switch Framework Components</STRONG></P><P>It’s possible to have child-parent relationships between the main components of the Switch Framework. Not only can you assign switches to business functions and business functions to business function sets, you also can assign business function sets to business functions and switches to business functions. Business function sets can be nested and can have superordinate and subordinate business function sets.</P><P><SPAN>&nbsp;</SPAN><STRONG>Switch</STRONG></P><P>&nbsp;A switch is the technical level of switching objects on and off. You use a switch to control the behaviour of the objects assigned to it.</P><P>Here we discuss about the creation of switches. Starting with Tcode <STRONG>SFW1</STRONG>, where we will create a new switch. In the ‘Package’ tab, we can add our package name. Here I have added my package ‘ZSWF_NEW’, where I will be saving the enhancements which I add later. Save and activate the switch.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134323i6CDF68A176CB44B8/image-size/large?v=v2&amp;px=999" role="button" title="2.png" alt="2.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134324i03D42EEE2AA64B7C/image-size/large?v=v2&amp;px=999" role="button" title="3.png" alt="3.png" /></span></P><P><STRONG>Business Function</STRONG></P><P>Next, we need to create a Business Function via the Tcode <STRONG>SFW2</STRONG>.</P><P>A Business Function is a a group/set of switches.</P><P>A business function is a building block of a business function set.</P><P>From a business perspective, it represents a self-contained function that you can switch on. From a technical point of view, it is a set of switches that assign repository objects to the business function. Business functions are switched on at a system level.</P><P>A switch controls the visibility or run time behavior of different repository objects assigned to it. A switch can have 3 states as on, off &amp; standby.</P><UL><LI>ON- The objects behave like non switchable objects.</LI><LI>OFF- The system behaves as these objects do not exists.</LI><LI>STAND BY- All dictionary objects and all static code enhancements like enhancement point point &amp; section (STATIC) are switched on but other objects are switched off.</LI></UL><P>&nbsp;</P><P>When you switch on a business function, all switches assigned to it are switched to ON or STANDBY, respectively, depending on the definition of the business function.</P><P>The business functions can be reversible and non-reversible. <STRONG>Only reversible business functions can be switched off.</STRONG></P><P><SPAN>&nbsp;</SPAN></P><P>The following types of business functions are available:</P><UL><LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Industry Business Function: always needs a business function set to be attached to</LI><LI>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enterprise Business Function: independent of business function sets</LI><LI>&nbsp;&nbsp;&nbsp;&nbsp; Enterprise Add-Ons: can no longer be created. Semantically they are the same as Enterprise Business Functions but are based on another technique.</LI></UL><P>I have created a business function with Type G which is an enterprise business function.<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134326iF9D65159C6A239BC/image-size/large?v=v2&amp;px=999" role="button" title="4.png" alt="4.png" /></span></P><P>In the Business function, I have added the switch which we have created in the previous step. See the image below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134327i1501A8D2754141D7/image-size/large?v=v2&amp;px=999" role="button" title="5.png" alt="5.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="6.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134328i571F88D95D1833BC/image-size/large?v=v2&amp;px=999" role="button" title="6.png" alt="6.png" /></span></P><P>In case if you have created an Industry Business Function, it's always needing a business function set to be attached to. Those who are following with Enterprise Business Function (as followed above) can avoid this step of creating Business function set and can continue with SFW5 to switch on business functions.</P><P><STRONG>Business Function Set</STRONG></P><P>You use a business function set to bundle business functions into your system.</P><P>Next, we need to create a Business Function Set via the Tcode <STRONG>SFW3</STRONG>.</P><P>Business Function set is a group/collection of business functions.</P><P><STRONG>Business Function Set</STRONG> is the top component of the Switch Framework and represents an industry solution that you tailor from existing solutions in the SAP system.</P><P>Add your business function to business function tab then, save and activate.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="7.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134329iF3203E6324AC4103/image-size/large?v=v2&amp;px=999" role="button" title="7.png" alt="7.png" /></span></P><P>Now, goto transaction SFW5 and expand the ENTERPRISE_BUSINESS_FUNCTIONS and below</P><P>We can see our business function, for activating switch we need to click the click box and do activate</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="8.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134330i247EE86FAB886B1D/image-size/large?v=v2&amp;px=999" role="button" title="8.png" alt="8.png" /></span></P><P>&nbsp;In this switch package we added append structure in custom table, once switch is activated, we can go and see the that append structure, it will show now <STRONG>switch on </STRONG>we can see in below image.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="9.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/134331i4608F860E4C56863/image-size/large?v=v2&amp;px=999" role="button" title="9.png" alt="9.png" /></span></P><P><STRONG>Conclusion:</STRONG></P><P>The Switch is reversable, if we want to do deactivate the switch, we need to do reversable.</P> 2024-07-10T17:23:37.182000+02:00 https://community.sap.com/t5/application-development-blog-posts/sap-oabap-programming-using-test-seam-and-test-injection/ba-p/13754281 SAP OABAP Programming using Test-seam and Test-injection 2024-07-10T17:29:17.885000+02:00 sowjanya_hr https://community.sap.com/t5/user/viewprofilepage/user-id/150944 <P><SPAN class="">I am happy to share my very first blog post on SAP OABAP Programming using T</SPAN><SPAN class="">est</SPAN><SPAN class="">-seam and Test-injection. In this blog post you will learn how to use a</SPAN><SPAN class=""> T</SPAN><SPAN class="">est</SPAN><SPAN class="">-seam and Test-injection</SPAN><SPAN class="">.&nbsp;</SPAN></P><P><STRONG><SPAN class=""><SPAN class=""><SPAN class="">Test-seam and Test-injection</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></STRONG></P><P><STRONG><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Test-seam</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></SPAN></STRONG></P><P><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Seam inserted between the statements seam and </SPAN><SPAN class="">end-seam</SPAN><SPAN class=""> in production </SPAN><SPAN class="">source code</SPAN><SPAN class="">&nbsp; </SPAN><SPAN class="">and which can be replaced by an injection when module tests are run.</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></SPAN></SPAN></P><P><STRONG><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">What is ABAP Test Seam?</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></SPAN></SPAN></SPAN></STRONG></P><P><SPAN><U>Scope of use</U> : </SPAN><SPAN>Writing test cases</SPAN><SPAN>&nbsp;</SPAN><SPAN>Test seam is an easy way to replace or extend source code in the production part of your program.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN><SPAN class=""><STRONG><SPAN class="">Replacement </SPAN></STRONG><SPAN class=""><STRONG>level</STRONG>&nbsp;</SPAN></SPAN></SPAN></P><P><SPAN><SPAN class=""><SPAN class=""><SPAN class="">In method code</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></SPAN></P><P><STRONG><SPAN class=""><SPAN class=""><SPAN class="">Test Injection life cycle</SPAN></SPAN><SPAN class="">&nbsp;</SPAN>&nbsp;</SPAN></STRONG></P><P><SPAN class=""><SPAN class=""><SPAN class="">Replacement works until the end of the test method that defines the injection</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></P><P><STRONG><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Features of Test Seam</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></SPAN></STRONG></P><UL><LI><SPAN>Test seam is ignored in production use of the program</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>A program can contain multiple test seams</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>Multiple test injection can be defines for a single test seam</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>Test seam is available for all executable units of the main program including tests including local classes and subroutines</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>Unit tests can do test injection when executing test methods or setup methods</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>If injections are repeated in the same test seam the last injection is the active injection</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN><STRONG><SPAN class=""><SPAN class="">Limitation o</SPAN><SPAN class="">f&nbsp; Test</SPAN><SPAN class=""> seam</SPAN></SPAN></STRONG><SPAN class="">&nbsp;</SPAN></SPAN></P><P><SPAN><SPAN class=""><SPAN class=""><SPAN class="">Injections can on</SPAN><SPAN class="">ly be created in test classes defined in the test included</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></SPAN></P><P><STRONG><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Scenarios used by test seam</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></SPAN></STRONG></P><UL><LI><SPAN>Authorization checks</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>Reading persistent data</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>Modifying persistent data</SPAN><SPAN>&nbsp;</SPAN></LI></UL><UL><LI><SPAN>Creating test doubles</SPAN><SPAN>&nbsp;</SPAN></LI></UL><TABLE><TBODY><TR><TD><P><STRONG>Test seam&nbsp;</STRONG></P></TD><TD><P><STRONG>Injection&nbsp;</STRONG></P></TD></TR><TR><TD><P><SPAN>TEST-SEAM </SPAN><SPAN>authorization seam</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>AUTHORITY-CHECK OBJECT </SPAN><SPAN>‘S_CTS_ADMI’</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>ID</SPAN><SPAN> ‘CTS_ADMFCT’</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>FIELD</SPAN><SPAN> ‘TABL’.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>END-TEST-SEAM</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>IF</SPAN><SPAN> sy-subrc = 0</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Is_authorized = abap_true.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>ENDIF.</SPAN><SPAN>&nbsp;</SPAN></P></TD><TD><P><SPAN>TEST-INJECTION</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>authorization</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>seam</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Sy-subrc = 0.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>END-TEST-INJECTION</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>&nbsp;</SPAN></P></TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_0-1720436076425.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133637iC0C66252AA28C7E2/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_0-1720436076425.png" alt="sowjanya_hr_0-1720436076425.png" /></span></P><P><SPAN>1. Created a class it’s having method called fetch data&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_1-1720436076428.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133638i5A07174B25FAAC12/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_1-1720436076428.png" alt="sowjanya_hr_1-1720436076428.png" /></span></P><P><SPAN>2. We need to create the local test class.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="sowjanya_hr_2-1720436076431.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133639i4F2CCB1D87C39086/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_2-1720436076431.png" alt="sowjanya_hr_2-1720436076431.png" /></span></P><P>&nbsp;</P><P><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>3. While providing the session breakpoints in the test class we can debug the ABAP unit class&nbsp;</SPAN><SPAN>&nbsp;</SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_3-1720436076433.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133641iC188614BD32BE5CC/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_3-1720436076433.png" alt="sowjanya_hr_3-1720436076433.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_4-1720436076435.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133640i70CD6A2889D03FE7/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_4-1720436076435.png" alt="sowjanya_hr_4-1720436076435.png" /></span></P><P><SPAN>4. If we click on coverage it will navigate to the debugging screen</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_5-1720436076439.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133642i7B6DA3644C4980D3/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_5-1720436076439.png" alt="sowjanya_hr_5-1720436076439.png" /></span></P><P><SPAN>5.In the ev_mara there no data will be present if we execute the code line by line </SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_6-1720436076440.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133643iA7D3D3DDA4D11DE6/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_6-1720436076440.png" alt="sowjanya_hr_6-1720436076440.png" /></span></P><P>&nbsp;</P><P>6.<SPAN>It will go to the development code</SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_7-1720436076444.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133645iE69D8086164E8DBE/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_7-1720436076444.png" alt="sowjanya_hr_7-1720436076444.png" /></span></P><P>&nbsp;</P><P>7.<SPAN>If you executed the code in the test-seam it will go to the test-injection</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_8-1720436076447.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133644iEF1E5B8A97109965/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_8-1720436076447.png" alt="sowjanya_hr_8-1720436076447.png" /></span></P><P>&nbsp;</P><P><SPAN>8.</SPAN><SPAN>There am mocking the data for the table by that ev_mara parameters will get the data</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_9-1720436076448.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133646i88C2804DC125A907/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_9-1720436076448.png" alt="sowjanya_hr_9-1720436076448.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_10-1720436076451.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133648i996CC0C48F74C468/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_10-1720436076451.png" alt="sowjanya_hr_10-1720436076451.png" /></span></P><P><SPAN>9.</SPAN><SPAN>Now the select query is successful so it’s entering sy-subrc condition</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>10.Once the code is done we need to check the coverage .</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sowjanya_hr_11-1720436076453.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/133647i72E6F9E5E5B61E70/image-size/large?v=v2&amp;px=999" role="button" title="sowjanya_hr_11-1720436076453.png" alt="sowjanya_hr_11-1720436076453.png" /></span></P><P><SPAN><STRONG>Refer the code Below</STRONG>&nbsp;</SPAN></P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>Refer the code Below METHOD fetch_data. TEST-SEAM mara. SELECT matnr mtart FROM mara INTO CORRESPONDING FIELDS OF TABLE ev_mara WHERE matnr = iv_matnr. END-TEST-SEAM. IF sy-subrc = 0. MESSAGE 'Record found' type 'S'. ELSE. MESSAGE 'Record not found' type 'E'. ENDIF. ENDMETHOD. *"* use this source file for your ABAP unit test classes CLASS lcl_test DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT. PUBLIC SECTION. METHODS : _fetch_data FOR TESTING. PRIVATE SECTION. METHODS : setup , teardown. DATA : lo_fcut TYPE REF TO zsh_cl_test_seam1. ENDCLASS. CLASS lcl_test IMPLEMENTATION. METHOD setup. CREATE OBJECT lo_fcut. ENDMETHOD. METHOD teardown. FREE : lo_fcut. ENDMETHOD. METHOD _fetch_data. DATA : ev_mara TYPE zsh_cl_test_seam1=&gt;tt_mara, lv_matnr TYPE matnr. lv_matnr = 'CM-FL-V00'. "=======Mocking the data using test injection. TEST-INJECTION mara. ev_mara = VALUE #( ( matnr = 'CM-FL-V00' mtart = 'KMAT' ) ( matnr = 'CM-FL-V01' mtart = 'KMAT' ) ( matnr = 'CM-MLFL-KM-VXX' mtart = 'KMAT' ) ). END-TEST-INJECTION. lo_fcut-&gt;fetch_data( EXPORTING iv_matnr = lv_matnr " Material Number IMPORTING ev_mara = ev_mara ). cl_abap_unit_assert=&gt;assert_equals( EXPORTING act = ev_mara " Data object with current value exp = ev_mara " Data object with expected type ). ENDMETHOD. ENDCLASS. </code></pre><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>We have a standard class for test seam and injection</STRONG></P><P><STRONG><SPAN>CL_AU_SAMPLE_TEST_SEAMS</SPAN><SPAN>&nbsp;</SPAN></STRONG></P><P>&nbsp;</P> 2024-07-10T17:29:17.885000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/watch-the-replays-of-our-exclusive-sap-s-4hana-cloud-public-edition-2408/ba-p/13757250 Watch the Replays of Our Exclusive SAP S/4HANA Cloud Public Edition 2408 Early Release Series 2024-07-12T17:15:51.644000+02:00 maria_silipo https://community.sap.com/t5/user/viewprofilepage/user-id/805536 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_ERS_Replays.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/135035iC8CD1BC4EE3E50F6/image-size/large?v=v2&amp;px=999" role="button" title="2408_ERS_Replays.png" alt="2408_ERS_Replays.png" /></span></P><P style=" text-align : left; "><SPAN>With SAP S/4HANA Cloud Public Edition, we offer a&nbsp;</SPAN><STRONG>fully-fledged cloud ERP&nbsp;</STRONG>that optimizes processes and helps your business to run smoothly. We as the Cloud ERP PSCC organization strive to enable our valued customers and partners to take full advantage of the benefits our solution brings for the intelligent, sustainable enterprise.</P><P><SPAN>Therefore, we offer a variety of enablement assets to explain the features and functions of each new release and make sure that you get the maximum value out of your investment.<BR /><BR />The&nbsp;<STRONG>SAP S/4HANA Cloud Public Edition Early Release Series</STRONG>&nbsp;is a series of&nbsp;<STRONG>compelling&nbsp;live product expert sessions&nbsp;</STRONG>that takes place twice a year and is designed&nbsp;<STRONG>by product experts for product experts</STRONG>&nbsp;to give customers, partners, and colleagues a special insider’s preview into the highlights for selected lines of business and industries,&nbsp;<STRONG>1-2 weeks before the actual release</STRONG>. In a span of multiple days, we give you the opportunity to see the latest demos, ask your questions, and get answers straight from the product experts before everyone else.<BR /><BR /><STRONG>From July 8 to July 12</STRONG>, we hosted a series of&nbsp;<STRONG>20 compelling live sessions</STRONG>&nbsp;to highlight the exciting innovations shipped with the&nbsp;<STRONG>SAP S/4HANA Cloud Public Edition 2408&nbsp;release</STRONG>. Missed the live sessions? We've got you covered! Take advantage of the entire series or pick and choose the sessions most relevant to you.<BR /><STRONG><BR />Don't miss this chance and watch them on demand&nbsp;– anywhere, anytime.</STRONG></SPAN></P><P>&nbsp;</P><TABLE border="1" width="76.12262521588947%"><TBODY><TR><TD width="51.3385146804836%" height="30px">Artificial Intelligence and Technologies</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/psbj0w" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Two-Tier ERP</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/nos4tk" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Manufacturing</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/vij56g" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">SAP Activate, SAP Cloud ALM, Test Automation Tool</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/37gkwo" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Enterprise Portfolio and Project Management</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/4uvam3" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Cross Technology Topics</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/roccqo" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Professional Services</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/jh99o5" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Product Compliance</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/96r46d" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Sourcing and Procurement</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/dct7lf" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Asset Management</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/8q2kea" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">SAP User Experience</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/grk4a1" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Public Sector Management</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/bkt6iy" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Service</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/08regv" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Extensibility</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/iqmr48" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Sales</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/vth88r" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Solution Orders and Subscription Billing</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/2ucy18" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Finance</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/u4v5j0" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Supply Chain Management</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/xqb4j9" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Governance, Risk, and Compliance</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/b5owbh" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR><TR><TD width="51.3385146804836%" height="30px">Environment, Health, and Safety</TD><TD width="24.784110535405873%" height="30px"><A href="https://url.sap/2ffs6n" target="_self" rel="nofollow noopener noreferrer">Watch here</A></TD></TR></TBODY></TABLE><P style=" text-align : left; ">&nbsp;</P><P style=" text-align : left; "><SPAN>Find the recordings of previous live sessions&nbsp;<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="_self">here</A>,&nbsp;<A href="https://blogs.sap.com/2023/07/20/watch-the-replays-of-our-exclusive-sap-s-4hana-cloud-public-edition-2308-early-release-series/" target="_self" rel="noopener noreferrer">here</A>, and&nbsp;<A href="https://blogs.sap.com/2020/11/11/sap-s-4hana-cloud-early-release-series-watch-replays-on-demand/" target="_self" rel="noopener noreferrer">here</A>.<A href="https://blogs.sap.com/2020/11/11/sap-s-4hana-cloud-early-release-series-watch-replays-on-demand/" target="_blank" rel="noopener noreferrer"><BR /><BR /></A></SPAN></P><H3 id="toc-hId-1148537461"><STRONG>How to Sign Up for the SAP Enterprise Support Edition as a Customer/Partner</STRONG></H3><P style=" text-align : left; "><SPAN>In order to watch the recordings, you will need to have an active SAP Learning Hub license with at least the SAP Enterprise Support Edition. Find out how to register for the SAP Enterprise Support edition in case you don’t already have access to any of the editions yet:</SPAN></P><UL class="lia-list-style-type-disc"><LI>Navigate to the&nbsp;<A href="https://support.sap.com/en/offerings-programs/enterprise-support/enterprise-support-academy/learn.html" target="_blank" rel="noopener noreferrer">sign up page<STRONG>&nbsp;</STRONG></A></LI><LI>Click the&nbsp;Sign up&nbsp;button. Authenticate yourself with your s-user ID and password. Upon first access, the system will check your eligibility, create a new SAP Learning Hub user, and populate your learning catalog respectively. Within two hours, you will then receive a registration confirmation via e-mail.</LI><LI>After you have received the confirmation e-mail, the registration process is complete.</LI></UL><P>Partners can access the recordings through an SAP Partner Edge Edition.</P><P><STRONG>How to Sign Up for the Internal Edition as an SAP Employee</STRONG></P><P style=" text-align : left; ">In order to watch the recordings, you will need to have an SAP Learning Hub license. In case you have no edition assigned to your profile, please<SPAN>&nbsp;</SPAN><A href="https://training.sap.com/content/LearningHubInternalEdition" target="_self" rel="noopener noreferrer">register here</A>&nbsp;for the Internal Edition which is free of charge.</P><P style=" text-align : left; ">Make sure to be logged onto the SAP Learning Hub before opening the URL. In case the link doesn't open, copy and paste it into your browser. If you face any other issues with your login, please contact the<SPAN>&nbsp;</SPAN><A href="https://learninghub.sap.com/help-center" target="_self" rel="noopener noreferrer">help center.</A></P><P style=" text-align : left; ">Follow the<SPAN>&nbsp;</SPAN><A href="https://blogs.sap.com/tags/67837800100800007389/" target="_self" rel="noopener noreferrer">SAP S/4HANA Cloud Public Edition tag</A>&nbsp;and the&nbsp;<A href="https://community.sap.com/t5/tag/PSCC_Enablement/tg-p/board-id/erp-blog-sap" target="_self">PSCC_Enablement tag</A>&nbsp;to stay up to date with the latest blog posts.&nbsp;</P><P style=" text-align : left; ">Follow us on&nbsp;<A href="https://x.com/sap" target="_self" rel="nofollow noopener noreferrer">@SAP</A>&nbsp;and #S4HANA, and myself on<SPAN>&nbsp;</SPAN><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/805536" target="_self">here</A>,&nbsp;<A href="https://www.linkedin.com/in/maria-silipo-0111b7177/" target="_self" rel="nofollow noopener noreferrer">LinkedIn</A>, and&nbsp;<A href="https://x.com/m_silipo" target="_self" rel="nofollow noopener noreferrer">X</A>.</P><P><span class="lia-unicode-emoji" title=":studio_microphone:">🎙</span>️ Inside SAP S/4HANA Cloud</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. <SPAN><A href="https://podcast.opensap.info/inside-sap/" target="_blank" rel="noopener nofollow noreferrer">Subscribe now</A></SPAN> and benefit from the shared knowledge!</P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":laptop_computer:">💻</span>openSAP Microlearnings for SAP S/4HANA Cloud</P><P>Our openSAP microlearnings for SAP S/4HANA Cloud offer an exciting new learning opportunity. What began with a small batch of 20 videos, has now become a channel with more than 50 microlearnings that have generated over 20,000 views. Today, we cover multiple lines of business such as finance, manufacturing, and supply chain management, and key technology topics like Master Data Management, extensibility, SAP User Experience, and upgrade management. We are continuously adding new microlearnings to <SPAN><A href="https://blogs.sap.com/2020/05/07/boost-your-knowledge-with-sap-s-4hana-microlearnings/" target="_blank" rel="noopener noreferrer">our channel</A></SPAN>, so make sure you check them out.</P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":speaking_head:">🗣</span>️ Your Voice Matters</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 <SPAN><A href="https://community.sap.com" target="_blank">interactive community</A></SPAN> 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>&nbsp;</P><P><span class="lia-unicode-emoji" title=":magnifying_glass_tilted_right:">🔎</span>Find All of Our Assets</P><P>SAP S/4HANA Cloud is the foundation of the intelligent, sustainable enterprise and is an innovative, robust, and scalable ERP. We at Cloud ERP Product Success and Cloud Co-Innovation offer a service as versatile as our product itself. Check out the numerous offerings our team has created for you below:</P><P>&nbsp;</P><P><A href="https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="EnablementWheel_072024.png" style="width: 336px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/135048i2382B6EDA13A159D/image-size/medium?v=v2&amp;px=400" role="button" title="EnablementWheel_072024.png" alt="EnablementWheel_072024.png" /></span></A></P><P>&nbsp;</P><P><span class="lia-unicode-emoji" title=":direct_hit:">🎯</span>Where to Find More Information:</P><UL><LI>Explore the ready-to-run cloud ERP here: <SPAN><A href="https://www.sap.com/products/erp/s4hana.html" target="_blank" rel="noopener noreferrer">https://www.sap.com/products/erp/s4hana.html</A></SPAN></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" target="_blank" rel="noopener nofollow noreferrer">https://www.youtube.com/playlist?list=PLWV533hWWvDnnyN2j-CcUheNN-GaNCb3H</A></SPAN></LI><LI>Check out our digital enablement wheel here: <SPAN><A href="https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset" target="_blank" rel="noopener nofollow noreferrer">https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset</A></SPAN></LI><LI>Listen to our podcast here: <SPAN><A href="https://podcast.opensap.info/inside-sap/" target="_blank" rel="noopener nofollow noreferrer">https://podcast.opensap.info/inside-sap/</A></SPAN></LI><LI>Watch our openSAP microlearnings to learn about SAP S/4HANA Cloud topics at your own pace here: <SPAN><A href="https://microlearning.opensap.com/" target="_blank" rel="noopener noreferrer">https://microlearning.opensap.com/</A></SPAN></LI><LI>Find best practices on SAP S/4HANA Cloud Public Edition here: <SPAN><A href="https://me.sap.com/processnavigator/SolS/EARL_SolS-013/latest?region=DE" target="_blank" rel="noopener noreferrer">https://me.sap.com/processnavigator/SolS/EARL_SolS-013/latest?region=DE</A></SPAN></LI><LI>Check out what’s new here: <SPAN><A href="https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/ce01d82756b947a1a043a5d5a3204226</A></SPAN> <SPAN>&nbsp;</SPAN></LI><LI>Find help here: <SPAN><A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_S4HANA_CLOUD</A></SPAN></LI><LI>Read the feature scope description here: <SPAN><A href="https://help.sap.com/doc/7c9e0bbbd1664c2581b2038a1c7ae4b3" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/7c9e0bbbd1664c2581b2038a1c7ae4b3</A></SPAN></LI></UL><P>&nbsp;</P> 2024-07-12T17:15:51.644000+02:00 https://community.sap.com/t5/technology-blogs-by-members/grounding-is-all-you-need/ba-p/13759827 Grounding is All You Need 2024-07-13T16:10:50.558000+02:00 LeonardoAraujo https://community.sap.com/t5/user/viewprofilepage/user-id/400 <P class="">Hey everyone,</P><P class="">Following my last blog post&nbsp;(<A class="" href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/sapphire-2024-my-impressions-and-vision-on-what-is-ahead-for-us/ba-p/13731502" target="_blank">SAPPHIRE 2024 – My impressions and vision on what is ahead for us</A>), I want to dive into something crucial that SAP needs to address ASAP: Groundings. Let me explain why this is so important.</P><P class="">&nbsp;</P><P class=""><STRONG>What Are Groundings?</STRONG></P><P class="">In the world of Generative AI (GenAI), one of the key building blocks is Groundings, also known as knowledge bases. Groundings enable a technique called RAG (Retrieval Augmented Generation) to expand the knowledge of a Large Language Model (LLM). Here’s why this matters:</P><UL><LI><STRONG>LLM Data Cutoff</STRONG>: LLMs have a cutoff date for the data they can access. They know a lot up to a certain date, but not beyond.</LI><LI><STRONG>Limited Knowledge on Private Data</STRONG>: LLMs might lack information on personal or company-specific data.</LI><LI><STRONG>Specific Application Data</STRONG>: Sometimes, you need to add very specific application data that LLMs don’t know.</LI></UL><P class="">&nbsp;</P><P class="">With RAG, we query vector databases to pre-select semantically related information and pass it to the LLM for additional context. This process is hugely beneficial.</P><P class="">&nbsp;</P><P class=""><STRONG>The Need for SAP to Build Groundings</STRONG></P><P class="">&nbsp;</P><P class="">While we’re all working on building our own groundings, there are some that SAP should create and publish. Here are the most pressing ones I can think of:</P><P class="">&nbsp;</P><OL><LI><STRONG>HELP.SAP.COM</STRONG>: Groundings on help.sap would allow us to create chatbots that can easily answer user queries. This is likely a foundation grounding of Joule, but we all need this. Handling different versions and products is a challenge, but it’s workable. Groundings should be created by product/version.</LI><LI><STRONG>SAP Training Documentation</STRONG>: This is more complex due to the variety of data types, but incredibly valuable. It extends far beyond what HELP.SAP covers.</LI><LI><STRONG>ABAP (or Other Technical) Documentation</STRONG><SPAN>: While SAP has mentioned working on a fine-tuned LLM version, a grounding with numerous referenceable examples would greatly improve quality. Current LLM-generated ABAP examples often display questionable examples.</SPAN></LI><LI><STRONG>SAP API Documentation</STRONG><SPAN>: Detailed explanations on the function and usage of all SAP APIs would be an incredible addition for functional, ABAP, and integration developers. "Is there an API to perform X?" "How do I call this particular API?"</SPAN></LI><LI><STRONG>S/4 Data Model</STRONG><SPAN>: Though more complex to structure, a grounding with all SAP tables, their descriptions, and relations to supporting tables would be beneficial. Utilizing the CDS views repository could be a starting point. "How do I determine delivery status for sales order items?"</SPAN></LI><LI><STRONG>COMMUNITY.SAP.COM</STRONG><SPAN>: There’s a wealth of great content in blogs and forum conversations that could be turned into groundings.</SPAN></LI><LI><STRONG>SAP Support Tickets</STRONG><SPAN>: While sensitive, anonymized support tickets could be made available to customers and partners, significantly reducing support costs across the ecosystem. I’d be willing to pay for that.</SPAN></LI></OL><P class=""><STRONG>How SAP Can Make Groundings Available</STRONG></P><P class="">&nbsp;</P><P class="">SAP could build and offer these groundings in several ways:</P><UL><LI><STRONG>For Free</STRONG>: Some of it could be offered for free. <span class="lia-unicode-emoji" title=":slightly_smiling_face:">🙂</span></LI><LI><STRONG>GenAI Hub</STRONG><SPAN>: Groundings could be integrated into the GenAI Hub, increasing the platform’s value.</SPAN></LI><LI><STRONG>Licensed Access</STRONG><SPAN>: Groundings could be licensed and charged based on access, allowing consumption anywhere.</SPAN></LI></UL><P class="">&nbsp;</P><P class=""><STRONG>Conclusion</STRONG></P><P class="">These are just a few examples of the groundings SAP could develop to enhance our tools and workflows. It’s time for SAP to step up and help us all achieve more with GenAI.</P><P class="">&nbsp;</P><P class="">Tchau for now!</P><P class="">&nbsp;</P><P class="">Leo</P> 2024-07-13T16:10:50.558000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/innovations-highlights-from-sap-business-technology-platform-sapphire-2024/ba-p/13750569 Innovations Highlights from SAP Business Technology Platform - Sapphire 2024 2024-07-17T10:55:19.306000+02:00 Stephanie_Stang https://community.sap.com/t5/user/viewprofilepage/user-id/10354 <P>Sapphire is always a highlight. But this year it was a special Sapphire. With this year´s event theme "Bring Out Your Best" our latest business AI innovations, products, and partnerships were highlighted. Take a look at <SPAN>this blog post where I want to focus on the most important announcements of SAP BTP at Sapphire 2024 (also non-AI related). In addition let´s explore innovation highlights coming up in the future. Enjoy reading on.</SPAN></P><H3 id="toc-hId-1148331847"><STRONG><SPAN class="">Clean Core Strategy with New SAP Build and ABAP Cloud Features</SPAN></STRONG></H3><P>Following a clean core strategy means keeping your systems as unmodified as possible and creating your custom code in a way that does not effect upgrades and adoption of the latest innovations. But there is still the need to tailor your systems to your own businesses. To achieve this, we recommend that you go for side-by-side extensibility scenarios with SAP BTP, meaning that you build your own extensions to SAP systems on SAP BTP, whenever possible. SAP BTP offers three main options for this scenario: SAP Build low-code solutions, SAP Build Code and SAP BTP ABAP Environment.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="SAP build Code with Joule - customer loyalty app.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/137607i19BBCCDE5FFE2A8A/image-size/medium?v=v2&amp;px=400" role="button" title="SAP build Code with Joule - customer loyalty app.png" alt="SAP build Code with Joule - customer loyalty app.png" /></span>If we look at ABAP, the first highlight is the Joule´s ABAP Developer capabilities, which will contain multiple features all tailored to increase developer efficiency. It will be the GitHub Copilot for the ABAP world embedded directly into the ABAP Development Tools in Eclipse (ADT). You will receive functionality embedded into wizards and an integrated chat. Planned GenAI features are explain ABAP code and CDS code, test and test data generation for ABAP and CDS, ABAP code completion, and many more.&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="SAP Build in S4HANA.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/137608i886D912CDEEF5B59/image-size/medium?v=v2&amp;px=400" role="button" title="SAP Build in S4HANA.png" alt="SAP Build in S4HANA.png" /></span>To simplify this process, we are building a way to access SAP Build directly from S/4HANA. Providing the ability to access SAP Build directly and with context from SAP S/4HANA, your development teams and their business stakeholders will be able to create new processes and process extensions much faster and more convenient than in the past.&nbsp;</P><H3 id="toc-hId-951818342">&nbsp;</H3><H3 id="toc-hId-755304837">&nbsp;</H3><H3 id="toc-hId-558791332"><STRONG>Guided experiences in&nbsp;</STRONG><STRONG>SAP Build Work Zone</STRONG></H3><P><SPAN class="">In addition the Guided experiences in&nbsp;SAP Build Work Zone&nbsp;let developers create step-by-step line-of-business workflows. This simplifies complex business processes through automation without custom code.&nbsp;</SPAN>With the <A href="https://community.sap.com/t5/technology-blogs-by-sap/what-s-new-with-sap-build-work-zone-guided-experiences/ba-p/13717701" target="_self">Guided experiences</A>, you can empower your workforce with seamless digital experiences tailored to their needs, boosting user satisfaction, engagement, and retention. You can automate tasks and streamline processes, allowing employees to focus on high-impact work.</P><H3 id="toc-hId-362277827"><STRONG>Accelerate enterprise&nbsp;automation with AI</STRONG></H3><P>We are also enriching our Process Automation offering with Joule. Our GenAI-based copilot will help you&nbsp;to simply specify in natural language what kind of workflow or automation you would like to have. In addition our tools, with the help of different large language models, will help you either source these artifacts from available content, or they will generate new process and automation content for them using the power of AI.</P><H3 id="toc-hId-165764322">Accelerate integration with AI</H3><P>We believe that by embedding AI into SAP Integration Suite, you will be able to shorten project times and integrate applications and systems faster by using AI generated mappings, scripts, and integration flows without even needing to be a high end integration expert. The SAP Integration Suite will improve the quality of integration flows and business processes by helping you identify pre-built content packages or by supporting AI-generated artifacts that fit to your specific requirements. Same as with code or process automation artefacts, you will be able to generate integration artifacts, our so called integration flows, by leveraging generative AI and the Unified Customer Landscape service which provides your specific landscape details as context for the integration.</P><H3 id="toc-hId--30749183">Anomaly detection with SAP Integration Suite</H3><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="Picture1.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/137606i67E24698CE359CFA/image-size/medium?v=v2&amp;px=400" role="button" title="Picture1.png" alt="Picture1.png" /></span>We are making use of machine-learning based capabilities in SAP Integration Suite to offer API anomaly detection. What this means is that we use Machine Learning to identify issues in your landscapes. Think of a sudden surge or drop in API calls, an increase in latency or an increase in the number of errors detected. We can identify this kind of unusual behavior and actively alert your stuff to these anomalies in API performance. This way, we can help identify and address issues before they escalate, minimizing disruptions and optimizing system performance. </P><H3 id="toc-hId--227262688">&nbsp;</H3><H3 id="toc-hId--423776193">&nbsp;</H3><H3 id="toc-hId--620289698">Simplified transition</H3><P>How do I transition from SAP PI / PO to SAP Integration Suite?&nbsp;We know that many of you relying on PI/PO for the daily business and we want to make sure we safeguard the investments you have made. Therefore we will provide a <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-pi-po-migration-why-you-should-move-to-the-cloud-with-sap-integration/ba-p/13655584" target="_self">simplified transition from SAP PO to SAP Integration Suite</A> with features like mass migration, reduction of migration templates, and reduction of JMS queues using a pipeline concept. Also, there is a free assessment and planning services available where we provide customer specific recommendations on how to move your integration to the cloud.</P><P data-unlink="true">If you want to learn more what´s new for Application Development, Automation and Integration on SAP BTP&nbsp; read the <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-sapphire-2024-what-s-new-for-application-development-automation-and/ba-p/13736396" target="_self">blog post</A> of&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/189303">@thomas_volmering</a>.</P><H3 id="toc-hId--892034572">Infuse AI in SAP Analytics Cloud</H3><P>How do we evolve our portfolio in the space of Data and Analytics moving forward? First: We integrate Joule as your GenAI copilot in SAP Analytics Cloud. You can analyze, consume and create story content with Joule moving forward. You also have also the possibility to ask questions and get answers as charts. Or you can generate some scripts to make the story interaction for your end-users richer and more interactive. Remember the just ask feature?&nbsp;This will be integrated with Joule as well. The key thing to understand is that while the just ask feature is providing natural language query capabilities, Joule will be using this feature as well, but provide a more conversational experience in remembering the conversation and the user progress and integrations.</P><H3 id="toc-hId--1088548077">Extended capabilities in SAP Analytics Cloud</H3><P><span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Picture2.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/137610i75C7CD6ED33300D4/image-size/medium?v=v2&amp;px=400" role="button" title="Picture2.png" alt="Picture2.png" /></span>One more thing on Data and Analytics, as it touches both the themes of openness and connectivity. Later this year it is planned that&nbsp;SAP Analytics Cloud content will be able to natively be integrated with Microsoft PowerPoint. Using our add-in, you can intuitively connect to an SAP Analytics Cloud tenant and find user-created content to integrate into your presentation. For example stories, in which business users communicate business information using a combination of data and visual elements (like, building a heat map of North America illustrating where a company’s sales are overperforming and underperforming commercial expectations). Or Widgets, which are visual elements used to tell stories (for example, charts, tables, geographical maps, or buttons).</P><P>SAP Analytics Cloud will also let you connect to SQL data sources as live data connections. This eliminates the need for direct data replication, resulting in much faster access to real-time data, reduced data storage requirements, more reliable data consistency, improved system performance and lower costs.</P><H3 id="toc-hId--1285061582">More to come...</H3><P>For me personally it has been a quite impressive and innovative Sapphire 2024. If you want to explore more highlights coming up in 2024 watch the <A href="https://www.sap.com/events/sapphire/virtual/flow/sap/s24/catalog/page/catalog/session/1713860797243001MUHd" target="_self" rel="noopener noreferrer">replay</A> of my session "Explore the road map of SAP BTP".</P><P><SPAN>You did not make it in person or virtually? No worries, you still have the chance to watch the&nbsp;<A href="https://www.sap.com/events/teched/virtual.html" target="_blank" rel="noopener noreferrer">replays</A>&nbsp;and especially the&nbsp;<A href="https://www.youtube.com/watch?v=gOVQhhm5yO0" target="_self" rel="nofollow noopener noreferrer">Opening Keynote</A>&nbsp;of Christian Klein and Julia White. Explore the <A href="https://www.sap.com/events/sapphire/news-guide.html" target="_self" rel="noopener noreferrer">SAP Sapphire News Guide 2024</A>&nbsp; to learn more about the announcements.<BR />Interested in more innovation highlights coming up? Then take a look at our&nbsp;<A href="https://roadmaps.sap.com/" target="_blank" rel="noopener noreferrer">Road Map Explorer</A>. We do have more than 1000 innovation highlights planned for SAP BTP 2024.</SPAN></P><P><SPAN>Also be informed that this blog and SAP's strategy and possible future developments, products and or platforms directions and functionality are all subject to change and may be changed by SAP at any time for any reason without notice.</SPAN></P> 2024-07-17T10:55:19.306000+02:00 https://community.sap.com/t5/technology-blogs-by-members/understanding-sap-rap-cap-build-joule-embedded-analytics-a-simple-guide/ba-p/13766781 Understanding SAP RAP, CAP, Build, Joule, Embedded Analytics: A Simple Guide 2024-07-20T20:17:08.413000+02:00 ujjwal16 https://community.sap.com/t5/user/viewprofilepage/user-id/610343 <P class=""><STRONG>Introduction</STRONG></P><P class="">In the rapidly evolving world of SAP, staying updated with the latest technologies can be challenging. Today, we will simplify five key SAP technologies: SAP RAP, SAP CAP, SAP Build, SAP Joule, and SAP Embedded Analytics. Let’s understand what they are, how they differ, and when to use each one.</P><P class=""><STRONG>SAP RAP (Restful ABAP Programming)</STRONG></P><P class="">Let’s start with SAP RAP. ABAP has been the backbone of SAP for years, and RAP brings a modern approach to it.</P><P class="">&nbsp;</P><UL><LI><STRONG>What is it?</STRONG>: RAP stands for Restful ABAP Programming. It’s a methodology to develop Fiori apps using ABAP, adhering to modern RESTful principles.</LI><LI><STRONG>Why use it?</STRONG>: If you are an experienced ABAP developer, RAP makes it easier to develop cloud-ready and service-oriented applications without having to learn a completely new language.</LI><LI><STRONG>Where to use it?</STRONG>: It’s ideal for those already familiar with ABAP and looking to transition to S/4HANA and cloud environments.</LI></UL><P>&nbsp;</P><P class=""><STRONG>SAP CAP (Cloud Application Programming)</STRONG></P><P class="">Next, let’s look at SAP CAP. This technology is gaining a lot of attention.</P><P class="">&nbsp;</P><UL><LI><STRONG>What is it?</STRONG>: CAP, or Cloud Application Programming model, is SAP’s framework for developing cloud-native applications. It combines JavaScript, Node.js, and OData services.</LI><LI><STRONG>Why use it?</STRONG>: CAP is great for building scalable, flexible, and modern applications on the SAP Cloud Platform. It leverages the best of modern web development technologies.</LI><LI><STRONG>Where to use it?</STRONG>: Ideal for developers comfortable with modern web technologies and looking to harness the full potential of the cloud.</LI></UL><P>&nbsp;</P><P class=""><STRONG>SAP Build</STRONG></P><P class="">Now, let’s discuss SAP Build. This tool is for those who might not be expert coders but still want to create powerful applications.</P><P class="">&nbsp;</P><UL><LI><STRONG>What is it?</STRONG>: SAP Build is a no-code/low-code platform that allows you to design, develop, and deploy applications with minimal coding.</LI><LI><STRONG>Why use it?</STRONG>: It’s perfect for rapid prototyping and quickly bringing applications to life. SAP Build simplifies the development process significantly.</LI><LI><STRONG>Where to use it?</STRONG>: Best for business users or developers who need to create applications quickly without deep coding knowledge.</LI></UL><P>&nbsp;</P><P class=""><STRONG>SAP Joule</STRONG></P><P class="">Let’s move on to SAP Joule. This one is relatively new and focuses on artificial intelligence.</P><P class="">&nbsp;</P><UL><LI><STRONG>What is it?</STRONG>: SAP Joule is an AI-driven tool designed to bring advanced intelligence to business processes, helping users make smarter decisions.</LI><LI><STRONG>Why use it?</STRONG>: It integrates AI into your existing SAP landscape, providing insights and automation capabilities that can greatly enhance productivity.</LI><LI><STRONG>Where to use it?</STRONG>: Ideal for organizations looking to incorporate AI and machine learning into their SAP systems to drive innovation and efficiency.</LI></UL><P>&nbsp;</P><P class=""><STRONG>SAP Embedded Analytics</STRONG></P><P class="">Finally, we have SAP Embedded Analytics. This tool is all about leveraging data for better insights.</P><P class="">&nbsp;</P><UL><LI><STRONG>What is it?</STRONG>: Embedded Analytics allows real-time analytics within SAP applications, providing users with immediate insights without needing to switch to separate analytics tools.</LI><LI><STRONG>Why use it?</STRONG>: It offers real-time data analysis and visualization capabilities, enhancing decision-making processes with up-to-date information.</LI><LI><STRONG>Where to use it?</STRONG>: Best for organizations that need to embed analytics directly into their business processes to enable data-driven decision-making.</LI></UL><P>&nbsp;</P><P class=""><STRONG>Comparison: RAP vs. CAP vs. Build vs. Joule vs. Embedded Analytics</STRONG></P><P class="">&nbsp;</P><UL><LI><STRONG>Ease of Use</STRONG>: SAP Build is the easiest to use, followed by RAP. CAP requires more knowledge of modern development practices. SAP Joule and Embedded Analytics need an understanding of AI and data analytics, respectively.</LI><LI><STRONG>Flexibility</STRONG>: CAP offers the most flexibility for developing cloud-native applications. RAP is flexible within the ABAP environment, Build is great for quick and simple applications, Joule enhances processes with AI, and Embedded Analytics provides real-time data insights.</LI><LI><STRONG>Use Case</STRONG>:Use RAP if you are sticking with ABAP and S/4HANA.CAP for new cloud applications. Build for rapid prototyping and business user-driven development. Joule for integrating AI into your business processes. Embedded Analytics for embedding real-time analytics into your operations.</LI></UL><P>&nbsp;</P><P class=""><STRONG>Conclusion</STRONG></P><P class="">Whether you are an experienced ABAP developer looking to modernize with RAP, a tech enthusiast exploring cloud-native development with CAP, a business user aiming for quick wins with SAP Build, an innovator integrating AI with SAP Joule, or a data-driven decision-maker using SAP Embedded Analytics, there’s a suitable tool for everyone in the SAP ecosystem. Choosing the right tool can make all the difference, helping you achieve your goals more efficiently. Happy coding and innovating!</P> 2024-07-20T20:17:08.413000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/highlights-of-the-sap-s-4hana-cloud-public-edition-2408-release/ba-p/13769906 Highlights of the SAP S/4HANA Cloud Public Edition 2408 Release 2024-07-24T11:36:16.508000+02:00 BeSchulze https://community.sap.com/t5/user/viewprofilepage/user-id/8440 <P>The second major release of the year 2024 is here! The SAP S/4HANA Cloud Public Edition 2408 release is filled with innovations that boost your productivity and support your everyday work life.</P><P>I am thrilled to give you further insights on our fully-fledged cloud ERP, supporting your journey to the intelligent, sustainable enterprise in this blog post.</P><P style=" text-align : left; ">If you prefer rather watching than reading, you are welcome to check out my product update video:</P><P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FTa-15ZD12DQ%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DTa-15ZD12DQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FTa-15ZD12DQ%2Fhqdefault.jpg&amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;type=text%2Fhtml&amp;schema=youtube" width="600" height="337" scrolling="no" title="What's New in SAP S/4HANA Cloud Public Edition 2408 - Product Release Highlights" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P style=" text-align: center; "><EM>Figure 1: Check out my top highlights of the release in this video.</EM></P><P>Before I start with feature-based innovations, I am proud to announce that we have generally uplifted our system availability <STRONG>service level agreement for SAP S/4HANA Cloud Public Edition and Integrated Business Planning</STRONG> from 99.7% to 99.9% for all our customers. This leap signals our reliability and the investments into technology, hardware, procedures, and automation that we continuously make to deliver a world-class SaaS ERP service to you. This marks another superior level of service availability and helps customers to plan business operations with greater precision at less risks. To put it into context: This cuts the upgrade downtimes by another 66%.</P><P>The new service level agreement sets a high standard for our cloud operations moving forward.&nbsp;</P><P>And there’s more: Since mid-July, <STRONG>GROW with SAP</STRONG> premium subscription has expanded to include SAP Sales Cloud and Concur Expense solutions. Both enhances our Cloud ERP and gives it more horizontal width to allow customers bring more use cases onboard our solution.</P><P>And we keep the good news coming! While delivering more functional and technical based value to our public cloud customers, we reduce the complexity of monetizing digital business models by bringing contract accounting and invoicing capabilities into the core SAP S/4HANA Cloud Public Edition offering. With the 2408 release, SAP S/4HANA Cloud Public Edition for contract and accounting will be part of GROW with SAP. We are giving our customers full access to the high volume, high performance and high automation invoicing, and subledger solution that focuses on service, subscriptions, pay-per-use, and multi-sided business models, without extra metering based on revenue and expenses. No action required for our existing GROW customers, the expanded functionality is included up to their licensed GROW FUEs and will automatically become available from SAP S/4HANA Cloud Public Edition 2408 for all customers.</P><P>Learn more about GROW here:&nbsp;<!-- StartFragment --><A class="" href="https://www.sap.com/products/erp/grow.html" target="_blank" rel="noopener noreferrer"><SPAN class="">https://www.sap.com/products/erp/grow.html</SPAN></A><!-- EndFragment --></P><P><A href="https://www.sap.com/products/erp/grow.html" target="_self" rel="noopener noreferrer"><BR /><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="GROW.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140707i3A9CB346F6693842/image-size/large?v=v2&amp;px=999" role="button" title="GROW.png" alt="GROW.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 2: Discover the value of GROW with SAP.</EM></P><P>We offer you even more room to GROW: Constantly updating our methodology stays important! For this release, we are excited to announce significant updates to our GROW Adoption Plan, designed to streamline and enhance the adoption process for customers and partners. By integrating new deliverables and accelerators into the GROW Adoption Plan and SAP Cloud ALM, companies can achieve a faster and more efficient implementation experience. This release features GROW Adoption Plan tagging, combining new adoption deliverables and related accelerators, including the Multi-Country Deployment and Application Lifecycle Management accelerators with new content. Additionally, our updated quality gates now include the first iteration of adoption elements, which will further integrate into SAP Cloud ALM.</P><P>Available for some time, but in between releases and therefore, potentially new to some, we are also offering our customers guidance for transitioning from the two-system-based landscape to the three-system landscape of SAP S/4HANA Cloud Public Edition.</P><P><BR /><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_Conversion.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140708i2FCE3EF4C15BDB72/image-size/large?v=v2&amp;px=999" role="button" title="2408_Conversion.png" alt="2408_Conversion.png" /></span></P><P style=" text-align: center; "><EM>Figure 3: We are offering our customers guidance for transitioning from the two-system-based landscape to the three-system landscape of SAP S/4HANA Cloud Public Edition.</EM></P><P>&nbsp;</P><P>Also, SAP introduces <STRONG>new sustainability capabilities</STRONG> to support organizations in meeting their sustainability ambitions and goals as well as regulatory requirements. These include automated ESG reporting via the SAP Sustainability Control Tower and AI-enhanced carbon footprint calculations through the SAP Sustainability Footprint Management solution. Additionally, both solutions feature a carbon calculator engine for comprehensive emissions reporting, and the upcoming SAP Green Ledger will integrate greenhouse gas emissions into financial decision-making.</P><P>&nbsp;</P><P>Speaking of artificial intelligence: A lot has happened here in the past months. With <STRONG>SAP’s Business AI strategy</STRONG>, we are defining the future by embedding SAP Business AI along our entire portfolio:</P><H3 id="toc-hId-1149527142"><STRONG>Relevant <SPAN>–</SPAN> Reliable <SPAN>–</SPAN> Responsible</STRONG></H3><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="03_BusinessAI.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140709iADCE2B41ABFD9AAA/image-size/large?v=v2&amp;px=999" role="button" title="03_BusinessAI.png" alt="03_BusinessAI.png" /></span></P><P style=" text-align: center; "><EM>Figure 4: With SAP Business AI, we accelerate your business processes and optimize decision-making.</EM></P><P>Enough upfront news–without any further ado, let’s check out what I additionally consider as highlights of the SAP S/4HANA Cloud Public Edition 2408 release.</P><P>&nbsp;</P><H1 id="toc-hId-694848199"><STRONG>Modern and Intelligent Experience</STRONG></H1><H2 id="toc-hId-627417413"><STRONG>SAP User Experience</STRONG></H2><P>Through artificial intelligence, we help to get your work done faster and change the user experience–starting with our <STRONG>generative AI copilot, Joule</STRONG>. After a successful phased roll-out in the Early Adopter Care program, Joule will grace your SAP S/4HANA Cloud Public Edition system with a continuous delivery shipment very soon, at current state of planning in quarter 3/2024. Joule works as follows: Formulate your business need in natural language and Joule will provide easy access to applications and data, lowering manual tasks and boosting productivity.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_uuimsrtg" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_Joule.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140710i9BB59EF6D997FC3A/image-size/large?v=v2&amp;px=999" role="button" title="2408_Joule.png" alt="2408_Joule.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 5: Our natural-language, generative AI copilot Joule provides easy access to applications and data.</EM></P><P>&nbsp;</P><P>SAP Business AI offers you a cutting-edge <STRONG>SAP Fiori experience</STRONG> <STRONG>via smart summarization and easy filter</STRONG>. Smart summarization jump starts your collaboration or follow-up by extracting the essential information of the object pages of the SAP Fiori elements applications you are using in the system. With easy filter, you can select data of “list report-based" SAP Fiori apps instead of defining filter values manually. All of this in natural language. These AI use-cases are available in beta testing. Check out the SAP Customer Influence page to sign up: <SPAN><A href="https://influence.sap.com/sap/ino/#campaign/3698" target="_blank" rel="noopener noreferrer">https://influence.sap.com/sap/ino/#campaign/3698</A></SPAN></P><P><SPAN><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_qdjjbhv2" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_SmartSummarization.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140711i01B6A4ECD32483F1/image-size/large?v=v2&amp;px=999" role="button" title="2408_SmartSummarization.png" alt="2408_SmartSummarization.png" /></span></A></SPAN></P><P style=" text-align: center; "><SPAN><EM>Figure 6: AI-assisted smart summarization extracts the essential information of the object pages of the SAP Fiori elements apps you’re using in the system.</EM></SPAN></P><P><SPAN><EM><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_qzm99ivs" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_EasyFilter.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140712i1150B79F352EFD85/image-size/large?v=v2&amp;px=999" role="button" title="2408_EasyFilter.png" alt="2408_EasyFilter.png" /></span></A></EM></SPAN></P><P style=" text-align: center; "><SPAN><EM>Figure 7: With easy filter, you can select data of “list report-based" SAP Fiori apps instead of defining filter values manually.</EM></SPAN></P><P>&nbsp;</P><P>To enhance transparency around significant system changes, we’ve established a <STRONG>scalable communication strategy</STRONG>, allowing the delivery of important messages to specifically chosen customers and users, following the "need-to-know" principle. This <STRONG>in-app communication</STRONG> was highly requested by our customers and partners through advisory groups and our influence portal and permits us to spotlight essential customer activities in the system. Catering messages to such specific requirements facilitates delivering reminder information solely to those customers who haven't yet performed important requisite system activities and those users who possess the necessary authorization to carry out these tasks. A first example of this approach is the targeted communication pertaining to SAP Fiori launchpad settings, i.e., the switch to spaces and pages.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="in_product_comms_example.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140713iD9854200D3CEC704/image-size/large?v=v2&amp;px=999" role="button" title="in_product_comms_example.png" alt="in_product_comms_example.png" /></span></P><P style=" text-align: center; "><EM>Figure 8: Target users get system pop-ups after login showing critical must-dos and must-knows for their user role including a linked document for details.</EM></P><P>&nbsp;</P><H2 id="toc-hId-430903908"><STRONG>Finance</STRONG></H2><P>In finance, we introduce <STRONG>new review booklet for cost centers</STRONG>. This app provides a concise display of both actual and planned costs, organizing several predefined reports under 'Actuals' and 'Plan/Actuals' pages. It provides business applications that embed crucial insights into the relevant business context, supporting the answering of critical business queries effectively and efficiently. It seamlessly integrates application logic, guidance, and multidimensional insights and upholds the promise of "insight to action" within embedded analytics, enabling users to analyze actuals and plan data in a single report while providing the flexibility to toggle between guided views and generic slicing, dicing, and pivoting based on specific business requirements.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_9p9y0rdk" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_ReviewBooklet.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140715iE3CC14710868EAD4/image-size/large?v=v2&amp;px=999" role="button" title="2408_ReviewBooklet.png" alt="2408_ReviewBooklet.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 9: Display, analyze, and validate cost center data with the new review booklet.</EM></P><P>Additionally, we enable you to <STRONG>analyze and summarize data</STRONG> from the cost-center review booklet into actionable financial business insights with the help of <STRONG>generative AI</STRONG>. This use case is available in beta testing. Check out the SAP Customer Influence page to sign up: <SPAN><A href="https://influence.sap.com/sap/ino/#campaign/3698" target="_blank" rel="noopener noreferrer">https://influence.sap.com/sap/ino/#campaign/3698</A></SPAN></P><P><EM><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_c4w1od3x" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_ReviewBookletAI.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140716iFD322135A0C51444/image-size/large?v=v2&amp;px=999" role="button" title="2408_ReviewBookletAI.png" alt="2408_ReviewBookletAI.png" /></span></A></EM></P><P style=" text-align: center; "><EM>Figure 10: Gain financial business insights with the help of generative AI.</EM></P><P>&nbsp;</P><H2 id="toc-hId-234390403"><STRONG>GRC, Trade, and Tax</STRONG></H2><P>This release delivers an innovative experience in managing <STRONG>US-internal tax configuration powered by Joule</STRONG>. The process of maintaining tax jurisdiction codes and rates has been simplified from a dozen steps to only three! Users just can use a natural language prompt to retrieve detailed information from the AI, then verify, simulate, and save the configured tax jurisdiction codes and rates. Once the connection between your SAP system and the LLM is configured, users can chat directly with the AI to retrieve detailed address-based tax jurisdiction information. Furthermore, the LLM delivers links to the respective state tax or revenue authority, providing users with an easily accessible way to verify their tax rate information prior to simulating and saving the changes. This use case is currently available in beta testing. To register, check out the SAP Customer Influence page: <SPAN><A href="https://influence.sap.com/sap/ino/#/campaign/3698" target="_blank" rel="noopener noreferrer">https://influence.sap.com/sap/ino/#/campaign/3698</A></SPAN></P><P><SPAN><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_8lx0nob5" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_JouleTax.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140719i908A02243B88139A/image-size/large?v=v2&amp;px=999" role="button" title="2408_JouleTax.png" alt="2408_JouleTax.png" /></span></A></SPAN></P><P style=" text-align: center; "><EM>Figure 11: Joule helps to simplify the process of maintaining US-internal tax configuration.</EM></P><P>&nbsp;</P><H2 id="toc-hId-37876898"><STRONG>Sales</STRONG></H2><P>One of the key highlights here is the <STRONG>auto-activation of the intelligent scenario for input recommendations for sales orders</STRONG>. This feature significantly boosts efficiency and cost savings by hastening the activation of the intelligent scenario for sales order recommendations. Implemented when scope item 73P gets activated, the system employs an auto-training mechanism that periodically trains the machine learning model based on the business data from the past year. Users have the flexibility to enable or disable this auto-training in the <EM>‘Intelligent Scenario Management’</EM> app. This functionality guarantees automatic set-up, training and operation of the intelligent scenario, making the sales order completion more efficient and intuitive while reducing costs.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_cr925e8p%20" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_AutoActivation.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140720iB0E2EFF477E32AEE/image-size/large?v=v2&amp;px=999" role="button" title="2408_AutoActivation.png" alt="2408_AutoActivation.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 12: Auto-activation of the intelligent scenario for input recommendations makes the sales-orders process more efficient and intuitive.</EM></P><P>&nbsp;</P><H2 id="toc-hId--158636607"><STRONG>Product Compliance</STRONG></H2><P>With this release, we enable the <STRONG>generation of product compliance documents with integration into the safety data sheet process</STRONG>. Users can now generate a first selection of sections of an EU safety data sheet (without country/region-specific additions) for product compliance solutions using Adobe Document Services. This not only extends the product compliance solution with integrated document generation capability but also streamlines the generation of documents for product compliance data. This is based on versatile Adobe form templates and form data providers. The generated documents are seamlessly integrated into the safety data sheet process. This also comes with new apps to manage and release data for handling and storage as well as stability and reactivity of products, making it a comprehensive tool for product compliance.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_qo0i8uok%20" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_Generation.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140721i87A7233C61147026/image-size/large?v=v2&amp;px=999" role="button" title="2408_Generation.png" alt="2408_Generation.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 13:&nbsp;You can now easily generate a first selection of sections of an EU safety data sheet using Adobe Document Services.</EM></P><P>&nbsp;</P><H1 id="toc-hId--484232831"><STRONG>ERP Innovations</STRONG></H1><H2 id="toc-hId--551663617"><STRONG>Manufacturing</STRONG></H2><P>SAP S/4HANA Cloud Public Edition 2408 introduces advancements in the <EM>‘Monitor Material Coverage’</EM> SAP Fiori apps. The <EM>‘Monitor Material Coverage – Net Segments’</EM> and the <EM>‘Monitor Material Coverage – Net and Individual Segments’</EM> apps now offer <STRONG>additional columns displaying the number of rescheduling proposals for a material</STRONG>. This improvement assists businesses in avoiding supply shortages or an excess of supplies. This is achieved by indicating the number of Material Requirements Planning (MRP) supplying elements with rescheduling proposals for each material. Additionally, the system can reschedule in, reschedule out, or cancel a process based upon a calculation for the entire planning horizon. The enhanced features enable better management of supply shortages and excess supply with MRP material coverage apps, providing a more effective and streamlined operation.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_wbuoj9se" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_Rescheduling.jpg.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140722iFA454CBFFEC864C2/image-size/large?v=v2&amp;px=999" role="button" title="2408_Rescheduling.jpg.png" alt="2408_Rescheduling.jpg.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 14:&nbsp;Manage supply shortages or excess supply with additional columns in the ‘Monitor Material Coverage’ SAP Fiori apps.</EM></P><P>&nbsp;</P><H2 id="toc-hId--748177122"><STRONG>Supply Chain Management</STRONG></H2><P>In this release, we ship the <STRONG>warehouse-driven split of the outbound delivery order</STRONG>. This feature empowers organizations to separate packed and unpacked items, quantities, or handling units from an existing outbound delivery order into a new one. This offers increased flexibility in case a complete picking is not possible, added functionality if space in the truck is limited, and the ability to split outbound delivery order items for which no warehouse task has been created yet. It’s also possible to split handling units into a new outbound delivery order. The release therefore provides businesses with improved logistical abilities, offering greater adaptability in managing outbound delivery orders.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_6rmwg0dp" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_WarehouseDrivenSplit.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140724iF092E84F015AAAAF/image-size/large?v=v2&amp;px=999" role="button" title="2408_WarehouseDrivenSplit.png" alt="2408_WarehouseDrivenSplit.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 15:&nbsp;The warehouse-driven split of the outbound delivery order empower organizations to separate packed and unpacked items, quantities, or handling units from an existing outbound delivery order into a new one.</EM></P><P>&nbsp;</P><H2 id="toc-hId--597436270"><STRONG>Solution and Subscription Business</STRONG></H2><P>Here, I want to highlight a feature from the latest CFD release which I believe has huge business value for organizations transitioning to solution-led business models. The introduction of <STRONG>advanced solution bundling enables</STRONG> you to pre-configure complex solution orders which can contain multiple configurable and non-configurable items, and sell them on a single solution order, providing greater flexibility whilst saving effort on manual input. This enables the sale of complex end-to-end solution offerings tailored to specific customer needs.</P><P><STRONG><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_mk0mdv1k" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_SolutionBundles.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140727i1465F09DAA5C5802/image-size/large?v=v2&amp;px=999" role="button" title="2408_SolutionBundles.png" alt="2408_SolutionBundles.png" /></span></A></STRONG></P><P style=" text-align: center; "><EM>Figure 16:&nbsp;Pre-configured bundles can be added to a solution order and processed for further fulfilment.</EM></P><P>&nbsp;</P><H2 id="toc-hId--793949775"><STRONG>Service</STRONG></H2><P>In this release, we enable you to <STRONG>add maintenance plan templates in service contracts</STRONG>. This enhancement simplifies the workflow drastically, particularly for those dealing with service contracts that include maintenance plans. During the creation process of service contract templates, you can already add maintenance plan templates to service contract items. After creating a service contract from a service contract template, the maintenance plan templates are also copied. When you release a service contract item, a new maintenance plan is automatically created using the maintenance plan template. If you don’t use service contract templates, you can add maintenance plan templates directly in a service contract.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_2q01b9i6%20" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_ServiceContracts.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140728i6F43D19A8F12E29F/image-size/large?v=v2&amp;px=999" role="button" title="2408_ServiceContracts.png" alt="2408_ServiceContracts.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 17:&nbsp;Maintenance plan templates facilitate the service contract process significantly.</EM></P><P>&nbsp;</P><H2 id="toc-hId--990463280"><STRONG>Enterprise Porfolio and Project Management</STRONG></H2><P>To better support the engineer-to-order process, we ship an innovation to <STRONG>reserve materials using project demand</STRONG>. When it comes to project demands, we offer three categories: resources, services, and materials. In the category of materials, we now offer ‘Project Stock Reservation’. A project procurement controller or project manager can select the WBS element, the plant, the material ID, the quantity, and eventually also the storage location, and then reserve material for a project on a certain date. Once the demand is requested, a reservation number gets generated. With the monitoring capabilities, you can view how many quantities have been delivered in case certain quantities in stock are issued against the material. This creates transparency for the project procurement controller.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_ProjectDemand.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140729iB668D186A281F4B3/image-size/large?v=v2&amp;px=999" role="button" title="2408_ProjectDemand.png" alt="2408_ProjectDemand.png" /></span></P><P style=" text-align: center; "><EM>Figure 18:&nbsp;The ability to reserve material using project demand makes workflows more efficient and project management more effective.</EM></P><P>&nbsp;</P><H2 id="toc-hId--1186976785"><STRONG>Professional Services</STRONG></H2><P>The <STRONG>shared risk-based revenue recognition for professional service projects</STRONG> feature addresses potential customer projects that exceed the initial scope, allowing service providers to bill at regular rates before charging reduced rates for any additional work. A new revenue recognition key (SPTMSR) supports this shared risk model. This enables more precise revenue recognition where additional work is required, increasing flexibility for revenue recognition and reducing manual efforts to adjust accrued revenues. In this model, if the need for additional work is identified, the system considers the reduced rate during revenue recognition. The feature signifies an important step towards enhancing accounting accuracy and transparency in service-oriented sectors, promoting mitigation of financial risk, and improving overall project management.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_cl7zopxv" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_RiskBasedRevenue.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140730i4D34C39BB699863E/image-size/large?v=v2&amp;px=999" role="button" title="2408_RiskBasedRevenue.png" alt="2408_RiskBasedRevenue.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 19:&nbsp;Shared risk-based revenue recognition for professional service projects enhances accuracy and transparency.</EM></P><P>&nbsp;</P><H2 id="toc-hId--1383490290"><STRONG>Sourcing and Procurement</STRONG></H2><P>A purchase contract is an agreement between a buyer and a supplier with agreed pricing, quantity, terms, and conditions. Since purchase contracts are long-term documents, they are subject to change over time. By enabling <STRONG>versioning of purchase contracts</STRONG>, businesses can meticulously track various versions of contracts each time a modification is made to an active purchase contract. Following alterations to fields set for versioning, the system automatically creates a new version. The new version can then become an active document, subject to the approval process. The versioning feature enhances transparency and efficiency by enabling comparisons between two document versions, including changes notable in pricing. This function ultimately aids in fostering improved collaboration between buyers and suppliers.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_ag2dxosa" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_Versioning.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140731iB01BA41B22E0C18F/image-size/large?v=v2&amp;px=999" role="button" title="2408_Versioning.png" alt="2408_Versioning.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 20:&nbsp;Versioning in purchase contracts fosters improved collaboration between buyers and suppliers.</EM></P><P>&nbsp;</P><H2 id="toc-hId--1580003795"><STRONG>Asset Management</STRONG></H2><P>In this release, we introduce an enhanced feature of <STRONG>recording the "As-Found" condition in the <EM>'Perform Maintenance Jobs'</EM> app</STRONG>. The app offers maintenance technicians an improved way to record the initial condition of an asset during proactive and routine maintenance jobs, even when the maintenance order does not have a maintenance notification assigned. If the specific technical object differs from the overall order header, a new notification will be created automatically while the technician records the "As-Found" condition. Previously, the malfunction data tab was enabled only if the order has an associated notification. Now, these tabs are accessible by default in orders with notifications. Additionally, configurations can allow users to maintain malfunction data, thereby providing users with better recording of asset reliability data which in turn enhances the overall user experience.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_zxsjy2u2" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_AsFound.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140732iDD42D0185411F8B2/image-size/large?v=v2&amp;px=999" role="button" title="2408_AsFound.png" alt="2408_AsFound.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 21:&nbsp;We enhance the recording of the “As-Found” condition in the ‘Perform Maintenance Jobs’ app.</EM></P><H2 id="toc-hId--1776517300">&nbsp;</H2><H2 id="toc-hId--1973030805"><STRONG>Environment, Health, and Safety</STRONG></H2><P>A <STRONG>new application for managing the investigation process</STRONG> significantly improves the tracking and oversight of investigation projects, allowing for more effective and efficient processes. The <EM>‘Manage Investigations’</EM> app offers a comprehensive platform where pertinent details such as investigation phase, persons involved, and timelines can be meticulously documented and managed. Administrators can determine the course and progression of investigations, and delegate necessary tasks for seamless operation. This new tool pursues both procedural integrity and simplicity, with a user-friendly interface coupled with robust functionality. Ultimately, it enhances user experience, strengthens accountability, and fosters greater efficiency in managing the investigation process.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_8q082eej%20" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_EHS.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140734i1240414462E054DB/image-size/large?v=v2&amp;px=999" role="button" title="2408_EHS.png" alt="2408_EHS.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 22:&nbsp;The new ‘Manage Investigations’ app fosters great efficiency in managing the investigation process.</EM></P><H2 id="toc-hId-2125422986">&nbsp;</H2><H2 id="toc-hId-1928909481"><STRONG>Two-Tier ERP</STRONG></H2><P>In two-tier ERP, Tier 1 acts as an original equipment manufacturer on SAP S/4HANA Cloud Private Edition and Tier 2 acts as a service subsidiary on SAP S/4HANA Cloud Public Edition. &nbsp;With this set up, organizations can perform claims processing and subsequent reimbursements between their service organization and original equipment manufacturer. In this release, we introduce a refined <STRONG>warranty claim process</STRONG>, aiding you in effectively managing and navigating through the complexities of warranty claims. The process offers improved visibility into various aspects such as claim creation, processing, submission, and tracking. In addition, the solution accelerates assessment and administration of warranty claims with built-in automation that streamlines the end-to-end warranty management. As a part of service management, this efficient mechanism ensures quicker resolution time, reducing both manual effort and the overall operating cost for the business. Essentially, the enhancement in the warranty claim process signifies an evolution towards improved customer satisfaction and a more strategic approach to service operations.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_WarrantyClaim.png" style="width: 786px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140736i348CEFCAD9C9C18C/image-size/large?v=v2&amp;px=999" role="button" title="2408_WarrantyClaim.png" alt="2408_WarrantyClaim.png" /></span></P><P style=" text-align: center; "><EM>Figure 23:&nbsp;The new warranty claim process offers improved customer satisfaction and a more strategic approach to service operations.</EM></P><P>&nbsp;</P><H1 id="toc-hId--2100984622"><STRONG>SaaS Foundation</STRONG></H1><H2 id="toc-hId-1704066162"><STRONG>Extensibility</STRONG></H2><P>The cloud extensibility model with a three-system landscape in SAP S/4HANA Cloud Public Edition enables customers to seamlessly leverage SAP innovations, resulting in future-proof extensions that are compliant throughout their lifecycle and do not require adjustments during cloud innovation cycles. With this model, we can develop cloud-ready business apps, services, or custom extensions that are both upgrade-stable and cloud-ready. With developer extensibility, as a customer or partner, you can use one-off delivery for ABAP development intended to remain within your SAP S/4HANA Cloud landscape which enables you to import the developed custom ABAP code in a three-system landscape into the test and production system of the current landscape.</P><P>With <STRONG>multi-off delivery</STRONG>, we take it a step further. Custom development can be performed by a partner on behalf of a customer, in a separate development system which is not connected to the customer landscape, and then deployed on the customer's three-system landscape using the <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/6aa39f1ac05441e5a23f484f31e477e7/d62ed9d54a764c53990f25f0ab6c27f9.html?" target="_self" rel="noopener noreferrer">‘Git-Enabled Change and Transport System’ (gCTS)</A>. The source code of ABAP extensions is stored in remote Git repositories, with gCTS being used to transfer (push and pull) the ABAP custom code between SAP S/4HANA Cloud landscapes and Git repositories. This is especially useful for scenarios where source and target landscapes can't be connected via transport routes. The SAP Fiori app ‘<EM>Git-Enabled CTS (gCTS)</EM>’ helps to manage tasks such as connecting to remote Git repositories, pushing and pulling commits, and managing branches. Commits are created in the development environment using ABAP development tools for Eclipse (ADT) when a task of a transport request is released. Find more information <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/6aa39f1ac05441e5a23f484f31e477e7/dbeaf0f2a7ea4096be1a297458079547.html?" target="_self" rel="noopener noreferrer">here</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_Git1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140744i4C01009042BA617C/image-size/large?v=v2&amp;px=999" role="button" title="2408_Git1.png" alt="2408_Git1.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_Git2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140745i09090A84C2845DEA/image-size/large?v=v2&amp;px=999" role="button" title="2408_Git2.png" alt="2408_Git2.png" /></span></P><P style=" text-align: center; "><EM>Figures 24 &amp; 25: Multi-off delivery brings a multitude of possibilities for custom development.</EM></P><P>&nbsp;</P><H2 id="toc-hId-1507552657"><STRONG>Public Sector Management</STRONG></H2><P>Public sector functionality within SAP S/4HANA Cloud Public Edition is broadening in terms of geographical availability. In addition to the US, Canada, and Germany, services such as grants management, budget management, and fund accounting is now also available in the UK, the Netherlands, and Australia. The global deployment of our service has started and is gaining great momentum. Be prepared for the availability in additional countries by the year 2025.</P><P>Additionally, we bring new, comprehensive budget management functionalities:</P><UL><LI>Addition of a Substitution Tool for Budget Maintenance.</LI><LI>Enhancement allowing the consumption of budget for expected expenses rather than the posting date.</LI><LI>Feature to check Public Sector budget availability using project hierarchies.</LI><LI>Updates to facilitate the generation of budget documents.</LI><LI>Improved reporting on budgets versus payments and open invoices.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_NewLocalVersions.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140741i54F2611E2E307110/image-size/large?v=v2&amp;px=999" role="button" title="2408_NewLocalVersions.png" alt="2408_NewLocalVersions.png" /></span></P><P style=" text-align: center; "><EM>Figure 26:&nbsp;This release includes significant updates to the early release enablement cycle for public sector.</EM></P><P>&nbsp;</P><H2 id="toc-hId-1311039152"><STRONG>R&amp;D Engineering</STRONG></H2><P>In this release, we ship the i<STRONG>ntegration of CAD design for data and file management</STRONG>. With this SAP Product Lifecycle Management solution, seamless interaction between engineering designs and SAP business processes is now feasible, i.e., you can easily transfer engineering bills of material (EBOMs) from the&nbsp;SAP Product Lifecycle Management&nbsp;solution and continue to work on them as manufacturing bills of material (MBOMs) in the relevant&nbsp;<EM>‘Maintain Bill of Material (Version 2)’</EM>&nbsp;app.&nbsp;The CAD tools extend their capabilities by being able to store files in the SAP PLM Product Data Integration (PDI), leading to the development of an Enterprise Product Structure within SAP’s Product Lifecycle Management. This integration simplifies the transfer of product data via product handover to SAP S/4HANA Cloud Public Edition, reducing the number of interfaces and facilitating a smoother operation. The end result is higher efficiency in engineering processes, holistic product description for increased transparency, and reduced operating costs. Overall, it signifies a major stride towards optimizing product data management in industry-specific CAD applications.</P><P><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_ykpdjlu4" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_RD.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140742iAAB9D9F096099D92/image-size/large?v=v2&amp;px=999" role="button" title="2408_RD.png" alt="2408_RD.png" /></span></A></P><P style=" text-align: center; "><EM>Figure 27:&nbsp;The integration of CAD design for data and file management enhances your engineering processes.</EM></P><P>&nbsp;</P><H2 id="toc-hId-1114525647"><STRONG>Business Partner Data</STRONG></H2><P>This release presents an enhancement in data privacy management, allowing users to concurrently <STRONG>assign data controllers along with specific purposes to business partners</STRONG>. This upgrade significantly bolsters the concept of “privacy by design and default” by permitting users the flexibility to manually or automatically attach data controllers to business partners. With options to leverage this feature via the <EM>‘Maintain Business Partner’</EM> and <EM>‘Manage Business Partner’</EM> SAP Fiori apps or through API channels, businesses can effectively manage their partner master data. This advancement not only ensures timely compliance with stringent data protection regulations but also molds business processes to instill trust among partners and customers. By enhancing the data privacy landscape, this feature equips businesses with the edge to meet legal requirements and foster a venerable relationship with their customers.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_BusinessPartner.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140743i2C1D383EA63DAC0A/image-size/large?v=v2&amp;px=999" role="button" title="2408_BusinessPartner.png" alt="2408_BusinessPartner.png" /></span></P><P style=" text-align: center; "><EM>Figure 28:&nbsp;You can now assign data controllers along with specific purposes to business partners.</EM></P><P>&nbsp;</P><H2 id="toc-hId-918012142"><STRONG>Information Lifecycle Management</STRONG></H2><P>SAP Information Lifecycle Management (SAP ILM) allows users to <STRONG>manage the lifecycle of live and archived data</STRONG>. Users can set rules for managing data throughout its lifecycle, specifying how long it should stay in the database, how long it should be archived, and when it should be deleted. This can be done consistently across development, test, and production systems. With the 2408 release of SAP S/4HANA Cloud Public Edition, one key feature is the self-service configuration user interface (SSCUI). This tool allows users to centrally maintain SAP ILM settings and transport them across the system landscape i.e., development, test and production systems, reducing the risk of errors and inconsistencies. Another key feature with this release is the storage of archive files to SAP HANA Cloud data lake files, ensuring fast and efficient access to archived data. Previously, these files were stored in the Neo platform. This change helps to store the SAP ILM archive files on a future-proof, fast, and cost-efficient technology stack, supporting both SAP ILM use cases: data volume management and data privacy. This change exclusively affects the underlying technology stack, with no impact on usability.</P><P>You can find more information <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/a630d57fc5004c6383e7a81efee7a8bb/3c9d33dde6154f71863f994262a584fd.html" target="_self" rel="noopener noreferrer">here</A>.</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_ILM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140746iDF27D24D58A904F1/image-size/large?v=v2&amp;px=999" role="button" title="2408_ILM.png" alt="2408_ILM.png" /></span></SPAN></P><P>&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_ILM2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140747iF077302907847FEF/image-size/large?v=v2&amp;px=999" role="button" title="2408_ILM2.png" alt="2408_ILM2.png" /></span></P><P style=" text-align: center; "><EM>Figures 29 &amp; 30:&nbsp;SAP Information Lifecycle Management (SAP ILM) allows users to manage the lifecycle of live and archived data.</EM></P><P>&nbsp;</P><H2 id="toc-hId-721498637"><STRONG>Identity and Access Management</STRONG></H2><P>Unlock the full potential of SAP S/4HANA Cloud Public Edition with the unified access to documentation about Identity and Access Management (IAM) on <A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/53e36b5493804bcdb3f6f14de8b487dd/d795f4dd633e477e82d93cd9308a1e7c.html" target="_self" rel="noopener noreferrer">SAP Help Portal</A>! With this, we provide a simplified, one-stop shop for all IAM-related documentation, making it easier for users to access everything you need to know about user and identity management, roles, authorization, and authentication. The documentation covers all IAM-related tasks in the different phases of implementation (prepare, realize, run, and upgrade) making the process more streamlined and efficient. This unified access to IAM documentation provides a holistic view on IAM for SAP S/4HANA Cloud and integrated products from initial system access to tasks which need to be completed before, during, and after upgrading SAP S/4HANA Cloud and allows you to familiarize yourself with its key concepts.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_IAM_Unified access.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140748iCF80E4EC49F2E5BA/image-size/large?v=v2&amp;px=999" role="button" title="2408_IAM_Unified access.png" alt="2408_IAM_Unified access.png" /></span></P><P style=" text-align: center; "><EM>Figure 31:&nbsp;Check out the documentation about Identity and Access Management on SAP Help Portal.</EM></P><P>&nbsp;</P><H1 id="toc-hId-818388139"><STRONG>Summary</STRONG></H1><P>You see, the world is turning fast, and we keep you at the forefront of progress–but these are by far not all innovations we have in store with SAP S/4HANA Cloud Public Edition 2408. Stay tuned for the individual blog posts diving deeper into selected lines of business and industries.&nbsp;</P><P>Don’t hesitate to leave a comment and check out our <SPAN><A href="https://pages.community.sap.com/topics/s4hana-cloud" target="_blank" rel="noopener noreferrer">community page</A></SPAN> to ask your questions and engage with the experts. Follow the <SPAN><A href="https://community.sap.com/t5/tag/PSCC_Enablement/tg-p/board-id/erp-blog-sap" target="_blank">PSCC_Enablement</A></SPAN> tag to stay up to date with our latest blog posts.</P><P>Follow us on <SPAN><A href="https://twitter.com/sap" target="_blank" rel="noopener nofollow noreferrer">@SAP</A></SPAN> and #S4HANA, and myself on <SPAN><A href="https://www.linkedin.com/in/bert-oliver-schulze/" target="_blank" rel="noopener nofollow noreferrer">LinkedIn</A></SPAN> to not miss the next update.</P><P>&nbsp;</P><H4 id="toc-hId--258334387"><span class="lia-unicode-emoji" title=":film_projector:">📽</span>️ <STRONG>Watch the Replays of Our SAP S/4HANA Cloud Public Edition 2408 Early Release Series!</STRONG></H4><P>From July 8 to July 12, we hosted a series of 20 compelling live sessions to highlight the exciting innovations shipped with the SAP S/4HANA Cloud Public Edition 2408 release. Missed the live sessions? We've got you covered! Take advantage of the entire series or pick and choose the sessions most relevant to you. Don't miss this chance and <SPAN><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-2408/ba-p/13757250" target="_blank">watch them on demand</A></SPAN>–anywhere, anytime.</P><H4 id="toc-hId--454847892"><STRONG><span class="lia-unicode-emoji" title=":magnifying_glass_tilted_right:">🔎</span>Find All of Our Assets</STRONG></H4><P>SAP S/4HANA Cloud is the foundation of the intelligent, sustainable enterprise and is an innovative, robust, and scalable ERP. We at Cloud ERP Product Success and Cloud Co-Innovation offer a service as versatile as our product itself. Check out the numerous offerings our team has created for you below:</P><P><A href="https://chart-bdmaicr0au.dispatcher.eu2.hana.ondemand.com/index.html?hc_reset" target="_self" rel="nofollow noopener noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2408_EnablementWheel.png" style="width: 516px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/140749iDFD4860FBDA7A901/image-size/large?v=v2&amp;px=999" role="button" title="2408_EnablementWheel.png" alt="2408_EnablementWheel.png" /></span></A></P><P>&nbsp;</P><P>&nbsp;</P> 2024-07-24T11:36:16.508000+02:00 https://community.sap.com/t5/beginner-corner-blog-posts/hey-developers-want-to-attend-your-own-version-of-oktoberfest/ba-p/13771676 Hey developers: Want to attend your own version of Oktoberfest? 2024-07-25T11:59:35.716000+02:00 David_Chaviano https://community.sap.com/t5/user/viewprofilepage/user-id/113 <P>Hi folks,</P><P>For any new developers out there that are familiarizing themselves with SAP, I thought I should share a yearly event designed to bring SAP devs together to have some fun.</P><H3 id="toc-hId-1150209669">What is Devtoberfest by SAP TechEd?</H3><P><STRONG>Devtoberfest by SAP TechEd</STRONG> is an event designed to capture the energy and creativity of pre-conference activities like the <A href="https://community.sap.com/t5/additional-blogs-by-sap/sap-innojam-in-a-nutshell/ba-p/12939858" target="_self">SAP InnoJam</A>, but it's more than just a hackathon. It's a more flexible and inclusive celebration everything that makes developers thrive — coding, learning, and collaboration. This event marks the kickoff to the <A href="https://www.sap.com/germany/events/teched.html" target="_self" rel="noopener noreferrer">SAP TechEd</A> season, offering a multi-week festival that fits everyone's schedules; whether you like to join live sessions or prefer learning asynchronously.</P><H3 id="toc-hId-953696164">Getting Started with <SPAN>Devtoberfest by SAP TechEd</SPAN></H3><P>To join the festivities, all you have to do is <STRONG><A href="https://community.sap.com/t5/devtoberfest/gh-p/Devtoberfest" target="_self">join the event group</A></STRONG> within this community. There's no need to register on a third-party event site or link to your SAP Community account manually.&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="David_Chaviano_1-1721900974663.png" style="width: 613px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/141582i56591C49FD139A2E/image-dimensions/613x299?v=v2" width="613" height="299" role="button" title="David_Chaviano_1-1721900974663.png" alt="David_Chaviano_1-1721900974663.png" /></span></P><P>&nbsp;</P><H3 id="toc-hId-757182659">What's in Store for 2024?</H3><H4 id="toc-hId-689751873">Educational Content</H4><P>A key feature of Devtoberfest by SAP TechEd is its rich educational content. Daily sessions will be released every weekday during the event. This content is designed for you to consume at your own pace, ensuring that you can fit learning into your own schedule. These sessions will cover a variety of topics, from beginner fundamentals to advanced SAP techniques.</P><P>For a sneak peek at what to expect, you can review the content from <A href="https://community.sap.com/t5/devtoberfest-blog-posts/devtoberfest-2023-contest/ba-p/9357" target="_self">Devtoberfest 2023,</A>&nbsp;but remember that the official agenda for 2024 will be announced in the <A href="https://community.sap.com/t5/devtoberfest/gh-p/Devtoberfest" target="_self">event group</A> closer to the event date.</P><H4 id="toc-hId-493238368">The Contest</H4><P>The contest component of Devtoberfest by SAP TechEd adds a competitive edge to the event, offering participants the chance to win prizes. Following the success of 2022's year's grand prize— a retreat to Newport Beach and Disneyland— we brought it back for 2023. Stay tuned for the 2024 prize!&nbsp;</P><H4 id="toc-hId-296724863">Fun Activities</H4><P>Fun Friday activities will return this year, featuring events that encourage community collaboration. From scavenger hunts to coding puzzles, these activities are designed to be flexible with your schedule.</P><H3 id="toc-hId--28871361">Mark Your Calendars</H3><P><SPAN>Devtoberfest by SAP TechEd&nbsp;</SPAN>2024 will span two main phases:</P><UL><LI><STRONG>September 23rd to October 14th, 2024</STRONG></LI><LI><STRONG>October 4th to October 25th, 2024</STRONG></LI></UL><P>Each day will offer something new, so make sure you're checking the SAP Community Events calendar regularly.</P><H3 id="toc-hId--225384866">How to start</H3><P>To get started, <A href="https://community.sap.com/t5/devtoberfest/gh-p/Devtoberfest" target="_self">join the event group</A> and stay tuned for more updates as we approach the start date. In the meantime, feel free to explore the 2023 content to get a feel for what’s coming.<BR /><BR />Have fun!</P><P>- David</P> 2024-07-25T11:59:35.716000+02:00