https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-BTP-ABAP-environment-blog-posts.xml SAP Community - SAP BTP, ABAP environment 2024-07-26T23:00:24.650221+00:00 python-feedgen SAP BTP, ABAP environment blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-members/taming-text-a-guide-to-sap-predicate-and-string-functions/ba-p/13730258 Taming Text: A Guide to SAP Predicate and String Functions 2024-06-13T20:38:33.554000+02:00 jorgavoro https://community.sap.com/t5/user/viewprofilepage/user-id/347250 <P><SPAN>ABAP offers a powerful toolbox for manipulating and analyzing data,</SPAN><SPAN> and a crucial part of this toolbox is the world of functions.</SPAN><SPAN> In this article,</SPAN><SPAN> we'll delve into two essential categories:</SPAN><SPAN> predicate functions and string functions.</SPAN></P><P><STRONG>Predicate Functions: Guardians of Conditions</STRONG></P><P><SPAN>Predicate functions act as the gatekeepers of your code's logic.</SPAN><SPAN> They ar present to evaluate a condition and return a simple TRUE or FALSE verdict.</SPAN><SPAN> This makes them ideal for control flow statements like IF statements and loops.</SPAN></P><P><SPAN>Here are some common predicate functions you'll encounter:</SPAN></P><UL><LI><P class=""><STRONG>CONTAINS( )</STRONG><SPAN>:</SPAN><SPAN> Ever wondered if a name contains a specific string?</SPAN> CONTAINS( )<SPAN> is your friend.</SPAN><SPAN> For instance,</SPAN> IF CONTAINS( name, 'Smith' ) = TRUE.<SPAN> checks if the variable </SPAN>name<SPAN> holds the substring "Smith".</SPAN></P></LI><LI><P><STRONG>MATCHES( )</STRONG><SPAN>:</SPAN><SPAN> This function goes beyond simple substrings.</SPAN><SPAN> It checks if an entire string conforms to a defined pattern.</SPAN><SPAN> Imagine a product code formatted as two uppercase letters followed by three digits.</SPAN><SPAN> You can use </SPAN>IF MATCHES( product_code, '[A-Z]{2}-\d{3}' ) = TRUE.<SPAN> to verify this format.</SPAN><SPAN> Here,</SPAN> [A-Z]{2}<SPAN> matches two uppercase letters,</SPAN> -<SPAN> matches a hyphen,</SPAN><SPAN> and </SPAN>\d{3}<SPAN> matches three digits.</SPAN></P></LI><LI><P><STRONG>IS_INITIAL( )</STRONG><SPAN>:</SPAN><SPAN> Sometimes you just need to know if a variable is empty or filled with only spaces.</SPAN> IS_INITIAL( )<SPAN> comes to the rescue.</SPAN><SPAN> For example,</SPAN> IF IS_INITIAL( street ) = TRUE.<SPAN> checks if the </SPAN>street<SPAN> variable is blank.</SPAN></P></LI></UL><P><STRONG>Tips for Using Predicate Functions:</STRONG></P><UL><LI><SPAN>Embrace readability!</SPAN><SPAN> Predicate functions make conditions clear and concise.</SPAN></LI><LI><SPAN>Chain them together using logical operators (AND,</SPAN><SPAN> OR,</SPAN><SPAN> NOT) for complex evaluations.</SPAN></LI></UL><P><STRONG>String Functions: Masters of Text Manipulation</STRONG></P><P><SPAN>String functions are the wordsmiths of ABAP,</SPAN><SPAN> allowing you to transform and analyze textual data.</SPAN></P><P><SPAN>Let's explore some common string functions:</SPAN></P><UL><LI><P><STRONG>SUBSTRING( )</STRONG><SPAN>:</SPAN><SPAN> Need to extract a specific part of a string?</SPAN> SUBSTRING( )<SPAN> is at your service.</SPAN><SPAN> Say you want the first letter of a name.</SPAN><SPAN> You can use </SPAN>name_initial = SUBSTRING( name, 1, 1 )<SPAN> to achieve this.</SPAN></P></LI><LI><P><STRONG>UPPER( )andLOWER( )</STRONG><SPAN>:</SPAN><SPAN> Want to shout everything in uppercase or whisper in lowercase?</SPAN><SPAN> These functions handle it.</SPAN> username_upper = UPPER( username )<SPAN> converts the </SPAN>username<SPAN> variable to all caps,</SPAN><SPAN> while </SPAN>LOWER( )<SPAN> does the opposite.</SPAN></P></LI><LI><P><STRONG>FIND( )</STRONG><SPAN>:</SPAN><SPAN> Finding a substring within a string is a breeze with </SPAN>FIND( )<SPAN>.</SPAN><SPAN> Imagine finding the first space in a name to determine the first word's length.</SPAN> name_length = FIND( ' ', name )<SPAN> accomplishes this by finding the position of the space.</SPAN></P></LI></UL><P><STRONG>Tips for Using String Functions:</STRONG></P><UL><LI><SPAN>Format data for clear presentation or validate user input using string functions.</SPAN></LI><LI><SPAN>Explore the vast library of built-in string functions.</SPAN><SPAN> You'll find options for searching,</SPAN><SPAN> replacing characters,</SPAN><SPAN> trimming whitespace,</SPAN><SPAN> and more.</SPAN></LI></UL><P><STRONG>Bonus Tip: Regular Expressions - The Power Tool</STRONG></P><P><SPAN>For complex pattern matching within strings,</SPAN><SPAN> consider regular expressions.</SPAN><SPAN> These powerful tools can be used in conjunction with string functions to unlock even more advanced text manipulation capabilities.</SPAN></P><P><SPAN>By mastering predicate and string functions,</SPAN><SPAN> you'll be well on your way to writing clean,</SPAN><SPAN> efficient,</SPAN><SPAN> and powerful ABAP code!</SPAN></P> 2024-06-13T20:38:33.554000+02:00 https://community.sap.com/t5/technology-blogs-by-members/thoughts-on-sap-codeconnect-2024/ba-p/13727524 Thoughts on SAP CodeConnect 2024 2024-06-14T09:25:27.970000+02:00 BenPatterson https://community.sap.com/t5/user/viewprofilepage/user-id/136196 <P>It was such a privilege to attend&nbsp;<A href="https://code-connect.dev/" target="_self" rel="nofollow noopener noreferrer">Code Connect</A>&nbsp; (un)conference this year in Germany. And I was proud to represent <A href="https://rev-trac.com/" target="_self" rel="nofollow noopener noreferrer">rev-trac</A>&nbsp;with the honour of providing some sponsorship of this developer led and focused initiative. Being a SAP partner that develops solutions both on, and for SAP technologies, it was a great fit for us. Our team on the ground included our lead Java (Srinath) and ABAP (Adam) engineers and also one of our key CAP engineers (Nick).&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Nick, Srinath, Adam and myself excited for the first day" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122142i1CBA0AEED40748A6/image-size/medium?v=v2&amp;px=400" role="button" title="BenPatterson_0-1718147019748.png" alt="Nick, Srinath, Adam and myself excited for the first day" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Nick, Srinath, Adam and myself excited for the first day</span></span></P><P>&nbsp;</P><P>In this blog, I wanted to share the feeling of being there and some of my thoughts and reflections. I encourage you to check out the session themselves which are available to view from the respective sites (below).</P><H2 id="toc-hId-1016686973">Overview</H2><P>The conference is a convergence of three individual events, <A href="https://recap-conf.dev/" target="_self" rel="nofollow noopener noreferrer">re</A><A href="https://recap-conf.dev/" target="_self" rel="nofollow noopener noreferrer">≼</A><A href="https://recap-conf.dev/" target="_self" rel="nofollow noopener noreferrer">CAP</A>,&nbsp;<A href="https://openui5.org/ui5con/germany2024/" target="_self" rel="nofollow noreferrer noopener">UI5con</A>&nbsp;&amp;&nbsp;<A href="https://abapconf.org/" target="_self" rel="nofollow noopener noreferrer">ABAPconf</A>. And it was interesting how they were combined, but each one had its own individual flavour and style. I think in future some of the logistical aspects would do well to align (e.g. ticketing, conference app, etc), but that individuality did create a sense of authenticity for each one.</P><P>The location was at the SAP campus at St Leon-Rot, near SAP's headquarters. And although this was somewhat remote, there was sense of being invited to SAP's home and experiencing some real heart-felt hospitality.</P><P>The first day started with a CAP code jam hosted by, none other than the CAP advocate extraordinaire DJ Adams himself. Unfortunately I was not able to attend that session, but all reports were expectedly praiseworthy. This was a fitting way to kick things off, followed by a meal at a community based Italian restaurant, which I did manage to get to. This was a pleasant evening and set the tone of welcoming and relaxed interaction.</P><P>Being an on-site event, the most important factor are the people. The attendees represented a great variety of backgrounds and experiences, as well as a good representation from the SAP technical product teams. Above all was the general attitude of curiosity, adventure and sense of passion for the technologies of their respective crafts. Another trait that stood out was a sense of honesty and openness regarding the challenges and concerns that exist out there on each of these frontiers.</P><P>The first conference day started with&nbsp;<FONT face="arial,helvetica,sans-serif"><SPAN>re</SPAN><SPAN>≼</SPAN><SPAN>CAP</SPAN></FONT>, setting the pace with a barrage of new ideas and features. Some of the high level takeaways:</P><UL><LI><FONT face="arial,helvetica,sans-serif"><SPAN>The plugin framework, leading to a more standardised way to provide or receive additional CAP functionality</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>Embedded analytics</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>Logging and telemetry and overall improvements in Ops support</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>Advancements in draft handing, as well as some challenges poignantly raised by Sergei Haller</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>Documentation - it was great to see the CAPire team there actively listening and taking feedback from users </SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>Approaches to robust Node.js lifecycles presented by Mauricio Lauffer</SPAN></FONT>&nbsp;</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="we love CAP" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122172i6958DEE2D750711A/image-size/medium?v=v2&amp;px=400" role="button" title="BenPatterson_3-1718159521274.png" alt="we love CAP" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">we love CAP</span></span></P><P>&nbsp;</P><P>UI5con was the next day following closely in reCAPs footsteps. <FONT face="arial, helvetica, sans-serif">Some big topics that I came across were:</FONT></P><UL><UL><LI><FONT face="arial,helvetica,sans-serif"><SPAN>Web Components, Web Components, Web Components. This was a big focus, and for good reason, its great tech and I am keen to see how it works its way into the entire UI5 solution going forward</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>New advancements with analytics and hierarchy views</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>Testing! Such an important (and often under-appreciated) topic. The overview provided by Simon Coen on this was exceptional, providing a solid framework for providing full coverage for you UI5 stack.</SPAN></FONT></LI></UL></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="UI5con!" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122171iB50BB170E4C6796D/image-size/medium?v=v2&amp;px=400" role="button" title="BenPatterson_2-1718159374600.png" alt="UI5con!" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">UI5con!</span></span></P><P>&nbsp;</P><P>And last but definitely not least was ABAPconf, bringing the series to a close.&nbsp;<SPAN>Here we also saw large amount of excitement and new ideas. As is tradition, there is a German speaking component, which I appreciated in the introduction, but for the four sessions held in German only (with some English slides) I felt that this somewhat detracted from the inclusiveness compared to the other two days. Some highlights were:</SPAN></P><UL><UL><LI><FONT face="arial,helvetica,sans-serif"><SPAN>More detail on implementing clean core on stack, essentially moving items from tier 3 'Classic', or 'Dirty' ABAP and separating out items that can't be implemented with the currently exposed ABAP API objects into a separate tagged package. This provides a staging ground for migration that gives a clear scope of the overlap or exposure to non released items, perhaps in a sense an anti-corruption layer.</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>ABAP package manager - an inspirational call to innovate towards open source with ABAP</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>More detailed approaches to testing was also a welcome aspect here</SPAN></FONT></LI><LI><FONT face="arial,helvetica,sans-serif"><SPAN>One thing I missed at this one was interaction with the experts via the meet the expert booth</SPAN></FONT></LI></UL></UL><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Willkommen - abap conf!" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122169i52C2A60E345C6739/image-size/medium?v=v2&amp;px=400" role="button" title="BenPatterson_1-1718159277291.png" alt="Willkommen - abap conf!" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Willkommen - abap conf!</span></span></P><P>&nbsp;</P><P>Each of the three conference days concluded with a dinner on the delightful campus grounds with almost a carnival like atmosphere, and steady flow of excellent craft beer. Not to mention that we were blessed with some fantastic weather. This aspect really stitched the conference together with that sense of hospitality and provided ample time to connect and reflect on the days experiences.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Enjoying the food, beer and conversations at CodeConnect" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122173i1512480B359074DC/image-size/medium?v=v2&amp;px=400" role="button" title="BenPatterson_4-1718159953636.png" alt="Enjoying the food, beer and conversations at CodeConnect" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Enjoying the food, beer and conversations at CodeConnect</span></span></P><H2 id="toc-hId-820173468">General reflections</H2><P>Overall I would have to say the key positive would be the passion and energy on the floor. This was of course varied throughout, but in some cases this was truly inspirational.</P><P>The other aspect was the format (esp. reCAP and UI5con). The sessions were short (about 20min) and were often in series or themes, and this allowed a very flexible way to interact, by just going to one presentation and then chat to the experts at the booth or dive deep and go to three talks in a related series.</P><P>The SAP community representation lead by Svea was also a real plus.</P><P>I would suggest that perhaps&nbsp;<FONT face="arial,helvetica,sans-serif"><SPAN>re</SPAN><SPAN>≼</SPAN><SPAN>CAP&nbsp;</SPAN></FONT>could be spread over more than one day as there was just so much to dive into. But I can appreciate that organising such events is huge undertaking, so it’s a big ask. Perhaps some sessions could sneak into the code jam day.</P><P>Overall, it was a fantastic experience and thanks to all those who organised it, your hard work was much appreciated.</P><P>Best regards,</P><P>Ben.</P><P>PS, for more thoughts on this by a fellow Antipodean, head on over to blog by <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/11418">@mauriciolauffer</a>&nbsp;'s <A href="https://community.sap.com/t5/technology-blogs-by-sap/my-code-connect-2024-experience/ba-p/13725287#comment-on-this" target="_self">reflections on the event</A> as well.</P><P>&nbsp;</P><P>&nbsp;</P> 2024-06-14T09:25:27.970000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-master-data-governance-roadmap-session-at-sap-sapphire/ba-p/13728004 SAP Master Data Governance - Roadmap Session at SAP Sapphire 2024-06-16T08:26:49.288000+02:00 MarkusKuppe https://community.sap.com/t5/user/viewprofilepage/user-id/45602 <P><SPAN>(If you&nbsp;<STRONG>prefer listening to reading</STRONG>, you can also&nbsp;<STRONG><A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_3iugdw9c" target="_blank" rel="nofollow noopener noreferrer">watch this video</A>&nbsp;</STRONG>where I cover the content of this post in an online session.)</SPAN></P><P><SPAN>I recently outlined our plans for the SAP Master Data Governance (MDG) solution portfolio at Sapphire, Orlando.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new1.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/123027i12BC66343B490816/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new1.png" alt="SAPHHIRE24_new1.png" /></span></SPAN></P><P><SPAN>The MDG roadmap session was fully packed at Sapphire and our plans resonated well with the audience. In fact, at the beginning of the session there was still a big crowd of people standing outside the room waiting for entry, but as the room was already completely full they could unfortunately not attend&nbsp;for security reasons. </SPAN></P><P><SPAN>I would like to apologize for the fact that some of you were not let in. And to make up for this at least a bit, I'd like to share the news with you in the SAP Community. (The slides below are actually the ones that I used in that Sapphire roadmap session.)</SPAN></P><P><SPAN>Please note that the roadmap disclaimer indicating that future items are subject to change applies.<BR /></SPAN></P><H3 id="toc-hId-1145794616">Solution Introduction</H3><P><SPAN>To get started, let me very briefly explain what SAP Master Data Governance (MDG) is, and which topics it addresses.</SPAN></P><P>&nbsp;</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122988i022CDF6A5155168D/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new2.png" alt="SAPHHIRE24_new2.png" /></span></SPAN></P><P>&nbsp;</P><P>MDG is an application to manage master data, it provides preconfigured, domain-specific master data governance to monitor, find and correct data quality issues. You can either centrally create, change, and distribute, or you can consolidate master data coming from different systems in your complete enterprise landscape.</P><P>SAP MDG is one application for all master data. It is not only for SAP master data. It does come with a lot of out-of-the-box, domain-specific capabilities that are, of course, based on SAP’s data models and business logic. But it is also a platform that is used by many customers to build master data governance processes on extended data models and completely custom-defined master data domains.</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122919i4ED2EE39AE2F144C/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_3.png" alt="SAPHHIRE24_3.png" /></span></SPAN></P><P>From our customers, we understand that the purpose of master data management is really to improve the quality of master data and to get a corporate-wide understanding of master data, so that they can run and optimize their business on top of it.</P><P>As you might know, companies are taking different approaches to MDM. For example, some allow for de-central ownership of master data, and create a common understanding by using master data consolidation to create key mapping between detected duplicates and to create a golden record. Others prefer central ownership of master data and distribute master data that is always created in high quality. Some companies decide to take a de-central approach for some domains – like customer master data, for example – and a central approach for other domains – like when introducing new products, for example. And on top of that, many companies constantly monitor how the quality of master data evolves. And then they react, if they find issues.</P><P>SAP MDG supports all these approaches and also all combinations of these approaches in a very integrated and organized way, and this is very much appreciated by our customers. This allows you to combine approaches as required to cover all use cases and all implementation styles, for a complete enterprise master data management program with just one solution: SAP MDG.</P><H3 id="toc-hId-949281111">Strategy and Vision</H3><P>Our strategy and vision for MDG is very consistent over the last years. And we are very successfully executing along this vision. And you will also see that it is not an isolated strategy just for MDG. Our MDG product strategy is embedded into SAP’s broader business solutions strategy as well as the SAP BTP strategy.</P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122922i6D69EA5024D99DD5/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_4.png" alt="SAPHHIRE24_4.png" /></span></SPAN></SPAN></P><P>Our roadmap for MDG is driven by – our core beliefs – and by trends that we see in the market. We believe, SAP can provide much more value to our customers than just any MDM tool provider, because we understand how master data is used in business context. We create benefits for our customers leveraging this understanding. We can provide master data management capabilities that truly support all domains, all industries, and all approaches, embedded into the business. We have proven this with SAP MDG, and we will continue to deliver on this unique promise.</P><P>In addition, we see certain trends in the market. And I will talk about these trends in more detail on the next slides. On this slide, I just want to highlight how interrelated these trends are.&nbsp;</P><P>For example, new sources for trusted data in the cloud, or data sharing in business networks in the cloud, will allow for more automation in keeping your master data records up to date.</P><P>Or take the fact that Digitization demands for higher volumes and better quality of master data, and hence needs more automation in master data management.</P><P>As we all know, the market for business application software is moving towards modular applications and towards the cloud. For most companies, this move to the cloud is not one single step. And to allow for a step-by-step journey, modularization is a key enabler, that allows to move also MDM capabilities to the cloud step-by-step, as required by the applications.</P><P><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122924i0EFACE38C984856F/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_5.png" alt="SAPHHIRE24_5.png" /></span></SPAN></SPAN></P><P>Let’s come to the first trend: <STRONG>Cloud</STRONG>. When business applications are moving to the cloud, the master data itself needs to be provided there. And this is of course possible with MDG today. But in addition, we will continue to provide cloud-based master data integration services on the SAP Business Technology Platform. And we will build out data quality services as microservices in the cloud. Like today we are offering Address-Validation-as-a-Service against always up-to-date address directories, in the cloud.</P><P>I already mentioned that a stepwise move of business applications to the cloud demands for a modular approach to MDM. We are addressing this need with federation of MDG. This will by the way also help to meet the increasingly local compliance regulations.</P><P>Modularization and cloud consumption will also enable our customers to get to a positive return on investment much faster and to grow their enterprise MDM program exactly in the pace needed for their strategic business initiatives.&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122989i24A41A3C9D52CF3D/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new5.png" alt="SAPHHIRE24_new5.png" /></span></P><P><SPAN>I think we all agree that master data is the key resource of any digital transformation. We will enhance MDG to help companies to become more intelligent, more agile, and to always process data compliantly.</SPAN></P><P><STRONG>Digitization</STRONG> will demand for modular, specialized business applications and we will help to provide harmonized, high-quality master data to these applications to enable end-to-end processes for Intelligent Enterprises. The key drivers that we are focusing on in MDG are automation enablement, efficiency, and master data quality management.</P><P>In the modular application landscape of the future, it will be a challenge to provide frictionless digital processes. SAP’s Business Technology Platform will be the foundation to achieve this. SAP One Domain Model as the common language and SAP Master Data Integration for SAP and non-SAP integration will enable this.</P><P>And this will provide our customers with a very high return on their investment into master data quality, because BTP’s common data foundation will allow to then broadly apply artificial intelligence as well as analytical scenarios to all data, and this is then powered by high quality master data provided by SAP MDG. This means that every investment that you put into improved master data with MDG, will pay back significantly in all your data-driven scenarios on top of BTP.</P><P>We actually also see clear proof of this interrelation of digitization and investments into master data management, as many of the current SAP S/4HANA transformation programs at our customers are using SAP MDG to prepare this fundamental move for their company.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new6.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122991i1321EF1EADAB870E/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new6.png" alt="SAPHHIRE24_new6.png" /></span></P><P><SPAN>As discussed, digitization is one of the key drivers for </SPAN><STRONG>automation</STRONG><SPAN> in MDM. We will leverage SAP’s deep knowledge in business applications, analytics, and business networks, to reduce the need for manual tasks in achieving high master data quality.</SPAN></P><P>We are leveraging third-party data providers to drive automation in master data creation. We are providing ways to predict master data attribute values from application context, and we plan to continue to use more artificial intelligence to support master data quality tasks. This will help to reduce the human effort in MDM and will help to avoid errors created by humans, and to avoid the effort it takes to correct these human errors.</P><P>This kind of automation will need an agile, rapidly-scaling MDM solution, that can be extended fast, scales quickly, and easily integrates with new systems, new business processes and new data types. We think, on the long run a modular approach to MDM will be more effective to meet this agility, more effective than a monolithic approach.</P><P><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_8.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122929i5E517C0972BEE16B/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_8.png" alt="SAPHHIRE24_8.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P>Let’s now focus on <STRONG>Federation</STRONG>. I have pointed out earlier how a more modular application landscape requires a modular approach to MDM and what other benefits in agility, speed, efficiency, and TCO we expect from that approach. Therefore, we provide this additional deployment option for MDG.</P><P>This can be an option for companies that plan to balance central and decentral MDG processes instead of using a fully centrally managed MDG approach.</P><P>This can for example be an alternative for very heterogeneous companies running very differently set up business processes and application systems in their landscape, and for example also multiple differently configured SAP S/4HANA systems.</P><P>We believe in providing choices and non-disruptive journeys for our customers. That is why this additional deployment option is not only for new customers but can also be used by existing customers by adding to their current implementation and safeguarding their investments into SAP MDG.</P><P>As of today, most companies are using one single MDG system to centrally-manage the master data for the complete enterprise. And everybody can of course continue to do so. But for some companies, one single monolithic MDM system for the complete company already today provides some challenges. And as we discussed, this will even increase in the future.</P><P>The new approach with a federated MDG landscape will allow these companies to go for a more modular approach. They can for example get their MDM journey started at very low initial investment by just subscribing to a highly standardized Software-as-a-Service solution just for core master data attributes. And then in the future they can grow into a platform approach. Or they can federate out to more application-specific deployments of MDG.</P><P>We believe that we will provide companies with a faster time to value, with increased flexibility that enables a broader MDM scope, and with a lower Total-Cost-of-Ownership.</P><P>Federation allows companies to execute master data management as central as possible, but also as local as needed by the diverse parts of the organization. They can really govern the data at the place where it is best understood. For more details, you may want to read the&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/benefits-of-federated-governance-with-sap-master-data-governance-on-sap-s/ba-p/13574532" target="_blank">blog post about the benefits of federation</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new9.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122993i84A647AC337ADDD3/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new9.png" alt="SAPHHIRE24_new9.png" /></span></P><P><SPAN>SAP offers choices how to consume SAP Master Data Governance across the cloud and on premise. Companies can hence decide for their deployment approach of choice.</SPAN></P><P><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN>On the left-hand side, you see <STRONG>SAP MDG on SAP S/4HANA, private cloud edition</STRONG> – which can also be deployed on premise. This version is typically used for multi-domain, centralized governance across complete enterprises. It has pre-delivered business content across various domains (for example, business partner, customer, supplier, material, financial data), and there are solution extensions from SAP Partners. This version comes with a very flexible framework to extend processes or create custom master data objects that even meet the very complex needs of the largest enterprises.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN>In the middle, there is <STRONG>SAP MDG on the public cloud version of SAP S/4HANA</STRONG>. This is typically for organizations who are focused on consumption in the public cloud, and who are running SAP S/4HANA in the public cloud. This version is currently focuses on business partner, customer, supplier, and product data. It is easy to consume and provides the processes for the very broad underlying S/4HANA data model.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN>And then, <STRONG>SAP Master Data Governance, cloud edition</STRONG> – on the right-hand side – is a software-as-a-service kick-start solution for the governance of core Business Partner data.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN>We will <STRONG>continue to enhance all three versions</STRONG> of MDG. As you can read on the bottom of the page, the strategy is that all versions of MDG will have the<STRONG> same broad coverage of master data management processes</STRONG> across central governance, consolidation, data quality management and so on. </SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN>The <STRONG>two differences</STRONG> are: first, in the <STRONG>data model</STRONG> – which is either the very broad data model provided by SAP S/4HANA, or it is the core data model of SAP Business Technology Platform. And the second difference is on the way <STRONG>how you can consume MDG</STRONG>, from a very easy to consume SaaS solution in the public cloud (on the right-hand side) to a robust private platform that supports even the most demanding customizations of the largest companies of the world (on the left side).</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><H3 id="toc-hId-752767606">Recent and Planned Innovations</H3><P>I would now like to focus on some recent and planned innovations, and explain how these relate to our product strategy. You might have already noticed this little graphic on the top right side. This always highlights, which part of our strategy is addressed by which innovation.</P><P><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new10.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122994i88BDC5D56FDACCBD/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new10.png" alt="SAPHHIRE24_new10.png" /></span></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><P>The first recent innovation that I would like to cover is about <STRONG>federation and modularization</STRONG>.<BR />What we have recently enabled is that you can use the 2023 version of SAP MDG on SAP S/4HANA as the core data owner in a federated MDG landscape. And you can also use this version of MDG as Application Data Owner in federated MDG.</P><P>The benefits that we generate with this new innovation are of course the benefits that we communicated for federated MDG: you can build an enterprise-wide approach to master data management that allows for de-central freedom to manage the data where it is best understood – in the context of de-central applications. But nonetheless you get all the advantages of a centralized approach to master data management.</P><P>How do you set up such a federated MDG? You switch on MDG capabilities on all relevant systems. Then you define the ownership in one central place. You pick the one system that is your core data owner, and you define which application data owner is responsible for which part of the data.</P><P>And that’s it. After you have set this up, based on the process templates you choose in each system, MDG will orchestrate the processes across the various data owners, so that every system manages the part of the data that it owns.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new11.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122995i896F5A579560D5C5/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new11.png" alt="SAPHHIRE24_new11.png" /></span></P><P><SPAN>The next innovation that I'd like to focus on is a key enabler of&nbsp;multiple topics on our roadmap. Hence the broad reference to our strategy in the top right corner.</SPAN></P><P>In Q4 2023, we have provided the so called “cloud-ready mode” in MDG. This is an additional option how to use the master data governance processes like central governance, mass processing, consolidation and data quality management.</P><P>We leverage SAP’s next-generation development model for cloud-ready and enterprise-grade applications, which is referred to as “ABAP Cloud”. This is a very modern software architecture that uses FIORI as the UI technology, SAP HANA and Core Data Services for the data model, and cloud-optimized ABAP language for the business logic.</P><P>One key benefit for our customers is that this helps to implement a “clean core” strategy in order to make their enterprise-scale implementation upgrade-safe and ready for the cloud. Another aspect is that we plan to offer that same modern architecture across all versions of MDG across on premise and cloud. For example, if a company is using multiple deployments of MDG in a federated landscape in the future, they can leverage extensions that they have made in one deployment approach, then also in their other MDG instances. Or they can continue to use extensions in case they transition MDG capabilities from on premise to the cloud.</P><P>This cloud-ready mode architecture is the foundation for innovations such as federated master data governance with MDG on S/4HANA as a core data owner, which I just talked about. And this improved architecture also allows us to introduce new capabilities in MDG, like flawlessly integrating trusted data from external providers directly into the user interfaces and the processes of the end-users, which you see as a screenshot on the right-hand side. I will actually come back to data provider integration on a later slide.<BR />But for now let's concentrate on cloud-ready mode.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new12.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122996iDBFDC783DCB5ABB4/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new12.png" alt="SAPHHIRE24_new12.png" /></span></P><P><SPAN>As said, we introduced the cloud-ready mode in MDG on S/4HANA 2023. We allow our customers to switch on the cloud-ready mode per domain, if they like to. The current focus is on the Business Partner domain. On the right-hand side, you see a screenshot how this looks like in the SAP Customizing IMG.</SPAN></P><P>This switch will convert all processes based on the Consolidation and Mass Processing framework to the new architecture and allows to do single processing also on that framework. And in parallel, you can still use central governance in classic mode in parallel, if you prefer.</P><P>After switching it on, the modern architecture allows for a very consistent process design and very consistent user interfaces across all MDG processes – everything in SAP Fiori. And it allows for true end-to-end automation of processes. For example, at every step in all relevant processes, customers can branch out into a workflow to involve the right experts or to bring in automation like automatic validation and approval, or like enrichment via automatic population of attributes. And there is flawless navigation for users between mass processes and maintenance of single records within the mass processes.</P><P>And this modern architecture also allows for seamless integration of new capabilities, like data provider integration, federation, or also graphical visualization of running MDG processes – even across systems.</P><P>More information regarding <STRONG>cloud-ready mode in SAP MDG</STRONG> can be found in <A href="https://community.sap.com/t5/technology-blogs-by-sap/how-you-can-benefit-from-cloud-ready-mode-in-sap-master-data-governance/ba-p/13573678" target="_self">this blog post</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new13.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122997iB6C55C6906824E48/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new13.png" alt="SAPHHIRE24_new13.png" /></span></P><P><SPAN><STRONG>Data provider integration</STRONG> is another recent innovation that we brought to market in 2023. It is about automation with the help of trusted external data. We had provided first scenarios in our product version SAP MDG, cloud edition. And now with the 2023 version it is also available to our customers in the version of SAP MDG on SAP S/4HANA. We offer creation and enrichment of business partner data based on reference data from our partner Corporate Data Quality, who has access to more than 70 sources of trusted business partner data around the globe.</SPAN></P><P>As pointed out before, the target is to help our customers increase the automation in master data management. You should be able to leverage high quality data that is provided by trusted sources or that you share with other companies in a community approach. As of today, we offer creation and enrichment of single records. In the future, we also want to enable mass scenarios with automatic updates of changes coming from the data providers. We also want to provide out-of-the box connectivity to other providers like Dun &amp; Bradstreet and to enable companies to connect their own data provider of choice.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new14.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/123000i2F9BF2E2DC416624/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new14.png" alt="SAPHHIRE24_new14.png" /></span></P><P>Let me also share information about some planned innovations for the near future. The first set of innovations is about <STRONG>artificial intelligence</STRONG>.</P><P>As you might know, we already use AI in MDG for data quality rule mining. The system can investigate your current master data attribute sets and can propose potential new data quality rules that you might want to also put into your rule repository and that you might want to enforce wherever data enters your system.<BR />But this slide here is not about the existing <STRONG>Business Rule Mining</STRONG>. This is about two new scenarios that we plan to provide with the Feature Pack Stack 2 for MDG on S/4HANA 2023 later this year.&nbsp;</P><P>On the left-hand side you will see the two scenarios highlighted in orange:&nbsp;The first one is called “<STRONG>Summarize Changes</STRONG>”. This feature will help you in change request processing to get an overview of unsaved and saved changes in natural language (of course using a Large Language Model). This feature can for example help people who intend to do master data changes. They can check in a natural language summary whether they have changed everything they intended to. Or also for people who are approving master data changes by others: they get a natural language explanation of the requested changes.</P><P>The second scenario is called “<STRONG>Assisted Change</STRONG>”. The idea here is to allow to change master data attributes with as little effort as possible, so that applying changes to a master data object is time efficient. Here, a user can make prompts in natural language to do attribute changes. For example, for people who are<BR />less trained or less experienced in master data management, this means that they can have an easier way to communicate the intended change to the system and they are then guided towards the right attributes in the data model that reflect their intended change.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new15.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/123003i437BDCEAD715C51E/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new15.png" alt="SAPHHIRE24_new15.png" /></span></P><P><SPAN>The last planned innovation, that I'd like to highlight today is business partner hierarchy management. The target here is an <STRONG>application-agnostic legal business partner hierarchy</STRONG>. But don’t get this wrong: this is not only about manual maintenance of a hierarchy. This also about automation of this process.</SPAN></P><P>The idea is that you can use data sources like external data provides to retrieve legal hierarchies (like a Dun &amp; Bradstreet family tree) and that MDG can load that data and solve conflicts, for example if there are incompatible changes.</P><P>Of course, there is also manual maintenance and processes to ensure the governance of the hierarchy changes, but we also plan for automatic derivation of your own representation of a legal hierarchy based on the external data, and you should also be able to consolidate changes coming for example from file uploads or other sources.</P><P>And then we plan for replication of the hierarchy information using SAP Master Data Integration services on BTP, so that applications can consume these hierarchies. And SAP is of course also planning to provide the consumption of these hierarchies in various applications as part of the roadmap for these applications.<BR />We have just recently provided the initial version of this capability in SAP MDG cloud edition (with <A href="https://community.sap.com/t5/technology-blogs-by-sap/governance-of-application-agnostic-legal-business-partner-hierarchies/ba-p/13689414" target="_blank">Release 2405</A>), we plan to also provide this in MDG on S/4HANA (most probably in the year 2025, and we plan to further expand this capability as outlined above.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new16.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/123008iC1A79B8972B8C19D/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new16.png" alt="SAPHHIRE24_new16.png" /></span></P><P><SPAN>Finally, here is an overview of all the innovations that we plan over the next few years. All this information is also available via the </SPAN><A href="https://roadmaps.sap.com/board?PRODUCT=67837800100800007389&amp;PRODUCT=73555000100800002492&amp;PRODUCT=901B0ED1A0641EDA9FF75276E440C0EF&amp;BC=6EAE8B27FCC11ED892E91F270C4E80CC&amp;range=2023Q4-2025Q4" target="_blank" rel="noopener noreferrer">SAP Roadmap Explorer</A><SPAN>.</SPAN></P><P>This slide reads from left to right, starting with recent innovations on the left-hand side and then the planned innovations along the years 2024, 2025 and 2026.</P><P>I know that this is perhaps a little bit of an eye chart, and I would anyways recommend that you take a detailed look at the Roadmap Explorer. For now, I have highlighted some of the most important planned innovations in a larger font:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new17.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/123010iD01CB389DE1EF572/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new17.png" alt="SAPHHIRE24_new17.png" /></span></P><P><SPAN>This year we plan to provide the <STRONG>legal business partner hierarchy</STRONG> that I just mentioned. And we are actually working on integrated processes for <STRONG>end-to-end supplier management</STRONG> across SAP MDG and the Ariba portfolio. By this we plan to integrate governance and approvals as well as automation and 3rd party integration directly into Ariba’s processes for purchasers and business users.</SPAN></P><P>In the years 2025 and 2026, we plan to enable all relevant MDG processes for business partner data on <STRONG>SAP S/4HANA cloud, public edition</STRONG>. This includes the option to use S/4HANA public cloud as an application data owner in a network of federated MDGs. So far, we have offered that option for S/4HANA on premise and private cloud.</P><P>In addition, we intend to focus a lot on the <STRONG>product domain</STRONG>, this includes the cloud-ready mode architecture across all versions of MDG as well as federation for the product domain.</P><P>And in parallel, we are working on <STRONG>further platform capabilities</STRONG>, like providing SAP MDG, cloud edition on BTP also as Platform-as-a-Service (today it is offered as Software-as-a-Service) and providing the cloud-ready mode option also for custom-defined objects.</P><P>And then there are all the other planned innovation that you saw on the slide before that you can investigate in detail in the SAP Roadmap Explorer online.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAPHHIRE24_new18.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/123014iC160C50A2D10D630/image-size/large?v=v2&amp;px=999" role="button" title="SAPHHIRE24_new18.png" alt="SAPHHIRE24_new18.png" /></span></P><P><SPAN>To summarize, SAP Master Data Governance is the <STRONG>one solution for your entire enterprise master data management program</STRONG>. It is an application that provides preconfigured, domain-specific master data governance. At the same time, it is an open platform to extend and build, in order to manage your own master data domains for all SAP and non-SAP landscapes.</SPAN></P><P>And SAP MDG is also a <STRONG>key enabler</STRONG> that will help you get ready for your <STRONG>future business transformations</STRONG>. Many things are already available today, but we also discussed all the innovations on our roadmap for MDG that follow our main themes of <STRONG>automation</STRONG>, and <STRONG>federation</STRONG> to enable our customers’ <STRONG>digital transformation</STRONG> and their <STRONG>path to the cloud</STRONG>.</P><P>Our roadmap for SAP MDG will focus on unlocking these additional benefits for our customers, while maintaining our core belief that SAP can do more than just provide a toolbox for master data management.</P><P><SPAN>To stay on track with what's going on in SAP MDG, simply follow the&nbsp;</SPAN><SPAN><A href="https://community.sap.com/topics/master-data-governance" target="_blank">SAP Community Topic Page for SAP Master Data Governance</A></SPAN><SPAN>&nbsp;and join the&nbsp;</SPAN><SPAN><A href="https://answers.sap.com/tags/67837800100800004488" target="_blank" rel="noopener noreferrer">Q&amp;A and discussion forum</A></SPAN><SPAN>.</SPAN></P><P><SPAN>Best,<BR />Markus</SPAN></P> 2024-06-16T08:26:49.288000+02:00 https://community.sap.com/t5/technology-blogs-by-members/sap-btp-global-account-directories-and-subaccounts/ba-p/13734715 SAP BTP Global Account, Directories and Subaccounts 2024-06-18T16:04:45.762000+02:00 Daniel_Enderli https://community.sap.com/t5/user/viewprofilepage/user-id/2995 <H3 id="toc-hId-1146605732"><SPAN>SAP BTP Cockpit</SPAN></H3><P><SPAN>Start the SAP BTP cockpit</SPAN></P><P><A href="https://cockpit.btp.cloud.sap" target="_blank" rel="noopener nofollow noreferrer">https://cockpit.btp.cloud.sap</A></P><H3 id="toc-hId-950092227"><SPAN>Big Picture and Overview</SPAN></H3><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1718719394446.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124993iF107B72A000ACAEE/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1718719394446.png" alt="Daniel_Enderli_0-1718719394446.png" /></span></P><H3 id="toc-hId-753578722"><SPAN>How you can structure your SAP BTP account</SPAN></H3><P><SPAN>Go to Account Explorer</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1718717795492.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124982i16622B632D4297B4/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1718717795492.png" alt="Daniel_Enderli_0-1718717795492.png" /></span></P><P>Here you can create "Directories" and "Subaccounts"</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_1-1718717847229.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124983i193147F16BC2A81A/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_1-1718717847229.png" alt="Daniel_Enderli_1-1718717847229.png" /></span></P><P><SPAN>Possible structures are: </SPAN></P><UL><LI><SPAN>by country/region </SPAN></LI><LI><SPAN>by department </SPAN></LI><LI><SPAN>by project </SPAN></LI><LI><SPAN>etc.</SPAN></LI></UL><P>Example</P><P>As a simple example I use a headquarter in Switzerland and a branch in Italy.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1718718344519.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124984i905260A0EC048CA1/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1718718344519.png" alt="Daniel_Enderli_0-1718718344519.png" /></span></P><P><SPAN>Now you can configure additional functions for the relevant areas.</SPAN></P><P>&nbsp;</P> 2024-06-18T16:04:45.762000+02:00 https://community.sap.com/t5/technology-blogs-by-members/setting-up-an-abap-environment-on-sap-btp/ba-p/13734846 Setting up an ABAP Environment on SAP BTP 2024-06-18T17:24:09.427000+02:00 Daniel_Enderli https://community.sap.com/t5/user/viewprofilepage/user-id/2995 <H3 id="toc-hId-1146606787">Overview</H3><P>We will set up the ABAP Environment on SAP BTP by using the Cloud Foundry runtime environment.</P><H3 id="toc-hId-950093282">1. Add a Service Plan</H3><P>Go to your Subaccount.<BR />Add an new Service Plan and search for "ABAP environment".<BR />Select all 3 options for the available plans.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1718723613606.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125036i1DD138C4747AE37E/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1718723613606.png" alt="Daniel_Enderli_0-1718723613606.png" /></span></P><H3 id="toc-hId-753579777">2. Service Marketplace</H3><P>Then navigate to the "Service Marketplace" and Search for "ABAP environment".<BR />Now you are ready to configure the ABAP environment.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_2-1718722342086.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125023i91FB08F4CD79027D/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_2-1718722342086.png" alt="Daniel_Enderli_2-1718722342086.png" /></span></P><H3 id="toc-hId-557066272">3. Create a New Instance</H3><P>We need to create a new instance to deploy the ABAP environment. So <SPAN>let's do this.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_5-1718723150367.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125031i150D3954F0D966AF/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_5-1718723150367.png" alt="Daniel_Enderli_5-1718723150367.png" /></span></P><P>Go through the 3-Step procedure</P><P>Step 1</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_6-1718723244347.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125032iF5D96D8DDE00C1D5/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_6-1718723244347.png" alt="Daniel_Enderli_6-1718723244347.png" /></span></P><P>Step 2</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_7-1718723283172.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125034i5522B3160EEF808E/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_7-1718723283172.png" alt="Daniel_Enderli_7-1718723283172.png" /></span></P><P>Step 3</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_8-1718723309038.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125035i7FFE7824C0D7D92B/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_8-1718723309038.png" alt="Daniel_Enderli_8-1718723309038.png" /></span></P><P><SPAN>If everything is correct you will see the following message.&nbsp;</SPAN>Click on "View Instance" for more details.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_1-1718722301083.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125022i197D65EEC4451D1D/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_1-1718722301083.png" alt="Daniel_Enderli_1-1718722301083.png" /></span></P><P>Under Instances you can see that the new ABAP environment have the status "Creation in progress".</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1718722284146.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125021i70487A34B247C65B/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1718722284146.png" alt="Daniel_Enderli_0-1718722284146.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1718724064685.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/125046iB957260C86C3A627/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1718724064685.png" alt="Daniel_Enderli_0-1718724064685.png" /></span></P><P>That's it.</P><P>&nbsp;</P> 2024-06-18T17:24:09.427000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-pre-upgrade-option-for-release-2408/ba-p/13740895 SAP BTP ABAP Environment – Pre-Upgrade Option for Release 2408 2024-06-24T12:59:27.372000+02:00 FrankJentsch https://community.sap.com/t5/user/viewprofilepage/user-id/4296 <H1 id="toc-hId-889245860">Overview</H1><P>Providing a significant number of new features is an important goal of release upgrades to deliver innovations to our customers and partners. There are four major release upgrades per year following a predefined schedule as described in this&nbsp;<A href="https://blogs.sap.com/2023/11/09/sap-btp-abap-environment-maintenance-windows-and-major-upgrade-windows-in-2024/" target="_blank" rel="noopener noreferrer">blog post</A>.<BR /><BR />An upgrade is intended as a “no event” for customers and partners. For example, only compatible changes of released objects (APIs) will be delivered. We recommend performing a test of the custom-built productive apps in a test environment for the new release. The complexity of the technical dependencies between the custom-built apps and the underlying environment cannot be tested isolated, only including the ABAP environment on SAP-side. Therefore, we offer you to pre-upgrade selected systems 15 days in advance to test the applications prior to the planned standard-upgrade.</P><P>&nbsp;</P><H1 id="toc-hId-692732355">Purpose</H1><P>This option enables a customer or partner to test the applications they have already developed on top of the new release a couple of days before the standard-upgrade. With SAP BTP ABAP Environment (aka "Steampunk"), we follow the approach of keeping released objects stable and provide all enhancements in a compatible fashion. Early testing is an additional measure to ensure proper software quality and might be used to detect unforeseen regressions. However, this option is not intended to test new features or to consume new features earlier.</P><P>&nbsp;</P><H1 id="toc-hId-496218850">Approach</H1><P>The standard-upgrade of all systems to release <STRONG>2408</STRONG>&nbsp;is planned for <STRONG>August 17/18</STRONG>.</P><P>A customer or partner can nominate one or more already existing systems for the pre-upgrade. A nominated system will be upgraded on <STRONG>August 2</STRONG>&nbsp;within a planned downtime&nbsp;<STRONG>from 8:00 to 16:00 CET</STRONG>.</P><P>We recommend nominating a non-development system, such as a test system. The nomination of a development system is technically also possible, but fixes or other changes must not be imported into another system with a lower release. The nomination of a productive system doesn’t make sense because the purpose of the pre-upgrade is the re-test of the existing application before the productive system gets the new release.</P><P>According to the approach explained above, this offer is only relevant for customers or partners having at least two systems.</P><P>There might be situations where a correction of custom objects needs to be deployed. Such corrections are possible if the development / correction system is on the older release and is imported into the pre-upgraded system with the higher release.</P><P>Except potential fixes, the pre-upgrade is based on the same version as the standard-upgrade.</P><P>&nbsp;</P><H1 id="toc-hId-299705345">Costs</H1><P>This offering is optional and free of any additional charges.</P><P>&nbsp;</P><H1 id="toc-hId-103191840">Planned New Features</H1><P data-unlink="true">The planned new features will be published on the <A href="https://help.sap.com/whats-new/7a822d3bcaa74f31b98fa315601e9c96?Version=ABAP%20Environment%202408" target="_blank" rel="noopener noreferrer">What's New for SAP BTP ABAP Environment</A> on July 19.&nbsp;This list gives you an overview of potential areas for re-testing. The purpose of the pre-upgrade is not to consume these features before the standard-upgrade, because the documentation on help.sap.com will be delivered later before the standard-upgrade. It would also not be possible to transport code of such an adoption, because subsequent systems are not yet on the new release during the pre-upgrade phase.</P><P>Independent of the upgrades of the SAP BTP ABAP Environment, we recommend developing automated tests for the custom-built apps to detect regressions early on and without manual effort for re-testing. Such automated tests are perfectly suited to be run in the pre-upgrade test phase.</P><P>&nbsp;</P><H1 id="toc-hId--93321665">Time Schedule</H1><P>The following figure summarizes the general approach:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="new_pre_upgrade_slide.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90919i3278913572715065/image-size/large?v=v2&amp;px=999" role="button" title="new_pre_upgrade_slide.png" alt="new_pre_upgrade_slide.png" /></span></P><P>&nbsp;</P><P>Milestones for release <STRONG>2408</STRONG>:</P><UL><LI><STRONG>July 5</STRONG>: Nomination of system(s) is possible in the Landscape Portal</LI><LI><STRONG>July 19</STRONG>: Announcement of the planned new features</LI><LI><STRONG>July 29</STRONG>: Pre-upgrade systems are known</LI><LI><STRONG>August 2: Pre-upgrade</STRONG></LI><LI><STRONG>August 14</STRONG>: Potential decision to postpone the upgrade</LI><LI><STRONG>August 17/18: Standard-upgrade</STRONG></LI></UL><P>&nbsp;</P><H1 id="toc-hId--289835170">System Nomination</H1><P>To nominate a system, please register the system(s) by <STRONG>July 29</STRONG>&nbsp;(EOB) latest by using the <STRONG>Landscape Portal</STRONG>. You can find further information about <A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/accessing-landscape-portal?version=Cloud" target="_blank" rel="noopener noreferrer">Accessing the Landscape Portal</A> and about <A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/register-systems-for-pre-upgrade?version=Cloud" target="_blank" rel="noopener noreferrer">Register Systems for Pre-Upgrade</A>. Please do <STRONG>not</STRONG> create customer tickets for system nomination like in previous pre-upgrades.</P><P>With such a nomination, the customer agrees to an extraordinary planned maintenance on <STRONG>August 2</STRONG>&nbsp;(see above).</P><P>&nbsp;</P><H1 id="toc-hId--486348675">Report an Issue</H1><P>Issues should be reported as part of the regression test phase by <STRONG>August 9</STRONG>&nbsp;(EOB) to allow for a sufficient time frame for issue analysis and potential corrections on SAP-side.</P><P>Please create a customer ticket by using component&nbsp;<STRONG>BC-CP-ABA</STRONG>.</P><P>If a detected issue is likely to endanger the productive use after the standard-upgrade, you should use ticket priority&nbsp;<STRONG>very high</STRONG>&nbsp;despite the fact that the pre-upgrade system is not a productive system.</P><P>&nbsp;</P><H1 id="toc-hId--682862180">Exceptional Process in Case of Unresolved Priority Very High Issues</H1><P>In case of the aligned decision on Wednesday, <STRONG>August 14</STRONG>&nbsp;(based on unresolved priority very high tickets) to postpone the upgrade, a dedicated mitigation process needs to be started&nbsp;<SPAN>together with the respective customer or partner, with the following boundary conditions:</SPAN></P><UL><LI>Resolving the open priority very high issues remains the highest priority for both, SAP and the customer or partner, as it is also the prerequisite for the upgrade.</LI><LI>According to the estimated issue resolution, catching up the upgrade needs to be planned.</LI><LI>The upgrade leads to a business downtime of 6 – 8 hours.</LI><LI>The upgrade must be scheduled within 7 calendar days the latest after fixing all remaining open priority very high issues.</LI><LI>We will not provide any fixes for the old release after the original date of the standard-upgrade to the new release.</LI></UL><P>In case business-critical issues are detected after the upgrade:</P><UL><LI>Issues need to be reported as priority very high issues and will be processed accordingly.</LI><LI>Going back to the release before upgrade is not an option. Therefore, resolving the issues in the new release with the appropriate priority is the required approach.</LI></UL><P>&nbsp;</P><H1 id="toc-hId--879375685">Summary</H1><P>We recommend performing regression tests in pre-upgraded test systems to avoid day-1 impacts of productive custom apps after the standard-upgrade.</P> 2024-06-24T12:59:27.372000+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/enterprise-architecture-blog-posts/custom-events-trigger-from-s-4-hana-to-sap-btp-event-mesh/ba-p/13737190 Custom events trigger from S/4 Hana to SAP BTP Event Mesh 2024-06-26T16:03:43.676000+02:00 Pratik_Ingawale https://community.sap.com/t5/user/viewprofilepage/user-id/5793 <P><STRONG>This blog will help to understand the event mesh concept from S/4 to BTP - Event Mesh.</STRONG></P><P><STRONG>Thank You <A href="https://www.linkedin.com/in/nileshsp/" target="_blank" rel="noopener nofollow noreferrer">Nilesh Puranik</A>&nbsp;</STRONG>for the support and guidance provided<STRONG>.</STRONG></P><P><STRONG>Here is my First Blog.&nbsp;</STRONG><span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span><BR /><BR /><STRONG>What is SAP Event Mesh?<BR /></STRONG>Event mesh service is essentially an event that enables the flow of information between different applications and services in real-time.</P><P>SAP Event mesh enables a sending application to publish messages to a topic that directly sends the message to the queue to which it is bound. Events are associated with a topic to achieve the publish-subscribe model. Topics are managed through queue subscriptions.</P><P>&nbsp;</P><P><STRONG>Business Benefits of Event Mesh: </STRONG></P><P><STRONG>Real Time Communication:</STRONG> event mesh enables real-time, asynchronous communication between systems, allowing immediate reaction to the changes in business objects.</P><P><STRONG>Scalability: </STRONG>Event mesh supports a high volume of events, making it suitable for large-scale integrations.<BR /><BR /><STRONG>Resilience:</STRONG> The decoupling of event producers and consumers ensures that system failures do not affect the entire setup, thereby improving resilience.</P><P><STRONG>Use case</STRONG>: Whenever a Warranty claim is approved in S/4 it should trigger event from S/4 to BTP event mesh.</P><P><STRONG><BR />Event Mesh Flow Chart</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_0-1718881145824.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126249iCF9CA2CE2E547D35/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_0-1718881145824.png" alt="Pratik2228_0-1718881145824.png" /></span></P><P><STRONG>Pre-Requisite:</STRONG></P><UL><LI>Authorization to Configure Events in S/4 Hana.</LI><LI>BTP Service Event Mesh is Enabled / initial Setup completed.</LI></UL><P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<STRONG>Part 1: Configuration of event mesh in S/4 Hana.</STRONG></P><P><STRONG>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Part 2:&nbsp;Steps to assign the custom event to trigger from S/4 Hana.</STRONG></P><P><STRONG>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Part 3:&nbsp;Creating Custom Events.</STRONG></P><P><STRONG>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Part 4:&nbsp;Subscribe to Event Mesh Service in BTP.</STRONG></P><P><STRONG>Setup Topic and Events channel in S/4 Hana.</STRONG></P><P><STRONG>Part 1:<BR />Tcode: SPRO </STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_1-1718876215048.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126200iE5753F4185D5DEA1/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_1-1718876215048.png" alt="Pratik2228_1-1718876215048.png" /></span></P><P>Click on "Create Via Service Key"</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_2-1718876253685.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126201i70FE088DF9A3F436/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_2-1718876253685.png" alt="Pratik2228_2-1718876253685.png" /></span></P><P>Get Service Key details from instance created in BTP Subaccount.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_3-1718876288676.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126202iB6365B8CF511CE7A/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_3-1718876288676.png" alt="Pratik2228_3-1718876288676.png" /></span></P><P>Now, Add the description, Protocol, Rfc name and OAuth Config Name, after which you can paste the service key json body.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_4-1718876313553.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126203i1FB944BAE3F47923/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_4-1718876313553.png" alt="Pratik2228_4-1718876313553.png" /></span></P><P>Click on save, and activate the channel.</P><P>Select the channel and Click on Outbound Bindings.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_5-1718876392565.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126204i21894C477E725E2B/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_5-1718876392565.png" alt="Pratik2228_5-1718876392565.png" /></span></P><P>Select the Topic name.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_6-1718876431808.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126205i2F1888D77445A8F2/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_6-1718876431808.png" alt="Pratik2228_6-1718876431808.png" /></span></P><P>In our case I have selected the Claim Accepted Topic.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_7-1718876459834.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126206i46CDFF415626C811/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_7-1718876459834.png" alt="Pratik2228_7-1718876459834.png" /></span></P><P><STRONG>Part 2 : Steps to be done in S/4 Hana.</STRONG></P><P>We will configure the S/4 Hana for triggering the events, for this we will be using a standard business object and event.</P><P>Goto tcode SWE2, Add Object type BUS2222 (Warranty Claim ) and event as CHANGED.</P><P>1. Refer the screen shot below for reference.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_8-1718876522156.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126207i4BA5C0132D541B73/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_8-1718876522156.png" alt="Pratik2228_8-1718876522156.png" /></span></P><P>2. Create a custom function module so that we can add in Receiver functional module.</P><P>Here we can add logic at what condition we need to trigger the event.</P><P>Read the container values and add the filter condition, in this example we are triggering warranty claims only when they are in approve status for eg : Y008.</P><P>This this example we have created Function module : YM2O_FM_CLAIM_RECEIVER</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_9-1718876540684.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126208i5F0D5AFA73218D2B/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_9-1718876540684.png" alt="Pratik2228_9-1718876540684.png" /></span></P><P>Logic in FM for reference.<FONT face="times new roman,times">&nbsp;&nbsp;&nbsp;&nbsp;</FONT></P><P><FONT face="times new roman,times">ycl_bimpl_warrantyclaim_01=&gt;raise_claimaccepted(&nbsp;it_events_claimsAccepted&nbsp;=&nbsp;VALUE&nbsp;#(&nbsp;(&nbsp;pnguid&nbsp;=&nbsp;ls_pnwtyh-pnguid&nbsp;pncnt&nbsp;=&nbsp;ls_pnwtyh-pncnt&nbsp;%param&nbsp;=&nbsp;VALUE&nbsp;#(&nbsp;clmno&nbsp;=&nbsp;ls_pnwtyh-clmno&nbsp;)&nbsp;&nbsp;)&nbsp;)&nbsp;).</FONT></P><P><SPAN>3.&nbsp;</SPAN>Activate the Event Linkage and “save”</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_10-1718876965522.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126210iDEDCCFDF9D24AAF3/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_10-1718876965522.png" alt="Pratik2228_10-1718876965522.png" /></span></P><P><STRONG>Part 3: Creating Custom Events.</STRONG></P><P>Now we need to login to Eclipse.</P><OL><LI><STRONG>Create a define view Entity.<BR /></STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_12-1718877411799.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126212i1A2DF967E6D7EB8C/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_12-1718877411799.png" alt="Pratik2228_12-1718877411799.png" /></span></LI><LI><STRONG>We are using Warranty claim table with key as pnguid and pncnt.<BR /></STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_13-1718877457273.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126213i82FB6E59C3FDCF8B/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_13-1718877457273.png" alt="Pratik2228_13-1718877457273.png" /></span></LI><LI><STRONG>Create a Abstract Entity.<BR /></STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_14-1718877485246.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126214i1F64BB1EC2C7D33C/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_14-1718877485246.png" alt="Pratik2228_14-1718877485246.png" /></span><P><STRONG>We are using Claim no as abstract entity for input field.<BR /></STRONG></P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_15-1718877499506.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126215i6D609401679498C8/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_15-1718877499506.png" alt="Pratik2228_15-1718877499506.png" /></span></LI><LI><P><STRONG>Create a Behavior definition<BR />a. Create a Behavior class add the Root entity created above.<BR /></STRONG></P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_16-1718877525968.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126216iE9494EFC6E1B9F36/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_16-1718877525968.png" alt="Pratik2228_16-1718877525968.png" /></span></LI><LI><P><STRONG>Event Binding<BR /><BR /></STRONG></P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_17-1718877600265.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126217i395D79D5553AAF50/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_17-1718877600265.png" alt="Pratik2228_17-1718877600265.png" /></span></LI><LI><P><STRONG>S/4 Hana Class</STRONG></P><P><STRONG>In behavior definition class that has been created with the method.<BR /><BR /></STRONG></P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_18-1718877622726.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126218i2A7F3F9D81464240/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_18-1718877622726.png" alt="Pratik2228_18-1718877622726.png" /></span><P>&nbsp;</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_19-1718877627611.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126219iCCB2330FAD178825/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_19-1718877627611.png" alt="Pratik2228_19-1718877627611.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_20-1718878313243.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126232iFF354AD5AB324045/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_20-1718878313243.png" alt="Pratik2228_20-1718878313243.png" /></span></LI></OL><P>&nbsp;<STRONG>Part 4 : Subscribe to Event Mesh Service in BTP.<BR /></STRONG>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik2228_21-1718878386911.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126234i74EFCEED0CCF9D50/image-size/large?v=v2&amp;px=999" role="button" title="Pratik2228_21-1718878386911.png" alt="Pratik2228_21-1718878386911.png" /></span></P><P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Select the Namespace.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik_Ingawale_0-1719409411238.png" style="width: 589px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129011i90F0BEC44AD74900/image-dimensions/589x335?v=v2" width="589" height="335" role="button" title="Pratik_Ingawale_0-1719409411238.png" alt="Pratik_Ingawale_0-1719409411238.png" /></span></P><P>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Create a Queue.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik_Ingawale_1-1719409611039.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129015i285D8208EE13ED22/image-size/large?v=v2&amp;px=999" role="button" title="Pratik_Ingawale_1-1719409611039.png" alt="Pratik_Ingawale_1-1719409611039.png" /></span>&nbsp; &nbsp; &nbsp; &nbsp; Assign the Custom topic created in S/4.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Pratik_Ingawale_2-1719409912782.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129023i005EF4AC1270BD4C/image-size/large?v=v2&amp;px=999" role="button" title="Pratik_Ingawale_2-1719409912782.png" alt="Pratik_Ingawale_2-1719409912782.png" /></span></P><P>&nbsp;</P><P>Let me know if anything is missing.<BR /><BR />Regards</P><P>Pratik Ratan Ingawale<BR /><A href="https://www.linkedin.com/in/pratik-ingawale/" target="_blank" rel="noopener nofollow noreferrer">Pratik Ingawale</A></P> 2024-06-26T16:03:43.676000+02:00 https://community.sap.com/t5/enterprise-architecture-blog-posts/created-a-t-code-for-the-initial-screen-in-display-mode-and-added-radio/ba-p/13737920 Created a T-Code for the initial screen in display mode and added radio button for the TMG activity 2024-06-26T16:06:04.517000+02:00 Shalini_1730 https://community.sap.com/t5/user/viewprofilepage/user-id/1467266 <P>I have created a new customize table for ZSHA_TEST, Adding new custom button (Download) in display mode by entering an transaction code. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P>Go to SE11 T-Code, choose Database table, and give it the name ZSHA_TEST, then click Create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_0-1718893642573.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126388i73CCA621F5303A0E/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_0-1718893642573.png" alt="Shalini_1730_0-1718893642573.png" /></span></P><P>Provide short text, delivery classes, and data browser/table view maintenance.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_1-1718893642576.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126390i22359BAC402EA81B/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_1-1718893642576.png" alt="Shalini_1730_1-1718893642576.png" /></span></P><P>Give the field names and data elements.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_2-1718893642582.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126389iF098FB98AC1F550B/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_2-1718893642582.png" alt="Shalini_1730_2-1718893642582.png" /></span></P><P>&nbsp;Save and Go to Technical settings and give the Data class and size category Save, then save.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_3-1718893642585.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126391iE256FDC432F5295E/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_3-1718893642585.png" alt="Shalini_1730_3-1718893642585.png" /></span></P><P>Go to Extras and click on Enhancement category.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_4-1718893642590.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126393i2EA20679E632F837/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_4-1718893642590.png" alt="Shalini_1730_4-1718893642590.png" /></span></P><P>Select one option and then click the Copy button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_5-1718893642591.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126392i7874F43278607E95/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_5-1718893642591.png" alt="Shalini_1730_5-1718893642591.png" /></span></P><P>Save, Check and activate.</P><P><STRONG>*** Create TMG </STRONG></P><P>Go to Utilities and select Table maintenance generator.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_6-1718893642594.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126394i82D98E2AEEBB93E2/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_6-1718893642594.png" alt="Shalini_1730_6-1718893642594.png" /></span></P><P>Give authorization and function groups, pick maintenance type, and then create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_7-1718893642599.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126395iBC00DCE1E80AF308/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_7-1718893642599.png" alt="Shalini_1730_7-1718893642599.png" /></span></P><P>&nbsp;Save your package.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_8-1718893642610.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126396i57A8E8ECE4088CAD/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_8-1718893642610.png" alt="Shalini_1730_8-1718893642610.png" /></span></P><P>You are receiving this popup. Then click the back button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_9-1718893642612.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126399iFF1F5F231C1F5C0F/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_9-1718893642612.png" alt="Shalini_1730_9-1718893642612.png" /></span></P><P>Go to Utilities -&gt; Table contents-&gt; Create entries</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_10-1718893642617.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126398i8A035042C12D5D80/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_10-1718893642617.png" alt="Shalini_1730_10-1718893642617.png" /></span></P><P>Click on "New entries"</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_11-1718893642618.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126397i9462453E43E1310D/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_11-1718893642618.png" alt="Shalini_1730_11-1718893642618.png" /></span></P><P>Enter the input information and save.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_12-1718893642620.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126401i66F8A296B198EA1F/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_12-1718893642620.png" alt="Shalini_1730_12-1718893642620.png" /></span></P><P><STRONG>*** Then create T-Code for TMG</STRONG></P><P>Go to SE93 Transaction and provide ZTEST_SHA. Then click on Create.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_13-1718893642622.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126400i2A484A103115EEA0/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_13-1718893642622.png" alt="Shalini_1730_13-1718893642622.png" /></span></P><P>In the pop-up, add a short description for the new t-code, then select the "Transaction with parameters" radio button and press continue.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_14-1718893642630.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126402i20E84287295857B8/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_14-1718893642630.png" alt="Shalini_1730_14-1718893642630.png" /></span></P><P>In the create parameter transaction screen, enter "SM30" as the transaction name and select the Skip first screen option.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_15-1718893642638.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126403iC7C56A43BBE45DE0/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_15-1718893642638.png" alt="Shalini_1730_15-1718893642638.png" /></span></P><P>Now, using the insert new row button, enter the following parameters.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_16-1718893642644.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126404i9B2C7F7C386A41D0/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_16-1718893642644.png" alt="Shalini_1730_16-1718893642644.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_17-1718893642656.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126405iD68A8B617E1B275E/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_17-1718893642656.png" alt="Shalini_1730_17-1718893642656.png" /></span></P><P><STRONG>Adding Custom Button in Table Maintenance Generator and Their Function: </STRONG></P><P>SAP defines multiple events to handle the PF status.<BR />The instructions below will guide you through the process of creating your own personalized TMG button.</P><P>Our example table is <STRONG>ZSHA_TEST</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_18-1718893642660.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126406i5F6963926E58E79B/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_18-1718893642660.png" alt="Shalini_1730_18-1718893642660.png" /></span></P><P>Create a table maintenance generator for the <STRONG>ZSHA_TEST</STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_19-1718893642664.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126407i7DE591AD49AA306A/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_19-1718893642664.png" alt="Shalini_1730_19-1718893642664.png" /></span></P><P>Now Go to the Event tab on table maintenance generator as shown in below screen shot. &nbsp;</P><P>Environment---&gt; Modification---&gt;Event tab on table maintenance generator as shown in</P><P>below screen shot.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_20-1718893642668.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126408i59A3F5B8EA3F3757/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_20-1718893642668.png" alt="Shalini_1730_20-1718893642668.png" /></span></P><P>Click on "New entries"</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_21-1718893642675.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126410i20136B5A1C04D34E/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_21-1718893642675.png" alt="Shalini_1730_21-1718893642675.png" /></span></P><P>SAP maintains predefined events for TMG, and you can implement your own logic if you want to perform any processing. These events are triggered based on their criteria.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_22-1718893642680.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126411i83598572B725B343/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_22-1718893642680.png" alt="Shalini_1730_22-1718893642680.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_23-1718893642682.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126409i56589AD52153C606/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_23-1718893642682.png" alt="Shalini_1730_23-1718893642682.png" /></span></P><P>We will include one custom button on the PF status. So, enter the event number as 'ST'. Enter&nbsp;Form Routine number and hit enter. You&nbsp;will see an error notice, as illustrated below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_24-1718893642684.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126414i51F45BC2B13C0B8A/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_24-1718893642684.png" alt="Shalini_1730_24-1718893642684.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_25-1718893642690.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126413i633EC7257EB56EF0/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_25-1718893642690.png" alt="Shalini_1730_25-1718893642690.png" /></span></P><P>Now type the right routine name and hit Enter.</P><P>Now, go to Editor. The Menu Painter window will appear.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_26-1718893642693.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126412i0E4E57F0C345479F/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_26-1718893642693.png" alt="Shalini_1730_26-1718893642693.png" /></span></P><P>Click on the Copy User Interface button, as seen below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_27-1718893642715.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126415i40FA85EA6D1D5DF2/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_27-1718893642715.png" alt="Shalini_1730_27-1718893642715.png" /></span></P><P>We will copy the user interface from the main table maintenance program to our Function Group. Table maintenance runtime makes advantage of the SAPLSVIM user interface. As a result, we are unable to locate any user interfaces in our FG.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_28-1718893642722.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126418i0BAB9765165B0076/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_28-1718893642722.png" alt="Shalini_1730_28-1718893642722.png" /></span></P><P>Press Continue.</P><P>You will see one popup about language compatibility. Press the Continue button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_29-1718893642726.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126417iF311241EC037F1DD/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_29-1718893642726.png" alt="Shalini_1730_29-1718893642726.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_30-1718893642729.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126419iC3651A22F949AD3F/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_30-1718893642729.png" alt="Shalini_1730_30-1718893642729.png" /></span></P><P>Now the interface from the main application has been copied to our FG.</P><P>We may verify the current status of our table. Go to SM30.Give the name of your table.</P><P>Go to System &gt; Status &gt; GUI Status.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_31-1718893642737.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126421i244B512530A87C3E/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_31-1718893642737.png" alt="Shalini_1730_31-1718893642737.png" /></span></P><P>Enter the status name 'EULG' and then press Change.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_32-1718893642739.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126420i648BC231032BED53/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_32-1718893642739.png" alt="Shalini_1730_32-1718893642739.png" /></span></P><P>Add Download button name and click on enter.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_33-1718893642743.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126424i32A30C72A50E4683/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_33-1718893642743.png" alt="Shalini_1730_33-1718893642743.png" /></span></P><P>Press continue</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_34-1718893642748.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126422iC88DAA142366733B/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_34-1718893642748.png" alt="Shalini_1730_34-1718893642748.png" /></span></P><P>Press continue.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_35-1718893642752.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126423i181C0E8AC934E1B6/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_35-1718893642752.png" alt="Shalini_1730_35-1718893642752.png" /></span></P><P>Give Static Function texts and click the Continue button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_36-1718893642763.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126427i59D751D39BB5D87C/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_36-1718893642763.png" alt="Shalini_1730_36-1718893642763.png" /></span></P><P>Select assign function to function key and then double-click on the key.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_37-1718893642772.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126426iC3CB45742B0CC56E/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_37-1718893642772.png" alt="Shalini_1730_37-1718893642772.png" /></span></P><P>Go to Environment &gt; Modification &gt; Maintenance Screens.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_38-1718893642776.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126425i61B0031BD7FB4128/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_38-1718893642776.png" alt="Shalini_1730_38-1718893642776.png" /></span></P><P>Double click NO.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_39-1718893642778.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126428i257EE4C959BB8C5D/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_39-1718893642778.png" alt="Shalini_1730_39-1718893642778.png" /></span></P><P>Please click on continue.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_40-1718893642780.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126429iFA23BCC79A4E8807/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_40-1718893642780.png" alt="Shalini_1730_40-1718893642780.png" /></span></P><P>Now create a module in PAI. And double click on module name.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_41-1718893642784.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126430iB4FB9145D369C935/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_41-1718893642784.png" alt="Shalini_1730_41-1718893642784.png" /></span></P><P>Click on Yes</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_42-1718893642788.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126431i5F314C3416449DCB/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_42-1718893642788.png" alt="Shalini_1730_42-1718893642788.png" /></span></P><P>Select new include and click on continue.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_43-1718893642792.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126433iA4316DF0478C900C/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_43-1718893642792.png" alt="Shalini_1730_43-1718893642792.png" /></span></P><P>Please click on continue.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_44-1718893642794.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126432i6EDA949CD5F4630B/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_44-1718893642794.png" alt="Shalini_1730_44-1718893642794.png" /></span></P><P>Please click on Yes to save the data.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_45-1718893642798.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126434i2673F670325A8623/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_45-1718893642798.png" alt="Shalini_1730_45-1718893642798.png" /></span></P><P>The display is as shown in the screenshot below. Now, start writing the code.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_46-1718893642801.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126435i23C939512BD595BC/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_46-1718893642801.png" alt="Shalini_1730_46-1718893642801.png" /></span></P><P>You can add your functionality of pushbutton here.&nbsp;</P><P>Add this piece of code to your module.</P><P>MODULE&nbsp;custom_button&nbsp;INPUT.<BR />&nbsp;DATA:&nbsp;o_salv&nbsp;TYPE&nbsp;REF&nbsp;TO&nbsp;cl_salv_table,<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lt_custom&nbsp;TYPE&nbsp;TABLE&nbsp;OF&nbsp;ZSHA_TEST.<BR /><BR />&nbsp;&nbsp;CASE&nbsp;function.<BR /><EM>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BREAK-POINT.</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHEN&nbsp;'DOWNLOAD'.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;ZSHA_TEST&nbsp;INTO&nbsp;TABLE&nbsp;lt_custom.<BR /><EM>*&nbsp;ALV-objekt&nbsp;erzeugen</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cl_salv_table=&gt;factory(&nbsp;IMPORTING<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r_salv_table&nbsp;&nbsp;&nbsp;=&nbsp;o_salv<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CHANGING<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t_table&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lt_custom&nbsp;).<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:&nbsp;lv_xml_bytes&nbsp;TYPE&nbsp;xstring.<BR /><EM>*&nbsp;itab&nbsp;(data)&nbsp;-&gt;&nbsp;xstring</EM><BR /><EM>*&nbsp;&nbsp;DATA(lv_xml_bytes)&nbsp;=&nbsp;o_salv-&gt;to_xml(&nbsp;xml_type&nbsp;=&nbsp;if_salv_bs_xml=&gt;c_type_xlsx&nbsp;).&nbsp;"Interface&nbsp;XML</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lv_xml_bytes&nbsp;=&nbsp;o_salv-&gt;to_xml(&nbsp;xml_type&nbsp;=&nbsp;if_salv_bs_xml=&gt;c_type_xlsx&nbsp;).&nbsp;<EM>"Interface&nbsp;XML</EM><BR /><EM>*&nbsp;xstring&nbsp;-&gt;&nbsp;itab&nbsp;(bytes)</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:&nbsp;lv_size&nbsp;TYPE&nbsp;i.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:&nbsp;it_raw_data&nbsp;TYPE&nbsp;xml_rawdata.<EM>"Field&nbsp;255&nbsp;type&nbsp;x&nbsp;(raw)&nbsp;for&nbsp;stream&nbsp;interface</EM><BR /><EM>*&nbsp;xstring&nbsp;(Bytes)&nbsp;-&gt;&nbsp;RAW&nbsp;(iTab)</EM><BR /><EM>*Change&nbsp;database&nbsp;tables</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cl_scp_change_db=&gt;xstr_to_xtab(&nbsp;EXPORTING<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;im_xstring&nbsp;=&nbsp;lv_xml_bytes<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IMPORTING<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex_size&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lv_size<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex_xtab&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;it_raw_data&nbsp;).<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;lines(&nbsp;it_raw_data&nbsp;)&nbsp;&gt;&nbsp;0.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:&nbsp;lv_action&nbsp;TYPE&nbsp;i.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:&nbsp;lv_filename&nbsp;TYPE&nbsp;string.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:&nbsp;lv_fullpath&nbsp;TYPE&nbsp;string.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:&nbsp;lv_path&nbsp;TYPE&nbsp;string.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TRY.<BR /><EM>*&nbsp;SaveDialog&nbsp;aufrufen</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cl_gui_frontend_services=&gt;file_save_dialog(&nbsp;EXPORTING<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default_extension&nbsp;&nbsp;&nbsp;=&nbsp;'xlsx'<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default_file_name&nbsp;&nbsp;&nbsp;=&nbsp;'export.xlsx'<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;file_filter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;|Excel-Datei&nbsp;(*.xlsx)\|*.xlsx\|{&nbsp;cl_gui_frontend_services=&gt;filetype_all&nbsp;}|<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;prompt_on_overwrite&nbsp;=&nbsp;abap_true<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CHANGING<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lv_filename<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lv_path<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fullpath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lv_fullpath<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_action&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lv_action&nbsp;).<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;lv_action&nbsp;EQ&nbsp;cl_gui_frontend_services=&gt;action_ok.<BR /><EM>*&nbsp;iTab&nbsp;(bytes)&nbsp;-&gt;&nbsp;lokale&nbsp;Datei</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cl_gui_frontend_services=&gt;gui_download(&nbsp;EXPORTING<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lv_fullpath<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filetype&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;'BIN'<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bin_filesize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;lv_size&nbsp;<EM>"&nbsp;Size&nbsp;ist&nbsp;wichtig&nbsp;für&nbsp;das&nbsp;korrekte&nbsp;Schreiben&nbsp;der&nbsp;Excel-Datei</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CHANGING<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data_tab&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;it_raw_data&nbsp;).<BR /><EM>*&nbsp;lokale&nbsp;Datei&nbsp;im&nbsp;Excel&nbsp;aufrufen</EM><BR /><EM>*&nbsp;parameter&nbsp;muss&nbsp;wegen&nbsp;möglicher&nbsp;Leerzeichen&nbsp;im&nbsp;Pfad&nbsp;mit&nbsp;""&nbsp;quotiert&nbsp;werden</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cl_gui_frontend_services=&gt;execute(&nbsp;application&nbsp;=&nbsp;'excel.exe'<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameter&nbsp;&nbsp;&nbsp;=&nbsp;|<EM>"{&nbsp;lv_fullpath&nbsp;}"|&nbsp;).</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENDIF.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DATA:e_txt&nbsp;TYPE&nbsp;REF&nbsp;TO&nbsp;cx_root.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CATCH&nbsp;cx_root&nbsp;INTO&nbsp;&nbsp;e_txt.<BR /><EM>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MESSAGE&nbsp;e_txt-&gt;get_text(&nbsp;)&nbsp;TYPE&nbsp;'S'."Get&nbsp;text&nbsp;from&nbsp;text&nbsp;element</EM><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENDTRY.<BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENDIF.<BR />&nbsp;&nbsp;ENDCASE.<BR />ENDMODULE.</P><P>===========================================================================</P><P>Then Save, check and activate.</P><P>Normally when we enter the transaction code the initial screen is in change mode, To Change its into display mode please follow the below&nbsp; steps.</P><P><STRONG>Steps:</STRONG> Go to Layout and double click on field name-&gt; Select program-&gt; select Not Possible and Save click on Flow Logic and activate.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_47-1718893642808.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126436iF75E997DB3A6ED92/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_47-1718893642808.png" alt="Shalini_1730_47-1718893642808.png" /></span></P><P>Now enter your creating transaction code <STRONG>“ZTEST_SHA”.</STRONG></P><P>Click on Download button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_48-1718893642810.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126438iBD1E5442C230FDAC/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_48-1718893642810.png" alt="Shalini_1730_48-1718893642810.png" /></span></P><P>Give file name and save.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_49-1718893642813.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126440i8AC6C659DAB973A4/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_49-1718893642813.png" alt="Shalini_1730_49-1718893642813.png" /></span></P><P>Press on Allow</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_50-1718893642817.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126439i1C7B920D67D1228D/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_50-1718893642817.png" alt="Shalini_1730_50-1718893642817.png" /></span></P><P>Please click on the allow button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_51-1718893642821.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126441iAFD76E2095E961AE/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_51-1718893642821.png" alt="Shalini_1730_51-1718893642821.png" /></span></P><P>Data is downloaded in excel.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Shalini_1730_52-1718893642828.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126442iAB707CAF0857CB74/image-size/medium?v=v2&amp;px=400" role="button" title="Shalini_1730_52-1718893642828.png" alt="Shalini_1730_52-1718893642828.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><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> 2024-06-26T16:06:04.517000+02:00 https://community.sap.com/t5/technology-blogs-by-members/sap-cloud-transport-management/ba-p/13737936 SAP Cloud Transport Management 2024-06-27T09:56:42.960000+02:00 Daniel_Enderli https://community.sap.com/t5/user/viewprofilepage/user-id/2995 <H3 id="toc-hId-1146697090">Introduction</H3><P>I have experimented a bit with SAP Cloud Transport Management.<BR />I would like to share my experiences in this blog post.</P><H3 id="toc-hId-950183585">The Big Picture</H3><P>As usual on SAP BTP you have to use a service from the service marketplace to use the&nbsp;SAP Cloud Transport Management. You also have to create a solution landscape on the SAP BTP.&nbsp;</P><P>I designed it as follows:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1718895520622.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126456i7CD063FDE3D37705/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1718895520622.png" alt="Daniel_Enderli_0-1718895520622.png" /></span></P><H3 id="toc-hId-753670080">SAP Cloud Transport Management</H3><P>The application looks likt this:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1718894692884.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126448i737A1DD9236FE022/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1718894692884.png" alt="Daniel_Enderli_0-1718894692884.png" /></span></P><H3 id="toc-hId-557156575">Transport Nodes</H3><P>I created Transport Nodes for every System, like my 3 system landscape DEV, QAS, PRD.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_1-1718894738310.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126451i97229B737AC9C0CE/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_1-1718894738310.png" alt="Daniel_Enderli_1-1718894738310.png" /></span></P><H3 id="toc-hId-360643070">Transport Routes</H3><P>Very similar to the transport routes in classic ABAP.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_2-1718894780685.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126452i76F3384C32B390ED/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_2-1718894780685.png" alt="Daniel_Enderli_2-1718894780685.png" /></span></P><H3 id="toc-hId-164129565">Landscape Visualization</H3><P>I really like the visualization with the status of the import queues and it gives a good overview.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_3-1718894820422.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/126453i2ECC474E940C4490/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_3-1718894820422.png" alt="Daniel_Enderli_3-1718894820422.png" /></span></P><H3 id="toc-hId--32383940">Integration with SAP Cloud ALM</H3><P>For a comprehensive SAP ALM, it is important that SAP Cloud Transport Management can also be connected to SAP Cloud ALM. This means that the entire life cycle from the process, the requirement, testing to deployment and operation can be managed. Here a useful blogpost: <A title="Integration of SAP Cloud Transport Management and SAP Cloud ALM" href="https://community.sap.com/t5/technology-blogs-by-sap/new-integration-of-sap-cloud-transport-management-and-sap-cloud-alm/ba-p/13728049" target="_blank">Link</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Daniel_Enderli_0-1719475316717.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129392iCB10A6E063E71EB0/image-size/medium?v=v2&amp;px=400" role="button" title="Daniel_Enderli_0-1719475316717.png" alt="Daniel_Enderli_0-1719475316717.png" /></span></P><P>&nbsp;</P><H3 id="toc-hId--228897445">From my point of view, the following points are important for Transport Management/Deloyments</H3><UL><LI>The connection of hybrid landscapes</LI><LI>The central control of deployments</LI><LI>Orchestrating multiple system landscapes</LI><LI>Deployments of hybrid development technologies</LI><LI>Central, clear reporting</LI><LI>Options for intervention in the event of errors</LI><LI>Integration with SAP Cloud ALM</LI></UL><P>&nbsp;</P> 2024-06-27T09:56:42.960000+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/technology-blogs-by-members/attach-new-wbs-element-to-the-project-definition-using-bapi-s-in-reports/ba-p/13742056 Attach new WBS Element to the Project definition using BAPI's in reports 2024-06-28T16:07:48.432000+02:00 vineetha_yarama https://community.sap.com/t5/user/viewprofilepage/user-id/152806 <P>Dear All,</P><P>Hope you are all doing well.</P><P>Today I am going to show you on how to create WBS elements to the project definitions using SE38 report.</P><P>below is the steps used to create the WBS elements.</P><P>1) First we need to initialize the below BAPI to create WBS element.&nbsp;</P><P><!-- StartFragment --><SPAN><SPAN class="">**BAPI&nbsp;to&nbsp;Initialization&nbsp;to&nbsp;create&nbsp;Project/WBS.</SPAN><BR /><SPAN class="">CALL&nbsp;</SPAN><SPAN class="">FUNCTION&nbsp;</SPAN><SPAN class="">'BAPI_PS_INITIALIZATION'</SPAN><SPAN class="">.</SPAN></SPAN></P><P><SPAN><SPAN class="">2) Then we need to pass WBS value which is going to create.</SPAN></SPAN></P><P><!-- StartFragment --><SPAN><SPAN class="">**PASS&nbsp;WBS&nbsp;ELEMENT&nbsp;VALUE</SPAN><BR />IS_WBS_ELEMENT<SPAN class="">-</SPAN>WBS_ELEMENT&nbsp;<SPAN class="">=&nbsp;</SPAN><SPAN class="">'1234-X445'</SPAN><SPAN class="">.</SPAN><BR />IS_WBS_ELEMENT<SPAN class="">-</SPAN>DESCRIPTION&nbsp;<SPAN class="">=&nbsp;</SPAN><SPAN class="">'NEW&nbsp;WBS&nbsp;ELEMENT'</SPAN><SPAN class="">.</SPAN><BR /><SPAN class="">APPEND&nbsp;</SPAN>IS_WBS_ELEMENT&nbsp;<SPAN class="">TO&nbsp;</SPAN>IT_WBS_ELEMENT<SPAN class="">.</SPAN></SPAN></P><P>3) Next step we need to call the BAPI&nbsp;<!-- StartFragment --><STRONG>BAPI_BUS2054_CREATE_MULTI </STRONG>to create WBS element to the respective project definition.</P><P><!-- StartFragment --><SPAN><SPAN class="">**BAPI&nbsp;TO&nbsp;CREATE&nbsp;WBS</SPAN><BR /><SPAN class="">CALL&nbsp;</SPAN><SPAN class="">FUNCTION&nbsp;</SPAN><SPAN class="">'BAPI_BUS2054_CREATE_MULTI'</SPAN><BR />&nbsp;&nbsp;<SPAN class="">EXPORTING</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;I_PROJECT_DEFINITION&nbsp;<SPAN class="">=&nbsp;</SPAN><SPAN class="">'1234-XX3'</SPAN><BR />&nbsp;&nbsp;<SPAN class="">TABLES</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;IT_WBS_ELEMENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>IT_WBS_ELEMENT<BR />&nbsp;&nbsp;&nbsp;&nbsp;ET_RETURN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">=&nbsp;</SPAN>IT_RETURN<SPAN class="">.</SPAN></SPAN></P><P>4) After this we need to call Pre commit and commit BAPI's.</P><P><!-- StartFragment --><SPAN><SPAN class="">READ&nbsp;</SPAN><SPAN class="">TABLE&nbsp;</SPAN>IT_RETURN&nbsp;<SPAN class="">INTO&nbsp;</SPAN><SPAN class="">DATA</SPAN><SPAN class="">(</SPAN>LS_RETURN<SPAN class="">)&nbsp;</SPAN><SPAN class="">WITH&nbsp;</SPAN><SPAN class="">KEY&nbsp;</SPAN><SPAN class="">TYPE&nbsp;</SPAN><SPAN class="">=&nbsp;</SPAN><SPAN class="">'S'</SPAN><SPAN class="">.</SPAN><BR /><SPAN class="">IF&nbsp;</SPAN>SY<SPAN class="">-</SPAN>SUBRC&nbsp;<SPAN class="">=&nbsp;</SPAN><SPAN class="">0</SPAN><SPAN class="">.</SPAN><BR /><SPAN class="">**PRE&nbsp;COMMIT</SPAN><BR />&nbsp;&nbsp;<SPAN class="">CALL&nbsp;</SPAN><SPAN class="">FUNCTION&nbsp;</SPAN><SPAN class="">'BAPI_PS_PRECOMMIT'</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">TABLES</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ET_RETURN&nbsp;<SPAN class="">=&nbsp;</SPAN>IT_RETURN<SPAN class="">.</SPAN><BR /><BR /><SPAN class="">**TRANSACTION&nbsp;COMMIT.</SPAN><BR />&nbsp;&nbsp;<SPAN class="">CALL&nbsp;</SPAN><SPAN class="">FUNCTION&nbsp;</SPAN><SPAN class="">'BAPI_TRANSACTION_COMMIT'</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">EXPORTING</SPAN><BR />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<SPAN class="">WAIT&nbsp;</SPAN><SPAN class="">=&nbsp;</SPAN><SPAN class="">'X'</SPAN><SPAN class="">.</SPAN><BR /><SPAN class="">ENDIF</SPAN><SPAN class="">.</SPAN></SPAN></P><P>5) Like this we can create WBS element to the project definition using BAPI's in the report. When we go to CJ20 transaction we can see the new WBS elements created to it.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="vineetha_yarama_0-1719310372356.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/128461iEE01599B7DBEBEF0/image-size/medium?v=v2&amp;px=400" role="button" title="vineetha_yarama_0-1719310372356.png" alt="vineetha_yarama_0-1719310372356.png" /></span></P><P>Please find the below source code for your reference.</P><pre class="lia-code-sample language-abap"><code>**Data declarations DATA: it_return TYPE TABLE OF bapiret2, it_wbs_element TYPE TABLE OF bapi_bus2054_new, is_wbs_element TYPE bapi_bus2054_new. **BAPI to Initialization to create Project/WBS. CALL FUNCTION 'BAPI_PS_INITIALIZATION'. **PASS WBS ELEMENT VALUE is_wbs_element-wbs_element = '1234-X445'. is_wbs_element-description = 'NEW WBS ELEMENT'. APPEND is_wbs_element TO it_wbs_element. **BAPI TO CREATE WBS CALL FUNCTION 'BAPI_BUS2054_CREATE_MULTI' EXPORTING i_project_definition = '1234-XX3' TABLES it_wbs_element = it_wbs_element et_return = it_return. READ TABLE it_return INTO DATA(ls_return) WITH KEY type = 'S'. IF sy-subrc = 0. **PRE COMMIT CALL FUNCTION 'BAPI_PS_PRECOMMIT' TABLES et_return = it_return. **TRANSACTION COMMIT. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. WRITE : 'WBS Element created succesfully'. ELSE. WRITE : 'WBS Element not created, having errors'. ENDIF.</code></pre><P>Hope this will helpful to all.</P><P>Regards.</P><P>&nbsp;</P><P>&nbsp;</P> 2024-06-28T16:07:48.432000+02:00 https://community.sap.com/t5/application-development-blog-posts/what-is-instance-generation-modes-in-kernel-badi-and-creation-of-3-types-of/ba-p/13743987 What Is Instance Generation Modes in Kernel BADI And Creation of 3 Types of Mode. 2024-06-28T16:09:36.642000+02:00 jyothi7 https://community.sap.com/t5/user/viewprofilepage/user-id/891567 <P><STRONG><SPAN class="">In This Blog We Will Discussed About What Is Instance Generation Modes in Kernel BADI And Creation of 3 Types of Mode.</SPAN><SPAN class="">&nbsp;</SPAN></STRONG></P><P><STRONG>Instance Generation Mode:-&nbsp;</STRONG></P><P><STRONG><SPAN>Definition:-</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>This property controls the instantiation of the object plug-ins during execution of the statement GET BADI. The following are possible specifications:</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Types:</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>Newly created instantiation</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Reused instantiation</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>Context-dependent instantiation</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P><STRONG><SPAN>Use:</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>The first two specifications define context-free BAdIs. In the case of the newly created instantiation, new object plug-ins are created at each execution of the statement </SPAN><STRONG><SPAN>GET BADI.</SPAN></STRONG><SPAN> In the case of reused instantiation, an object plug-in that was used once in the current internal mode is reused – if it is required more than once.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>In the case of context-dependent instantiation, a context must be specified for </SPAN><STRONG><SPAN>GET BADI</SPAN></STRONG><SPAN> . This context controls instantiation. Only one object plug-in is created for each context and implementing class. Each time there is another GET BADI with the same context, it is reused. A context is an instance of a class that implements the tag interface IF_BADI_CONTEXT. The specification takes place in the form of a reference to such an instance.</SPAN><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P><STRONG>Creation of instance generation mode.&nbsp;</STRONG></P><P><SPAN>1.&nbsp; Go to SE20 T-code to create a enhancement spot</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_0-1719466066696.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129247i4223AAA376546C9C/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_0-1719466066696.png" alt="jyothi7_0-1719466066696.png" /></span></P><P><SPAN>2. Provide a short description and continue, save it in your package</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_1-1719466066698.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129246i1C5643115472ADB0/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_1-1719466066698.png" alt="jyothi7_1-1719466066698.png" /></span>&nbsp;</P><P>3.&nbsp;<SPAN>Now create a BADI definition</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_2-1719466066699.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129248i30642039AC90526C/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_2-1719466066699.png" alt="jyothi7_2-1719466066699.png" /></span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</P><P>4.&nbsp;<SPAN>Provide a BADI name, description and continue</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_3-1719466066700.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129250i7B5AB9900EB170C1/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_3-1719466066700.png" alt="jyothi7_3-1719466066700.png" /></span></P><P>5.&nbsp;<SPAN>This time the instance creation mode is <STRONG>newly creating instantiation</STRONG>. Now double click on the i&nbsp; Interface to create a new interface for the BADI definition</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_4-1719466066701.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129251iDC3BBF04B1068AA4/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_4-1719466066701.png" alt="jyothi7_4-1719466066701.png" /></span></P><P>6.&nbsp;<SPAN>Below screen will be appear</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_5-1719466066703.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129249i67E3BD44862E9FC5/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_5-1719466066703.png" alt="jyothi7_5-1719466066703.png" /></span></P><P>7.&nbsp;<SPAN>Provide a interface name</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_6-1719466066704.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129252i796694245C3EAC62/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_6-1719466066704.png" alt="jyothi7_6-1719466066704.png" /></span></P><P>8.&nbsp;<SPAN>Double click on interface screen the below screen will appear click yes to continue and save it in your project.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_7-1719466066705.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129254i28CD866283D4957C/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_7-1719466066705.png" alt="jyothi7_7-1719466066705.png" /></span>&nbsp; &nbsp; &nbsp;</P><P>9.&nbsp;<SPAN>Provide a method name and activate and go back</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_8-1719466066706.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129253i2E1DB2E3CB9BDFA9/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_8-1719466066706.png" alt="jyothi7_8-1719466066706.png" /></span></P><P>10.&nbsp;<SPAN>Right click implementation we will get Create BADI implementation on create</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_9-1719466066707.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129255i3752A2C13BDBF8C1/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_9-1719466066707.png" alt="jyothi7_9-1719466066707.png" /></span></P><P>11.&nbsp;<SPAN>Provide implementation name short description and click on continue</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_10-1719466066709.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129256i059D6F9977E40340/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_10-1719466066709.png" alt="jyothi7_10-1719466066709.png" /></span></P><P>12.&nbsp;<SPAN>Next provide a BADI implementation name and provide a implementing class name and click on continue.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_38-1719467129964.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129289i8E14C76F4418D1C2/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_38-1719467129964.png" alt="jyothi7_38-1719467129964.png" /></span></P><P>13.&nbsp;<SPAN>Double click on implementation class</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_12-1719466066711.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129258i4BCAE2BEAF807700/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_12-1719466066711.png" alt="jyothi7_12-1719466066711.png" /></span></P><P><SPAN>14. Double click on class name</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_13-1719466066712.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129260iE7E637CC93420E18/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_13-1719466066712.png" alt="jyothi7_13-1719466066712.png" /></span></P><P><SPAN>15. In attribute section declare a one instance attribute</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_14-1719466066714.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129259i9C593E9D75F9DE8E/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_14-1719466066714.png" alt="jyothi7_14-1719466066714.png" /></span></P><P><SPAN>16. Go to the method section inside a method right a logic</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_15-1719466066715.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129261i454F13C18428DCA7/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_15-1719466066715.png" alt="jyothi7_15-1719466066715.png" /></span></P><P>17.&nbsp;<SPAN>Activate the BADI implementation</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_16-1719466066716.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129262i0CF6E649C3443E13/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_16-1719466066716.png" alt="jyothi7_16-1719466066716.png" /></span></P><P>18.&nbsp;<SPAN>Lastly activate the enhancement spot</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_17-1719466066717.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129263iAE911BABBD772C84/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_17-1719466066717.png" alt="jyothi7_17-1719466066717.png" /></span></P><P><SPAN>&nbsp;</SPAN></P><P><SPAN><STRONG>In instance creation mode as – Newly Creating instantiation for each GET_BADI statement, a new object of the implementing class is created. Now if you have two GET_BADI statements then for the sale implementing class two different objects are created and each one is assigned to the BADI reference.</STRONG></SPAN><STRONG>&nbsp;</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_0-1719470366289.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129325iADBA0DE8814FB862/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_0-1719470366289.png" alt="jyothi7_0-1719470366289.png" /></span></P><P><SPAN>19. Create a program and call the BADI method with GET BADI and CALL BADI statement.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_19-1719466066719.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129264iF7CF7B77B45C8514/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_19-1719466066719.png" alt="jyothi7_19-1719466066719.png" /></span></P><P><SPAN>20. Output for newly creating instantiation</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_20-1719466066720.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129265iF96A45E99F025736/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_20-1719466066720.png" alt="jyothi7_20-1719466066720.png" /></span></P><P>&nbsp;</P><P><U><STRONG>Now in the BADI definition, change the instance creation mode as&nbsp; reusing instantiation.&nbsp;</STRONG></U></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_21-1719466066721.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129268i05631169420AAE4B/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_21-1719466066721.png" alt="jyothi7_21-1719466066721.png" /></span></P><P>&nbsp;</P><P><STRONG>In instance creation mode as –Reusing instantiation for the first GET_BADI statement, a new object of the implementing class is created. Now then if you have a second GET_BADI statement then the same object of the implementing class is reused for the second BADI reference.&nbsp;</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_22-1719466066722.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129267iA2F20B8CE37AABA0/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_22-1719466066722.png" alt="jyothi7_22-1719466066722.png" /></span></P><P>&nbsp;</P><P><SPAN>1. Now the same program again run it.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_23-1719466066723.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129269i008723302BD577C4/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_23-1719466066723.png" alt="jyothi7_23-1719466066723.png" /></span></P><P><SPAN>2.</SPAN><SPAN>&nbsp;Output for reusing instantiation.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_24-1719466066724.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129270i5645ED5B408979CE/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_24-1719466066724.png" alt="jyothi7_24-1719466066724.png" /></span></P><P>&nbsp;</P><P><U><STRONG>Now change the instance creation mode as context specific instantiation</STRONG>&nbsp;</U></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_25-1719466066725.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129272i7DD7BC6A18AE82CF/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_25-1719466066725.png" alt="jyothi7_25-1719466066725.png" /></span></P><P>&nbsp;</P><P><STRONG>For context specific instantiation, all GET_BADI statements receive the same object of the implementing class that belongs to the same context. To enable context specific instantiation a new class should be created which implements the interface: IF_BADI_CONTEXT.&nbsp;</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_26-1719466066726.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129271i68E03652E324BC3B/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_26-1719466066726.png" alt="jyothi7_26-1719466066726.png" /></span></P><P>&nbsp;</P><P><SPAN>1. Let's Create a class that implements the interface <STRONG>IF_BADI_CONTEXT.</STRONG>&nbsp;We can’t implement this interface because it is a standard interface.&nbsp;I have copied IF_BADI_CONTEXT into custom interface such as <STRONG>ZIF_BADI_CONTEXT.</STRONG>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_27-1719466066727.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129273iC25A3AB7BC36D829/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_27-1719466066727.png" alt="jyothi7_27-1719466066727.png" /></span></P><P>2<SPAN>. Inside a class I am using custom interface ZIF_BADI_CONTEXT that I have copied in a standard interface as IF_BADI_CONTEXT.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_28-1719466066729.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129275i7A5F2341B5E6121F/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_28-1719466066729.png" alt="jyothi7_28-1719466066729.png" /></span></P><P>&nbsp;</P><P><SPAN>3. Now Create type and a table type in the types section.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_29-1719466066731.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129274iA577A8A541D803C5/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_29-1719466066731.png" alt="jyothi7_29-1719466066731.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_30-1719466066734.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129276i67730C95EACBA593/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_30-1719466066734.png" alt="jyothi7_30-1719466066734.png" /></span></P><P><SPAN>4. Create a attribute of the table type</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_31-1719466066736.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129277i3BB1146BC8DD5481/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_31-1719466066736.png" alt="jyothi7_31-1719466066736.png" /></span></P><P><SPAN>5. Now create a static method and provide the parameters below.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_32-1719466066738.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129278iD6407382F3436970/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_32-1719466066738.png" alt="jyothi7_32-1719466066738.png" /></span></P><P>6.&nbsp;<SPAN>Declare a returning and importing parameter</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_33-1719466066740.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129279iD0B37ACFF7A7F793/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_33-1719466066740.png" alt="jyothi7_33-1719466066740.png" /></span></P><P>&nbsp;</P><P><SPAN>7. Provide the below code. A new object of the class is created for a different context name else the previous object is retuned.</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_34-1719466066743.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129281i660B79A471078D7A/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_34-1719466066743.png" alt="jyothi7_34-1719466066743.png" /></span></P><P><SPAN>8. Now just simply call the IF_BADI_CONTEXT interface inside the class</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_35-1719466066745.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129280i4962431E0C1AAE5F/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_35-1719466066745.png" alt="jyothi7_35-1719466066745.png" /></span></P><P><SPAN>9. Now create a report program and run it</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_36-1719466066747.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129282i87509B05B0C19398/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_36-1719466066747.png" alt="jyothi7_36-1719466066747.png" /></span></P><P><SPAN>10. Output for context specific instantiation</SPAN><SPAN>&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="jyothi7_37-1719466066750.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129283i8D9AB78E0149AACB/image-size/large?v=v2&amp;px=999" role="button" title="jyothi7_37-1719466066750.png" alt="jyothi7_37-1719466066750.png" /></span></P><P>&nbsp;</P> 2024-06-28T16:09:36.642000+02:00 https://community.sap.com/t5/application-development-blog-posts/understanding-different-types-of-rfc-calls-in-sap-abap/ba-p/13745585 Understanding Different Types of RFC Calls in SAP ABAP 2024-06-28T16:09:52.626000+02:00 surendra_karma_9669_80 https://community.sap.com/t5/user/viewprofilepage/user-id/870700 <P>Remote Function Call (RFC) is a powerful feature in SAP ABAP, enabling communication between SAP systems, as well as between SAP systems and external systems. RFCs facilitate remote function execution in a seamless and efficient manner. In this blog, we will explore the different types of RFC calls in SAP ABAP, their use cases, and key considerations.<BR />Let's create a sample RFC function module to modify a custom table.</P><H4 id="toc-hId-1276640058">ZBSP001_TAB - Table for BSP records</H4><P>Row Field name Position Key Data element Domain Datatype Length Domain text</P><TABLE border="1"><TBODY><TR><TD><FONT face="Arial" size="1" color="green">1</FONT></TD><TD><FONT face="Arial" size="1" color="green">MANDT</FONT></TD><TD><FONT face="Arial" size="1" color="green">1</FONT></TD><TD><FONT face="Arial" size="1" color="green">X</FONT></TD><TD><FONT face="Arial" size="1" color="green">MANDT</FONT></TD><TD><FONT face="Arial" size="1" color="green">MANDT</FONT></TD><TD><FONT face="Arial" size="1" color="green">CLNT</FONT></TD><TD><FONT face="Arial" size="1" color="green">3</FONT></TD><TD><FONT face="Arial" size="1" color="green">Client</FONT></TD></TR><TR><TD><FONT face="Arial" size="1" color="green">2</FONT></TD><TD><FONT face="Arial" size="1" color="green">FNAME</FONT></TD><TD><FONT face="Arial" size="1" color="green">2</FONT></TD><TD><FONT face="Arial" size="1" color="green">X</FONT></TD><TD><FONT face="Arial" size="1" color="green">VORNA0</FONT></TD><TD><FONT face="Arial" size="1" color="green">CHAR15</FONT></TD><TD><FONT face="Arial" size="1" color="green">CHAR</FONT></TD><TD><FONT face="Arial" size="1" color="green">15</FONT></TD><TD><FONT face="Arial" size="1" color="green">Employee's first name</FONT></TD></TR><TR><TD><FONT face="Arial" size="1" color="green">3</FONT></TD><TD><FONT face="Arial" size="1" color="green">SNAME</FONT></TD><TD><FONT face="Arial" size="1" color="green">3</FONT></TD><TD><FONT face="Arial" size="1" color="green">X</FONT></TD><TD><FONT face="Arial" size="1" color="green">NACHNAME</FONT></TD><TD><FONT face="Arial" size="1" color="green">CHAR25</FONT></TD><TD><FONT face="Arial" size="1" color="green">CHAR</FONT></TD><TD><FONT face="Arial" size="1" color="green">25</FONT></TD><TD><FONT face="Arial" size="1" color="green">Employee's last name</FONT></TD></TR><TR><TD><FONT face="Arial" size="1" color="green">4</FONT></TD><TD><FONT face="Arial" size="1" color="green">DOB</FONT></TD><TD><FONT face="Arial" size="1" color="green">4</FONT></TD><TD><FONT face="Arial" size="1" color="green">&nbsp;</FONT></TD><TD><FONT face="Arial" size="1" color="green">GEBDAT</FONT></TD><TD><FONT face="Arial" size="1" color="green">DATUM</FONT></TD><TD><FONT face="Arial" size="1" color="green">DATS</FONT></TD><TD><FONT face="Arial" size="1" color="green">8</FONT></TD><TD><FONT face="Arial" size="1" color="green">Date of birth</FONT></TD></TR><TR><TD><FONT face="Arial" size="1" color="green">5</FONT></TD><TD><FONT face="Arial" size="1" color="green">ADDRESS</FONT></TD><TD><FONT face="Arial" size="1" color="green">5</FONT></TD><TD><FONT face="Arial" size="1" color="green">&nbsp;</FONT></TD><TD><FONT face="Arial" size="1" color="green">ADRNR_TXT</FONT></TD><TD><FONT face="Arial" size="1" color="green">BEZEI80</FONT></TD><TD><FONT face="Arial" size="1" color="green">CHAR</FONT></TD><TD><FONT face="Arial" size="1" color="green">80</FONT></TD><TD><FONT face="Arial" size="1" color="green">Full details of address</FONT></TD></TR></TBODY></TABLE><P><FONT face="Arial" size="3" color="#000000"><STRONG>Code listing for function: ZFM_CREATE_ZBSP001_TAB</STRONG></FONT><BR /><FONT face="Arial" size="3" color="#000000"><STRONG>Description: FM to create entry to table ZBSP001_TAB</STRONG></FONT></P><PRE>FUNCTION zfm_create_zbsp001_tab. <FONT color="#0000FF">*"----------------------------------------------------------------------</FONT> <FONT color="#0000FF">*"*"Local Interface:</FONT> <FONT color="#0000FF">*" IMPORTING</FONT> <FONT color="#0000FF">*" VALUE(IM_STRUCT) TYPE ZBSP001_TAB</FONT> <FONT color="#0000FF">*" EXPORTING</FONT> <FONT color="#0000FF">*" VALUE(EX_FLG) TYPE CHAR1</FONT> <FONT color="#0000FF">*"----------------------------------------------------------------------</FONT> <FONT color="#0000FF">* <A href="https://community.sap.com/global-zfm_create_zbsp001_tab.html" target="_blank" rel="noopener nofollow noreferrer">Global data declarations</A></FONT> IF im_struct IS NOT INITIAL. MODIFY zbsp001_tab FROM im_struct. IF sy-subrc = 0. ex_flg = abap_true. ELSE. ex_flg = abap_false. ENDIF. ENDIF. ENDFUNCTION.</PRE><H5 id="toc-hId-1209209272"><FONT color="#FF0000">NOTE : While calling this FM, I'll be using destination 'NONE' i.e., within same system. For external systems, kindly use SM59 RFC Destination.</FONT><BR /><BR />1. Synchronous RFC (sRFC)</H5><P><STRONG>Definition:</STRONG> Synchronous RFC is the most straightforward type of RFC call. It is a blocking call, meaning the calling program waits until the called remote function module has finished executing and returns the result.&nbsp;No COMMIT WORK needed.</P><P><STRONG>Use Cases:</STRONG></P><UL><LI>Real-time data retrieval or updates where immediate feedback is required.</LI><LI>Transactions requiring immediate acknowledgment of completion.</LI></UL><P><STRONG>Considerations:</STRONG></P><UL><LI>Can lead to performance bottlenecks if the remote function execution time is long.</LI><LI>Network issues can directly impact the calling program's execution.</LI></UL><P><STRONG>Sample Program:</STRONG></P><PRE><FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> <FONT color="#0000FF">*&amp; Report ZTEST_RFC_PROGRAM</FONT> <FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> REPORT ztest_rfc_program. DATA : lv_tid TYPE arfctid, lv_fnum TYPE qretstate-qrfnum, lv_flg TYPE char1, ls_struct TYPE zbsp001_tab. <FONT color="#0000FF">**************************************************</FONT> <FONT color="#0000FF">* sRFC</FONT> <FONT color="#0000FF">**************************************************</FONT> ls_struct-mandt = '110'. ls_struct-fname = 'Semual'. ls_struct-sname = 'Stain'. ls_struct-dob = '19620815'. ls_struct-address = 'NewYork'. CALL FUNCTION 'ZFM_CREATE_ZBSP001_TAB' DESTINATION 'NONE' EXPORTING im_struct = ls_struct IMPORTING "importing allowed ex_flg = lv_flg. IF lv_flg = abap_true. WRITE : 'sRFC' COLOR COL_HEADING. WRITE : 'ENTRY CREATED SUCCESSFULLY' COLOR COL_KEY. ELSE. WRITE : 'ENTRY CREATION FAILED' COLOR COL_BACKGROUND. ENDIF. CLEAR : lv_tid, lv_fnum, lv_flg, ls_struct.</PRE><H4 id="toc-hId-883613048">2. Asynchronous RFC (aRFC)</H4><P><STRONG>Definition:</STRONG> Asynchronous RFC is a non-blocking call, allowing the calling program to continue processing without waiting for the remote function to complete.&nbsp;No COMMIT WORK needed for the call itself, but the called function module may need a commit if it performs updates.</P><P><STRONG>Use Cases:</STRONG></P><UL><LI>Processes that can run in parallel without immediate dependency on the result.</LI><LI>Long-running background processes.</LI></UL><P><STRONG>Considerations:</STRONG></P><UL><LI>Handling callback routines to process results once the remote function completes.</LI><LI>Suitable for improving performance by parallelizing tasks.</LI></UL><P><STRONG>Sample Program:</STRONG></P><PRE><FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> <FONT color="#0000FF">*&amp; Report ZTEST_RFC_PROGRAM</FONT> <FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> REPORT ztest_rfc_program. <FONT color="#0000FF">**************************************************</FONT> <FONT color="#0000FF">* aRFC </FONT> <FONT color="#0000FF">**************************************************</FONT> DATA : lv_tid TYPE arfctid, lv_fnum TYPE qretstate-qrfnum, lv_flg TYPE char1, ls_struct TYPE zbsp001_tab. ls_struct-mandt = '110'. ls_struct-fname = 'Pablo'. ls_struct-sname = 'Cuelho'. ls_struct-dob = '19620815'. ls_struct-address = 'Oregon'. CALL FUNCTION 'ZFM_CREATE_ZBSP001_TAB' DESTINATION 'NONE' STARTING NEW TASK 'TASK1' PERFORMING return_code ON END OF TASK EXPORTING im_struct = ls_struct. IF sy-subrc = 0. WRITE : 'aRFC call successful' COLOR COL_HEADING. ENDIF. AT USER-COMMAND. IF sy-ucomm = 'OKCD'. IF lv_flg = abap_true. WRITE : 'aRFC' COLOR COL_HEADING. WRITE : 'ENTRY CREATED SUCCESSFULLY' COLOR COL_KEY. CLEAR ls_struct. ELSE. WRITE : 'ENTRY CREATION FAILED' COLOR COL_BACKGROUND. CLEAR ls_struct. ENDIF. ENDIF. CLEAR : lv_tid, lv_fnum, lv_flg, ls_struct.<BR /><FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> <FONT color="#0000FF">*&amp; Form return_code</FONT> <FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> FORM return_code USING taskname. RECEIVE RESULTS FROM FUNCTION 'ZFM_CREATE_ZBSP001_TAB' IMPORTING ex_flg = lv_flg. SET USER-COMMAND 'OKCD'. ENDFORM.</PRE><H4 id="toc-hId-687099543">3. Transactional RFC (tRFC)</H4><P><STRONG>Definition:</STRONG> Transactional RFC ensures that the remote function call is executed exactly once, even if there are network issues. It uses a transactional mechanism to guarantee the execution but not in a predefined order. Requires COMMIT WORK to ensure that the function module execution is committed to the database.</P><P><STRONG>Use Cases:</STRONG></P><UL><LI>Financial transactions or critical updates where execution must be guaranteed.</LI><LI>Scenarios requiring a rollback mechanism in case of failure.</LI></UL><P><STRONG>Considerations:</STRONG></P><UL><LI>Requires explicit commit work to trigger the execution.</LI><LI>Ensures data consistency and reliability.</LI></UL><P><STRONG>Sample Program:</STRONG></P><PRE><FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> <FONT color="#0000FF">*&amp; Report ZTEST_RFC_PROGRAM</FONT> <FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> REPORT ztest_rfc_program. DATA : lv_tid TYPE arfctid, lv_fnum TYPE qretstate-qrfnum, lv_flg TYPE char1, ls_struct TYPE zbsp001_tab.<BR /><FONT color="#0000FF">**************************************************</FONT> <FONT color="#0000FF">* tRFC</FONT> <FONT color="#0000FF">**************************************************</FONT> <FONT color="#0000FF">* Process Once via SM58</FONT> <FONT color="#0000FF">**************************************************</FONT> ls_struct-mandt = '110'. ls_struct-fname = 'Peter'. ls_struct-sname = 'Semon'. ls_struct-dob = '19620815'. ls_struct-address = 'NewYork'. CALL FUNCTION 'ZFM_CREATE_ZBSP001_TAB' IN BACKGROUND TASK DESTINATION 'NONE' EXPORTING im_struct = ls_struct. <FONT color="#0000FF">* IMPORTING "Background TASK doesn't support IMPORTING</FONT> <FONT color="#0000FF">* ex_flg = lv_flg.</FONT> IF sy-subrc = 0. CALL FUNCTION 'ID_OF_BACKGROUNDTASK' EXPORTING dest = 'NONE' IMPORTING tid = lv_tid fnum = lv_fnum. IF lv_tid IS NOT INITIAL. WRITE : 'tRFC' COLOR COL_HEADING. WRITE : 'ENTRY CREATED SUCCESSFULLY - TID : ', lv_tid COLOR COL_KEY. CLEAR ls_struct. COMMIT WORK. <FONT color="#0000FF">"Important to get TID in SM58 view</FONT> ELSE. WRITE : 'ENTRY CREATION FAILED' COLOR COL_BACKGROUND. CLEAR ls_struct.<BR /> ROLLBACK WORK. ENDIF. ENDIF. CLEAR : lv_tid, lv_fnum, lv_flg, ls_struct.</PRE><H4 id="toc-hId-490586038">SM58 view:</H4><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="surendra_karma_9669_80_0-1719563558398.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129979i3C8B72836ECF9BA7/image-size/large?v=v2&amp;px=999" role="button" title="surendra_karma_9669_80_0-1719563558398.png" alt="surendra_karma_9669_80_0-1719563558398.png" /></span></P><H4 id="toc-hId-294072533"><BR />4. Queued RFC (qRFC)</H4><P><STRONG>Definition:</STRONG> Queued RFC is an extension of tRFC that processes calls in a predefined order. It ensures that the sequence of function calls is maintained, which is critical for scenarios where order matters.&nbsp;Requires COMMIT WORK to ensure that the function module execution is committed and processed in the correct order.</P><P><STRONG>Use Cases:</STRONG></P><UL><LI>Logistics or supply chain processes where sequential execution is crucial.</LI><LI>Scenarios where dependent transactions must be executed in a specific order.</LI></UL><P><STRONG>Considerations:</STRONG></P><UL><LI>Maintains the order of execution, ensuring data integrity.</LI><LI>Can introduce delays due to queue processing times.</LI></UL><P><STRONG>Sample Program:</STRONG></P><PRE><FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> <FONT color="#0000FF">*&amp; Report ZTEST_RFC_PROGRAM</FONT> <FONT color="#0000FF">*&amp;---------------------------------------------------------------------*</FONT> REPORT ztest_rfc_program. DATA : lv_tid TYPE arfctid, lv_fnum TYPE qretstate-qrfnum, lv_flg TYPE char1, ls_struct TYPE zbsp001_tab.<BR /><FONT color="#0000FF">**************************************************</FONT> <FONT color="#0000FF">* qRFC</FONT> <FONT color="#0000FF">**************************************************</FONT> <FONT color="#0000FF">* SMQ1 - Process Outbound Once in Sequence</FONT> <FONT color="#0000FF">* SMQ2 - Process Inbound Once in Sequence<BR />* For destination 'NONE', check SMQ2 only as SMQ1 will be processed automatically. <BR />" For external systems, once you process SMQ1 - SMQ2 will appear in another system</FONT> DATA: p_in TYPE trfcqnam VALUE 'ZTEST02_IN', p_out TYPE trfcqnam VALUE 'ZTEST02_OUT', p_rfc TYPE rfcdest VALUE 'NONE'. WRITE : 'qRFC' COLOR COL_HEADING. DO 2 TIMES. CASE sy-index. WHEN 1. ls_struct-mandt = '110'. ls_struct-fname = 'John'. ls_struct-sname = 'Carter'. ls_struct-dob = '19650815'. ls_struct-address = 'Washington'. WHEN 2. ls_struct-mandt = '110'. ls_struct-fname = 'Dr.'. ls_struct-sname = 'Strange'. ls_struct-dob = '19670815'. ls_struct-address = 'Seattle'. ENDCASE. CALL FUNCTION 'TRFC_SET_QIN_PROPERTIES' EXPORTING qout_name = p_out qin_name = p_in EXCEPTIONS invalid_queue_name = 1 OTHERS = 2. IF sy-subrc &lt;&gt; 0. MESSAGE e001(00) WITH 'TRFC_SET_QIN_PROPERTIES error'. ENDIF. call function 'ZFM_CREATE_ZBSP001_TAB'&nbsp;IN BACKGROUND TASK AS SEPARATE UNIT DESTINATION 'NONE' EXPORTING im_struct = ls_struct. IF sy-subrc = 0. CALL FUNCTION 'ID_OF_BACKGROUNDTASK' EXPORTING dest = 'NONE' IMPORTING tid = lv_tid fnum = lv_fnum. IF lv_tid IS NOT INITIAL. WRITE : 'ENTRY CREATED SUCCESSFULLY - TID : ', lv_tid COLOR COL_KEY. CLEAR ls_struct. ELSE. WRITE : 'ENTRY CREATION FAILED' COLOR COL_BACKGROUND. CLEAR ls_struct. ENDIF. ENDIF. ENDDO. COMMIT WORK. IF sy-subrc &lt;&gt; 0. MESSAGE e001(00) WITH 'Commit error with return code:' sy-subrc. ENDIF. CLEAR : lv_tid, lv_fnum, lv_flg, ls_struct.</PRE><H4 id="toc-hId-97559028">SMQ2 view:</H4><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="surendra_karma_9669_80_1-1719564393658.png" style="width: 282px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129994i569C0FE056D2F838/image-dimensions/282x55?v=v2" width="282" height="55" role="button" title="surendra_karma_9669_80_1-1719564393658.png" alt="surendra_karma_9669_80_1-1719564393658.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="surendra_karma_9669_80_3-1719564444536.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129997i4071704C44698321/image-size/large?v=v2&amp;px=999" role="button" title="surendra_karma_9669_80_3-1719564444536.png" alt="surendra_karma_9669_80_3-1719564444536.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="surendra_karma_9669_80_2-1719564419046.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/129996i5B041D99C2305A87/image-size/large?v=v2&amp;px=999" role="button" title="surendra_karma_9669_80_2-1719564419046.png" alt="surendra_karma_9669_80_2-1719564419046.png" /></span></P><H5 id="toc-hId-30128242">SMQS and SMQR can be further used to manage and monitor the status of RFC queues.<BR /><BR /></H5><H3 id="toc-hId--424550701">Conclusion</H3><P>Understanding the different types of RFC calls in SAP ABAP is essential for designing efficient and reliable applications. Each type of RFC has its own strengths and ideal use cases. By leveraging the appropriate type of RFC call, developers can optimize performance, ensure data consistency, and enhance the robustness of their SAP solutions.</P><P>Whether it's synchronous or asynchronous communication, transactional guarantees, or maintaining execution order, RFCs provide a versatile framework for remote function execution in the SAP ecosystem.</P> 2024-06-28T16:09:52.626000+02:00 https://community.sap.com/t5/sap-builders-blog-posts/sap-task-center-s-new-3rd-party-integration/ba-p/13738769 SAP Task Center’s New 3rd Party Integration 2024-07-01T15:18:26.437000+02:00 chrwe https://community.sap.com/t5/user/viewprofilepage/user-id/41329 <P><SPAN>Exciting Business Update: </SPAN></P><H2 id="toc-hId-1017642336"><SPAN>SAP Task Center Introduces Cutting-Edge Third-Party Integration Capability! </SPAN></H2><P><SPAN>Businesses and partners, take note – SAP Task Center has just unveiled a groundbreaking new capability that has the potential to redefine task management for third-party applications. This highly anticipated feature empowers customers and partners to seamlessly build and connect task providers for non-SAP and legacy applications within the Task Center, ushering in a centralized platform for streamlined task management. </SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>In a strategic move towards offering enhanced flexibility and integration options, SAP Task Center now supports the much-coveted Third-Party scenario. This pivotal integration allows businesses to seamlessly connect other systems with their core business processes, creating a seamless workflow where tasks generated by third-party services are automatically synchronized with the SAP Task Center. With a unified task view, businesses can optimize resource allocation and boost productivity across multiple platforms, all while ensuring the security and reliability of sensitive business data through SAP's robust APIs. </SPAN></P><P><SPAN>For those keen to delve deeper, our published adoption guide provides a comprehensive resource for interface and API implementation, as well as security and authentication set-up:</SPAN></P><P><SPAN><A href="https://help.sap.com/doc/sap-task-center-third-party-adoption-guide/Cloud/en-US/SAP%20Task%20Center%20Third-Party%20Adoption%20Guide%20v1.pdf" target="_self" rel="noopener noreferrer">SAP Task Center Adoption Guide</A> </SPAN></P><P><A href="https://help.sap.com/docs/task-center?locale=en-US" target="_self" rel="noopener noreferrer"><SPAN>SAP Task Center Documentation </SPAN></A></P><P><SPAN>Furthermore, while SAP Task Center's free standard plan already offers integration with supported SAP cloud solutions, our on-premise and third-party service plans open up a world of untapped potential. Explore the full range of options at SAP Discovery Center.</SPAN></P><H3 id="toc-hId-950211550"><SPAN>TaskConnect</SPAN></H3><P><SPAN>In a synergistic collaboration announced at SAP TechEd 2023, SAP has proudly partnered with SAP Partner ITCE, a leading Bulgarian consulting and training company operating across the Central and Eastern European (CEE) region. Our joint endeavor has yielded TaskConnect, a revolutionary solution developed in collaboration with SAP architects and technical consultants. TaskConnect serves as the essential bridge, offering seamless integration support for non-SAP service management systems and allowing businesses to effortlessly bring in IT service management tasks, such as incidents and approvals, directly into SAP Task Center. </SPAN></P><P><STRONG>Are you ready to take your task management to the next level? </STRONG></P><P><SPAN>Join us as we continue to redefine the boundaries of task management and integration, and unlock a world of unparalleled efficiency</SPAN><SPAN>. </SPAN><SPAN>Let's make it happen – together!</SPAN></P><P><SPAN>Get more information:&nbsp;</SPAN></P><UL><LI><SPAN><A title="https://discovery-center.cloud.sap/serviceCatalog/sap-task-center?region=all&amp;tab=service_plan" href="https://discovery-center.cloud.sap/serviceCatalog/sap-task-center?region=all&amp;tab=service_plan" target="_blank" rel="noopener nofollow noreferrer">SAP Discovery Center</A></SPAN></LI><LI><SPAN><A title="https://www.itce.com/" href="https://www.itce.com/" target="_blank" rel="noopener nofollow noreferrer">ITCE </A></SPAN></LI><LI><SPAN><A title="https://www.itce.com/integrate-your-sap-task-center-with-servicenow/" href="https://www.itce.com/integrate-your-sap-task-center-with-servicenow/" target="_blank" rel="noopener nofollow noreferrer">TaskConnect</A></SPAN></LI></UL> 2024-07-01T15:18:26.437000+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/enterprise-resource-planning-blogs-by-members/create-the-fiori-app-in-a-few-steps-using-tables-with-sap-abap-rap-on-btp/ba-p/13749918 Create the Fiori App in a few steps using Tables with SAP ABAP RAP On BTP Platform. 2024-07-03T14:23:42.811000+02:00 YogeshMore001 https://community.sap.com/t5/user/viewprofilepage/user-id/430512 <P><STRONG>Introduction</STRONG></P><P>In this post, we can create the Fiori app in just a few steps using a table&nbsp;to perform CRUD operations using the ABAP RESTful Application programming model(RAP) on the S/4 HANA cloud platform and Business transaction platform(BTP) <STRONG>using Managed Scenario</STRONG>.</P><P><STRONG>Pre-requisites:</STRONG></P><UL><LI>S/4 HANA Cloud System</LI><LI>Business transaction platform(BTP)</LI><LI>Eclipse IDE</LI></UL><P>In this Blog, I'll explain to you, how we can create the FIORI application using a table without following the manual steps, check it out below.</P><P>In our case, all the below objects will be generated automatically.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_11-1719993412679.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131723i480131BBEE441DC1/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_11-1719993412679.png" alt="yoks_11-1719993412679.png" /></span></P><P>&nbsp;</P><P><STRONG>Step 1.</STRONG></P><P>We must create the Database table as per the requirements on the S/4 HANA Cloud System to create the transactional FIORI Application.</P><P>Create the DB Table Using Eclipse.</P><P>Here, you can see the below, I have created the DB Table to hold the information about Traveling(Travel Booking), you can copy the below table definitions and create your own DB Table.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_12-1719993412684.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131726i0CDEEA749078515B/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_12-1719993412684.png" alt="yoks_12-1719993412684.png" /></span></P><P><FONT size="2">@EndUserText.label: 'Travel Data'</FONT></P><P><FONT size="2">@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE</FONT></P><P><FONT size="2">@AbapCatalog.tableCategory : #TRANSPARENT</FONT></P><P><FONT size="2">@AbapCatalog.deliveryClass : #A</FONT></P><P><FONT size="2">@AbapCatalog.dataMaintenance : #RESTRICTED</FONT></P><P><FONT size="2">define table ztraxxxx_data {</FONT></P><P><FONT size="2">&nbsp; key client: abap. clnt not null;</FONT></P><P><FONT size="2">&nbsp; key travel_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/travel_id not null;</FONT></P><P><FONT size="2">&nbsp; agency_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/agency_id;</FONT></P><P><FONT size="2">&nbsp; customer_id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/customer_id;</FONT></P><P><FONT size="2">&nbsp; begin_date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/begin_date;</FONT></P><P><FONT size="2">&nbsp; end_date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/end_date;</FONT></P><P><FONT size="2">&nbsp; @Semantics.amount.currencyCode : 'ztraxxxx_data.currency_code'</FONT></P><P><FONT size="2">&nbsp; booking_fee&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/booking_fee;</FONT></P><P><FONT size="2">&nbsp; @Semantics.amount.currencyCode : 'ztraxxxx_data.currency_code'</FONT></P><P><FONT size="2">&nbsp; total_price&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/total_price;</FONT></P><P><FONT size="2">&nbsp; currency_code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/currency_code;</FONT></P><P><FONT size="2">&nbsp; description&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/description;</FONT></P><P><FONT size="2">&nbsp; overall_status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/overall_status;</FONT></P><P><FONT size="2">&nbsp; attachment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/attachment;</FONT></P><P><FONT size="2">&nbsp; mime_type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/mime_type;</FONT></P><P><FONT size="2">&nbsp; file_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : /dmo/filename;</FONT></P><P><FONT size="2">&nbsp; created_by&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : abp_creation_user;</FONT></P><P><FONT size="2">&nbsp; created_at&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : abp_creation_tstmpl;</FONT></P><P><FONT size="2">&nbsp; local_last_changed_by : abp_locinst_lastchange_user;</FONT></P><P><FONT size="2">&nbsp; local_last_changed_at : abp_locinst_lastchange_tstmpl;</FONT></P><P><FONT size="2">&nbsp; last_changed_at&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : abp_lastchange_tstmpl;</FONT></P><P><FONT size="2">}</FONT></P><P><STRONG>Step 2:</STRONG></P><P>Right-click on the already created table, and select the option <STRONG>'Generate ABAP Repository Objects'</STRONG>, as shown in the image below. This option will give you a way to develop the FIORI application.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_13-1719993412689.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131725i5DAAF221561B3350/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_13-1719993412689.png" alt="yoks_13-1719993412689.png" /></span></P><P>&nbsp;</P><P><STRONG>Step 3: </STRONG></P><P>In this step, we have 2 options in the ABAP RAP Model,</P><UL><LI><STRONG>Odata UI Service</STRONG>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <STRONG>--&gt; Select this option to generate the FIORI Elements UI</STRONG></LI><LI>Odata Web API Service</LI><LI><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_14-1719993412693.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131729iDE1EA947361EA71E/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_14-1719993412693.png" alt="yoks_14-1719993412693.png" /></span><P>&nbsp;</P></LI></UL><P><STRONG>Step 4:</STRONG></P><P>Select the Package, where the objects are going to be stored.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_15-1719993412695.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131727i95689DA73A216A58/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_15-1719993412695.png" alt="yoks_15-1719993412695.png" /></span></P><P>Here, you can change the RAP Artifacts names as per your naming convention which are automatically taken care of by RAP Framework, or you can continue with default names.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_16-1719993412697.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131728i31ED2D21CB24F4BA/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_16-1719993412697.png" alt="yoks_16-1719993412697.png" /></span></P><P><STRONG>Step 5:</STRONG></P><P>In this step, you can see in the below image that the&nbsp;<STRONG>ABAP Artifacts are getting generated</STRONG>, and all the objects that are required to be created manually for the Fiori app will be generated automatically.</P><P>Click on the next button to capture the all objects in our TR(Transport Request) and Finish the process.</P><P>Kudos...<span class="lia-unicode-emoji" title=":clapping_hands:">👏</span></P><P>Now you have created the Transactional FIORI App in a few steps only.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_17-1719993412699.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131731i3E3681BC3B0CD26F/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_17-1719993412699.png" alt="yoks_17-1719993412699.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_18-1719993412702.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131730i3505CD02542B1562/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_18-1719993412702.png" alt="yoks_18-1719993412702.png" /></span></P><P><STRONG>Step 6:</STRONG></P><P>Final Step, Select the Service Binding, which is created in Step 5,</P><P>It was created the Binding type - Odata V4 - UI, and now just click on the&nbsp;<STRONG>'Publish' </STRONG>button to publish the FIORI Application.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_19-1719993412707.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131732i3B19D1B847023FC6/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_19-1719993412707.png" alt="yoks_19-1719993412707.png" /></span></P><P>&nbsp;</P><P>After Publishing the FIORI App, It will generate the Service URL. Select the Entity Set, and click on the Preview button to run the Fiori application on a browser.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_20-1719993412709.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131733i1FA428755BB2C2A7/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_20-1719993412709.png" alt="yoks_20-1719993412709.png" /></span></P><P>&nbsp;</P><P><STRONG>Wow</STRONG>, Now the FIORI Transaction Application is created with Create, Delete, Edit, and Draft Functionality.</P><P><STRONG>Enjoy the FIORI app Development in simple steps by using ABAP RAP on a Cloud Platform.</STRONG></P><P>The Required Artifacts are already generated which will help us to modify the FIORI Application as per our Requirement.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="yoks_21-1719993412715.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/131734iCA699FB9704C3E85/image-size/medium?v=v2&amp;px=400" role="button" title="yoks_21-1719993412715.png" alt="yoks_21-1719993412715.png" /></span></P><P>I hope this tutorial is helpful to all...</P><P>Please feel free to share your suggestions and comments.</P><P>Enjoy SAP!!!</P> 2024-07-03T14:23:42.811000+02:00 https://community.sap.com/t5/technology-blogs-by-members/sap-rap-unmanaged-scenario-example-simplified/ba-p/13750851 SAP RAP Unmanaged scenario example-Simplified 2024-07-04T06:47:06.640000+02:00 anjan_paul https://community.sap.com/t5/user/viewprofilepage/user-id/183963 <P>SAP RAP (ABAP RESTful Application Programming Model) has two main flavors: managed and unmanaged. Let's focus on the unmanaged version.</P><P><STRONG>Unmanaged SAP RAP</STRONG> refers to a development approach where developers have more control over the data persistence and business logic compared to the managed approach. Here are some key aspects:</P><OL><LI><STRONG>Custom Logic</STRONG>: In unmanaged RAP, developers write their own custom logic for handling data retrieval, manipulation, and persistence. This gives more flexibility in how data is processed and stored.</LI><LI><STRONG>Direct Database Access</STRONG>: Developers can directly access the database tables and define their own data models using Core Data Services (CDS) views or ABAP classes.</LI><LI><STRONG>Explicit Service Definition</STRONG>: Unlike managed RAP, where service definitions are automatically generated based on annotations, unmanaged RAP requires developers to explicitly define service implementations and behaviors.</LI><LI><STRONG>Manual CRUD Operations</STRONG>: CRUD (Create, Read, Update, Delete) operations need to be implemented explicitly in unmanaged RAP, giving full control over how data is managed.</LI><LI><STRONG>Integration with Existing Systems</STRONG>: Unmanaged RAP is often used when integrating with existing systems or when there is a need for complex business logic that cannot be easily handled by the managed approach.</LI><LI><STRONG>Flexibility</STRONG>: Developers have more freedom to implement complex validation rules, authorization checks, and other custom requirements directly in the application logic.</LI></OL><P>Overall, unmanaged SAP RAP provides a more hands-on approach to application development compared to the managed approach, allowing developers to leverage their expertise in ABAP programming and database handling while building modern RESTful APIs.</P><P>Top of Form</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_0-1720068224622.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132111iAE2F232B2E3806F1/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_0-1720068224622.png" alt="anjan_paul_0-1720068224622.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>In this example, we will show a simple application for Employee build with RAP Unmanaged flavors.</P><P>&nbsp;</P><P><STRONG>Development steps.</STRONG></P><P><STRONG>&nbsp;</STRONG></P><P>To be summarized below object will be created for Unmanaged scenario.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_1-1720068224631.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132113i3B10364063FA0353/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_1-1720068224631.png" alt="anjan_paul_1-1720068224631.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Table ZT01_EMPLOYEE</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_2-1720068224632.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132112i7265BD4DA2C5AE8A/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_2-1720068224632.png" alt="anjan_paul_2-1720068224632.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Base CDS View Z_I_EMPLOYEES_U</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_3-1720068224633.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132114iE7477DA8A7679A37/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_3-1720068224633.png" alt="anjan_paul_3-1720068224633.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Consumption CDS view&nbsp; Z_C_EMPLOYEES_U</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_4-1720068224639.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132116i1B730225181C4DA0/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_4-1720068224639.png" alt="anjan_paul_4-1720068224639.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>Behavior Definition</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_5-1720068224640.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132115i8D2CCE6B378E2B7B/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_5-1720068224640.png" alt="anjan_paul_5-1720068224640.png" /></span></P><P>&nbsp;</P><P>Bottom of Form</P><P>&nbsp;</P><P>Behavior &nbsp;definition</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_6-1720068224641.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132117i88DF6633A7BD9646/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_6-1720068224641.png" alt="anjan_paul_6-1720068224641.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Implement the Create &nbsp;method</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_7-1720068224644.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132118i496873D110842915/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_7-1720068224644.png" alt="anjan_paul_7-1720068224644.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Implement Update Method</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_8-1720068224646.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132119iCFB1D0ED90CC7D2D/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_8-1720068224646.png" alt="anjan_paul_8-1720068224646.png" /></span></P><P>&nbsp;</P><P>Implement Delete Method</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_9-1720068224649.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132120iB198EFC7938AC0CB/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_9-1720068224649.png" alt="anjan_paul_9-1720068224649.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Implement Adjust_Numbers method.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_10-1720068224652.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132121i02C0D5C73644F02B/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_10-1720068224652.png" alt="anjan_paul_10-1720068224652.png" /></span></P><P>&nbsp;</P><P>Implement Save method.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_11-1720068224652.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132122i5F986B13096A60EB/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_11-1720068224652.png" alt="anjan_paul_11-1720068224652.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P><STRONG>Test</STRONG></P><OL><LI>Open the Application.</LI></OL><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_12-1720068224655.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132123iF959FD76C9F0B9AB/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_12-1720068224655.png" alt="anjan_paul_12-1720068224655.png" /></span></P><P>&nbsp;</P><P>&nbsp;2. Click on Create. Give Input value and Create.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_13-1720068224657.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132124iEB7481CFE521F5F6/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_13-1720068224657.png" alt="anjan_paul_13-1720068224657.png" /></span></P><P>&nbsp;</P><P>3. New Record got created.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_14-1720068224660.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132125iBFB1122B7011EAAA/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_14-1720068224660.png" alt="anjan_paul_14-1720068224660.png" /></span></P><P>&nbsp;</P><P>4. Select any Row , click on Edit.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_15-1720068224662.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132128i65B2C34F772678D5/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_15-1720068224662.png" alt="anjan_paul_15-1720068224662.png" /></span></P><P>&nbsp;</P><P>5. Change the value and Save.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_16-1720068224664.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132126i20DD29BF54520B47/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_16-1720068224664.png" alt="anjan_paul_16-1720068224664.png" /></span></P><P>&nbsp;</P><P>6. Record will be updated.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_17-1720068224666.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132127iAF6ACD49F54239EC/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_17-1720068224666.png" alt="anjan_paul_17-1720068224666.png" /></span></P><P>7. Select the Rows and click on Delete.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_18-1720068224668.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132132iE847FEB87E344172/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_18-1720068224668.png" alt="anjan_paul_18-1720068224668.png" /></span></P><P>&nbsp;</P><P>8. Records will be deleted.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_19-1720068224670.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132129i50FCD9C2243ABA95/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_19-1720068224670.png" alt="anjan_paul_19-1720068224670.png" /></span></P><P>&nbsp;</P><P>9. In the Database table also you can see the records.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anjan_paul_20-1720068224671.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/132131i29BF3E51ED338C70/image-size/medium?v=v2&amp;px=400" role="button" title="anjan_paul_20-1720068224671.png" alt="anjan_paul_20-1720068224671.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>So, all the &nbsp;CRUD operation is successful using RAP Unmanaged flavors.</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-07-04T06:47:06.640000+02:00 https://community.sap.com/t5/technology-blogs-by-members/the-forbidden-error-when-opening-an-on-premise-fiori-application-on-sap-btp/ba-p/13759686 The “Forbidden” Error When Opening an On-Premise Fiori Application on SAP BTP with Cloud Connector 2024-07-12T23:39:20.212000+02:00 alexandr_razinkin https://community.sap.com/t5/user/viewprofilepage/user-id/756342 <P>One day, I was trying to set up a Fiori Application from an on-premise instance on the SAP BTP Launchpad (SAP Build Work Zone) using the Cloud Connector. You may refer to <A href="https://blogs.sap.com/2021/09/05/installation-and-configuration-of-sap-cloud-connector/" target="_blank" rel="noopener noreferrer">this</A>&nbsp;blog&nbsp;for more information about the setup process. There are other blogs on this topic as well like <A href="https://community.sap.com/t5/technology-blogs-by-members/access-fiori-apps-via-sap-build-work-zone-site-with-federated-sap-s-4hana/ba-p/13558780" target="_blank">this</A>&nbsp;one.</P><P>After completing all the settings, I encountered the following error:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Forbidden_screenshot.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/136152iFF646FAD704F4B2E/image-size/large?v=v2&amp;px=999" role="button" title="Forbidden_screenshot.png" alt="Forbidden_screenshot.png" /></span></P><P>The error text “Forbidden” was misleading because, in my case, the root cause was a typo in the additional properties of my runtime destination. Look at the picture and try to find the typo:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="runtime_dest_with_typo.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/136153i76852B033F0FB1CC/image-size/large?v=v2&amp;px=999" role="button" title="runtime_dest_with_typo.png" alt="runtime_dest_with_typo.png" /></span></P><P>In my case, “sap-plaform” was typed instead of “sap-plaTform” (without the letter ‘t’).</P><P>It took me quite a while to find the issue, especially because I was searching for a security misconfiguration. As soon as I didn't find the same error on the internet, I decided to write this short blog post and share the info.</P><P>Additionally, let me share a brief list of other known issues when connecting on-premise SAP with SAP BTP using the Cloud Connector that may help in troubleshooting:</P><UL><LI>You need to add your SAP Build Work Zone site address to "Security\Settings" to avoid CORS errors.</LI><LI>The name of the runtime destination should contain only lowercase letters and numbers.</LI><LI>If HTTPS is not set up properly in your on-premise system (as is often the case in development environments), you shouldn’t choose HTTPS connection in SAP Cloud Connector. After choosing HTTP, you will also need to switch off the automatic redirect from HTTP to HTTPS address for service /sap/bc/ui2/flp or you will get an error when running the app in your Launchpad.</LI><LI>Sometimes I encountered strange issues in my Cloud Connector instance that prevented me from connecting to my SAP BTP login. Occasionally, these issues were resolved by reinstalling the SAP Cloud Connector and deleting its folder before the new installation. I suppose there is a way to clean or re-initialize something, but reinstalling was quite easy and applicable for me at that moment.</LI></UL><P>I wish you good luck working with SAP BTP and Cloud Connector products and hope you find this short article useful.</P> 2024-07-12T23:39:20.212000+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