https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/ABAP-Cloud-blog-posts.xml SAP Community - ABAP Cloud 2024-07-26T23:00:00.792107+00:00 python-feedgen ABAP Cloud blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-members/abap-matrix-afm-alm/ba-p/13621356 ABAP Matrix (AFM/ALM) 2024-04-05T16:31:45.771000+02:00 BjörnS https://community.sap.com/t5/user/viewprofilepage/user-id/488953 <P>Anyone who is on LinkedIn or X/Twitter and reads our posts has probably already stumbled upon the ABAP Feature Matrix project. In this article we want to go into the background, the different variants and the usage.</P><P>&nbsp;</P><H1 id="toc-hId-858794530"><SPAN>Introduction</SPAN></H1><P>At the DSAG TechXchange we had an exchange with the community and the question came up: "Where can you actually see which features are available in which release?". You will find general information about this everywhere, in the release notes, in blog posts, in SAP examples, but never actually in one place and clearly assigned to a release. The idea then developed to create an overview of all features that are relevant for the ABAP developer.</P><P>&nbsp;</P><H1 id="toc-hId-662281025"><SPAN>Development</SPAN></H1><P>The first version of the matrix started as a simple list on our website and was still quite complex to maintain. We put the appropriate crosses in a table.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="First version of the ABAP Feature Matrix" style="width: 756px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90696i707A59A8D72B050E/image-size/large?v=v2&amp;px=999" role="button" title="abap-matrix-afm-alm-01.png" alt="First version of the ABAP Feature Matrix" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">First version of the ABAP Feature Matrix</span></span></P><P>&nbsp;</P><P>But what about the next release? Here we would have to add a column and fill the column for all existing features. Maintaining and moving it is also not that easy and we cannot correct mistakes so easily. The community then asked why not make the data available via GitHub? Since then, all matrix data has been stored in JSON format in our <A href="https://github.com/Xexer/abap-feature-matrix" target="_blank" rel="noopener nofollow noreferrer">GitHub repository</A>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Overview of the GitHub Repo" style="width: 896px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90697iE5339894C3961F60/image-size/large?v=v2&amp;px=999" role="button" title="abap-matrix-afm-alm-02.png" alt="Overview of the GitHub Repo" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Overview of the GitHub Repo</span></span></P><P>&nbsp;</P><H1 id="toc-hId-465767520"><SPAN>ABAP Feature Matrix (AFM)</SPAN></H1><P>The <A href="https://software-heroes.com/en/abap-feature-matrix" target="_self" rel="nofollow noopener noreferrer">ABAP Feature Matrix</A> (AFM) is the first prototype that is intended to display all features from version 7.40 to today in an overview. As of this release, we actually speak of Modern ABAP, as the ABAP language has developed and modernized significantly since then. These features are mapped according to the different groups, the information about them is pulled from the different configurations of GitHub.</P><P>&nbsp;</P><H3 id="toc-hId-527419453">Filter</H3><P>Before the matrix is loaded, you have the option to make restrictions to influence the result and structure. Do you want to see all releases or just a specific one? Do you also want to see all categories or, for example, just the Core Data Service features? If you want to export the document, you may not need a table of contents; by default this is generated for easier navigation.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Filter of the AFM" style="width: 606px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90698iC5CB76FD621CB190/image-size/large?v=v2&amp;px=999" role="button" title="abap-matrix-afm-alm-03.png" alt="Filter of the AFM" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Filter of the AFM</span></span></P><P>&nbsp;</P><H3 id="toc-hId-330905948">Overview</H3><P>Once the matrix has loaded, you will see all features displayed in several tables.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Example overview" style="width: 759px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90699iEEF1023A5CDE48CD/image-size/large?v=v2&amp;px=999" role="button" title="abap-matrix-afm-alm-04.png" alt="Example overview" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Example overview</span></span></P><P>&nbsp;</P><P>The tables are always structured the same way, from left to right:</P><UL><LI>Feature - The ABAP keyword or a short description of the feature the line is about.</LI><LI>Wiki - A link to the description on GitHub, where you can find more information about the feature, at least one link to public SAP documentation and perhaps a short example.</LI><LI>SAP Documentation - The direct link to the documentation on SAP Help or to an SAP blog. What is important to us here is that there are links to official documents.</LI><LI>Release - Listing of the different releases and whether the feature is available in this on-premise release. You will also receive information about obsolete things and features that were later made available for older releases.</LI></UL><P>&nbsp;</P><H3 id="toc-hId-134392443">Usage</H3><P>The feature matrix is intended to give you a quick overview of all the features across the various releases and at the same time quick access to all important information. In the Wiki area you will find a description, a link to official documents, a possible example and possibly further information if a downport is available and where you can find further information. Here's an example from the wiki:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Example documentation" style="width: 644px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90700iFFE2FF3D79E9803F/image-size/large?v=v2&amp;px=999" role="button" title="abap-matrix-afm-alm-05.png" alt="Example documentation" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Example documentation</span></span></P><P>&nbsp;</P><H1 id="toc-hId--320286500"><SPAN>ABAP Learning Matrix (ALM)</SPAN></H1><P>When developing the feature matrix, the idea of the <A href="https://software-heroes.com/en/abap-learning-matrix" target="_blank" rel="noopener nofollow noreferrer">ABAP Learning Matrix</A> (ALM) also came up, because as a developer you are probably also interested in which features are available and new after a release change.</P><P>&nbsp;</P><H3 id="toc-hId--258634567">Filter</H3><P>You can use the filter to enter your current release and the new release so that the system can determine the features.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Filter of the ALM" style="width: 609px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90701i43B660DE8F1FF769/image-size/large?v=v2&amp;px=999" role="button" title="abap-matrix-afm-alm-06.png" alt="Filter of the ALM" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Filter of the ALM</span></span></P><P>&nbsp;</P><H3 id="toc-hId--455148072">Overview</H3><P>You will then receive a table with the Delta features, the category and links to the documents. The data from the ABAP Feature Matrix serves as the basis for creating the list.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AFM output" style="width: 556px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/90702i810DD7524F43E7EE/image-size/large?v=v2&amp;px=999" role="button" title="abap-matrix-afm-alm-07.png" alt="AFM output" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">AFM output</span></span></P><P>&nbsp;</P><H3 id="toc-hId--651661577">Usage</H3><P>Are you currently making a transformation towards HANA or a release change to S/4 HANA 2023? The matrix is intended to give you an overview of the relevant features that are being added. At the same time, you have the opportunity to skim through the new functions at a glance and pick up the most relevant things for yourself.</P><P>&nbsp;</P><H1 id="toc-hId--336600437"><SPAN>Data sources</SPAN></H1><P>We are currently using various data sources to collect all information, and we primarily want to use official and confirmed information. Current documents are therefore:</P><UL><LI><A href="https://help.sap.com/whats-new/6a9ccc848f4047178da63fe4eaa86d50?Business_Area=ABAP%20Platform&amp;Version=ABAP%20Platform%202023&amp;locale=en-US#top" target="_blank" rel="noopener noreferrer">What's New Viewer - ABAP Platform</A></LI><LI><A href="https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abennews.htm" target="_blank" rel="noopener noreferrer">ABAP Release News</A></LI><LI><A href="https://community.sap.com/t5/application-development-blog-posts/feature-matrix-data-modeling-with-abap-core-data-services/ba-p/13543592" target="_blank">CDS Feature Matrix</A></LI><LI><A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/fc4c71aa50014fd1b43721701471913d/40bb1ba88c1e4139896fd7550c76654f.html?locale=en-US" target="_blank" rel="noopener noreferrer">RAP - What's New</A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/adt-feature-availability-matrix-for-as-abap-releases/bc-p/13027500/highlight/true" target="_blank">ADT Feature Availability Matrix</A></LI></UL><P>&nbsp;</P><H1 id="toc-hId--533113942"><SPAN>Open Source</SPAN></H1><P>We make all information freely available in a structured manner. You can use the information freely, but we would also be happy if you collaborate on the project. Are you missing information about certain features? Did you find any errors in the matrix? Then you can <A href="https://software-heroes.com/en/contact" target="_self" rel="nofollow noopener noreferrer">send us information</A>, <A href="https://github.com/Xexer/abap-feature-matrix/issues" target="_self" rel="nofollow noopener noreferrer">open an issue</A> or <A href="https://github.com/Xexer/abap-feature-matrix/blob/main/admin/contribution.md" target="_self" rel="nofollow noopener noreferrer">participate directly</A> in the project.</P><P>If you want to know more about the structure of the repository, you can find more information in the project <A href="https://github.com/Xexer/abap-feature-matrix/blob/main/admin/documentation.md" target="_self" rel="nofollow noopener noreferrer">documentation</A>, where we explain the structure and contents.</P><P>&nbsp;</P><H1 id="toc-hId--729627447"><SPAN>Conclusion</SPAN></H1><P>The ABAP Feature Matrix is not yet complete and perhaps never will be. But it already gives you a good overview of many features across the various releases.</P> 2024-04-05T16:31:45.771000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/cds-view-hierarchy-node-sign-reversal/ba-p/13599337 CDS View: Hierarchy node sign reversal 2024-04-15T13:30:04.285000+02:00 LinaRaut https://community.sap.com/t5/user/viewprofilepage/user-id/179963 <P><SPAN>This blog is about how to use @Semantics.signReversal in CDS Views</SPAN> <SPAN>to revert the sign of a measure in</SPAN> <SPAN>dependence of the settings of a hierarchy node. Analytic query offers the functionality to reverse a sign after aggregation based on a hierarchy node attribute.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>This functionality shall be made accessible from a CDS Query,</SPAN> <SPAN>for this it is necessary to determine the hierarchy node attribute which stores the sign reverse indicator.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>To make use of the sign reversal feature in an analytical query, the following field needs to be added to the related hierarchy view:</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>@Semantics.signReversalIndicator</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; signref </SPAN><STRONG><SPAN>as</SPAN></STRONG><SPAN> signReversalFlag</SPAN><STRONG><SPAN>,</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><FONT color="#0000FF"><STRONG><SPAN class=""><SPAN class="">Example</SPAN><SPAN class="">:</SPAN> <SPAN class="">Hierarchy </SPAN><SPAN class="">v</SPAN><SPAN class="">iew</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></STRONG></FONT></P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AbapCatalog.sqlViewName: 'ZOQ_CONNIDHIER' @EndUserText.label: 'Connection Hierarchy View' @ObjectModel.dataCategory: #HIERARCHY @Hierarchy.parentChild : { name : 'ConnectionHierarchy', label : 'Connection', siblingsOrder: [{ by: 'seqno' , direction: 'ASC' }] , recurseBy : '_parent', directory: '_dir' } define view ZOQ_CONNECTION_HIERARCHY as select from zoq_connid_h association [0..1] to ZOQ_CONNECTION_HIERARCHY as _parent on $projection.parentid = _parent.nodeid association [1] to ZOQ_CONNECTION_HIERARCHY_DIR as _dir on $projection.hieid = _dir.hieid association [1] to ZOQ_CONNECTION_NODENAME as _node on $projection.hieid = _node.hieid and $projection.nodename = _node.nodeName and $projection.carrid = '' and $projection.connid = '0000' association [1] to ZOQ_AIRLINE as _airline on $projection.carrid = _airline.carrid and $projection.connid = '0000' association [1] to ZOQ_CONNECTION as _connection on $projection.carrid = _connection.carrid and $projection.connid = _connection.connid { @Consumption.filter: { mandatory : true, selectionType : #SINGLE, multipleSelections : false } @ObjectModel.foreignKey.association: '_dir' key hieid, key nodeid, parentid, seqno, @ObjectModel.foreignKey.association: '_airline' carrid, @ObjectModel.foreignKey.association: '_connection' connid, @ObjectModel.foreignKey.association: '_node' nodename, @Semantics.signReversalIndicator signref as signReversalFlag, _parent, _dir, _node, _airline, _connection } </code></pre><P>&nbsp;</P><P><FONT color="#0000FF"><SPAN><STRONG><SPAN class=""><SPAN class="">Preview:</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></STRONG></SPAN></FONT></P><P><FONT color="#0000FF"><SPAN><STRONG><SPAN class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="preview.png" style="width: 791px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95121i6179BCE8DA569035/image-size/large?v=v2&amp;px=999" role="button" title="preview.png" alt="preview.png" /></span></SPAN></STRONG></SPAN></FONT></P><P><SPAN>In CDS views with "Analytics.query : true"</SPAN><SPAN> or define as "transient view entity",</SPAN><SPAN> function "HRY_NODE_SIGN_VALUE(elemRef)" </SPAN><SPAN>is </SPAN><SPAN>used in a formula (AnalyticsDetails.query.formula). This function works in the following way</SPAN><SPAN>, </SPAN><SPAN>At first the path from the element to its hierarchy view is evaluated. In the hierarchy view there should exist exactly one field with semantics signReversal. For each hierarchy node for which the value of the sign reversal element returns space, the function HRY_NODE_SIGN_VALUE will return +1. If the value is not initial, the function returns -1. With this,</SPAN></P><P><SPAN>for example- </SPAN><SPAN>the formula</SPAN> <STRONG><SPAN>$projection.</SPAN></STRONG><SPAN>paymentsum </SPAN><STRONG><SPAN>*</SPAN></STRONG><SPAN> hry_node_sign_value</SPAN><STRONG><SPAN>(</SPAN></STRONG><SPAN> dimension </SPAN><STRONG><SPAN>=&gt;</SPAN></STRONG> <STRONG><SPAN>$projection.</SPAN></STRONG><SPAN>connid</SPAN><STRONG><SPAN>)</SPAN></STRONG> <STRONG><SPAN>as</SPAN></STRONG><SPAN> paymentsumSignRef</SPAN></P><P><SPAN>will return the key figure </SPAN><SPAN>paymentsum</SPAN><SPAN> for all nodes/leaves in the hierarchy with initial sign reversal indicator</SPAN><SPAN> and </SPAN><SPAN>It will return "- </SPAN><SPAN>paymentsum</SPAN><SPAN>" for all nodes/leaves with not initial sign reversal indicator.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>If there is no field with semantics signReversal in the hierarchy view, the function HRY_NODE_SIGN_VALUE always returns +1.</SPAN><SPAN>&nbsp;</SPAN></P><P><FONT color="#0000FF"><STRONG><SPAN class=""><SPAN class="">Example:</SPAN></SPAN><SPAN class=""> <SPAN class="">Analytical query</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></STRONG></FONT></P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AccessControl.authorizationCheck: #NOT_ALLOWED @EndUserText.label: 'SIGN REVERSAL' @Metadata.ignorePropagatedAnnotations: true define transient view entity ZLR_SIGN_REV_FLIGHT_1 provider contract analytical_query with parameters @EndUserText.label: 'Hierarchy' @Consumption.defaultValue: 'CNTRY' p_hienm : char5 as projection on ZOQ_FLIGHT { @AnalyticsDetails.query.axis: #ROWS @AnalyticsDetails.query: { displayHierarchy: #ON, hierarchyBinding: [{ type : #PARAMETER , value : 'p_hienm' }] } connid, @AnalyticsDetails.query.axis: #FREE currency, @Semantics.amount.currencyCode: 'CURRENCY' @Aggregation.default: #SUM @AnalyticsDetails.query.axis: #COLUMNS curr_to_decfloat_amount( paymentsum ) as paymentsum, @AnalyticsDetails.query.axis: #COLUMNS @EndUserText.label: 'HierSignRev' @Aggregation.default: #FORMULA $projection.paymentsum * hry_node_sign_value( dimension =&gt; $projection.connid) as paymentsumSignRef }</code></pre><P>&nbsp;</P><P><FONT color="#0000FF"><STRONG>Result:</STRONG></FONT></P><P><FONT color="#0000FF"><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="result.png" style="width: 761px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95125iE96DEC39C036AD90/image-size/large?v=v2&amp;px=999" role="button" title="result.png" alt="result.png" /></span></STRONG></FONT></P><P><SPAN>In this example for Hierarchy ZOQ_CONNECTION_HIERARCHY (which is defined in the </SPAN><SPAN>ZOQ_FLIGHT)</SPAN><SPAN>, </SPAN><SPAN>signReversalFlag is set for Carried id 'A', 'JL', 'UA'. Therefore, in result of analytical query HierSignRev field is showing the –ve result of the booking total.</SPAN><SPAN>&nbsp;</SPAN></P><P><FONT color="#0000FF"><STRONG><SPAN>SAP Delivered Hierarchies:</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><SPAN>There are few SAP delivered hierarchies which have this feature.</SPAN></P><P><SPAN>Following fields name:&nbsp;</SPAN><SPAN>FinancialStatementItem, </SPAN><SPAN>CnsldtnFinancialStatementItem, FinancialStatementLeafItem, GLAccount, etc.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Can have this feature because they have foreign key association with dimension view which has hierarchy association to hierarchy view supporting this feature.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>For example:</SPAN><SPAN>&nbsp;</SPAN><SPAN>Field with name ‘</SPAN><SPAN>FinancialStatementItem</SPAN><SPAN>’ typically have a foreign key association to dimension view </SPAN><SPAN>I_CnsldtnFinStmntItem and corresponding hierarchy view </SPAN><SPAN>I_FinStmntItmHier will support this feature.</SPAN><SPAN>&nbsp;</SPAN></P><P><FONT color="#0000FF"><STRONG><SPAN>Constraints:</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><SPAN>Only one element in a view of data category HIERARCHY can be marked with semantics signReversal. The data type of the element should be CHAR of length 1.</SPAN><SPAN>&nbsp;<SPAN class=""><SPAN class="">Allowed values are X or space.</SPAN></SPAN><SPAN class="">&nbsp;</SPAN></SPAN></P><P><FONT color="#0000FF"><STRONG><SPAN>Related Note:</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><SPAN>1385580 - How does a formula variable with a replacement path work?</SPAN><SPAN>&nbsp;</SPAN></P><P><FONT color="#0000FF"><STRONG><SPAN>Availability:</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><SPAN>This feature is available from </SPAN><SPAN>S/4HANA 1909 (ABAP Platform 7.54).</SPAN><SPAN>&nbsp;</SPAN></P> 2024-04-15T13:30:04.285000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/capture-your-own-workload-statistics-in-the-abap-environment-in-the-cloud/ba-p/13667180 Capture Your Own Workload Statistics in the ABAP Environment in the Cloud 2024-04-18T13:02:05.620000+02:00 christiancop https://community.sap.com/t5/user/viewprofilepage/user-id/625488 <P>As an administrator in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-1">SAP BTP, ABAP environment</a> or in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+ABAP+Environment/pd-p/60907aa9-99e9-4d5d-9103-8b970e9bc0a4" class="lia-product-mention" data-product="39-1">SAP S/4HANA Cloud ABAP Environment</a>, it’s important to keep track of performance issues and identify bottlenecks. Now SAP offers a few Fiori apps to help you with monitoring the system workload. However, relying on what data the system automatically collects for you sometimes isn’t enough.</P><P>Instead, you want to define yourself what kind of workload information is captured, such as in the following use cases:</P><UL><LI>Standard apps and tools show you that there’s a high workload, but when you drill down to details, you don’t get the information you’re interested in.</LI><LI>You want to monitor the workload of a clearly defined special case, such as the workload generated by a user or by one of your custom apps (which you might want to watch using its request entry point).</LI><LI>You have specific requests where you want to get alerted when the workload, for example, exceeds a defined threshold.</LI></UL><P>In this blog post, I’ll show you how to use the <EM>Capture Request Statistics</EM> app to cover these use cases.</P><H3 id="toc-hId-1120830963"><SPAN class=""><SPAN class="">Background: the System </SPAN></SPAN><SPAN class=""><SPAN class="">Workload</SPAN></SPAN><SPAN class=""><SPAN class=""> App</SPAN></SPAN></H3><P><SPAN>Before I introduce you to the <EM>Capture Request Statistics</EM> app, let me start with a brief recap of what the <EM>System Workload</EM> app can do for you out of the box (for more details, see the blog post </SPAN><SPAN><A href="https://blogs.sap.com/2023/04/24/analyzing-performance-degradations-in-the-abap-environment-in-the-cloud/" target="_blank" rel="noopener noreferrer">Analyzing performance degradations in the ABAP environment in the Cloud</A></SPAN><SPAN>).</SPAN></P><P>Let’s say you want to analyze the performance of your ABAP system in the <EM>System Workload</EM> app:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="System Workload app" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95592iD385E7CF005F9EA9/image-size/large?v=v2&amp;px=999" role="button" title="TM_System_Workload.png" alt="System Workload app" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">System Workload app</span></span></P><P><SPAN>You find the top resource-consuming application in the system and want to analyze it further. You can analyze this application in more detail by choosing the </SPAN><EM>Details</EM><SPAN> arrow at the end of the row. In the following screen, you typically find samples of single ABAP statistics records for this workload. Now, how are these ABAP statistics records collected by default and how can you influence what is captured? Let's take a look behind the scenes.</SPAN></P><H3 id="toc-hId-924317458"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Default Configuration: Capture Workload Statistics with Static Thresholds</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>An ABAP Environment in the Cloud comes with pre-delivered SAP profiles that capture ABAP statistics records in your system. You can find these pre-delivered SAP profiles in the <EM>Capture Request Statistics</EM> app:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pre-delivered SAP profiles" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95589i0FB1B72F365706C2/image-size/large?v=v2&amp;px=999" role="button" title="CRS_default_profiles.png" alt="Pre-delivered SAP profiles" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Pre-delivered SAP profiles</span></span></P><P><SPAN>These profiles ensure that the statistics about “bad” requests - meaning a high consumption of compute resources – are captured in the system. If you look, for example, at the details of the static profile for expensive requests regarding server response time, you find a static threshold of 1 second:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Pre-delivered SAP profile - capture requests with high server response time" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95590iC8508BAE822CC1ED/image-size/large?v=v2&amp;px=999" role="button" title="CRS_default_static_profile.png" alt="Pre-delivered SAP profile - capture requests with high server response time" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Pre-delivered SAP profile - capture requests with high server response time</span></span></SPAN></P><P><SPAN>With this profile always active, ABAP statistics records with an ABAP server response time larger than 1 second are captured and stored. Similarly, the other pre-delivered static profiles capture requests that exceed 1 second regarding HANA CPU time, ABAP CPU time, etc.</SPAN></P><P>In the profile header, you can find that for the SAP-delivered profiles, a sampling rate of 1% has been set. It means that only 1% of the records that fulfill the filter condition will be captured. In addition, the record limit per minute is set to 50. The periodic data collector that runs every minute and processes the ABAP statistics records (together with the profiles in the <EM>Capture Request Statistics</EM> app) will only store the ABAP statistics records up to this limit in the database. So, if many ABAP statistics records fulfill the filter condition at a time, not all of these records will be stored.</P><P>For SAP-delivered profiles, this low record limit per minute together with the low sampling rate ensures that the workload and data footprint for processing and storing monitoring data in your system stay low, even if the overall business workload on the system gets exceedingly high.</P><H3 id="toc-hId-727803953"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Default Configuration: Capture Workload Statistics Dynamically</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>In addition to the pre-delivered static profiles, the dynamic SAP profile <EM>SAP_DYNAMIC_CAPTURING</EM> ensures that for the top workload of your system “good” statistic samples of requests are also captured (with respect to the server response time). As a result, you can compare statistics of samples of “bad” workload to statistics of samples of “good” workload. The top workload in your system might vary as well as the behavior in response times. The dynamic profile adapts to these changes.</P><P>In addition, for the top workload, the dynamic profile captures samples of ABAP statistics when their server response times deviate too much from the average server response time of this specific kind of workload. This ensures that for workloads with typically different server response times, samples of ABAP statistics records are also at hand, even if their server response times do not exceed the static thresholds of the static profile types.</P><P>In principle, the pre-delivered static profiles together with the dynamic profile will give you a high chance that for your top workload, you’ll find samples of ABAP statistics records in the system that you can use for detailed analysis. You get this data using the <EM>System Workload</EM> app and by drilling down to the ABAP statistics records, and in most of the cases, that’s enough. However, as these statistics are sampled, it might happen that sometimes you don't find any records that you can use for further analysis:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="System Workload app - no detailed statistics available" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95598i889C198FE81A56E3/image-size/large?v=v2&amp;px=999" role="button" title="TM_Request_Processing.png" alt="System Workload app - no detailed statistics available" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">System Workload app - no detailed statistics available</span></span></P><P><SPAN>To have these detailed statistics for your root cause analysis, you can capture your own workload statistics in your ABAP environment in the Cloud.</SPAN></P><H3 id="toc-hId-531290448"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Capture Your Own Workload Statistics in the Capture Request Statistics App</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>You can create your own capture profiles, of course. While the SAP profiles are designed in such a way that they capture samples of ABAP statistics records for generic expensive workload in the ABAP tenant, you might want to specify the workload more concretely. For example, you might be interested specifically in the ABAP statistics records of your user or of a certain outbound communication arrangement. Or you might be interested in workload that exceeds a specific threshold (as in the pre-delivered SAP profiles). To do so, you can create your own capture profile.</P><P>If, for example, you have built a new ABAP RESTful application for travel bookings, you could define a profile that filters on its specific request entry point (consisting of request entry name and request entry type):</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Custom profile" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95585i1CFDC6C8A1EE4DC4/image-size/large?v=v2&amp;px=999" role="button" title="Custom_static_profile.png" alt="Custom profile" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Custom profile</span></span></P><P>A<SPAN>&nbsp;custom profile is in status </SPAN><EM>Inactive</EM><SPAN> when newly created. If you click on the </SPAN><EM>Activate</EM><SPAN> button, the profile status will be set to status </SPAN><EM>Processing,</EM><SPAN> and only then will the data collector process ABAP statistics records that fulfill the defined filter conditions. On activation of the profile, you also need to specify the duration of how long the profile should be active. When the duration is exceeded and all the relevant ABAP statistics records are processed, the profile will be set to status </SPAN><EM>Finished</EM><SPAN> and no further ABAP statistics records will be processed for this profile.</SPAN></P><P><SPAN>In the example profile shown here, a sampling rate of 100% and a record limit per minute of 1000 has been set. Both are the maximum possible values.&nbsp;</SPAN><SPAN>This setting guarantees that all ABAP statistics records fulfilling the filter conditions are captured. Of course, if the record limit of 1000 is exceeded, you won’t capture everything. But this happens only in rare cases. In any case, it’s ensured that also for a badly designed capture profile, your business is not impacted by the additional workload of capturing request statistics.</SPAN></P><P>The target user group in the profile header indicates that only workload is considered that is running in customer user context. You can specify this further by considering, for example, only customer communication users or customer business users.</P><P>If the profile is active and users are performing actions in your ABAP RESTful application, the according ABAP statistics records are captured and stored in the database for a period that you have defined in the retention time of your profile.</P><P>For further analysis, e.g., the performance of a new app that you have built, you can navigate to the captured ABAP statistics records by clicking on <EM>Analyze Request Statistics</EM>. There you can analyze the captured single ABAP statistics records in detail and obtain insights into the behavior of your newly created app:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Analyze ABAP statistics records in detail" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95616i3095B0D51383866A/image-size/large?v=v2&amp;px=999" role="button" title="TM_ABAP_Statistics_Records.png" alt="Analyze ABAP statistics records in detail" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Analyze ABAP statistics records in detail</span></span></P><P><SPAN class=""><SPAN class="">You can find more information, for example, about SQL statements or, in the case of communication, about HTTP calls by choosing the </SPAN></SPAN><SPAN class=""><SPAN class=""><SPAN class="">Details</SPAN></SPAN></SPAN><SPAN class=""><SPAN class=""> arrow at the end of a row, which leads you to the details of that ABAP statistics record.</SPAN></SPAN></P><P><SPAN>If your new application belongs to the more expensive workload in the system, you’ll easily find the captured ABAP statistics records also in the </SPAN><EM>System Workload</EM><SPAN> app. There, you start from the overall workload (aggregated ABAP statistics records) of your business tenants. If you drill down to the details of your application, you will get to the ABAP statistics records. Your custom profile ensures that they have been captured:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="System Workload app - detailed statistics available" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95602i44C955DB30D4DCD8/image-size/large?v=v2&amp;px=999" role="button" title="TM_Request_Processing_Data.png" alt="System Workload app - detailed statistics available" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">System Workload app - detailed statistics available</span></span></SPAN></P><P><STRONG>Note:</STRONG><SPAN> With the </SPAN><EM>Capture Request Statistics</EM><SPAN> app, you can also define profiles with profile type </SPAN><EM>SQL Trace</EM><SPAN>. With these profiles, you can trace the execution of SQL statements. These captured SQL statements can be further analyzed in the </SPAN><EM>SQL Trace Analysis</EM><SPAN> app. This might be another story for another blog post in the future, so stay tuned.</SPAN></P><P>You can find more information about the <EM>Capture Request Statistics</EM>&nbsp;app in the following documentation:</P><UL><LI><A href="https://help.sap.com/docs/btp/sap-business-technology-platform/capturing-request-statistics" target="_self" rel="noopener noreferrer">Capturing Request Statistics</A>&nbsp;for <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-2">SAP BTP, ABAP environment</a></LI><LI><A href="https://help.sap.com/docs/SAP_S4HANA_CLOUD/0cc8af9d2f2e40f38b38b46b49325e2d/e86943aee62d48a8ac26ec22710bd63d.html" target="_self" rel="noopener noreferrer">Capturing Request Statistics</A>&nbsp;for <a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+ABAP+Environment/pd-p/60907aa9-99e9-4d5d-9103-8b970e9bc0a4" class="lia-product-mention" data-product="39-2">SAP S/4HANA Cloud ABAP Environment</a></LI></UL><H3 id="toc-hId-334776943"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Getting Notified About Specific Workloads</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>You may have noticed that by defining a custom capture profile for capturing ABAP statistics records, you can set the option for <EM>Health Monitoring</EM>. If you have connected your <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-3">SAP BTP, ABAP environment</a> or&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+ABAP+Environment/pd-p/60907aa9-99e9-4d5d-9103-8b970e9bc0a4" class="lia-product-mention" data-product="39-3">SAP S/4HANA Cloud ABAP Environment</a> tenant to <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-1">SAP Cloud ALM</a>, you’ll receive a counter per capture request statistics profile in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-2">SAP Cloud ALM</a> <EM>for Operations</EM> in the <EM>Health Monitoring</EM> app. You can find more information on how to connect your tenant to SAP Cloud ALM here:</P><UL><LI><SPAN><A href="https://developers.sap.com/tutorials/abap-environment-monitoring-calm-health-monitoring.html" target="_blank" rel="noopener noreferrer">Monitor An SAP BTP ABAP Environment Service Using SAP Cloud ALM (CALM)</A></SPAN></LI><LI><SPAN><A href="https://support.sap.com/en/alm/sap-cloud-alm/operations/expert-portal/setup-managed-services/setup-s4hana-cloud.html" target="_blank" rel="noopener noreferrer">Setup for SAP S/4HANA Public Cloud Edition</A></SPAN></LI></UL><P>For our custom profile example <EM>Z_STATIC_PROFILE</EM>, you’ll find the tile <EM>Captured ABAP Statistics Records</EM> in the <EM>Health Monitoring</EM> app in your connected <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-3">SAP Cloud ALM</a> tenant. If you click on the tile for details, you find your custom profile together with a counter</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAP Cloud ALM - Health Monitoring" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95619i39178717905FCFEA/image-size/large?v=v2&amp;px=999" role="button" title="CALM_Health_Monitoring.png" alt="SAP Cloud ALM - Health Monitoring" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">SAP Cloud ALM - Health Monitoring</span></span></P><P><SPAN>This counter is normalized to 5 minutes. This means that during the last 5 minutes, 27 ABAP statistics records were captured in your ABAP tenant that fulfill the filter conditions that you have defined in your custom profile. Besides this usage scenario, you can also use the </SPAN><EM>Health Monitoring</EM><SPAN> feature on capture profiles with static thresholds (like in the case of the pre-delivered static SAP profiles) to count how often your defined thresholds are exceeded. For more information, see also the blog post </SPAN><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/monitoring-the-performance-of-outbound-communication-in-the-abap/ba-p/13566730" target="_blank">Monitoring the Performance of Outbound Communication in the ABAP Environment in the Cloud</A></SPAN><SPAN>.</SPAN></P><P>If you want to get alerted by email when the filter conditions of your profile are hit a certain number of times, you can configure alerts in <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-4">SAP Cloud ALM</a> in the <EM>Health Monitoring</EM> app. For more information, see the blog post <A href="https://community.sap.com/t5/technology-blogs-by-sap/monitoring-the-health-of-the-abap-system-in-the-cloud/ba-p/13570209" target="_blank">Monitoring the Health of the ABAP System in the Cloud</A>.</P><H3 id="toc-hId-138263438"><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class=""><SPAN class="">Summary</SPAN></SPAN></SPAN></SPAN></SPAN></H3><P>The default configuration of your <a href="https://community.sap.com/t5/c-khhcw49343/SAP+BTP%25252C+ABAP+environment/pd-p/73555000100800001164" class="lia-product-mention" data-product="11-4">SAP BTP, ABAP environment</a> or <a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud+ABAP+Environment/pd-p/60907aa9-99e9-4d5d-9103-8b970e9bc0a4" class="lia-product-mention" data-product="39-4">SAP S/4HANA Cloud ABAP Environment</a> tenant comes with pre-delivered SAP profiles that capture ABAP statistics records for the most important workload in your system. This helps you analyze and understand your system workload in detail.</P><P><SPAN>However, if you want to enhance this default configuration, you can do so by creating your own profiles using the <EM>Capture Request Statistics</EM> app. The monitoring data collector ensures that requests that fulfill </SPAN><SPAN>your filter conditions are captured and stored in the system for further analysis. You can define profiles for capturing ABAP statistics records and for capturing SQL statements.</SPAN></P><P><SPAN>Let’s quickly recap in which use cases creating your own profiles in the <EM>Capture Request Statistics</EM> app is useful: </SPAN></P><UL><LI>In your standard system-local analysis of the system behavior, detailed statistics are missing for a certain workload that you need to have at hand.</LI><LI>You want to proactively capture extensive details for a workload of your choice to analyze it in detail.</LI><LI>In <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Cloud+ALM/pd-p/73554900100800002513" class="lia-product-mention" data-product="469-5">SAP Cloud ALM</a>, you want to understand how often your workload in the landscape hits certain criteria (= your filter conditions defined in the profiles), and you want to get alerted in this case</LI></UL><P>I’d like to thank everyone who contributed to this blog post, especially my colleagues <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/852125">@anke_griesbaum</a>, <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/5052">@Karen_Kuck</a>, <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1803">@SabineReich</a>, and <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/220841">@steffen_siegmund</a>.</P><P>Let me know in the comments if and how you’ve used the <EM>Capture Request Statistics</EM> app and what you think of it.</P> 2024-04-18T13:02:05.620000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/abap-cloud-developer-trial-2022-available-now/ba-p/13598069 ABAP Cloud Developer Trial 2022 Available Now 2024-04-19T18:52:59.860000+02:00 julieplummer20 https://community.sap.com/t5/user/viewprofilepage/user-id/2108 <H1 id="toc-hId-836835714">Update 1: 16th May, 2024: File upload vulnerability - Workaround</H1><H3 id="toc-hId-898487647"><STRONG>Symptom</STRONG></H3><P>An unauthenticated attacker can upload a malicious file to the server which when accessed by a victim can allow the attacker to access, modify or make unavailable user's information and system.</P><H3 id="toc-hId-701974142"><FONT color="#04357B">Reason</FONT></H3><DIV class=""><P>The Content Repository "FILESYSTEM" and "SOMU_DB"&nbsp;are configured with "No Signature" checked.</P></DIV><H3 id="toc-hId-505460637"><STRONG>Workaround</STRONG></H3><P>To ensure that <SPAN>a secure default configuration is implemented,&nbsp;</SPAN>correct your system as follows <SPAN>.&nbsp;</SPAN></P><P><SPAN>If you have the relevant access, you can refer to SAP Note&nbsp;<A title="[CVE-2024-33006] File upload vulnerability in SAP NetWeaver Application Server ABAP and ABAP Platform" href="https://me.sap.com/notes/3448171" target="_self" rel="noopener noreferrer">3448171</A></SPAN><SPAN>&nbsp;for more details.</SPAN></P><P>Note that this workaround is a temporary fix and is not a permanent solution. SAP strongly recommends you apply the corrections outlined in the security note, which can be done in lieu of the workaround or after the workaround is implemented:</P><OL><LI>Execute Transaction 'OAC0'</LI><LI>Open the&nbsp;content repository 'FILESYSTEM' for all releases.&nbsp;</LI><LI>Change the Version Number to '0047' (Content Server Version 4.7)</LI><LI>Uncheck the checkbox&nbsp;"No Signature"&nbsp;</LI><LI>Save the settings.</LI><LI>Execute Transaction 'OAC0'</LI><LI>Open the&nbsp;content repository 'SOMU_DB' in case of release 7.50 or higher.</LI><LI>Change the Version Number to '0047' (Content Server Version 4.7)</LI><LI>Uncheck the checkbox&nbsp;"No Signature"</LI><LI>Save the settings.</LI></OL><P>&nbsp;</P><H1 id="toc-hId-50781694">Update 2: 16th May, 2024: version 1909 will be withdrawn!</H1><P>On Thursday, 16th May, we will have to withdraw the ABAP Cloud Developer Trial, 1909 from Docker.</P><P>If you need this version for any reason, please make sure you have downloaded it in good time.</P><P>Otherwise, we recommend the version below:</P><H1 id="toc-hId--145731811">Now Available:</H1><P>ABAP Cloud Developer Trial 2022 is now available on Docker:</P><P><A href="https://hub.docker.com/r/sapse/abap-cloud-developer-trial" target="_blank" rel="noopener nofollow noreferrer">https://hub.docker.com/r/sapse/abap-cloud-developer-trial/tags</A> -&gt; <STRONG>2022</STRONG></P><P><STRONG>ABAP Cloud Developer Trial</STRONG> is a free, downloadable ABAP Platform on SAP HANA 2.0 for trying out the ABAP language and toolset. It is extensively pre-configured with SAP Fiori launchpad, SAP Cloud Connector, pre-configured backend /frontend connections, roles, and sample applications.</P><P>This solution is intended for two groups of developers:</P><UL><LI><STRONG>Non-ABAP developers</STRONG>, who are interested in learning more about the ABAP language and development tools</LI><LI><STRONG>ABAP developers</STRONG><SPAN>, who are interested in learning about new features (see below for some examples)</SPAN></LI></UL><P>Note: This is the new name for ABAP Platform Trial. The name change is to highlight that you can now develop in the new ABAP Language Version, ABAP for Cloud Development. For more information, see&nbsp;the&nbsp;Highlights below. By the way, if you are interested in our overall release strategy for the Trial, see&nbsp;<SPAN><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/533" target="_blank">Karl Kessler</A></SPAN>’s announcement blog post from 2023:&nbsp;<SPAN><A href="https://blogs.sap.com/2023/07/31/now-available-abap-platform-trial/" target="_blank" rel="noopener noreferrer">Now available: ABAP Platform Trial</A></SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="julieplummer20_0-1707312743960.png" style="width: 560px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62097i148B58C23BE2BCC0/image-dimensions/560x245?v=v2" width="560" height="245" role="button" title="julieplummer20_0-1707312743960.png" alt="julieplummer20_0-1707312743960.png" /></span></P><P><STRONG>IMPORTANT: </STRONG></P><P><STRONG>All: Before you pull the image, make sure:</STRONG></P><UL><LI>You understand the principles of docker container technology</LI><LI>You know the entities docker image / docker container and their relationship</LI><LI>You know the basic commands to work with images and containers</LI></UL><P><STRONG>Mac Users:&nbsp;</STRONG>Previously, ABAP Platform Trial ran on both Intel and M-series processors. Since then, Apple has upgraded its iOS. Thus, on the newest MacOS version, you can no longer run ABAP Cloud Developer Trial on Docker Desktop for MacBooks with an M-seríes processor. This is not a SAP-specific issue.&nbsp;So for now, you have two options:</P><UL><LI>Run Docker Desktop with a MacBook that has an Intel processor.</LI><LI>Use the UTM app to emulate an AMD64 Linux distro via Apple QEMU.</LI></UL><P>Many many thanks to Community member&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/197587">@dylan-drummond</a>&nbsp;for researching this. Dylan has written an exhaustive guide to this:&nbsp;</P><P><A title="M-series Apple Chip MacBooks and Abap Platform Trial containers using Docker and Podman" href="https://community.sap.com/t5/technology-blogs-by-members/m-series-apple-chip-macbooks-and-abap-platform-trial-containers-using/ba-p/13593215" target="_blank">M-series Apple Chip MacBooks and Abap Platform Trial containers using Docker and Podman</A>&nbsp;</P><P>This is Community content, so consume at your own risk; however, this could be very helpful to many Mac users.</P><H1 id="toc-hId--342245316"><SPAN>ABAP License</SPAN></H1><P>The ABAP license supplied with the Docker image lasts only three months.&nbsp;Therefore, you should download and import the demo license as follows:</P><OL><LI>Logon to your ABAP system with the user SAP*, client 000, same password as for DEVELOPER (DEVELOPER , client 001, is locked).</LI><LI>Start transaction SLICENSE; copy the hardware key.</LI><LI>Get the license from&nbsp;<A href="https://go.support.sap.com/minisap/#/minisap" target="_blank" rel="noopener noreferrer">minisap</A>&nbsp;, choosing the system A4H.</LI><LI>Back in your ABAP System, start SLICENSE again, then choose<SPAN>&nbsp;</SPAN><STRONG>Install</STRONG>.</LI><LI>Log off, then log on with the user DEVELOPER, client 001.</LI><LI>The old ("INITIAL") license(s) should be deleted automatically. If not, start SLICENSE again; remove the old invalid licenses. (sap* is not allowed to delete licenses).</LI></OL><H1 id="toc-hId--538758821"><SPAN>Update, 23rd April, 2024: 2022 as a Cloud Appliance (CAL)</SPAN></H1><P><SPAN>Dear all, As an alternative to the Docker download, we have also released the same version of the Trial, under the name&nbsp;<STRONG>SAP ABAP Platform 2022, Developer Edition:</STRONG></SPAN></P><P><A title="SAP ABAP Platform 2022, Developer Edition" href="https://cal.sap.com/catalog#/applianceTemplates/c12a3b3d-99b0-4b44-a0c7-6509fe279a3d" target="_blank" rel="noopener noreferrer">https://cal.sap.com/catalog#/applianceTemplates/c12a3b3d-99b0-4b44-a0c7-6509fe279a3d</A>&nbsp;</P><P>Enjoy!</P><H1 id="toc-hId--735272326"><SPAN>Highlights of the 2022 Edition</SPAN></H1><H2 id="toc-hId--802703112">ABAP Cloud Development: Developer Extensibility Scenario</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="julieplummer20_0-1713188198928.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/96667iAC6067A63A2A3BA6/image-size/medium?v=v2&amp;px=400" role="button" title="julieplummer20_0-1713188198928.png" alt="julieplummer20_0-1713188198928.png" /></span>&nbsp;&nbsp;</P><P><EM><SPAN>ABAP Cloud map</SPAN></EM></P><P><STRONG>ABAP Cloud&nbsp;</STRONG>is&nbsp;<EM>t</EM>he ABAP development model you need to build cloud-ready business apps, services, and extensions. Including it in the ABAP Cloud Developer Trial means that you can get a feel for the concepts pertaining to ABAP Cloud Development and to a clean core when extending SAP S/4HANA. This scenario lets you build extensions <STRONG>directly</STRONG> on the SAP S/4HANA stack - <SPAN>tightly coupled, cloud-ready, and upgrade-stable. Of course, we don't offer the strictly business content from SAP S/4HANA. However, we do offer all the language elements - RAP cloud-optimized language, and released APIs and extension points.&nbsp;</SPAN></P><P><SPAN>Important: You are thereby restricted to &nbsp;cloud-optimized ABAP language. That is, i</SPAN><SPAN>f you are used to developing in Classic ABAP on-premise, and want to try out Cloud development, you must comply with ABAP Cloud Development rules, such as:</SPAN></P><UL><LI>Use public SAP APIs (local or remote) released by SAP to access SAP functionality and SAP data</LI><LI>Use public SAP extension points released by SAP to extend SAP objects. Modifications to SAP objects are not supported. (This includes SFLIGHT, for example.)</LI><LI>Use ADT (ABAP Development Tools) as your ABAP IDE</LI><LI>Use RAP (ABAP RESTful Application Programming Model) to build Fiori apps and services. SAP technologies like Dynpro or Web Dynpro are not released for ABAP cloud development</LI><LI><SPAN>The software components ZLOCAL and ZCUSTOM_DEVELOPMENT can only be used for ABAP Cloud development - that is, compliant with these rules</SPAN></LI></UL><P><SPAN>More information:</SPAN></P><UL><LI><SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/abap-cloud/ba-p/13557273" target="_self">ABAP Cloud - What is it?</A> .. by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/189264" target="_self">Boris Gebhardt</A></SPAN></LI><LI><SPAN><A href="https://pages.community.sap.com/topics/abap" target="_blank" rel="noopener noreferrer">ABAP Development | SAP Community</A></SPAN></LI><LI><SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/new-extensibility-guide-for-s-4hana-is-available/ba-p/13554615" target="_blank">New Extensibility Guide for S/4HANA is available</A></SPAN>, by <SPAN><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/139277" target="_blank">Thomas Schneider</A></SPAN></LI><LI><SPAN><A class="" href="https://community.sap.com/t5/technology-blogs-by-sap/c0-developer-extensibility-for-cds-data-models/ba-p/13546971" target="_self">Developer Extensibility for CDS Data Models (C0 Release Contract)</A></SPAN></LI></UL><H2 id="toc-hId--651962260"><SPAN>ABAP RESTful Application Programming Model (RAP) - 2022</SPAN></H2><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="julieplummer20_2-1707312818813.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62100i8DACC0C46ADC0D82/image-size/medium?v=v2&amp;px=400" role="button" title="julieplummer20_2-1707312818813.png" alt="julieplummer20_2-1707312818813.png" /></span></P><P>Offers you an efficient way to build enterprise-ready, SAP HANA-optimized, OData-based Fiori UI services and Web APIs in the cloud as well as on-premise.</P><P>New features in 2022 include:</P><UL><LI>Custom business objects</LI><LI><SPAN>Event Consumption and Exposure </SPAN></LI><LI>RAP Generator</LI><LI>RAP business object Test Double Framework (TDF)</LI></UL><P><SPAN>To make it easier for you to get started, we have also added:</SPAN></P><UL><LI><SPAN>The demo and training data model, the&nbsp;</SPAN><A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/fc4c71aa50014fd1b43721701471913d/def316685ad14033b051fc4b88db07c8.html?locale=en-US&amp;version=202210.latest" target="_blank" rel="noopener noreferrer">ABAP Flight Reference Scenario</A>&nbsp;(or directly:&nbsp;<A href="https://github.com/SAP-samples/abap-platform-refscen-flight/tree/ABAP-platform-2022" target="_self" rel="nofollow noopener noreferrer">ABAP Flight Reference Scenario 2022 on github</A>)</LI><LI>The <A href="https://github.com/SAP-samples/abap-platform-fiori-feature-showcase?tab=readme-ov-file" target="_self" rel="nofollow noopener noreferrer">SAP Fiori Element Feature Showcase App for RAP</A></LI></UL><P>More information:&nbsp;</P><UL><LI><SPAN><A href="https://blogs.sap.com/2019/10/25/getting-started-with-the-abap-restful-programming-model/" target="_blank" rel="noopener noreferrer">Getting Started with the ABAP RESTful Application Programming Model (RAP)</A></SPAN>, by&nbsp;<SPAN><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/1462" target="_blank">Carine Tchoutouo Djomo</A></SPAN>.</LI><LI>The<SPAN>&nbsp;</SPAN><A href="https://help.sap.com/viewer/fc4c71aa50014fd1b43721701471913d/201909.002/en-US/289477a81eec4d4e84c0302fb6835035.html" target="_blank" rel="noopener noreferrer">SAP Help Portal: ABAP RESTful&nbsp; Application Programming Model</A></LI></UL><H2 id="toc-hId--848475765">&nbsp;</H2><H2 id="toc-hId--1044989270">Git-Enabled Change and Transport System (gCTS)</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Snag_c56468.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102333i1DBE682281D4952B/image-size/medium?v=v2&amp;px=400" role="button" title="Snag_c56468.png" alt="Snag_c56468.png" /></span></P><P><EM>gCTS = CTS + git</EM><BR /><BR /><SPAN>A new way of transporting objects, gCTS enables you to use Git to store your ABAP development objects. gCTS makes use of special Git features, such as working on local copies of a central remote Git repository. Software development takes place in the usual editors like ABAP Development Tools (ADT). Changes to objects are still recorded in transport requests. Current states of objects can be pushed to remote Git repositories, either by releasing a transport request or while you’re working.</SPAN><BR /><SPAN>For the official documentation overview, see:&nbsp;</SPAN></P><P><A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/4a368c163b08418890a406d413933ba7/f319b168e87e42149e25e13c08d002b9.html?version=202210.latest" target="_blank" rel="noopener noreferrer">Git-Enabled Change and Transport System (BC-CTS-GIT) | SAP Help Portal</A></P><P><SPAN>The official documentation for configuration is in two parts:</SPAN></P><OL class="lia-list-style-type-upper-alpha"><LI><SPAN><A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/4a368c163b08418890a406d413933ba7/26c9c6c5a89244cb9506c253d36c3fda.html?version=202210.latest" target="_self" rel="noopener noreferrer">Configuring Git-Enabled Change and Transport System</A></SPAN><SPAN><BR />Here, we have preconfigured the first two parts, so you only have to complete parts 3-5:&nbsp;&nbsp;</SPAN><SPAN><SPAN>&nbsp;</SPAN></SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="julieplummer20_0-1714132333934.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102335i76EF49B9BE9CBFA6/image-size/medium?v=v2&amp;px=400" role="button" title="julieplummer20_0-1714132333934.png" alt="julieplummer20_0-1714132333934.png" /></span></LI><LI><SPAN><A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/4a368c163b08418890a406d413933ba7/479eb77214fb42e9ab183afffbb9cd42.html?version=202210.latest" target="_blank" rel="noopener noreferrer">Configuring Git Repositories</A></SPAN></LI></OL><P><SPAN>Some certificates are already available. If you would like to connect to your own GitHub server or to a provider other than github.com, you have to add the appropriate certificates to the ABAP system in transaction STRUST. The configuration has been done for the default user ‘DEVELOPER’.</SPAN><BR /><BR /><SPAN>To get started with gCTS, simply open the gCTS app in the SAP Fiori Launchpad (FLP).</SPAN><BR /><BR /><SPAN>If you are a SAP customer, partner, or employee, the following SAP Note provides additional information: SAP Note:&nbsp;</SPAN><A href="https://launchpad.support.sap.com/%23/notes/2821718" target="_blank" rel="noopener noreferrer">2821718</A><SPAN>&nbsp;. However, the essential configuration has already been done for everyone.</SPAN></P><H2 id="toc-hId--1241502775">abapGit</H2><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="julieplummer20_1-1711536855908.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87332i247C1C74996707AF/image-size/medium?v=v2&amp;px=400" role="button" title="julieplummer20_1-1711536855908.png" alt="julieplummer20_1-1711536855908.png" /></span></P><P><SPAN>Yes, abapGit is available out of the box.</SPAN><BR /><SPAN>Documentation is here:&nbsp;</SPAN><A href="https://docs.abapgit.org/" target="_blank" rel="noopener nofollow noreferrer">abapGit Documentation</A><BR /><SPAN>If you are not yet familiar with abapGit, this post by&nbsp;</SPAN><SPAN class="">graham.robinson</SPAN><SPAN>&nbsp;is a great introduction, with how-to videos:</SPAN><BR /><A href="https://blogs.sap.com/2017/06/21/abapgit-so-easy/" target="_blank" rel="noopener noreferrer">abapGit So Easy</A></P><H2 id="toc-hId--1438016280">Custom Code Migration with the ABAP Test Cockpit (ATC)</H2><P>We've pre-configured ABAP Platform Trial to run as a&nbsp;<STRONG>central check system</STRONG>&nbsp;for checking your custom code prior to migration - particularly useful for:</P><UL><LI>SAP S/4HANA Readiness Checks</LI><LI>SAP Cloud Readiness Check</LI></UL><P>You can test this out of the box locally in SAP ADT, then configure the rest of your landscape to work with it.<BR />For more general information on ATC, see these two excellent blogs, by&nbsp;<SPAN><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/6638" target="_blank">Olga Dolinskaja</A>:</SPAN></P><UL><LI><A href="https://blogs.sap.com/2016/12/12/remote-code-analysis-in-atc-one-central-check-system-for-multiple-systems-on-various-releases/" target="_blank" rel="noopener noreferrer">Remote Code Analysis in ATC</A></LI><LI><A href="https://blogs.sap.com/2014/11/03/abap-test-cockpit-for-developers-in-eclipse/" target="_blank" rel="noopener noreferrer">ATC in ABAP Development Tools (ADT)</A></LI></UL><H2 id="toc-hId--1634529785"><SPAN>SAP Cloud Connector</SPAN></H2><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="julieplummer20_0-1707312915858.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62103iCAAAC494078E22DD/image-size/medium?v=v2&amp;px=400" role="button" title="julieplummer20_0-1707312915858.png" alt="julieplummer20_0-1707312915858.png" /></span></P><P><SPAN>SAP Cloud Connector provides&nbsp;</SPAN>a link between&nbsp;<SPAN>SAP Business Technology Platform (BTP)&nbsp;</SPAN>applications and on-premise systems. It runs as on-premise agent in a secured network; acts as a reverse invoke proxy between the on-premise network and&nbsp;<SPAN>SAP BTP; and&nbsp;</SPAN>lets you use existing on-premise assets without exposing the entire internal landscape.</P><P><BR />If you are interested in connecting your ABAP Platform Trial with a licensed version of SAP BTP, ABAP Environment (i.e.“Steampunk”), I have written a tutorial mission on this:&nbsp;<SPAN><A href="https://developers.sap.com/mission.abap-env-connect-onpremise.html" target="_blank" rel="noopener noreferrer">Connect Your On-Premise System with SAP BTP, ABAP Environment</A></SPAN><BR /><BR />For more information, see:</P><UL><LI>SAP Help Portal, SAP BTP Connectivity:&nbsp;<A href="https://help.sap.com/viewer/78f896d569e842719cd55931d96ac6d7/1.0/en-US/a4ae2a20de084b5cbd1116fbb565b929.html" target="_blank" rel="noopener noreferrer">SAP Cloud Connector</A></LI><LI>SAP Community blog post (third-party content):&nbsp;<A href="https://blogs.sap.com/2015/07/13/cloud-connector-a-brief-guide-for-beginners/" target="_blank" rel="noopener noreferrer">SAP BTP Cloud Connector – A Brief Guide for Beginners</A></LI></UL><H2 id="toc-hId--1831043290">&nbsp;</H2><H2 id="toc-hId--2027556795"><SPAN>Other Highlights of ABAP Platform 2022: Overview</SPAN></H2><P><SPAN>Blog post:&nbsp;<A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/abap-platform-for-sap-s-4hana-2022/ba-p/13562774" target="_blank">ABAP Platform for SAP S/4HANA 2022, from November 2022</A>, by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/6638" target="_blank">Olga Dolinskaja</A>, including the Overview Presentation</SPAN></P><H2 id="toc-hId-2070896996"><SPAN>Guides, Tutorials, FAQ, Troubleshooting</SPAN></H2><P>If you’re not sure where to start with your new system, we have written several tutorials:</P><P><SPAN><A href="https://blogs.sap.com/2014/02/06/guides-and-tutorials-for-the-developer-edition-of-as-abap-incl-bw-on-sap-hana/" target="_blank" rel="noopener noreferrer">SAP Tutorial Navigator: ABAP On-Premise Tutorials</A></SPAN>.</P><P>I have started putting together FAQs specifically for ABAP Platform Trial / ABAP Cloud Developer Trial on Docker. If you would like to contribute to this, please let me know:</P><P><A href="https://github.com/SAP-docs/abap-platform-trial-image/blob/main/faq-v7.md" target="_blank" rel="noopener nofollow noreferrer">ABAP Trial Platform on Docker: Tips and Tricks</A></P><P>The old FAQs&nbsp;&nbsp;also contains some non-release-specific info on Cookbook-style projects, by SAP Community members: I will&nbsp;</P><P><A href="https://blogs.sap.com/2018/10/16/sap-as-abap-7.5x-developer-editions-faqs/#working_abap" target="_blank" rel="noopener noreferrer">FAQ and Troubleshooting for SAP AS ABAP 7.5x</A></P><P><STRONG>Troubleshooting:&nbsp;</STRONG>One last thing: Now that comments are no longer threaded, it is almost impossible to keep track of / answer your troubleshooting / error questions. Please please create a new question in the <A href="https://community.sap.com/t5/forums/searchpage/tab/message?advanced=false&amp;allow_punctuation=false&amp;q=abap_trial" target="_self">SAP Community - ABAP Development forum</A>&nbsp;(which uses the User Tag "abap_trial"). I will try to monitor these questions, but other experienced ABAP users / mentors will also see them.</P><P><STRONG>Issue: Docker container works only for a few hours</STRONG>: "</P><P>Since I cannot currently edit the FAQ, I am repeating the following from&nbsp;<A class="" href="https://community.sap.com/t5/user/viewprofilepage/user-id/129182" target="_self"><SPAN class="">Attila</SPAN></A></P><P>"I disabled the Resource Saver in Docker Desktop, and it fixed the connection issue happening after few ours of my Win11 computer is idle / locked.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="julieplummer20_0-1716967341205.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/116976iE2110F025789083A/image-size/medium?v=v2&amp;px=400" role="button" title="julieplummer20_0-1716967341205.png" alt="julieplummer20_0-1716967341205.png" /></span></P><P>&nbsp;</P><P>According to the Docker documentation the Resource Saver setting should not suspend tcp connections or similar. Do not understand why, but looks like it works."</P><P>&nbsp;</P> 2024-04-19T18:52:59.860000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/customer-amp-partner-roundtable-for-sap-btp-abap-environment-12/ba-p/13681342 Customer & Partner Roundtable for SAP BTP ABAP Environment #12 2024-04-24T20:33:53.136000+02:00 iwona_hahn https://community.sap.com/t5/user/viewprofilepage/user-id/4326 <DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId-1122501059"><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-796904835">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-600391330"><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="">May 23rd</SPAN></STRONG>, 10:00 - 11:00 AM CET&nbsp; –<SPAN>&nbsp;</SPAN><A href="https://sap-se.zoom.us/meeting/register/tJEkcOmorzgpE9PZ39C4oRrLL3KjV2OuzJPq" 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),&nbsp;<A href="https://community.sap.com/t5/user/viewprofilepage/user-id/387576" target="_blank"><STRONG>Anne Keller </STRONG></A>(<SPAN class="">Chief Development Experts ABAP Cloud Dev Tools</SPAN>),&nbsp;<A href="https://community.sap.com/t5/user/viewprofilepage/user-id/185696" target="_blank"><STRONG>Thomas Alexander Ritter </STRONG></A>(Area Product Owner&nbsp;<SPAN class="">ABAP Cloud Dev Tools)</SPAN>,&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;(BTP ABAP Product Manager)</SPAN><BR /><BR /></LI></UL></DIV><DIV><STRONG>Preliminary Agenda:</STRONG><BR /><UL><LI>Product news</LI><LI><SPAN class="">New features of 2405 release</SPAN></LI><LI><SPAN>E2E Developer Experience for ABAP Cloud incl.&nbsp;demo</SPAN></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/tJEkcOmorzgpE9PZ39C4oRrLL3KjV2OuzJPq" target="_self" rel="nofollow noopener 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-04-24T20:33:53.136000+02:00 https://community.sap.com/t5/technology-blogs-by-members/sap-btp-abap-in-the-cloud-custom-code-transformation-using-abapgit-and-gcts/ba-p/13683259 SAP BTP, ABAP in the Cloud Custom Code Transformation using abapGit and gCTS 2024-04-26T09:09:05.666000+02:00 AnslemArnolda https://community.sap.com/t5/user/viewprofilepage/user-id/490939 <H1 id="toc-hId-864394280">abapGit and gCTS (Git-enabled Change and Transport System)</H1><UL><LI>The basic idea behind abapGit is to exchange source code between any ABAP systems using a Gitbased repository.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_0-1714113883072.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102165iC646DCE9E96802FD/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_0-1714113883072.png" alt="AnslemArnolda_0-1714113883072.png" /></span></P><UL><LI>By introducing gCTS, SAP is aiming for the best of both worlds, that is, repository-based<BR />development where concurrent work on the same object is possible, while retaining all the benefits of<BR />central development.</LI><LI>Following is the process flow for gCTS.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_1-1714113919791.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102166i899E36D3C6AE5650/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_1-1714113919791.png" alt="AnslemArnolda_1-1714113919791.png" /></span></P><UL><LI>You can use gCTS to distribute your custom code through a central repository, which will enable<BR />possible rollbacks before importing to the target system, if required.</LI><LI>You can possibly use abapGit to move your on-premise ABAP objects to SAP BTP, ABAP<BR />environment. In the next section, we’ll demonstrate how to use abapGit to move ABAP objects from<BR />your SAP S/4HANA on-premise environment to SAP BTP, ABAP environment.</LI></UL><H1 id="toc-hId-667880775">Custom Code Transformation Using abapGit</H1><UL><LI>Transforming on-premise ABAP code to SAP BTP requires three primary steps.<UL><LI>Evaluating current code.</LI><LI>Installing abapGit.</LI><LI>Transforming code.</LI></UL></LI></UL><H2 id="toc-hId-600449989">Evaluation of On-Premise code for Compatibility</H2><UL><LI>Make sure that your code is using the ABAP for SAP BTP language version (ABAP for SAP Cloud<BR />Platform).</LI><LI>Once the language version is changed, execute ATC check or transaction SCI to check for any issues.</LI></UL><H2 id="toc-hId-403936484">Installing abapGIT on an On-Premise and as an Eclipse Plugin</H2><H3 id="toc-hId-336505698">On-Premise</H3><UL><LI>Create a new repository on GitHub.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_2-1714114188344.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102167i02751143FEE0025B/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_2-1714114188344.png" alt="AnslemArnolda_2-1714114188344.png" /></span></P><UL><LI>Give a name to the repository and click the “Create Repository” button</LI></UL><P style=" text-align: center; "><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AnslemArnolda_3-1714114222926.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102169i5DB0297A229CB6FA/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_3-1714114222926.png" alt="AnslemArnolda_3-1714114222926.png" /></span></P><UL><LI>Visit&nbsp;<A href="https://github.com/abapGit/abapGit" target="_self" rel="nofollow noopener noreferrer">https://github.com/abapGit/abapGit</A>&nbsp;and click on the latest build as follows. This simply has the<BR />code for an ABAP report program.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_5-1714114364743.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102174i47EEAC0D202C43FF/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_5-1714114364743.png" alt="AnslemArnolda_5-1714114364743.png" /></span></P><UL><LI>Create a report program on your on-premise SAP system and copy the code you see above into the<BR />program and activate.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_6-1714114415257.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102175i5BE6F6F488A3FE5C/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_6-1714114415257.png" alt="AnslemArnolda_6-1714114415257.png" /></span></P><UL><LI>The following screen should appear once you execute this program</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_7-1714114447825.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102176i2BAF2035C7F0CBE0/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_7-1714114447825.png" alt="AnslemArnolda_7-1714114447825.png" /></span></P><UL><LI><FONT color="#008000">abapGit has now been installed on the on-premise system</FONT></LI></UL><H3 id="toc-hId-139992193">As an Eclipse Plugin</H3><UL><LI>Open ADT-&gt;Help-&gt;Install new software and enter the following URL to load abapGIT for ABAP<BR />development on ADT.<BR /><A href="http://eclipse.abapgit.org/updatesite/" target="_self" rel="nofollow noopener noreferrer">http://eclipse.abapgit.org/updatesite/</A>&nbsp;</LI><LI>Simply click on “Next” and install the plugin</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_8-1714114536582.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102178i85717065602DA68F/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_8-1714114536582.png" alt="AnslemArnolda_8-1714114536582.png" /></span></P><H1 id="toc-hId--314686750"><SPAN>Transform code form on-premise to cloud</SPAN></H1><UL><LI>Visit your GitHub repository and copy the URL corresponding to your repository.<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_9-1714114638007.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102179i737F4A2577479924/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_9-1714114638007.png" alt="AnslemArnolda_9-1714114638007.png" /></span></LI><LI>Go back to your ABAP report program on the on-premise system, Click new online.<span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_10-1714114679406.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102180iB59390444D374994/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_10-1714114679406.png" alt="AnslemArnolda_10-1714114679406.png" /></span></LI><LI>Paste the URL you copied above to the following location, along with the package that you want to<BR />commit to the Git Repository you created above. This is the package that is in your on-premise<BR />system, which you want to migrate to the cloud environment.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_11-1714114737055.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102181iA9C5475738D5103D/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_11-1714114737055.png" alt="AnslemArnolda_11-1714114737055.png" /></span></P><UL><LI>Click on “Create Online Repo”.</LI><LI>Once the execution is completed, you should see the cloned repository as follows, which is ready to<BR />be committed to the online Git Repository.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_12-1714114776492.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102182i2C73AD2DD11B82D8/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_12-1714114776492.png" alt="AnslemArnolda_12-1714114776492.png" /></span></P><UL><LI>Now click on “stage” and “commit all changes” to the online repository</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_13-1714114813371.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102183i0F62299C7ED0668D/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_13-1714114813371.png" alt="AnslemArnolda_13-1714114813371.png" /></span></P><UL><LI>Give a comment for the commit that you do each time as follows. Click on “Commit”</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_14-1714114841595.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102184i2DD0DA94A426C455/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_14-1714114841595.png" alt="AnslemArnolda_14-1714114841595.png" /></span></P><UL><LI>This will request for your GitHub credentials, to authenticate. Give them and Continue.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_15-1714114868471.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102185i71F02C4E81D65C69/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_15-1714114868471.png" alt="AnslemArnolda_15-1714114868471.png" /></span></P><UL><LI>Once the commit is complete, you should see a message as follows</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_16-1714114894483.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102187i5CC4FC204E1A87D3/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_16-1714114894483.png" alt="AnslemArnolda_16-1714114894483.png" /></span></P><UL><LI>And the source code under the package should be available in your online Git Repository.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_17-1714114920621.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102188i71A2C03399BD2B6C/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_17-1714114920621.png" alt="AnslemArnolda_17-1714114920621.png" /></span></P><UL><LI>Open ADT on Eclipse-&gt; Select Your ABAP in the cloud Project -&gt; Window -&gt; Show -&gt; Other -&gt;<BR />abapGit Repositories.</LI><LI>Click the “Plus” button to link your abapGit Repository to ADT. Give the URL corresponding to your<BR />Git Repository here as well.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_18-1714114954043.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102189i79E8D97B3F282772/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_18-1714114954043.png" alt="AnslemArnolda_18-1714114954043.png" /></span></P><UL><LI>Create a package in your ABAP in the cloud project, to which you will be importing all the supported<BR />objects in your on-premise ABAP package. Here I have given the same package name.</LI><LI>Make sure to put the “Pull after link” tick as well, so the objects will be pulled from your online Git Repository into ABAP in the cloud project.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_19-1714114997143.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102191iC24B7427E2A1821B/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_19-1714114997143.png" alt="AnslemArnolda_19-1714114997143.png" /></span></P><UL><LI>Once that is completed, you should see all supported objects on your on-premise system, imported<BR />into your ABAP in the cloud package.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="AnslemArnolda_20-1714115024338.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/102192iF34FF9866184EC43/image-size/medium?v=v2&amp;px=400" role="button" title="AnslemArnolda_20-1714115024338.png" alt="AnslemArnolda_20-1714115024338.png" /></span></P><P>&nbsp;</P> 2024-04-26T09:09:05.666000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/get-started-with-sap-btp-abap-environment-trial-account-vs-free-tier-option/ba-p/13663694 Get started with SAP BTP ABAP Environment: Trial Account vs. Free Tier Option 2024-04-26T15:24:35.800000+02:00 Burcu_Karlidag https://community.sap.com/t5/user/viewprofilepage/user-id/151005 <P>Understanding the various <A href="https://www.sap.com/products/technology-platform/pricing.html" target="_self" rel="noopener noreferrer">Try and Buy</A>&nbsp;options is crucial in exploring the SAP BTP ABAP Environment, ensuring an easy start to your journey.&nbsp;<SPAN>Let's take a closer look at the two tryout options:&nbsp;</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-862551201">Trial Account</H1><P data-unlink="true">The <A href="https://discovery-center.cloud.sap/serviceCatalog/abap-environment?region=all&amp;tab=service_plan&amp;commercialModel=free" target="_blank" rel="noopener nofollow noreferrer">SAP BTP trial</A> allows you to experiment and educate yourself and get familiar with the SAP BTP ABAP Environment.&nbsp;<SPAN>The instance is shared between all trial users. This shared trial offering allows users to share an instance, where all development objects are visible and editable by other trial users. You agree not to upload any personal data, any confidential information of you or your company, or use the service for a productive environment.&nbsp;</SPAN>By default, the trial account lasts for 30 days but can be extended up to 90 days. After this period, the instance is automatically deleted, and a seamless transition to a paid standard version isn't feasible.&nbsp;<SPAN>Due to the shared instance approach, a few features like connectivity are not supported. Please find more information in this&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/it-s-trial-time-for-abap-in-sap-business-technology-platform/ba-p/13416047" target="_blank">blog post</A>.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-666037696">Free Tier Option</H1><P>Designed for small proof-of-concept projects, the <A href="https://discovery-center.cloud.sap/serviceCatalog/abap-environment?region=all&amp;tab=service_plan" target="_blank" rel="noopener nofollow noreferrer">free tier option</A> offers exploration of all capabilities for non-productive scenarios over a fixed 90-day trial period. It can also be utilized for piloting remote <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/abap-test-cockpit" target="_blank" rel="noopener noreferrer">ABAP Test Cockpit (ATC</A>) scenarios against on-premise systems in the <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/custom-code-migration" target="_blank" rel="noopener noreferrer">Custom Code Migration App</A>. Unlike the trial version, each user has their own instance. A seamless transition to the paid standard plan is supported within the trial period, without data loss. After 90 days, the instance is automatically deleted.&nbsp;</P><H2 id="toc-hId-598606910">&nbsp;</H2><H2 id="toc-hId-402093405"><SPAN>Selecting the appropriate choice</SPAN></H2><P>To choose the right option between the trial account and the free tier option, consider your specific needs and goals:</P><P>&nbsp;</P><TABLE border="1" width="100%"><TBODY><TR><TD width="33.333333333333336%" height="61px"><H3 id="toc-hId-334662619">Category</H3></TD><TD width="33.333333333333336%" height="61px"><H3 id="toc-hId-138149114">Trial Account</H3></TD><TD width="33.333333333333336%" height="61px"><H3 id="toc-hId--58364391">Free Tier Option</H3></TD></TR><TR><TD width="33.333333333333336%" height="94px"><STRONG>Purpose</STRONG></TD><TD width="33.333333333333336%" height="94px"><SPAN>Experimentation, educational purposes</SPAN></TD><TD width="33.333333333333336%" height="94px"><SPAN>Small proof-of-concept projects, &nbsp;non-productive scenarios</SPAN></TD></TR><TR><TD width="33.333333333333336%" height="61px"><STRONG>Feature Set</STRONG></TD><TD width="33.333333333333336%" height="61px">Limited</TD><TD width="33.333333333333336%" height="61px">Not limited</TD></TR><TR><TD width="33.333333333333336%" height="61px"><STRONG>Duration</STRONG></TD><TD width="33.333333333333336%" height="61px"><SPAN>Extendable up to 90 days</SPAN></TD><TD width="33.333333333333336%" height="61px"><SPAN>Fixed 90-day trial period</SPAN></TD></TR><TR><TD width="33.333333333333336%" height="61px"><STRONG>Data Privacy and Security</STRONG></TD><TD width="33.333333333333336%" height="61px">Shared instance</TD><TD width="33.333333333333336%" height="61px"><SPAN>Individual instance</SPAN></TD></TR><TR><TD width="33.333333333333336%" height="54px"><STRONG>Seamless Transition</STRONG></TD><TD width="33.333333333333336%" height="54px">Not possible</TD><TD width="33.333333333333336%" height="54px">Possible</TD></TR></TBODY></TABLE><P>Please evaluate these aspects and c<SPAN>onsider your future beyond the trial period&nbsp;</SPAN>to determine which option aligns best with your needs.</P> 2024-04-26T15:24:35.800000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/how-to-generate-a-wrapper-for-function-modules-bapis-in-tier-2/ba-p/13692790 How to generate a wrapper for function modules (BAPIs) in tier 2 2024-05-06T16:10:39.975000+02:00 Andre_Fischer https://community.sap.com/t5/user/viewprofilepage/user-id/55 <H1 id="toc-hId-865292930">Introduction</H1><P><SPAN>In a tutorial&nbsp;<A href="https://developers.sap.com/tutorials/abap-s4hanacloud-purchasereq-create-wrapper.html" target="_blank" rel="noopener noreferrer">Implement a Wrapper for the "Create Purchase Requisition" (BAPI_PR_CREATE) function module</A>&nbsp;that was published recently it was shown how to deal with the case in which no convenient released API is available to create purchase requisitions.</SPAN></P><P><SPAN>The question that came to my mind was whether there would be a way to automate the steps described in this tutorial so that creating wrappers for other BAPIs would become more easy.</SPAN></P><P><SPAN>So I did some investigation and have build a prototype of such a wrapper that it based on the same framework as the transaction ACO_PROXY.&nbsp;</SPAN></P><P><SPAN>This transaction is already available for quite some time and can be used to generate a wrapper class for one or more function modules.</SPAN></P><P><SPAN>In order to leverage the generated code it would however be necessary to perform several manual steps to adapt the same. Since these steps can be automated I have build a helper class and a helper report that perform these tasks for your convenience.</SPAN></P><H1 id="toc-hId-668779425"><SPAN>RFC tier2 proxy generator</SPAN></H1><P><SPAN>The RFC tier2 proxy generator is based on the same API that is used by the transaction ACO_PROXY which is described in the following <A href="https://developers.sap.com/tutorials/abap-environment-generation-rfc-proxy.html" target="_blank" rel="noopener noreferrer">tutorial</A>. This transaction allows to generate a wrapper class for one or more function modules. The code can however not be used immediately since it contains a few statements that need to be adjusted (e.g. CLASS-METHODS statements and CALL DESTINATION _dest_ statements).</SPAN></P><P><SPAN>The transaction ACO_PROXY and its underlying API now also check if a data element that is used by a non released function module itself has been released. If this is the case, no shadow type will be generated.</SPAN></P><P><SPAN>The recommended approach (see the tutorial above) is also to use a C1-released interface and a C1-released wrapper class that intantiates the wrapper class being used in your ABAP Cloud coding.</SPAN></P><P><SPAN>So I developed a class that calls the same API&nbsp;</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>cl_aco_static_proxy=&gt;create_static_proxy_by_rfc( EXPORTING function_names = i_function_modules proxy_name = i_proxy_class_name destination_name = 'NONE' devclass = i_package_name trkorr = i_transport_request classic_exceptions = abap_false bapi_exceptions = abap_false generate_inactive = abap_false destination_by_constructor = abap_false do_not_create_released_type = abap_true ).</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>and which in addition </SPAN></P><UL><LI><SPAN>creates an interface and a factory class</SPAN></LI><LI><SPAN>moves part of the code generated by the API mentioned above to the interface</SPAN></LI><LI><SPAN>changes the code of the generated wrapper class to use the interface</SPAN></LI><LI><SPAN>C1-release the factory class and the interface</SPAN></LI></UL><H1 id="toc-hId-472265920"><SPAN>How to get the source code of the RFC tier2 generator</SPAN></H1><P><SPAN>The source code of the RFC tier2 generator has been published in the following repository on Github.com</SPAN></P><P><SPAN><A href="https://github.com/SAP-samples/tier2-rfc-proxy" target="_blank" rel="noopener nofollow noreferrer">SAP-samples/tier2-rfc-proxy</A>&nbsp;</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><H1 id="toc-hId-275752415"><SPAN>Prerequisites</SPAN></H1><P><SPAN>- You have to have a system based on SAP S/4HANA 2022 or 2023 on premise.<BR />- You have to have enabled Developer extensibility<BR />- You have to apply the following notes<BR />- [SAP Note 3444292 - ACO Proxy creates unnecessary shadow types](<A href="https://me.sap.com/notes/3444292" target="_blank" rel="noopener noreferrer">https://me.sap.com/notes/3444292</A>)<BR />- [SAP Note 3457580 - SAP ACO - Duplicate Types for Table Parameters](<A href="https://me.sap.com/notes/3457580" target="_blank" rel="noopener noreferrer">https://me.sap.com/notes/3457580</A>)<BR /></SPAN></P><H1 id="toc-hId-79238910"><SPAN>How to use the RFC tier2 generator</SPAN></H1><P><SPAN>When you have downloaded the class and the report simply start the report&nbsp;<STRONG>zr_gen_rfc_tier2_proxy</STRONG>.</SPAN></P><P><SPAN>Here you can select one or more function modules that will be wrapped by one single class.</SPAN></P><P><SPAN>(e.g BAPI_PR_CREATE, BAPI_PR_CHANGE,&nbsp;BAPI_PR_GETDETAIL, ...)</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="010_select_function_modules.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106304i589D0764FE7EB4EA/image-size/large?v=v2&amp;px=999" role="button" title="010_select_function_modules.png" alt="010_select_function_modules.png" /></span></SPAN></P><P>Now you have to specify additional parameters such as the <STRONG>target package</STRONG> where the wrapper objects are going to be generated.</P><P>Then there there are two radio buttons that allow you to choose between the generation of an interface, a wrapper class and a factoy class (option 1, recommended) or just one wrapper class (option 2).</P><P>As described in the above mentioned tutorial the approach of using an interface and a factory class is the recommended one.</P><P>Last not least you have to provide the names of the repository objects that will be generated.</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="020_specify_options.png" style="width: 930px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106306iFCD3BB67A93825FC/image-size/large?v=v2&amp;px=999" role="button" title="020_specify_options.png" alt="020_specify_options.png" /></span></SPAN></P><P><SPAN>When the reports finishes successfully it will list the generated repository objects.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="030_result_report.png" style="width: 921px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106305iD44607277AFF1E5B/image-size/large?v=v2&amp;px=999" role="button" title="030_result_report.png" alt="030_result_report.png" /></span></SPAN></P><P>The objects can then be checked in the target package.</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="040_generated_objects.png" style="width: 547px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106307i2DB130DF3778B41D/image-size/large?v=v2&amp;px=999" role="button" title="040_generated_objects.png" alt="040_generated_objects.png" /></span></SPAN></P><P><SPAN>Hope this will help to speed up the process of creating wrappers for non-released function modules.</SPAN></P><H1 id="toc-hId--117274595"><SPAN>ToDo's</SPAN></H1><P><SPAN>What is left to do is to change the value help of the report such that only function modules can be selected that are marked as stable.</SPAN></P><P><SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/how-to-find-sap-apis-for-sap-s-4hana-3-tier-extensibility-model/ba-p/13623819" target="_blank">How to find SAP APIs for SAP S/4HANA 3-tier extens... - SAP Community</A></SPAN></P><P><SPAN><A href="https://github.com/SAP/abap-atc-cr-cv-s4hc/tree/main" target="_blank" rel="noopener nofollow noreferrer">SAP/abap-atc-cr-cv-s4hc: ABAP test cockpit cloud readiness check variants for SAP S/4HANA Cloud (github.com)</A></SPAN></P><H1 id="toc-hId--313788100"><SPAN>Future Outlook</SPAN></H1><P>In future the idea is to provide such a generator as well in the ABAP development tools for Eclipse.</P><P>This will be possible with the next S/4HANA release and the ADT generator framework. &nbsp;&nbsp;&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-05-06T16:10:39.975000+02:00 https://community.sap.com/t5/technology-blogs-by-members/calling-fragment-form-amp-send-it-as-an-attachment-using-abap-walk-through/ba-p/13702761 Calling Fragment Form & Send it as an attachment using ABAP Walk-Through 2024-05-15T21:53:21.876000+02:00 Amgad-El-Stohi https://community.sap.com/t5/user/viewprofilepage/user-id/144103 <P>This Blog is based on the Output Management Form and has all of its configuration completed&nbsp;</P><P>Ex for dunning: use maintenance view: V_T047E using code: sm30 to switch between frameworks through drop-down list</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmgadElStohi_2-1715802008917.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/111218iC0E3314F85AD76EA/image-size/medium?v=v2&amp;px=400" role="button" title="AmgadElStohi_2-1715802008917.png" alt="AmgadElStohi_2-1715802008917.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmgadElStohi_3-1715802015965.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/111219iB91DE235AAB0A4A7/image-size/medium?v=v2&amp;px=400" role="button" title="AmgadElStohi_3-1715802015965.png" alt="AmgadElStohi_3-1715802015965.png" /></span></P><P>First: you can identify Fields for Key &amp; Master Key internal tables for standard fragment form through putting a breaking point</P><P>By using framework: sap cloud and using fragment form template&nbsp; and of course maintain brf+ configuration</P><P>In class: CL_SOMU_FORM_SERVICES , Method : GET_DOCUMENT</P><OL><LI>Put a break point in the first line and go back to the previous program to see internal tables passed to form calling for keys.</LI><LI>Take screenshots for them, as you will be using them for the custom calling of the form as these fields are maintained according to configuration &amp; master form template derivation.</LI><LI>If you need the application ID Key, it’s a concatenation between multiple variables, You will find it in the call back class specific to a given object in the SPRO configuration</LI></OL><P>SPRO -&gt; CROSS APPLICATION COMPONENTS -&gt; OUTPUT CONTROL (here you can find all of OM Configuration)&nbsp; -&gt; DEFINE OUTPUT TYPE THEN SELECT THE ENTRY CORRESPONDING TO YOUR BRF+ ROLE and click details, you will find your call back class, in our class for dunning : CL_FIN_FO_DUNN_OUTPUT , all call back classes Implement same interface, then go into method : IF_APOC_COMMON_API~GET_FDP_PARAMETER</P><P>Second step:</P><P>Activate the legacy printout system and put a breakpoint inside the printing object whether it’s a program or function module, if you are using PDF, you can put a breakpoint in open job FM and trace back through the stack to the transaction screen printing program</P><P>In our case for dunning: It prints using FM : “PRINT_DUNNING_NOTICE_PDF”, put a breakpoint there</P><OL><LI>Start comparing the values of the key &amp; master key internal table with local variables available to locate the objects that contain the data which will&nbsp; be passed to the fragment forms Key internal tables from the standard<OL><LI>You will find all the data u need in the objects because whether it is fragment, PDF or whatever technology, the system always collects the same data passed one way or the other</LI></OL></LI><LI>After that start creating your custom code to call the fragment form<UL><LI>Consider the condition to identify which master form template to use.</LI></UL></LI><LI><STRONG>Create an enhancement in the standard program to defuse the standard code and prevent its execution, make sure that the standard code doesn’t update standard somewhere along the code as you need to confirm whether it happens through the OData service of fragment or not! (&nbsp;</STRONG><STRONG>because if not you will have to use the standard code that does that to make everything consistent )</STRONG></LI></OL><OL><LI>then test the cycle end to end</LI></OL><P><STRONG>in our case , here is the example for the PO Form</STRONG></P><OL><LI>I created a custom program se38 to test using po form</LI></OL><pre class="lia-code-sample language-abap"><code>*&amp;---------------------------------------------------------------------* *&amp; Report ZDUMMY *&amp;---------------------------------------------------------------------* *&amp; *&amp;---------------------------------------------------------------------* REPORT ZDUMMY. SELECTION-SCREEN BEGIN OF BLOCK b1. PARAMETERS: p_po_num TYPE ebeln MATCHCODE OBJECT h_ekko OBLIGATORY. SELECTION-SCREEN END OF BLOCK b1. INITIALIZATION. START-OF-SELECTION. DATA: lo_cl_somu_form_services TYPE REF TO cl_somu_form_services. DATA: lt_keys TYPE cl_somu_form_services=&gt;ty_gt_key. DATA: ls_ekko TYPE ekko. DATA: lt_master_keys TYPE cl_somu_form_services=&gt;ty_gt_key. DATA: lv_content TYPE xstring. DATA: lv_xml TYPE xstring. DATA: lv_pages TYPE fppagecount. DATA: lv_trace_string TYPE string. DATA: lv_stop_processing TYPE abap_bool. DATA: lt_message TYPE cl_somu_form_services=&gt;ty_gt_message. DATA: lv_output_length TYPE i. DATA: lt_generated_pdf TYPE STANDARD TABLE OF tbl1024 . FIELD-SYMBOLS: &lt;ls_key&gt; TYPE cl_somu_form_services=&gt;ty_gs_key. SELECT SINGLE * FROM ekko INTO ls_ekko WHERE ebeln = p_po_num. " --------------------------- Values for the purchase order form --------------------------- APPEND INITIAL LINE TO lt_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'PurchaseOrder'. &lt;ls_key&gt;-value = p_po_num. APPEND INITIAL LINE TO lt_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'SenderCountry'. &lt;ls_key&gt;-value = 'DE'. APPEND INITIAL LINE TO lt_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'PurchaseOrderChangeFlag'. &lt;ls_key&gt;-value = space. APPEND INITIAL LINE TO lt_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'Language'. &lt;ls_key&gt;-value = 'E'. APPEND INITIAL LINE TO lt_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'ReceiverPartnerNumber'. &lt;ls_key&gt;-value = ls_ekko-lifnr. " --------------------------- Values for the master form template --------------------------- APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'PrintFormDerivationRule'. &lt;ls_key&gt;-value = 'PURCHASE_ORDER_MASTER_FOR_COMPANY'. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'WatermarkText'. &lt;ls_key&gt;-value = space. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'LocaleCountry'. &lt;ls_key&gt;-value = 'DE'. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'LocaleLanguage'. &lt;ls_key&gt;-value = 'E'. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'OutputControlApplicationObjectType'. &lt;ls_key&gt;-value = 'PURCHASE_ORDER'. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'OutputControlApplicationObject'. &lt;ls_key&gt;-value = p_po_num. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'OutputRequestItem'. &lt;ls_key&gt;-value = '000001'. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'OutputDocumentType'. &lt;ls_key&gt;-value = 'PURCHASE_ORDER'. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'Recipient'. &lt;ls_key&gt;-value = ls_ekko-lifnr. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'RecipientRole'. &lt;ls_key&gt;-value = 'LF'. APPEND INITIAL LINE TO lt_master_keys ASSIGNING &lt;ls_key&gt;. &lt;ls_key&gt;-name = 'SenderCountry'. &lt;ls_key&gt;-value = 'DE'. lo_cl_somu_form_services = cl_somu_form_services=&gt;get_instance( ). lo_cl_somu_form_services-&gt;get_document( EXPORTING iv_master_form_name = 'SOMU_FORM_MASTER_A4' iv_form_name = 'MM_PUR_PURCHASE_ORDER' it_key = lt_keys it_master_key = lt_master_keys iv_form_language = 'E' iv_form_country = 'DE' IMPORTING ev_content = lv_content ev_xml = lv_xml ev_pages = lv_pages ev_trace_string = lv_trace_string ev_stop_processing = lv_stop_processing et_message = lt_message ). IF sy-subrc &lt;&gt; 0. ENDIF. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_content IMPORTING output_length = lv_output_length TABLES binary_tab = lt_generated_pdf. " Shows a preview of the generated PDF file in a popup window. CALL FUNCTION 'FDM_COLL_INV_PDF_SHOW' EXPORTING t_pdf = lt_generated_pdf. "================================================================================================================= "Object References DATA: lo_bcs TYPE REF TO cl_bcs, lo_doc_bcs TYPE REF TO cl_document_bcs, lo_recep TYPE REF TO if_recipient_bcs, lo_sapuser_bcs TYPE REF TO cl_sapuser_bcs, lo_cx_bcx TYPE REF TO cx_bcs, lv_string_text TYPE string, lt_text TYPE bcsy_text, lv_bin_filesize TYPE so_obj_len, lv_sent_to_all TYPE os_boolean, lt_binary_content TYPE solix_tab. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY' EXPORTING buffer = lv_content IMPORTING output_length = lv_output_length TABLES binary_tab = lt_binary_content[]. lv_bin_filesize = lv_output_length. TRY. * -------- create persistent send request ------------------------ lo_bcs = cl_bcs=&gt;create_persistent( ). "First line CONCATENATE 'Dear Colleague' cl_abap_char_utilities=&gt;newline INTO lv_string_text. APPEND lv_string_text TO lt_text. CLEAR lv_string_text. "Second line CONCATENATE 'Please find attached a test smartform.' cl_abap_char_utilities=&gt;newline INTO lv_string_text. APPEND lv_string_text TO lt_text. CLEAR lv_string_text. "Third line APPEND 'Best Regards,' TO lt_text. "Fourth line APPEND 'Systems Administrator.' TO lt_text. *--------------------------------------------------------------------- *-----------------&amp; Create Document *------------------------ *--------------------------------------------------------------------- lo_doc_bcs = cl_document_bcs=&gt;create_document( i_type = 'RAW' i_text = lt_text[] i_length = '12' i_subject = 'Test Email' ). "Subject of the Email *--------------------------------------------------------------------- *-----------------&amp; Add attachment to document *---------------- *--------------------------------------------------------------------- * BCS expects document content here e.g. from document upload * binary_content = ... CALL METHOD lo_doc_bcs-&gt;add_attachment EXPORTING i_attachment_type = 'PDF' i_attachment_size = lv_bin_filesize i_attachment_subject = 'Test Email' i_att_content_hex = lt_binary_content. * add document to send request CALL METHOD lo_bcs-&gt;set_document( lo_doc_bcs ). *--------------------------------------------------------------------- *------------------------&amp; Set Sender *------------------------- *--------------------------------------------------------------------- * lo_sapuser_bcs = cl_sapuser_bcs=&gt;create( sy-uname ). * CALL METHOD lo_bcs-&gt;set_sender * EXPORTING * i_sender = lo_sapuser_bcs. lo_recep = cl_cam_address_bcs=&gt;create_internet_address('Receiving Email Address'). "Add recipient with its respective attributes to send request CALL METHOD lo_bcs-&gt;add_recipient EXPORTING i_recipient = lo_recep i_express = 'X'. CALL METHOD lo_bcs-&gt;set_send_immediately EXPORTING i_send_immediately = 'X'. *--------------------------------------------------------------------- *-----------------&amp; Send the email *----------------------------- *--------------------------------------------------------------------- CALL METHOD lo_bcs-&gt;send( EXPORTING i_with_error_screen = 'X' RECEIVING result = lv_sent_to_all ). IF lv_sent_to_all IS NOT INITIAL. COMMIT WORK. ENDIF. *--------------------------------------------------------------------- *-----------------&amp; Exception Handling *------------------------ *--------------------------------------------------------------------- CATCH cx_bcs INTO lo_cx_bcx. "Appropriate Exception Handling WRITE: 'Exception:', lo_cx_bcx-&gt;error_type. ENDTRY.</code></pre><P>PS. you can use same concept if you are creating a total custom fragment on your own but you need to&nbsp;</P><UL><LI>Create OData Model&nbsp;</LI><LI>Create Master Template using Maintain Form Template Fiori APP / SFP</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmgadElStohi_6-1715802375866.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/111223iFDAA7EBA7B607125/image-size/large?v=v2&amp;px=999" role="button" title="AmgadElStohi_6-1715802375866.png" alt="AmgadElStohi_6-1715802375866.png" /></span></P><UL><LI>Create Content Template using&nbsp;Maintain Form Template Fiori APP / SFP</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AmgadElStohi_4-1715802301569.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/111221i02054093B1FFC415/image-size/large?v=v2&amp;px=999" role="button" title="AmgadElStohi_4-1715802301569.png" alt="AmgadElStohi_4-1715802301569.png" /></span></P><P>Start building Up your Solution, i haven't tried build a full custom solution from A to Z but this is the main idea for it</P><P>&nbsp;</P><P>&nbsp;</P> 2024-05-15T21:53:21.876000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-release-2405/ba-p/13705247 SAP BTP ABAP Environment – Release 2405 2024-05-17T21:33:18.532000+02:00 merveyalcin https://community.sap.com/t5/user/viewprofilepage/user-id/425636 <P>As follow-up to our previous release <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-release-2402/ba-p/13616379" target="_blank">2402</A>, this blog post provides an update to our most recent release 2405, which is available for customers and partners on May 18th/ 19th. Please enjoy my little overview of the most important features.</P><P>Many thanks to Florian Wahl for his contributions to this blog post!</P><P>All available new features can be found on the&nbsp;<A href="https://help.sap.com/whats-new/7a822d3bcaa74f31b98fa315601e9c96?Version=ABAP%20Environment%202405&amp;locale=en-US" target="_blank" rel="noopener noreferrer">official release notes&nbsp;</A>page.</P><P><STRONG>ABAP Development Tools</STRONG></P><UL><LI>Enhancements to <STRONG>authorization check issue handling</STRONG> relating to authorization object S_DEVELOP (<A href="https://help.sap.com/docs/link-disclaimer?site=https://me.sap.com/notes/3441852" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Availability of new editors for <STRONG>launchpad spaces and page template </STRONG>(<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/74d5b1a9ec654bf59871631eba0491d6.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>clear console</STRONG> when running an ABAP application (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/launching-abap-program-console?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>exporting an ABAP runtime error</STRONG> as ZIP file (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/exporting-short-dumps?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>display application job catalog entries</STRONG> (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/working-with-application-job-catalogs?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>ATC checks</STRONG> for knowledge transfer documents (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/knowledge-transfer-documents?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Availability of <STRONG>new property ABAP language version</STRONG> (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/property-filter?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>display of failed assertions</STRONG> and <STRONG>status test methods </STRONG>(<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/evaluating-abap-unit-test-results?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Enhancements to <STRONG>large ABAP traces</STRONG> for better handling (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/analyzing-trace-events-in-aggregated-call-tree?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>ABAP contract check violations feed </STRONG>(<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/abap-contract-check-violations?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>custom code migration project scheduling</STRONG> via application jobs (<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/651ef65d8d37488cb8f84a1fd2ab4455.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>software component relations editor </STRONG>(<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/working-with-software-component-relations?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>toggling the step size</STRONG> in the ABAP debugger (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/defining-step-size?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>launching ABAP unit tests</STRONG> with quick actions (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/how-to-write-abap-unit-test-classes?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>test code highlighting</STRONG> for method calls (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/test-code-highlighting?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>quick action usage</STRONG> to insert ABAP unit test class templates (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/how-to-write-abap-unit-test-classes?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>template context</STRONG> while creating metadata extensions (<A href="https://help.sap.com/docs/abap-cloud/abap-cds-tools-user-guide/creating-metadata-extensions?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>tool bridges</STRONG> between ABAP Development Tools for Eclipse and VS Code/BAS (<A href="https://help.sap.com/docs/abap-cloud/abap-cds-tools-user-guide/creating-fiori-project?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A><SPAN>)</SPAN></LI><LI>Support for <STRONG>display remote ATC runs</STRONG> from SAP BTP (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/working-with-atc-result-browser" target="_blank" rel="noopener noreferrer">details</A>)</LI></UL><P><STRONG>ABAP RESTful Application Programming Model</STRONG></P><UL><LI>Support for <STRONG>subentities</STRONG> as authorization master that are not defined as root entity</LI><LI>Support for <STRONG>entity assignment</STRONG> of RAP business events</LI><LI>Support for <STRONG>defining result cardinality</STRONG> [1..*] for factory actions</LI></UL><P><STRONG>Administration</STRONG></P><UL><LI><STRONG>IP address changes on AWS </STRONG>(<A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-ip-address-changes-on-aws/ba-p/13693196" target="_blank">details</A>)</LI><LI>Support <STRONG>for display</STRONG> whether<STRONG> dependent business catalog</STRONG> is optional (<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/82d17cfdb0f3464b9735e4ded705f71f.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support <STRONG>for defining several general restrictions</STRONG> by leading and filter undefined restrictions in Maintain Restrictions UI (<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/365b0d6fe67d4cecbfe11cc8344264cc.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>factory calendar pull integration </STRONG>from SAP S/4HANA Cloud to SAP BTP, ABAP environment (<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/2a41550e1999405b8b64a41ac7f8cf4d.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>table analysis</STRONG> of table statistics from aggregated views over time (<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/c0b97f8000164a5e940f8f91d26608d8.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>merging spaces and pages</STRONG> at the same time (<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/1fa208d9cd63465b9539906ceeefc6c9.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>, <A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/655c6ce6f1444bcbac1897c304b2400a.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>translation</STRONG> <STRONG>of new CDS annotation</STRONG>: UI.dataPoint.title, EnterpriseSearch.modelName and EnterpriseSearch.modelNamePlural (<A href="https://help.sap.com/docs/abap-cloud/abap-data-models/cds-based-enterprise-search-models?version=sap_btp" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>upload of primary and secondary signing certificate </STRONG>(<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/950709c564d6424babb0dcacaad2440a.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI></UL><P><STRONG>Integration &amp; </STRONG><STRONG>Connectivity</STRONG></P><UL><LI>Support for <STRONG>setting the AIR key as custom HTTP header field</STRONG> to a SOAP request (<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/29229464873a4357922d5e290ea4e9e4.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI></UL><P><STRONG>Key User Extensibility</STRONG></P><UL><LI>Support for <STRONG>user names in Manage View dialog </STRONG>(<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/1f638f22410349e5922a0699dd79bec8.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI></UL><P><STRONG>Reuse Services</STRONG></P><UL><LI>Support for <STRONG>usage of source templates</STRONG> to provide content specification of a metadata extension and <STRONG>reading the longtext of a message</STRONG> using the XCO library (<A href="https://help.sap.com/docs/PRODUCTS/36609a00dcea4e6fa7c4ca2f2868e972/29229464873a4357922d5e290ea4e9e4.html?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI></UL><P><STRONG>Data Access</STRONG></P><UL><LI>Support for <STRONG>SQL-based remote access from SAP HANA Cloud databases to ABAP system </STRONG>(<A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-data-access-guide/create-abap-cloud-remote-source?version=2024_1_QRC" target="_blank" rel="noopener noreferrer">details</A>)</LI></UL><P><STRONG>Additional Information</STRONG></P><P>You can find the (new) product page on&nbsp;<A href="https://help.sap.com/docs/sap-btp-abap-environment" target="_blank" rel="noopener noreferrer">SAP BTP, ABAP Environment | SAP Help Portal</A></P><P>For the new documentation structure, see&nbsp;<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/abap-environment" target="_blank" rel="noopener noreferrer">Standalone Documentation</A>. The new documentation page makes search and navigation for SAP BTP, ABAP environment topics easier.</P><P>In addition to the&nbsp;<A href="https://roadmaps.sap.com/board?range=CURRENT-LAST&amp;PRODUCT=73555000100800001164" target="_blank" rel="noopener noreferrer">Roadmap Explorer</A>, see&nbsp;<A href="https://help.sap.com/docs/abap-cross-product/roadmap-info/abap-platform-roadmap-information?locale=en-US&amp;source=redirect" target="_blank" rel="noopener noreferrer">SAP BTP, ABAP environment Roadmap</A>&nbsp;for more details on the roadmap items.</P><P>As always, please let us know if you have questions.</P><P>Stay healthy and take care!</P> 2024-05-17T21:33:18.532000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/customer-amp-partner-roundtable-for-sap-btp-abap-environment-13/ba-p/13713690 Customer & Partner Roundtable for SAP BTP ABAP Environment #13 2024-05-27T19:39:26.752000+02:00 iwona_hahn https://community.sap.com/t5/user/viewprofilepage/user-id/4326 <DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId-1144728181"><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-819131957">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-622618452"><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="">June 25th</SPAN></STRONG>, 10:00 - 11:00 AM CET&nbsp; –<SPAN>&nbsp;</SPAN><A href="https://sap-se.zoom.us/meeting/register/tJMlfu-prjIrGtR0iTT_KXbKezf587e3f39Y" 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><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/851343" target="_blank">Katharina Wurz</A>&nbsp;</STRONG>(Developer ABAP Development Tools),&nbsp;<A href="https://community.sap.com/t5/user/viewprofilepage/user-id/4266" target="_blank"><STRONG>Thomas Fiedler</STRONG></A>&nbsp;(Area Product Owner&nbsp;ABAP Developer Tools), <STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/9127" target="_blank">Florian Wahl</A></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;(BTP ABAP Product Managers)</SPAN><BR /><BR /></LI></UL></DIV><DIV><STRONG>Preliminary Agenda:</STRONG><BR /><UL><LI>Product news</LI><LI><SPAN>Baseline Support for ABAP Test Cockpit in SAP BTP incl.&nbsp;demo</SPAN></LI><LI><SPAN><SPAN class="">Roadmap for AI in ABAP Cloud</SPAN></SPAN></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/tJMlfu-prjIrGtR0iTT_KXbKezf587e3f39Y" 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-05-27T19:39:26.752000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/my-code-connect-2024-experience/ba-p/13725287 My Code Connect 2024 Experience 2024-06-11T02:15:40.162000+02:00 mauriciolauffer https://community.sap.com/t5/user/viewprofilepage/user-id/11418 <P><SPAN>Here I am, on a plane flying back from <A href="https://code-connect.dev/" target="_self" rel="nofollow noopener noreferrer">Code Connect</A> at the SAP headquarters in Germany. I'm still processing everything, mentally replaying some of the sessions I had attended, eager to watch the ones I couldn't. Stuck on a plane isn't fun, so I decided to write about my experience at the event. I won't talk about the content presented because anybody can watch it online once available. I want to talk a little bit about how it felt being there.</SPAN></P><P><SPAN>If you don't know what Code Connect is, here's a brief intro. It's the merge of 3 different conferences (<A href="https://recap-conf.dev/" target="_self" rel="nofollow noopener noreferrer">reCAP</A> + <A href="https://openui5.org/ui5con/" target="_self" rel="nofollow noopener noreferrer">UI5con</A> + <A href="https://abapconf.org/" target="_self" rel="nofollow noopener noreferrer">ABAPconf</A>) with a whole day dedicated to a single technology. It was dabbed as the "new TechEd" by the attendees. I've heard it sooooo many times!</SPAN></P><P><SPAN>Short comments on the days and a brain dump on everything in between...</SPAN></P><P><SPAN>Day 0, <STRONG>CodeJam</STRONG>, started with a hands-on workshop on CAP conducted by the legend DJ Adams. Man, he's a walking geek encyclopedia and master of the random geek fun facts.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SAP CodeJam" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121199iC0EF95766FDA1BAD/image-size/large?v=v2&amp;px=999" role="button" title="IMG_1888.jpg" alt="SAP CodeJam" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">SAP CodeJam</span></span></SPAN></P><P><SPAN>Day 1, <STRONG>reCAP</STRONG>, was all about how CAP is so f* powerful and simple at the same time (sorry, I couldn't find any better word). In my humble opinion, it cemented the idea of CAP becoming the framework people will use to build most of the custom things SAP-related.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Welcome to reCAP 2024" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121200iED0A02005F239ED6/image-size/large?v=v2&amp;px=999" role="button" title="_DSC0174.JPG" alt="Welcome to reCAP 2024" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Welcome to reCAP 2024</span></span></SPAN></P><P><SPAN>Day 2, <STRONG>UI5con</STRONG>, showed that UI5 can do much more than Fiori Elements apps. It's modern, solid and can render fast!</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Full house to watch Peter Muessig" style="width: 938px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121208iCFDCEF6AEA276948/image-size/large?v=v2&amp;px=999" role="button" title="PXL_20240605_101308232-min.jpg" alt="Full house to watch Peter Muessig" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Full house to watch Peter Muessig</span></span></P><P><SPAN>Day 3, <STRONG>ABAPconf</STRONG>, I can summarize with: ABAP is not dead! It's not going anywhere. Actually, it's going to the cloud. So many new tools and techniques to make RAP better and easier to work with.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ABAP Clean Core" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121204i21909B8238123C27/image-size/large?v=v2&amp;px=999" role="button" title="20240606_144201-min.jpg" alt="ABAP Clean Core" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">ABAP Clean Core</span></span></P><P><SPAN>For 4 days I soaked up knowledge shared on the stages, and most importantly, the invaluable experiences and real-life challenges shared in conversations throughout the day.</SPAN></P><P><SPAN>I met old friends, I made new friends, I met people that I’ve known for ages, but have never seen in person. Some were not as tall as I was expecting (sorry man <span class="lia-unicode-emoji" title=":winking_face_with_tongue:">😜</span>). I saw great ideas, I saw captivating speakers, and I saw smart code, which makes me even more nervous when presenting because they're far ahead of my limited capabilities.</SPAN></P><P><SPAN>The common feeling is that we were part of a large community, full of people from all backgrounds and skill levels, but with one thing in common: the love for SAP technology. We all belonged there. It was the Woodstock of SAP! Without the LSD, but full of talented people, good music and LOTS of fun! A unique moment that may spark a renaissance of the SAP community itself because I do believe people will contact each other to collaborate on new projects.</SPAN></P><P><SPAN>Code Connect was a beast packed with actionable insights and lessons from the sessions. Each day was focused on one technology only. There was no "this feature will be available next Christmas". Everything shared in those 3 days was possible to play with straight away. For instance, after my session, people told me they would test that out once they got to their homes. On the following day, somebody said they had implemented some of the suggestions. Bloody hell!!!</SPAN></P><P><SPAN>The same happened to others. All sessions shared this one little thing: no vaporware, just real code. Even the sessions touching genAI, the biggest buzzword ever, showed real applications that anybody could test today.</SPAN></P><P>You could see people chatting around, sharing what they are doing, the projects they are working on. Some of the things that I heard: what they like in CAP (easy to learn, higher productivity), how they are adopting ABAP Cloud (more on BTP than the embedded one), hackathons are still the best way to learn new tech in house. These conversations would get even better in the evening as we sat outdoors listening to good music, playing some games and having some drinks. Every night I'd leave the premises around 10pm and people were still there... If they kept the place open and the music playing in a 24h old LAN party style, people wouldn't leave.&nbsp;</P><P><SPAN>Whoever had the idea to combine forces and bundle these 3 conferences in a blockbuster event deserves all the accolades from the SAP community at large. The people behind the event are definitely onto something special. Keep up the awesome work!!!&nbsp;</SPAN><SPAN>And please, please, please... Keep SAP marketing and sales at bay. They already have their events, let us have ours. As the ABAPconf sign stated: “by developers for developers”.</SPAN></P><P><SPAN>I just want to say thank you to the organisation, and to everyone behind this magnificent event. Thank you to all the speakers who invested time in preparing the sessions, for sharing your knowledge and experience. Thank you to all the attendees because without you the event would be nothing. And thank you to the sponsors for funding such a large, complex and beautiful idea.</SPAN></P><P><SPAN>It might be unfair to the others, but I must mention some people, not from the organisation, but from the community...</SPAN></P><P><SPAN>Svea and her team for being there listening to the community. They could hide themselves in a room and avoid the negative feedback for the infamous new platform they knew they'd get, but they didn't. It requires courage and I respect it. We all hope to see the changes being implemented sooner rather than later.</SPAN></P><P><SPAN>The crew from Portugal which I believe was the biggest group representing a customer there! They even had their own CAPs 🧢</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Portugal represented" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121214iFB6B268E14AECF89/image-size/large?v=v2&amp;px=999" role="button" title="IMG_6499.JPG" alt="Portugal represented" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Portugal represented</span></span></SPAN></P><P><SPAN>The Ned Kelly Gang from Down Under! +20 hours on a plane to attend an event because they want to, not because they were told to speaks volumes. You (we?) guys rock!</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="The Ned Kelly Gang missing some members" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121206i4A2DF7AC13198CDB/image-size/large?v=v2&amp;px=999" role="button" title="DSCF3445.jpg" alt="The Ned Kelly Gang missing some members" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">The Ned Kelly Gang missing some members</span></span><BR /><BR /><SPAN>PS: hear me out now... Add an extra day for SAP BTP in the Code Connect (BTPconf?) and we definitely have something better than TechEd&nbsp;&nbsp;<span class="lia-unicode-emoji" title=":winking_face_with_tongue:">😜</span></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="3 developers" style="width: 724px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121209iDB382F08D2F53197/image-size/large?v=v2&amp;px=999" role="button" title="20240605_173711-min.jpg" alt="3 developers" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">3 developers</span></span></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="About to start my session and have some fun" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121211i676A4D751DB67E82/image-size/large?v=v2&amp;px=999" role="button" title="GPPVHgzXcAAAtiT.jpg" alt="About to start my session and have some fun" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">About to start my session and have some fun</span></span></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LEGO Fender I won in a raffle, thanks dox42 \o/" style="width: 729px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121602i28B02F5C7C36F0E9/image-size/large?v=v2&amp;px=999" role="button" title="20240610_111953.jpg" alt="LEGO Fender I won in a raffle, thanks dox42 \o/" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">LEGO Fender I won in a raffle, thanks dox42 \o/</span></span></SPAN></P> 2024-06-11T02:15:40.162000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/abap-cloud-developer-trial-2022-my-experience/ba-p/13727252 ABAP Cloud Developer Trial 2022: My Experience 2024-06-11T19:40:00.027000+02:00 Mamikee https://community.sap.com/t5/user/viewprofilepage/user-id/274 <P><SPAN>As many of you may have heard, the ABAP Cloud Developer Trial 2022 is now available on Docker. Consequently, the ABAP Cloud Developer Trial 1909 from Docker will be withdrawn. Check out Julie Plummer's blog post for all the details about what’s included, highlights of the release, and additional reading about ABAP Cloud and extensibility:&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-abap-platform-1909-developer-edition-day-1-experience-and-tips-and/ba-p/13482488" target="_self">ABAP Cloud Developer Trial 2022 Available Now | Blog Post</A>&nbsp;</SPAN></P><P><SPAN>In this blog post, I want to share my personal experiences installing the new ABAP developer edition on my MacBook with an Intel processor, especially since the older version is set to disappear from Docker. On the newest MacOS version, you can no longer run ABAP Cloud Developer Trial on Docker Desktop for MacBooks with an M-series processor. Thankfully, my MacBook with its Intel processor meant I dodged the compatibility issues—no need for workarounds or additional setups. If you are working with an M-series processor, I recommend checking out this <A href="https://community.sap.com/t5/technology-blogs-by-members/m-series-apple-chip-macbooks-and-abap-platform-trial-containers-using/ba-p/13593215" target="_self">blog post</A> from our community member <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/197587">@dylan-drummond</a>, who has written an exhaustive guide.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-06-11 at 11.54.15 AM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122055iC4AE6CEB324190B2/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-06-11 at 11.54.15 AM.png" alt="Screenshot 2024-06-11 at 11.54.15 AM.png" /></span></SPAN></P><P>&nbsp;</P><P><I><SPAN>The ABAP Cloud Developer Trial is a free, downloadable ABAP Platform on SAP HANA 2.0 for trying out the ABAP language and toolset. It comes pre-configured with SAP Fiori launchpad, SAP Cloud Connector, backend/frontend connections, roles, and sample applications. This is the new name for ABAP Platform Trial, highlighting that you can now develop in the new ABAP Language Version, ABAP for Cloud Development.</SPAN></I></P><H1 id="toc-hId-887601462">&nbsp;</H1><H1 id="toc-hId-691087957"><SPAN>Docker Desktop for MacBook<BR /></SPAN></H1><P><SPAN>Understanding Docker container technology fundamentals is crucial, as the trial runs on a Docker platform. I suggest starting with the Setup Instructions available on the Docker Hub page: <A href="https://hub.docker.com/r/sapse/abap-cloud-developer-trial" target="_self" rel="nofollow noopener noreferrer">ABAP Cloud Developer Trial 2022</A>. This contains a lot of useful information needed to set up the container. This will save you time and help avoid the mistake I made by skimming through briefly.&nbsp;</SPAN></P><P><SPAN>&nbsp;</SPAN><SPAN>When you open Docker Desktop for the first time, you need to accept the Docker Subscription Service Agreement. If you are using Docker Desktop for work purposes, you need to discuss with your employer whether you need a paid subscription.</SPAN></P><P><SPAN>&nbsp;</SPAN><SPAN>In the settings screen, I recommend adjusting the resources settings. Make sure you have assigned enough disk space to your Docker setup. The image is around 50GB when compressed. It would be frustrating to spend time downloading the image only to find out Docker does not have enough disk space to unpack it.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-06-11 at 12.26.13 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122061iB298D535459C9727/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-06-11 at 12.26.13 PM.png" alt="Screenshot 2024-06-11 at 12.26.13 PM.png" /></span></SPAN><SPAN>- &nbsp;<STRONG>CPU limit</STRONG>: 6&nbsp;</SPAN></P><P><SPAN>- &nbsp;<STRONG>Memory limit</STRONG>: 28 GB (you might get away with less)</SPAN></P><P><SPAN>- <STRONG>Swap limit</STRONG>: 2 GB</SPAN></P><P><SPAN>- <STRONG>Virtual disk limit</STRONG>: &nbsp;248 GB&nbsp;</SPAN></P><P><SPAN>You can probably get by with a slightly smaller disk size, but the image takes up over 50GB on disk.</SPAN></P><H1 id="toc-hId-494574452"><SPAN><BR />Installation Tips</SPAN></H1><P><SPAN>One major tip during installation is to read the entire section of the documentation first. Don’t just cut and paste the command from the documentation without understanding them.</SPAN></P><P><SPAN>There are two ways to do this: using the command line (Docker Engine, which you installed as part of Docker Desktop setup) or using the GUI app (Docker Desktop, which in the background uses Docker Engine).&nbsp; The GUI app method is to search in the top bar of Docker Desktop for the image, then press Pull.&nbsp;</SPAN><SPAN>The command line method is:</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>sudo docker pull sapse/abap-cloud-developer-trial</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>The pull operation will take some time because there is over 20 GB of data to download, extract, and write to the local image repo of the Docker. Be patient. If the process fails, start it again (either from the GUI app or command line). Eventually, the image will be viewable in Docker Desktop’s Images tab and via the command.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-06-11 at 12.45.07 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122063i798CF88A78158562/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-06-11 at 12.45.07 PM.png" alt="Screenshot 2024-06-11 at 12.45.07 PM.png" /></span></SPAN></P><P><SPAN>&nbsp;</SPAN></P><P><SPAN>Next, start up the a4h container. I’ll suggest doing this from the command line to specify all the options we want and immediately follow the command’s progress. Ensure Docker Desktop is running. The command is:</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>sudo docker run --stop-timeout 3600 -it --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 3601:3601 -p 8443:8443 -p 30213:30213 -p 50000:50000 -p 50001:50001 sapse/abap-cloud-developer-trial:ABAPTRIAL_2022 -skip-limits-check -agree-to-sap-license</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>Anyone running on Mac or Windows needs to add the "-skip-limits-check" to the run command. You also probably want to add the "agree-to-sap-license" switch to the run command to avoid having to start the container in interactive mode to accept the agreement.</SPAN><SPAN>You can follow the Terminal window output and the progress in Docker Desktop. </SPAN></P><P><SPAN>Y</SPAN><SPAN>ou will now be able to set up the SAP GUI connection. The ABAP Cloud Developer Trial 2022 has a new password:&nbsp;<STRONG>ABAPtr2022#00.&nbsp;</STRONG>The username is <STRONG>DEVELOPER </STRONG>and the&nbsp;client is either 001 for development or 000 for admin tasks.&nbsp;</SPAN></P><P><SPAN><BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-06-11 at 1.01.18 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122068i8820C40E52C125E5/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-06-11 at 1.01.18 PM.png" alt="Screenshot 2024-06-11 at 1.01.18 PM.png" /></span><BR /></SPAN></P><P>&nbsp;</P><P><SPAN>The system should be up and running, and you can see it is also visible in Eclipse</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-06-11 at 1.13.07 PM.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122075i374A5F37032C89F0/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-06-11 at 1.13.07 PM.png" alt="Screenshot 2024-06-11 at 1.13.07 PM.png" /></span></SPAN></P><H1 id="toc-hId-298060947">&nbsp;</H1><H1 id="toc-hId-101547442"><SPAN>Wrapping Up</SPAN></H1><P><SPAN>Overall, installing and using the ABAP Cloud Developer Trial 2022 on Docker was quite easy. The new version is packed with features and pre-configured tools, making it easy to dive into ABAP development. Intel MacBook users will find the process straightforward, while those with M-series processors might need some extra steps for compatibility.&nbsp;</SPAN></P><P><SPAN>All that I've detailed here is additional background and exploration information for those who want to learn more. The most important thing is just to get started!&nbsp;</SPAN></P><P><SPAN>For a deeper dive into the specifics, including the features and release highlights, check out Julie Plummer’s blog post. This post also provides links to further information on ABAP Cloud and its extensibility.</SPAN></P><P><SPAN>If you need advice on any of the steps I mentioned, like logging into the SAP System or getting an A4H license, refer to the official advice from SAP on the <A href="https://hub.docker.com/r/sapse/abap-cloud-developer-trial" target="_self" rel="nofollow noopener noreferrer">ABAP Cloud Developer trial site&nbsp;</A></SPAN></P> 2024-06-11T19:40:00.027000+02:00 https://community.sap.com/t5/technology-blogs-by-members/upload-and-modify-openxml-documents-via-rap-app-in-sap-btp-abap-environment/ba-p/13725740 Upload and modify OpenXML documents via RAP App in SAP BTP ABAP Environment 2024-06-12T21:50:36.096000+02:00 ReinertM https://community.sap.com/t5/user/viewprofilepage/user-id/175444 <H1 id="toc-hId-887546652">Introduction</H1><P>In this blog post, I would like to share some insights for generating OpenXML documents by use of the RESTful Application Programming Model with Cloud-released development objects. With this app, you will be able to upload .docx templates and fill them with information from you CDS view (could be used for generating invoices, business documents and so on...).&nbsp;</P><H1 id="toc-hId-691033147">Prerequesites</H1><UL><LI>SAP BTP ABAP environment or an S/4 system to your disposal.&nbsp; &nbsp;</LI><LI>Eclipse IDE installed on your local machine with the ABAP Development Tools.</LI></UL><H1 id="toc-hId-494519642">Shortcut with abapGit:</H1><P>For those who are using abapGit, feel free to check out the code from my <A href="https://github.com/cnbscorp/InvoiceGenerator.git" target="_self" rel="nofollow noopener noreferrer">GitHub repo</A>!</P><H1 id="toc-hId-298006137">Step 1:</H1><P>Create a database table with the following config (hint: do not forget to generate custom domains for mime type and attachment type, information on how to do this can be found <A href="https://community.sap.com/t5/technology-blogs-by-sap/streams-in-rap-uploading-pdf-excel-and-other-files-in-rap-application/ba-p/13526891" target="_self">here</A>.</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@EndUserText.label : 'Invoice for document generation' @AbapCatalog.enhancement.category : #EXTENSIBLE_ANY @AbapCatalog.tableCategory : #TRANSPARENT @AbapCatalog.deliveryClass : #A @AbapCatalog.dataMaintenance : #RESTRICTED define table zmri_invoice { key client : abap.clnt not null; key invoice : ebeln not null; comments : abap.char(30); attachment : zmriattachment; mimetype : zmimetype; filename : zfilename; purchaseorder : abap.char(30); price : abap.dec(8,2); local_created_by : abp_creation_user; local_created_at : abp_creation_tstmpl; local_last_changed_by : abp_locinst_lastchange_user; local_last_changed_at : abp_locinst_lastchange_tstmpl; last_changed_at : abp_lastchange_tstmpl; }</code></pre><P>&nbsp;</P><H1 id="toc-hId-101492632">Step 2:&nbsp;</H1><P>Generate ABAP repository objects by right-clicking on the previously created database table.&nbsp;<BR />Choose the ABAP RESTful Application Programming Model (OData UI Service) variant.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ABAP repository objects.PNG" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121410i26541C33D447E274/image-size/medium?v=v2&amp;px=400" role="button" title="ABAP repository objects.PNG" alt="ABAP repository objects.PNG" /></span></P><H1 id="toc-hId--95020873">Step 3</H1><P>Create a custom action in your Behavior Definition:&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>managed implementation in class ZBP_R_MRI_INVOICE unique; strict ( 2 ); with draft; define behavior for ZR_MRI_INVOICE alias ZrMriInvoice persistent table ZMRI_INVOICE draft table ZMRI_INVOIC000_D etag master LocalLastChangedAt lock master total etag LastChangedAt authorization master( global ) { field ( mandatory : create ) Invoice; field ( readonly ) LocalCreatedBy, LocalCreatedAt, LocalLastChangedBy, LocalLastChangedAt, LastChangedAt; field ( readonly : update ) Invoice; create; update; delete; action ( features : global ) createMSWordInvoice ; draft action Activate optimized; draft action Discard; draft action Edit; draft action Resume; draft determine action Prepare; mapping for ZMRI_INVOICE { Invoice = invoice; Comments = comments; Attachment = attachment; Mimetype = mimetype; Filename = filename; PurchaseOrder = purchaseOrder; Price = price; LocalCreatedBy = local_created_by; LocalCreatedAt = local_created_at; LocalLastChangedBy = local_last_changed_by; LocalLastChangedAt = local_last_changed_at; LastChangedAt = last_changed_at; } }</code></pre><P>&nbsp;</P><H1 id="toc-hId--291534378">Step 4:</H1><P>Implement the custom action in your behaviour implementation class:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>CLASS lhc_zr_mri_invoice DEFINITION INHERITING FROM cl_abap_behavior_handler. PRIVATE SECTION. CLASS-DATA: mt_data TYPE zmri_invoice. DATA: lv_content TYPE xstring, lo_zip TYPE REF TO cl_abap_zip. METHODS: get_global_authorizations FOR GLOBAL AUTHORIZATION IMPORTING REQUEST requested_authorizations FOR ZrMriInvoice RESULT result, get_global_features FOR GLOBAL FEATURES IMPORTING REQUEST requested_features FOR ZrMriInvoice RESULT result, createMSWordInvoice FOR MODIFY IMPORTING keys FOR ACTION ZrMriInvoice~createMSWordInvoice. ENDCLASS. CLASS lhc_zr_mri_invoice IMPLEMENTATION. METHOD get_global_authorizations. * This method does not need an implementation ENDMETHOD. METHOD createMSWordInvoice. * Select document to be filled SELECT * FROM zc_mri_invoice FOR ALL ENTRIES IN @keys WHERE invoice = @keys-invoice INTO CORRESPONDING FIELDS OF <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/2891">@MT</a>_data. ENDSELECT. * Create zip class instance lo_zip = NEW cl_abap_zip( ). * Search for main document part DATA lv_index TYPE string VALUE 'word/document.xml'. * Load attachment into zip class object lo_zip-&gt;load( zip = mt_data-attachment check_header = abap_false ). * Fetch the binaries of the XML part in the attachment lo_zip-&gt;get( EXPORTING name = lv_index IMPORTING content = lv_content ). * Convert the binaries of the xml into a string DATA(lv_string) = xco_cp=&gt;xstring( lv_content )-&gt;as_string( xco_cp_character=&gt;code_page-&gt;utf_8 )-&gt;value. * Search for the text to be replaced and fill with the information in your data set REPLACE FIRST OCCURRENCE OF '&amp;lt;InvoiceNumber&amp;gt;' IN lv_string WITH mt_data-Invoice. REPLACE FIRST OCCURRENCE OF '&amp;lt;Purchase Order&amp;gt;' IN lv_string WITH mt_data-PurchaseOrder. REPLACE FIRST OCCURRENCE OF '&amp;lt;Comments&amp;gt;' IN lv_string WITH mt_data-Comments. DATA lv_price TYPE string. lv_price = mt_data-Price. REPLACE FIRST OCCURRENCE OF '&amp;lt;Price&amp;gt;' IN lv_string WITH lv_price. * Convert the changed XML string into binaries DATA(lv_new_content) = xco_cp=&gt;string( lv_string )-&gt;as_xstring( xco_cp_character=&gt;code_page-&gt;utf_8 )-&gt;value. * Delete "old" main document part from the zip file lo_zip-&gt;delete( EXPORTING name = lv_index ). * Add "new" main document part to the zip file lo_zip-&gt;add( EXPORTING name = lv_index content = lv_new_content ). * Save the new zip file DATA(lv_new_file) = lo_zip-&gt;save( ). * Upload changed docx file MODIFY ENTITIES OF zr_mri_invoice IN LOCAL MODE ENTITY ZrMriInvoice UPDATE SET FIELDS WITH VALUE #( ( Invoice = mt_data-Invoice Attachment = lv_new_file ) ) FAILED failed. APPEND VALUE #( %msg = new_message_with_text( severity = if_abap_behv_message=&gt;severity-success text = 'Template successfully filled...' ) ) TO reported-ZrMriInvoice. ENDMETHOD. METHOD get_global_features. * This method does not need to be implemented ENDMETHOD. ENDCLASS.</code></pre><P>Explanation: In this implementation class, the cl_abap_zip class (which is released for cloud development) is used to load the .docx template. If you didn't already know, a .docx file is basically a ZIP-file. In order to get the main document part, we need to fetch the "word/document.xml" file within the zip object by applying the lo_zip-&gt;get() method. This method returns an XSTRING which has to be converted into an UTF-8 encoded string, for us to modify the content of the main document part. For the binary-to-string conversions the&nbsp;xco_cp class is used, which is part of the XCO library (I can only recommend using this library as it has some great features). Afterwards the converted XML-string has to be modified with the invoice details from your CDS view. The modified XML-string has to be converted back into binaries, by use of the same class. The last step is to delete the "old" main document part from the zip object and add the new document content to the zip object. Now update the attachment field in your CDS entity and that's it. Your app should now be able to populate a .docx-file with information from your CDS view.&nbsp;</P><H1 id="toc-hId--488047883">Step 5:</H1><P>Create a metadata extension and a service binding for your Fiori Frontend and test the application:&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@Metadata.layer: #CORE @UI: { headerInfo: { typeName: 'Invoice', typeNamePlural: 'Invoices', title: { type: #STANDARD, value: 'Invoice' }, description: { type: #STANDARD, value: 'Invoice' } }, presentationVariant: [{ sortOrder: [{ by: 'Invoice', direction: #ASC }], visualizations: [{type: #AS_LINEITEM}] }] } annotate view ZC_MRI_INVOICE with { .facet: [ { label: 'General Information', id: 'GeneralInfo', type: #COLLECTION, position: 10 }, { id: 'Invoicedet', purpose: #STANDARD, type: #IDENTIFICATION_REFERENCE, label: 'Invoice Details', parentId: 'GeneralInfo', position: 10 } ] : { lineItem: [ { position: 10, importance: #HIGH , label: 'Invoice Number'} ] , identification: [ { position: 10 , label: 'Invoice Number' } ] } Invoice; : { lineItem: [ { position: 20, importance: #HIGH , label: 'Purchase Order'} ] , identification: [ { position: 20 , label: 'Purchase Order Number' } ] } PurchaseOrder; : { lineItem: [ { position: 20, importance: #HIGH , label: 'Price'} ] , identification: [ { position: 20 , label: 'Price' } ] } Price; : { lineItem: [ { position: 20, importance: #HIGH , label: 'Comments'} ] , identification: [ { position: 20 , label: 'Comments' } ] } Comments; : { lineItem: [ { position: 30, importance: #HIGH , label: 'Attachment'}, { type: #FOR_ACTION, dataAction: 'createMSWordInvoice' , label: 'Create Invoice' } ], identification: [ { position: 20 , label: 'Attachment' }] } Attachment; .hidden: true MimeType; .hidden: true Filename; }</code></pre><P>&nbsp;</P><P>Test the application by creating an entry and uploading a docx-template.</P><P>The template could look something like this:&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="invoice_before.PNG" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121747i9DE59A7A02E3BC27/image-size/medium?v=v2&amp;px=400" role="button" title="invoice_before.PNG" alt="invoice_before.PNG" /></span></P><P>Now select the entry and use the custom action to fill the template with your data:&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="RAP_FIORI_APP_Success.PNG" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121746i3F85D766EB96E3DB/image-size/medium?v=v2&amp;px=400" role="button" title="RAP_FIORI_APP_Success.PNG" alt="RAP_FIORI_APP_Success.PNG" /></span></P><P>After the success message, click on the attachment (template.docx) and verify that the placeholders have been filled:&nbsp;<BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="invoice_after.PNG" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121749iF743B070524AACAE/image-size/medium?v=v2&amp;px=400" role="button" title="invoice_after.PNG" alt="invoice_after.PNG" /></span></P><H1 id="toc-hId--684561388">Addition:&nbsp;</H1><P>For those of you who want to populate tables in MS word, you can have a look at <A href="https://community.sap.com/t5/application-development-blog-posts/best-way-to-generate-microsoft-word-docx-from-abap/ba-p/13430350" target="_self">this blog post</A>, which uses text and row fragments for placeholders in the docx-template.</P><H1 id="toc-hId--881074893">Conclusion:</H1><P>In this blog post, you learned how to upload and modify OpenXML documents by use of the&nbsp;<SPAN>cl_abap_zip class and the XCO library. This code is consists of cloud-released code only and should give you a good starting point to start handling your documents with a clean core approach.&nbsp;</SPAN></P> 2024-06-12T21:50:36.096000+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/replacing-a-wrapped-bapi-with-a-released-business-object-interface/ba-p/13729947 Replacing a wrapped BAPI with a released business object interface 2024-06-13T15:11:13.346000+02:00 kaidehmann https://community.sap.com/t5/user/viewprofilepage/user-id/14159 <P>Last year, I announced the&nbsp;release of&nbsp;the <A href="https://developers.sap.com/group.sap-s4hana-extensibility-wrap-api.html" target="_self" rel="noopener noreferrer">Mitigate Missing Released SAP API in the 3-tier Extensibility Model</A> tutorial group via the <A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/abap-cloud-mitigate-missing-released-sap-apis-in-the-3-tier-extensibility/ba-p/13580268" target="_self">ABAP Cloud – Mitigate missing released SAP APIs in the 3-tier extensibility model: a tutorial how to wrap a BAPI and integrate it into a custom RAP business object</A>&nbsp;blog.&nbsp;The tutorial group shows how to wrap the BAPI_PR_CREATE function module (BAPI) in tier 2, how to release it for consumption in tier 1, and then how to consume it from a shopping cart RAP business object in tier 1.</P><P>We have just extended the tutorial group with the <A href="https://developers.sap.com/tutorials/abap-s4hanacloud-purchasereq-replace-wrapper.html" target="_self" rel="noopener noreferrer">Replace Wrapper by Released API</A>&nbsp;tutorial. As the name suggests, this tutorial shows how to replace the wrapper once a released API is available. That is, the wrapper for the BAPI_PR_CREATE function module is replaced by the released I_PurchaseRequisitionTP business object interface. Since the business object interface is already available, you can try it out immediately. So, don't hesitate and get your hands dirty <span class="lia-unicode-emoji" title=":winking_face:">😉</span></P> 2024-06-13T15:11:13.346000+02:00 https://community.sap.com/t5/application-development-blog-posts/sap-developer-news-june-20th-2024/ba-p/13738211 SAP Developer News, June 20th, 2024 2024-06-20T21:10:00.081000+02:00 thomas_jung https://community.sap.com/t5/user/viewprofilepage/user-id/139 <P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F8zC6l1_jFmg%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D8zC6l1_jFmg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F8zC6l1_jFmg%2Fhqdefault.jpg&amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;type=text%2Fhtml&amp;schema=youtube" width="400" height="225" scrolling="no" title="Generate UI from ABAP BO, Open Source Webinar, Collaborate in Build Code | SAP Developer News" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><H3 id="toc-hId-1146720087">DESCRIPTION</H3><P><STRONG>Generate your own custom UI Service based on a Business Object Interface</STRONG></P><UL><LI>Tutorial to generate Custom UI Service based on a C1-released Business Object Interface: <A href="https://developers.sap.com/tutorials/abap-cloud-ui-from-interface.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/abap-cloud-ui-from-interface.html</A></LI></UL><P><STRONG>SAP Open Source Webinar “How to fight the dependency hell”</STRONG></P><UL><LI>Renovate <A href="https://github.com/renovatebot/renovate" target="_blank" rel="nofollow noopener noreferrer">https://github.com/renovatebot/renovate</A></LI><LI>Webinar details &amp; registration: <A href="https://events.sap.com/how-to-fight-dependency-hell/en/registration.aspx" target="_blank" rel="noopener noreferrer">https://events.sap.com/how-to-fight-dependency-hell/en/registration.aspx</A></LI><LI>OSPO Webinars home page <A href="https://events.sap.com/ospo-webinars/en/home" target="_blank" rel="noopener noreferrer">https://events.sap.com/ospo-webinars/en/home</A></LI></UL><P><STRONG>Collaborate on your SAP Build Code project with your teammates!</STRONG></P><UL><LI>Tutorial to set up Build Code on BTP: <A href="https://developers.sap.com/tutorials/build-code-setup..html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/build-code-setup..html</A></LI><LI>Help Portal - Managing Members : <A href="https://help.sap.com/docs/SAP%20Build/9d385a1842594230993661ca78dce150/1ae0d5af7a9946cc96936bd175041148.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP%20Build/9d385a1842594230993661ca78dce150/1ae0d5af7a9946cc96936bd175041148.html</A></LI><LI>Blog post on Collaborate on your Build Code project by Rupa Maity: <A href="https://community.sap.com/t5/technology-blogs-by-sap/collaborate-on-your-sap-build-code-project-with-your-teammates/ba-p/13720813" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/collaborate-on-your-sap-build-code-project-with-your-teammates/ba-p/13720813</A></LI></UL><P><STRONG>API anomaly detection and Event Mesh capability of SAP Integration Suite</STRONG></P><UL><LI>API Anomaly Detection in SAP Integration Suite: <A href="https://community.sap.com/t5/technology-blogs-by-sap/api-anomaly-detection-in-sap-integration-suite/ba-p/13726636" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/api-anomaly-detection-in-sap-integration-suite/ba-p/13726636</A></LI><LI>API Anomaly Detection infographic: <A href="https://community.sap.com/t5/technology-blogs-by-sap/use-the-api-anomaly-detection-feature-in-sap-integration-suite-to-detect/ba-p/13733045" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/use-the-api-anomaly-detection-feature-in-sap-integration-suite-to-detect/ba-p/13733045</A></LI><LI>Meet your new friend EMIS: Event Mesh in SAP Integration Suite: <A href="https://community.sap.com/t5/technology-blogs-by-sap/meet-your-new-friend-emis-event-mesh-in-sap-integration-suite/ba-p/13731129" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/meet-your-new-friend-emis-event-mesh-in-sap-integration-suite/ba-p/13731129</A></LI><LI>Event-driven integrations: Exploring the Event Mesh capability of SAP Integration Suite: <A href="https://youtube.com/live/tUIG34xT3oo" target="_blank" rel="nofollow noopener noreferrer">https://youtube.com/live/tUIG34xT3oo</A></LI></UL><H3 id="toc-hId-950206582">CHAPTER TITLES</H3><P>0:00 Intro<BR />0:10 Generate your own custom UI Service based on a Business Object Interface<BR /><SPAN>1:30 SAP Open Source Webinar “How to fight the dependency hell”<BR /></SPAN>2:50 Collaborate on your SAP Build Code project with your teammates!<BR />4:13 API anomaly detection and Event Mesh capability of SAP Integration Suite</P><H3 id="toc-hId-753693077">TRANSCRIPT</H3><P>This is the SAP Developer News for June 20th, 2024.</P><P><STRONG>[Shilpa]</STRONG> Hello, ABAP developers. We all know business objects are the building blocks for modeling data. Well, business object interfaces are provided by SAP in order to release business objects so that it can be used or extended by customers using the ABAP Cloud development model. Now, by defining the stability contracts, it is possible to use such C1-released business object within other software components. Now, once you have used these business objects, you might want to create your own custom UI. In order to make it easier for customers to build custom UIs on top of the released business objects, SAP has provided a new wizard as part of the ABAP Development Tools in the latest series of SAP BTP, ABAP environment. Now, in this tutorial, our friend Andre Fischer shows how you can use this wizard to generate your own custom UI on top of the SAP C1 released business object interface, a ILSK bank TP. In this way, you can leverage growing number of released business objects that are based on ABAP RESTful application programming model to create your own UI on top as extension in ABAP Cloud. The link to this tutorial is in the description below. And we'll check it out.</P><P><STRONG>[DJ]</STRONG> Making sure you're running the correct versions of software with the latest book fixes and features is a pretty important task. Scale this up to an enterprise the size of SAP, a producer and consumer of many, many open source libraries and packages, and this becomes a mammoth undertaking with those libraries, packages, and dependencies that are involved. There are many teams internally at SAP who have turned to the open source tool, Renovate, and use it at scale for this dependency management work. If this sounds interesting to you and you want to find out more, then we've got an upcoming SAP open-source webinar just for you. On the 25th of June, join Tobias Gabriel, a senior developer in the open source program office who will explain how SAP uses Renovate at scale, and also will talk about the shift, the paradigm shift towards the automation of dependency management in enterprises like SAP. All the details about this webinar and how to register are in the description.</P><P><STRONG>[Shrini]</STRONG> Hello, SAP community. Would it be fun to share your code with your teammates? That's exactly what you can do with a build code project from the SAP Build Lobby. If you're interested in learning how to enable SAP Build Code in your BTP account, check out this tutorial. When you create a new full-stack project from the Build Lobby, you'll provide a project name, description, and select a dev space. If a dev space doesn't already exist, a new one will be created for you. Once your project is open, you can add any Git-based repository as a remote repo using the simplified Git panel. To share the project with your team members, we'll also need to add them as collaborators in the GitHub settings. In the SAP Build Lobby, you will find an option called Manage Members for your build code project. This feature allows you to authorize your team members to access the project as long as they have access to the same sub-account. Your team members can then access the project by selecting a dev space and providing their credentials. The repository will be cloned onto their dev space. If you need more guidance, Rupa has written a fantastic blog with step-by-step instructions. You can find the link in the description below.</P><P><STRONG>[Antonio]</STRONG> Hola, SAP Developer. As part of the announcements that we had for SAP Sapphire, it was announced that there will be a new functionality in API management called the API anomaly detection. Now my colleague Shruthi recently published a blog post which shows you how to enable the functionality and &nbsp;lso what should you expect from this new functionality. There is also a very nice infographic that my colleague Kasturi created, which really distills what the functionality is. So make sure to check that out as well. There is now a new capability in SAP Integration Suite, which is the Event Mesh capability. So now Event Mesh is within the different capabilities that are part of SAP Integration Suite. Check out the blog post by Karsten, where he basically shares with us what you should expect from this new capability. And if you want to see the capability in action, this week I had the opportunity to do a livestream, where I basically go through the entire process of activating the new capability. Also, I connected to a CAP application, consume messages from Cloud Integration. We also connected to an S/4HANA Cloud. So make sure to check that out so that you can see the capability in action.</P> 2024-06-20T21:10:00.081000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/customer-amp-partner-roundtable-for-sap-btp-abap-environment-14/ba-p/13741880 Customer & Partner Roundtable for SAP BTP ABAP Environment #14 2024-06-25T11:16:39.932000+02:00 iwona_hahn https://community.sap.com/t5/user/viewprofilepage/user-id/4326 <DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId-1147441053"><STRONG><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</span></SPAN>&nbsp;The call for contributions for one of the upcoming roundtables is open!&nbsp;</STRONG></H3><P>&nbsp;</P><DIV><TABLE><TBODY><TR><TD>If you want to show a demo or share a use case scenario for SAP BTP ABAP Environment send us an<SPAN>&nbsp;</SPAN><A href="mailto:sap_btp_abap_environment@sap.com" target="_blank" rel="noopener nofollow noreferrer">email</A>&nbsp;and we will get back to you.</TD></TR></TBODY></TABLE><SPAN>&nbsp;</SPAN></DIV><H2 id="toc-hId-821844829">Introduction</H2><P>&nbsp;</P><DIV><SPAN class="">A</SPAN><SPAN class="">s<SPAN>&nbsp;</SPAN></SPAN><A class="" href="https://www.sap.com/products/technology-platform/abap.html" target="_blank" rel="noreferrer noopener"><SPAN class="">SAP&nbsp;BTP&nbsp;ABAP&nbsp;environment (aka Steampunk)</SPAN></A><SPAN>&nbsp;</SPAN>and ABAP Cloud<SPAN>&nbsp;</SPAN><SPAN class="">became&nbsp;more&nbsp;</SPAN><SPAN class="">and more popular</SPAN><SPAN class=""><SPAN>&nbsp;</SPAN>inside and outside of SAP, there is a high demand for rolling out the latest product news and updates, asking questions, and of course showing demos.&nbsp;</SPAN><BR /><BR /><SPAN class="lia-unicode-emoji"><span class="lia-unicode-emoji" title=":light_bulb:">💡</span></SPAN>&nbsp;If you weren’t able to join one of our previous roundtables, you can find the slides presented, recordings, and further references in this<SPAN>&nbsp;</SPAN><A href="https://github.com/iwonahahn/SAP-BTP-ABAP-Environment-Roundtable/tree/main" target="_blank" rel="noopener nofollow noreferrer">GitHub repository</A>.<BR /><BR /></DIV><DIV><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="iwona_hahn_1-1711369871866.jpeg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85948i899EEF37EF74A54C/image-size/medium?v=v2&amp;px=400" role="button" title="iwona_hahn_1-1711369871866.jpeg" alt="iwona_hahn_1-1711369871866.jpeg" /></span><H2 id="toc-hId-625331324"><BR />Meeting Information<BR /><BR /></H2><STRONG>When:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</STRONG><BR /><UL><LI><STRONG><SPAN class="">July 30th</SPAN></STRONG>, 10:00 - 11:00 AM CET&nbsp; –<SPAN>&nbsp;</SPAN><A href="https://sap-se.zoom.us/meeting/register/tJIsdOGgpjsiH9IDXq_yv4ZPu87bQILQ4ZKW" target="_blank" rel="nofollow noopener noreferrer">Zoom Meeting</A>&nbsp;(<STRONG>please register</STRONG><SPAN>&nbsp;</SPAN>in advance)&nbsp;</LI></UL></DIV><DIV>&nbsp;</DIV><DIV><STRONG>Who:</STRONG><UL><LI>All interested&nbsp;<STRONG>customers, partners,</STRONG>&nbsp;and&nbsp;<STRONG>stakeholders</STRONG>&nbsp;are invited to join and exchange ideas and feedback with others and the product team</LI><LI><STRONG>Steampunk team</STRONG>:&nbsp;<STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/4296" target="_blank">Frank Jentsch</A></STRONG><SPAN>&nbsp;</SPAN><SPAN class="">(Product Lead for SAP BTP ABAP&nbsp;Environment), <STRONG>Daniela Fenderl</STRONG>, <STRONG>Chris Swanepoel</STRONG>,&nbsp;</SPAN><STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/4326" target="_self"><SPAN class="">Iwona Hahn</SPAN></A></STRONG>&nbsp;&amp;&nbsp;<STRONG><A href="https://community.sap.com/t5/user/viewprofilepage/user-id/151005" target="_self">Burcu Karlidag</A></STRONG><SPAN class="">&nbsp;</SPAN><BR /><BR /></LI></UL></DIV><DIV><STRONG>Preliminary Agenda:</STRONG><BR /><UL><LI>Product news and outlook</LI><LI>Hello, ABAP Cloud! Landing Page</LI><LI>Q&amp;A</LI></UL><SPAN>Looking forward to meeting you!</SPAN></DIV><DIV>&nbsp;</DIV><DIV><A href="https://sap-se.zoom.us/meeting/register/tJIsdOGgpjsiH9IDXq_yv4ZPu87bQILQ4ZKW" target="_blank" rel="noopener nofollow noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="iwona_hahn_2-1711369871851.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/85947i01677A9AE51AAC1D/image-size/medium?v=v2&amp;px=400" role="button" title="iwona_hahn_2-1711369871851.png" alt="iwona_hahn_2-1711369871851.png" /></span></A><BR /><BR /><SPAN>Check out our</SPAN><SPAN>&nbsp;</SPAN><A href="https://pages.community.sap.com/topics/btp-abap-environment" target="_blank" rel="noopener noreferrer">SAP Business Technology ABAP Environment</A><SPAN>&nbsp;page in SAP Community&nbsp;</SPAN><SPAN>for&nbsp;</SPAN><SPAN>product&nbsp;</SPAN><SPAN>updates&nbsp;</SPAN><SPAN>and&nbsp;</SPAN><SPAN>upcoming events.</SPAN><P>&nbsp;</P></DIV></DIV></DIV></DIV><DIV class="">&nbsp;</DIV> 2024-06-25T11:16:39.932000+02:00 https://community.sap.com/t5/technology-blogs-by-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-sap/cds-how-to-define-hierarchy-view/ba-p/13758059 CDS : How to define Hierarchy View 2024-07-17T14:18:20.286000+02:00 LinaRaut https://community.sap.com/t5/user/viewprofilepage/user-id/179963 <P><FONT size="4"><SPAN>This blog is about how to define Hierarchy View</SPAN><SPAN> in CDS</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>There are two types of </SPAN><SPAN>hierarch</SPAN><SPAN>ies – '</SPAN><SPAN>Leveled</SPAN><SPAN> Hierarchy' and '</SPAN><SPAN>Parent-Chil</SPAN><SPAN>d Hierarchy'</SPAN><SPAN>&nbsp;</SPAN><SPAN>In Analytics, only a Parent-Child hierarchy is supported.</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>In CDS, Hierarchy can be defined in two ways:</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><SPAN>Inline Hierarchy: where the hierarchy definition is modelled in the dimension view.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><UL><LI><FONT size="4"><SPAN>External Hierarchy: where there is a separate CDS view to model the definition of the hierarchy.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><P><FONT size="4"><SPAN>In the past, External hierarchy was defined using the annotation '</SPAN><SPAN>@ObjectModel.dataCategory:</SPAN> <SPAN>#HIERARCHY'.</SPAN><SPAN>&nbsp;</SPAN><SPAN>Now, in CDS it is allowed to define new type of CDS view called as Hierarchy CDS, which is defined using</SPAN> <SPAN>syntax </SPAN><SPAN>define hierarchy</SPAN><STRONG><SPAN>, </SPAN></STRONG><SPAN>which create a hierarchical view.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>A CDS hierarchy represents a HANA hierarchy, created when the CDS hierarchy is activated.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>Normally the hierarchy contains headers and nodes. The header data of the hierarchy is coming from the directory view and the nodes data is coming from the hierarchy view itself.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4" color="#0000FF"><SPAN>&nbsp;</SPAN><STRONG><SPAN>Hierarchy Directory</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>The directory of the </SPAN><SPAN>h</SPAN><SPAN>ierarchy provides the header information of the </SPAN><SPAN>h</SPAN><SPAN>ierarchy</SPAN><SPAN>.</SPAN> <SPAN>A hierarchy view might </SPAN><SPAN>contain</SPAN><SPAN> more than one hierarchy. Information about each hierarchy (</SPAN><SPAN>e.g.</SPAN><SPAN> text</SPAN><SPAN>)</SPAN> <SPAN>is</SPAN><SPAN> provided by a hierarchy directory</SPAN><SPAN>. More</SPAN><SPAN> information can be found in </SPAN><A href="https://community.sap.com/t5/technology-blogs-by-sap/cds-hierarchy-directory-how-to-use-notassignednode-annotation-to-suppress/ba-p/13576317" target="_blank"><SPAN>blog</SPAN></A><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>Typically, the directory view is defined as follows:</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@EndUserText.label: 'Connection Hierarchy Directory View' @Analytics : { dataCategory: #DIMENSION, dataExtraction.enabled: true } @ObjectModel.representativeKey: 'hieid' define view entity ZLR_CONNECTION_HIERARCHY_DIR as select from zoq_connid_hd { @ObjectModel.text.element: [ 'hiertxt' ] key hieid, @Semantics.text: true hiertxt, @Semantics.systemDate.lastChangedAt: true last_changed, }</code></pre><P>&nbsp;</P><P><FONT size="4" color="#0000FF"><STRONG><SPAN class=""><SPAN class="">Output</SPAN></SPAN></STRONG></FONT></P><P><FONT size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LinaRaut_0-1720985264075.png" style="width: 457px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/136485i2087A99928F26B22/image-dimensions/457x361?v=v2" width="457" height="361" role="button" title="LinaRaut_0-1720985264075.png" alt="LinaRaut_0-1720985264075.png" /></span></FONT></P><P>&nbsp;</P><P><FONT size="5" color="#0000FF"><STRONG><SPAN class=""><SPAN class="">Hierarchy View </SPAN><SPAN class="">using&nbsp;</SPAN></SPAN><SPAN class=""><SPAN class="">d</SPAN></SPAN><SPAN class=""><SPAN class="">efine</SPAN><SPAN class=""> hierarchy &lt;NAME&gt;</SPAN></SPAN></STRONG></FONT></P><P><FONT size="4"><SPAN>This is the new way of defining hierarchy and it is available </SPAN><SPAN>from 2023 on Prem and 2308 Cloud</SPAN><SPAN>. </SPAN><SPAN>For defining hierarchy, prerequisite is having a source view, which is mentioned in the definition as parent child hierarchy source.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4" color="#0000FF"><STRONG><SPAN>Source View</SPAN></STRONG></FONT></P><P><FONT size="4"><SPAN>In view definition parent child association is define along with that following associations:</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><SPAN>Association to hierarchy view itself- It defines parent child relationship</SPAN></FONT></LI><LI><FONT size="4"><SPAN>Association to hierarchy directory - It contains all the header information- hierarchy ids.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI><LI><FONT size="4"><SPAN>A</SPAN><SPAN>ssociation to different dimension/text views –</SPAN><SPAN> I</SPAN><SPAN>t is a relation from the nodes and leaves to dimension and text views</SPAN><SPAN>.</SPAN><SPAN> Via this </SPAN><SPAN>association the</SPAN><SPAN> text of a node/leaf is derived. In the foll</SPAN><SPAN>owing e</SPAN><SPAN>xample '_</SPAN><SPAN>node' is</SPAN><SPAN> first level node. '_airline' acts as se</SPAN><SPAN>cond </SPAN><SPAN>level node </SPAN><SPAN>and '</SPAN><SPAN>_connection' is leaf and pointing to dimension</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI><LI><FONT size="4">Extra conditions like 'carrid = "" '&nbsp; are not necessary and the order of the associations is not relevant. Instead in this case a separate field is needed, which returns the fieldname of the records, which should be used. In the example it is field 'nodetype'</FONT></LI></UL><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AccessControl.authorizationCheck: #NOT_REQUIRED @EndUserText.label: 'Base for : New Way of defining Hierarchy' define view entity ZLR_CONN_HIERARCHY_BASE as select from zoq_connid_h //association to itself. association [0..1] to ZLR_CONN_HIERARCHY_BASE as _parent on $projection.hieid = _parent.hieid and $projection.parentid = _parent.nodeid // association with hierarchy directory association [1] to ZLR_CONNECTION_HIERARCHY_DIR as _dir on $projection.hieid = _dir.hieid // associations to the different node types // evalulated at runtime for each record in the order given here // first hit of ON-condition is followed // Differnce to old way of Hierarchy ZLR_CONNECTION_HIERARCHY - here no $projection.carrid = '' and $projection.connid = '0000' association [1] to ZOQ_CONNECTION_NODENAME as _node on $projection.hieid = _node.hieid and $projection.nodename = _node.nodeName // "nodatetype" Airline // Differnce to old way of Hierarchy ZLR_CONNECTION_HIERARCHY - here no and $projection.connid = '0000' association [1] to ZOQ_AIRLINE as _airline on $projection.carrid = _airline.carrid // association to dimension view association [1] to ZLR_CONN as _connection on $projection.carrid = _connection.carrid and $projection.connid = _connection.connid { @Consumption.filter: { mandatory : true, selectionType : #SINGLE, multipleSelections : false } @ObjectModel.foreignKey.association: '_dir' key hieid, key nodeid, parentid, seqno, // three different node types possible in this example // here CONNID is leaf (can not be derived from this view) @ObjectModel.foreignKey.association: '_airline' carrid, @ObjectModel.foreignKey.association: '_connection' connid, @ObjectModel.foreignKey.association: '_node' nodename, cast( case when carrid is initial and connid is initial then 'NODENAME' when connid is initial then 'CARRID' else 'CONNID' end as fieldname ) as nodetype, // associations defined above have to be exposed here // otherwise they will not be available _parent, _dir, _node, _airline, _connection }</code></pre><P>&nbsp;</P><P><FONT size="4" color="#0000FF"><STRONG><SPAN>Hierarchy View&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>Hierarchy view can be defined using the following syntax.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><STRONG><SPAN>Syntax:</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><OL><LI><FONT size="4"><SPAN>... </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>[DEFINE] HIERARCHY hierarchy </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>         [parameter_list] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>         AS PARENT CHILD HIERARCHY( </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           SOURCE cds_view&nbsp; </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           CHILD TO PARENT ASSOCIATION _hierarchy_assoc </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [PERIOD FROM field1 TO field2 VALID FROM from TO to] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [DIRECTORY _directory_assoc FILTER BY cds_cond] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [START WHERE cds_cond] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           SIBLINGS ORDER BY field1 [ASCENDING|DESCENDING][, </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>                             field2 [ASCENDING|DESCENDING], ...] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [DEPTH depth] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [NODETYPE node_type] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [LOAD BULK|INCREMENTAL|load_option] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [MULTIPLE PARENTS {NOT ALLOWED}|LEAVES|ALLOWED] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [ORPHANS IGNORE|ERROR|ROOT] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [CYCLES ERROR|BREAKUP] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [GENERATE SPANTREE] </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>           [CACHE ON|OFF|FORCE]) </SPAN><SPAN>&nbsp;<BR /></SPAN><SPAN>     { element_list }</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></OL><P><FONT size="4"><STRONG><SPAN>In Syntax</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><STRONG><SPAN>SOURCE</SPAN></STRONG><SPAN> – Name of Source view. The mandatory addition SOURCE specifies a CDS view entity. This source must expose the hierarchy association specified after CHILD TO PARENT ASSOCIATION in its SELECT list.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><P><FONT size="4"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp; </SPAN><STRONG><SPAN>source</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>ZLR_CONN_HIERARCHY_BASE</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><STRONG><SPAN>CHILD TO PARENT ASSOCIATION</SPAN></STRONG><SPAN>: The mandatory addition CHILD TO PARENT ASSOCIATION specifies the hierarchy association who’s ON condition selects the descendant nodes of the root node set.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><P><FONT size="4"><STRONG><SPAN>&nbsp;&nbsp; </SPAN></STRONG><SPAN>&nbsp; &nbsp; &nbsp;&nbsp;</SPAN><STRONG><SPAN>child</SPAN></STRONG> <STRONG><SPAN>to</SPAN></STRONG> <STRONG><SPAN>parent</SPAN></STRONG> <STRONG><SPAN>association</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN> _parent</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><STRONG><SPAN>PERIOD FROM</SPAN></STRONG><SPAN> field1 </SPAN><STRONG><SPAN>TO</SPAN></STRONG><SPAN> field2 </SPAN><STRONG><SPAN>VALID FROM</SPAN></STRONG><SPAN> from </SPAN><STRONG><SPAN>TO</SPAN></STRONG><SPAN> to: The optional addition PERIOD defines the hierarchy as a temporal SQL hierarchy in which the hierarchy nodes are limited by an adjustment of time intervals.</SPAN><SPAN> In case</SPAN><SPAN> of </SPAN><SPAN>parameter, they </SPAN><SPAN>can be </SPAN><SPAN>different but value must be same when used in a query.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</SPAN></FONT><FONT size="4"><SPAN>&nbsp; </SPAN><STRONG><SPAN>period</SPAN></STRONG> <STRONG><SPAN>from</SPAN></STRONG><SPAN> datefrom </SPAN><STRONG><SPAN>to</SPAN></STRONG><SPAN> dateto </SPAN><STRONG><SPAN>valid</SPAN></STRONG> <STRONG><SPAN>from</SPAN></STRONG> <STRONG><SPAN>$parameters.</SPAN></STRONG><SPAN>p_date </SPAN><STRONG><SPAN>to</SPAN></STRONG> <STRONG><SPAN>$parameters.</SPAN></STRONG><SPAN>p_date&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><P><FONT size="4"><SPAN>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;OR</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><STRONG><SPAN>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;period</SPAN></STRONG> <STRONG><SPAN>from</SPAN></STRONG><SPAN> datefrom </SPAN><STRONG><SPAN>to</SPAN></STRONG><SPAN> dateto </SPAN><STRONG><SPAN>valid</SPAN></STRONG> <STRONG><SPAN>from</SPAN></STRONG> <SPAN>'20230425'</SPAN> <STRONG><SPAN>to</SPAN></STRONG> <SPAN>'20230425'</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><STRONG><SPAN>DIRECTORY</SPAN></STRONG><SPAN>: Hierarchy directory name. The optional addition DIRECTORY defines a filter condition cds_cond for the rows of the source of the hierarchy specified after SOURCE. It defines association to the header/ directory view. Filter can be defined on hierarchy directory, based on parameter. In case of time dependent hierarchy date parameters can be used to filter out the hierarchy.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><P><FONT size="4"><SPAN>&nbsp;</SPAN><STRONG><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN></STRONG><SPAN>_dir </SPAN><STRONG><SPAN>filter</SPAN></STRONG> <STRONG><SPAN>by</SPAN></STRONG><SPAN>&nbsp; hienm </SPAN><STRONG><SPAN>=</SPAN></STRONG> <STRONG><SPAN>$parameters.</SPAN></STRONG><SPAN>p_hienm1</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><STRONG><SPAN>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</SPAN></STRONG><STRONG><SPAN>and</SPAN></STRONG><SPAN> keydate </SPAN><STRONG><SPAN>=</SPAN></STRONG> <STRONG><SPAN>$parameters.</SPAN></STRONG><SPAN>p_keydate</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><STRONG><SPAN>START WHERE</SPAN></STRONG><SPAN>: The optional addition START WHERE specifies the start condition for creating the hierarchy. START WHERE can be followed by a logical expression cds_cond that selects rows from the source cds_view.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><P><FONT size="4"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp;</SPAN><STRONG><SPAN>start</SPAN></STRONG> <STRONG><SPAN>where</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp;&nbsp;</SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN>&nbsp;parentid </SPAN><STRONG><SPAN>is</SPAN></STRONG> <STRONG><SPAN>initial</SPAN></STRONG><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><STRONG><SPAN>SIBLINGS ORDER BY</SPAN></STRONG><SPAN> field1 [ASCENDING|DESCENDING]: The mandatory addition SIBLINGS ORDER BY sorts sibling nodes in the hierarchy. Default is Ascending.</SPAN><SPAN>&nbsp;</SPAN>&nbsp;</FONT></LI></UL><P><FONT size="4"><SPAN>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</SPAN><STRONG><SPAN>siblings</SPAN></STRONG> <STRONG><SPAN>order</SPAN></STRONG> <STRONG><SPAN>by</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;seqno</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><STRONG><SPAN>NODETYPE </SPAN></STRONG><SPAN>node_type: The&nbsp; NODETYPE identifies an element of the CDS hierarchy that can be used to determine the type of the hierarchy node. The values of this element must be element names, which must </SPAN><SPAN>also</SPAN><SPAN> be contained in the element list of the CDS hierarchy.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><P><FONT size="4"><SPAN>In context of Analytics, it is mandatory to define the nodetype field in the source view of the hierarchy and also in the hierarchy view using key word '</SPAN><SPAN>nodetype'</SPAN></FONT></P><P><FONT size="4"><SPAN>For example, in the Source view&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp; </SPAN><STRONG><SPAN>cast(</SPAN></STRONG><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp;</SPAN> <SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><STRONG><SPAN>case</SPAN></STRONG> <STRONG><SPAN>when</SPAN></STRONG> <SPAN>carrid</SPAN> <STRONG><SPAN>is</SPAN></STRONG> <STRONG><SPAN>initial</SPAN></STRONG> <STRONG><SPAN>and</SPAN></STRONG><SPAN> connid </SPAN><STRONG><SPAN>is</SPAN></STRONG> <STRONG><SPAN>initial</SPAN></STRONG> <STRONG><SPAN>then</SPAN></STRONG> <SPAN>'NODENAME'</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><STRONG><SPAN>when</SPAN></STRONG><SPAN> connid </SPAN><STRONG><SPAN>is</SPAN></STRONG> <STRONG><SPAN>initial</SPAN></STRONG><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><STRONG><SPAN>then</SPAN></STRONG> <SPAN>'CARRID'</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp;&nbsp;&nbsp; </SPAN><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><STRONG><SPAN>else</SPAN></STRONG> <SPAN>'CONNID'</SPAN> <STRONG><SPAN>end</SPAN></STRONG> <STRONG><SPAN>as</SPAN></STRONG> <I><SPAN>fieldname</SPAN></I> <STRONG><SPAN>)</SPAN></STRONG> <STRONG><SPAN>as</SPAN></STRONG><SPAN> nodetype</SPAN><STRONG><SPAN>,</SPAN></STRONG><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>In the Hierarchy view&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp; &nbsp; &nbsp; &nbsp;</SPAN><STRONG><SPAN>nodetype</SPAN></STRONG><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp; </SPAN><SPAN>&nbsp; &nbsp; &nbsp;nodetype</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>&nbsp;</SPAN><SPAN>More detailed information can be found here </SPAN><A href="https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abencds_f1_define_hierarchy.htm" target="_blank" rel="noopener noreferrer"><SPAN>ABAP Keyword Documentation (sap.com)</SPAN></A><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4" color="#0000FF"><STRONG><SPAN><SPAN class="">Example of </SPAN><SPAN class="">Hierarchy View</SPAN></SPAN></STRONG></FONT></P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>define hierarchy ZLR_CONN_HIERARCHY with parameters @Consumption.defaultValue: 'CNTRY' p_hieid : zoq_conhieid as parent child hierarchy( source ZLR_CONN_HIERARCHY_BASE child to parent association _parent directory _dir filter by hieid = $parameters.p_hieid start where parentid is initial siblings order by seqno nodetype nodetype ) { @ObjectModel.foreignKey.association: '_dir' key hieid, key nodeid, parentid, seqno, @ObjectModel.foreignKey.association: '_airline' carrid, @ObjectModel.foreignKey.association: '_connection' connid, @ObjectModel.foreignKey.association: '_node' nodename, nodetype, // associations defined above have to be exposed here // otherwise they will not be available _parent, _dir, _node, _airline, _connection }</code></pre><P>&nbsp;</P><P><FONT size="4" color="#0000FF"><STRONG><SPAN><SPAN class="">Out</SPAN><SPAN class="">put</SPAN></SPAN></STRONG></FONT></P><P><FONT size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LinaRaut_0-1720989908770.png" style="width: 607px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/136487iB83682D5BB21AF35/image-dimensions/607x432?v=v2" width="607" height="432" role="button" title="LinaRaut_0-1720989908770.png" alt="LinaRaut_0-1720989908770.png" /></span></FONT></P><P><FONT size="4"><FONT color="#FF0000"><SPAN>Red:</SPAN></FONT><SPAN> association _node&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><FONT color="#339966"><SPAN>Green</SPAN></FONT><SPAN><FONT color="#339966">:</FONT> association _airline</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><FONT color="#0000FF"><SPAN>Blue</SPAN></FONT><SPAN><FONT color="#0000FF">:</FONT> association _connection,</SPAN> <SPAN>the blue marked records are leaves</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><STRONG><FONT color="#0000FF"><SPAN class=""><SPAN class=""><SPAN class="">Example o</SPAN></SPAN></SPAN><SPAN class=""><SPAN class=""><SPAN class="">f Query using Hierarchy</SPAN></SPAN></SPAN></FONT></STRONG></FONT></P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AccessControl.authorizationCheck: #NOT_ALLOWED @EndUserText.label: 'ZLR_CONN - query' @Metadata.ignorePropagatedAnnotations: true define transient view entity ZLR_CONN_QUERY provider contract analytical_query as projection on ZLR_CONN { @AnalyticsDetails.query:{ axis:#ROWS, displayHierarchy: #ON , hierarchyBinding: [{ type: #CONSTANT, value: 'CNTRY' }] } connid }</code></pre><P>&nbsp;</P><P><FONT size="4" color="#0000FF"><STRONG><SPAN><SPAN class=""><SPAN class="">Output</SPAN></SPAN></SPAN></STRONG></FONT></P><P><FONT size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LinaRaut_1-1720990617543.png" style="width: 462px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/136488iDCC79DDE37ADBC00/image-dimensions/462x488?v=v2" width="462" height="488" role="button" title="LinaRaut_1-1720990617543.png" alt="LinaRaut_1-1720990617543.png" /></span></FONT></P><P><FONT size="5" color="#0000FF"><STRONG><SPAN>Hierarchy View Using @ObjectModel.dataCategory: #HIERARCHY Annotation </SPAN></STRONG><SPAN>(OLD way)</SPAN></FONT></P><P><FONT size="4"><SPAN>In View </SPAN><SPAN>definition the annotation&nbsp;</SPAN><A href="mailto:%E2%80%98@Hierarchy.parentChild%E2%80%99" target="_blank" rel="noopener nofollow noreferrer"><SPAN>@Hierarchy.parentChild </SPAN></A><SPAN>provides the information about the parent child hierarchy. It has hierarchy name, </SPAN><SPAN>multiple parents, recursion by, ordering of siblings, root node visibility, orphaned node handling, etc. along with </SPAN><SPAN>that, following association</SPAN><SPAN>s need to be defined.&nbsp; </SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><UL><LI><FONT size="4"><SPAN>Association to hierarchy view itself</SPAN> <SPAN>- </SPAN><SPAN>I</SPAN><SPAN>t defines parent child relationship.</SPAN><SPAN>&nbsp;</SPAN>&nbsp;</FONT></LI><LI><FONT size="4"><SPAN>Association to hierarchy directory</SPAN><SPAN> view</SPAN> <SPAN>-</SPAN><SPAN> I</SPAN><SPAN>t </SPAN><SPAN>contains</SPAN><SPAN> all the header information</SPAN><SPAN>, </SPAN><SPAN>hierarchy</SPAN><SPAN> Ids and the </SPAN><SPAN>descriptions</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></FONT></LI><LI><FONT size="4"><SPAN>Association to different</SPAN><SPAN> dimension/text views</SPAN> <SPAN>–</SPAN> <SPAN>I</SPAN><SPAN>t is a relation from the nodes and leaves to dimension and text views</SPAN><SPAN>.</SPAN><SPAN> Via this association </SPAN><SPAN>the text of a node/leaf is derived.</SPAN><SPAN> In the following example '</SPAN><SPAN>_</SPAN><SPAN>node'</SPAN>&nbsp;<SPAN>is</SPAN> <SPAN>first</SPAN><SPAN> level node</SPAN><SPAN>,</SPAN><SPAN>&nbsp;'_airline' acts as </SPAN><SPAN>second</SPAN><SPAN> level node </SPAN><SPAN>and '</SPAN><SPAN>_connection'</SPAN><SPAN>&nbsp;is leaf and pointing to dimension.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></LI></UL><P><FONT size="4">Important is the order of the associations listed in the element-list and the '<SPAN>extra-condition'</SPAN><SPAN> in the ON-clause. For each record of the hierarchy the ON condition of the associations is checked - the first association which meets the ON condition is used to get text and attributes for the hierarchy node/leaf</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><SPAN>One association is mandatory - its target must be the dimension view which has a </SPAN><SPAN>ObjectModel.hierarchy.association</SPAN><SPAN> to the hierarchy view. These objects in the hierarchy represent the </SPAN><SPAN>leave</SPAN><SPAN>s</SPAN><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4" color="#0000FF"><STRONG><SPAN>Example</SPAN></STRONG></FONT></P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@EndUserText.label: 'Connection Hierarchy View' @ObjectModel.dataCategory: #HIERARCHY @Hierarchy.parentChild: [{ name : 'ConnectionHierarchy', label : 'Connection', siblingsOrder: [{ by: 'seqno' }] , recurseBy : '_parent', directory: '_dir' }] define view entity ZLR_CONNECTION_HIERARCHY as select from zoq_connid_h // basic parent child relation inside one hierarchy // hierarchy uniquely selected (see @Filter for field HIEID association [0..1] to ZLR_CONNECTION_HIERARCHY as _parent on $projection.parentid = _parent.nodeid // necessary if view represents several hierarchies // association to the hierarchy directory association [1] to ZLR_CONNECTION_HIERARCHY_DIR as _dir on $projection.hieid = _dir.hieid // associations to the different node types // evalulated at runtime for each record in the order given here // first hit of ON-condition is followed association [1] to ZOQ_CONNECTION_NODENAME as _node on $projection.hieid = _node.hieid and $projection.nodename = _node.nodeName and $projection.carrid = '' and $projection.connid = '0000' // "nodatetype" Airline association [1] to ZOQ_AIRLINE as _airline on $projection.carrid = _airline.carrid and $projection.connid = '0000' // For which dimension this hierarchy belongs association [1] to ZLR_CONNECTION as _connection on $projection.carrid = _connection.carrid and $projection.connid = _connection.connid { @Consumption.filter: { mandatory : true, selectionType : #SINGLE, multipleSelections : false } @ObjectModel.foreignKey.association: '_dir' key hieid, key nodeid, parentid, seqno, // three different node types possible in this example // here CONNID is leaf (can not be derived from this view) @ObjectModel.foreignKey.association: '_airline' carrid, @ObjectModel.foreignKey.association: '_connection' connid, @ObjectModel.foreignKey.association: '_node' nodename, // associations defined above have to be exposed here // otherwise they will not be available _parent, _dir, _node, _airline, _connection } </code></pre><P>&nbsp;</P><P>&nbsp;</P><P><FONT size="4" color="#0000FF"><STRONG><SPAN class=""><SPAN class="">Output</SPAN></SPAN></STRONG></FONT></P><P><FONT size="4"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LinaRaut_1-1720985929330.png" style="width: 613px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/136486iE4D5634C7709FE25/image-dimensions/613x544?v=v2" width="613" height="544" role="button" title="LinaRaut_1-1720985929330.png" alt="LinaRaut_1-1720985929330.png" /></span></FONT></P><P><FONT size="4"><FONT color="#FF0000"><SPAN>Red:</SPAN></FONT><SPAN> association _node&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><FONT color="#008080"><SPAN>Green</SPAN></FONT><SPAN><FONT color="#008080">: </FONT>association _airline</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4"><FONT color="#0000FF"><SPAN>Blue</SPAN></FONT><SPAN><FONT color="#0000FF">:</FONT> association _connection, the blue marked records are leaves</SPAN><SPAN>&nbsp;</SPAN></FONT></P><P>&nbsp;</P><P><FONT size="4"><FONT color="#0000FF"><STRONG><SPAN>Reference</SPAN></STRONG></FONT><SPAN>&nbsp;</SPAN></FONT></P><P><FONT size="4">More information on @Semantics.signReversalIndicator&nbsp;can be found in the <A href="https://community.sap.com/t5/technology-blogs-by-sap/cds-view-hierarchy-node-sign-reversal/ba-p/13599337" target="_blank">blog.</A>&nbsp;</FONT></P><P><FONT size="4"><SPAN>&nbsp;</SPAN></FONT></P><P>&nbsp;</P><P>&nbsp;</P> 2024-07-17T14:18:20.286000+02:00 https://community.sap.com/t5/application-development-blog-posts/sap-developer-news-july-25th-2024/ba-p/13772205 SAP Developer News, July 25th, 2024 2024-07-25T21:10:00.054000+02:00 thomas_jung https://community.sap.com/t5/user/viewprofilepage/user-id/139 <P><div class="video-embed-center video-embed"><iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FvmCGBiY07Do%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DvmCGBiY07Do&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FvmCGBiY07Do%2Fhqdefault.jpg&amp;key=b0d40caa4f094c68be7c29880b16f56e&amp;type=text%2Fhtml&amp;schema=youtube" width="400" height="225" scrolling="no" title="SAP Developer News" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div></P><P>Podcast Version: <A href="https://podcast.opensap.info/sap-developers/2024/07/25/sap-developer-news-july-25th-2024/" target="_blank" rel="nofollow noopener noreferrer">https://podcast.opensap.info/sap-developers/2024/07/25/sap-developer-news-july-25th-2024/</A></P><H3 id="toc-hId-1150235398">DESCRIPTION</H3><P><STRONG>ABAP CDS TechByte Series</STRONG></P><UL><LI>ABAP CDS TechBytes – <A href="https://www.youtube.com/playlist?list=PL6RpkC85SLQC3HBShmlMaPu_nL--4f20z" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/playlist?list=PL6RpkC85SLQC3HBShmlMaPu_nL--4f20z</A></LI></UL><P><STRONG>SAP Build Code July Updates</STRONG></P><UL><LI>Product Updates for SAP Build Code – July 2024 Edition <A href="https://community.sap.com/t5/technology-blogs-by-sap/product-updates-for-sap-build-code-july-2024-edition/ba-p/13764559" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/product-updates-for-sap-build-code-july-2024-edition/ba-p/13764559</A></LI></UL><P><STRONG>July Developer Challenge reminder</STRONG></P><UL><LI>Blog post (containing links to each of the tasks) <A href="https://community.sap.com/t5/application-development-blog-posts/july-developer-challenge-quot-reverse-apis-quot/ba-p/13749653" target="_blank">https://community.sap.com/t5/application-development-blog-posts/july-developer-challenge-quot-reverse-apis-quot/ba-p/13749653</A></LI></UL><P><STRONG>UI5 Tooling 4.0 and Code Connect recordings:</STRONG></P><UL><LI>UI5 Tooling 4.0: <A href="https://community.sap.com/t5/technology-blogs-by-sap/ui5-tooling-4-0/ba-p/13769578" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/ui5-tooling-4-0/ba-p/13769578</A></LI><LI>reCAP Recordings: <A href="https://recap-conf.dev/" target="_blank" rel="nofollow noopener noreferrer">https://recap-conf.dev/</A></LI><LI>ui5Con Recordings: <A href="https://openui5.org/ui5con/germany2024/" target="_blank" rel="nofollow noopener noreferrer">https://openui5.org/ui5con/germany2024/</A></LI><LI>ABAPConf Recordings: <A href="https://abapconf.org/abapconfeurope2024/" target="_blank" rel="nofollow noopener noreferrer">https://abapconf.org/abapconfeurope2024/</A></LI></UL><P><STRONG>CAP #GoodToKnow Shorts Series</STRONG></P><UL><LI>Modeling many-to-many associations #SAPCAP #GoodToKnow – YouTube <A href="https://www.youtube.com/shorts/yGg3YD1weIA" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/shorts/yGg3YD1weIA</A></LI><LI>Series Playlist: <A href="https://www.youtube.com/playlist?list=PL6RpkC85SLQDZ18v94otZSJJrpcNkPPV9" target="_blank" rel="nofollow noopener noreferrer">https://www.youtube.com/playlist?list=PL6RpkC85SLQDZ18v94otZSJJrpcNkPPV9</A></LI></UL><P>================================================</P><H3 id="toc-hId-953721893">CHAPTER TITLES</H3><P>0:00 Intro</P><P>0:10 ABAP CDS TechByte Series</P><P>1:01 SAP Build Code July Updates</P><P>2:48 July Developer Challenge reminder</P><P>3:58 UI5 Tooling 4.0 and Code Connect recordings</P><P>4:55 CAP #GoodToKnow Shorts Series&nbsp;</P><H3 id="toc-hId-757208388">TRANSCRIPTION</H3><P><STRONG>[Shilpa]</STRONG> Hello SAP developers, I'm sure by now you would have seen the new TechByte series on ABAP Core Data Services. If not, here's a quick recap. Myself and developer advocate Sheena will walk you through the basics of ABAP CDS, covering the overview and key functionality, how a virtual element with complex logic can be created, extend a CDS View Entity, restrict the data authorizations using CDS Access Control, govern the quality of CDS Views using unit test, and troubleshooting tools available to analyze the data of CDS Views. I will leave the link to the ten-part videos in the description. Not just that, the advanced features of ABAP CDS will be coming up, so stay tuned.</P><P><STRONG>[Thomas]</STRONG> First shipped earlier this year, we have the introduction of SAP Build Code. This is the AI-powered latest version of SAP's development environment based upon the SAP Business Application Studio. This month we see enhancements to SAP Build Code, many of which are based right upon your feedback from initial use of Build Code. Most of the enhancements focus on the Joule AI integration.</P><P>First of all, we've made it easier to get to the Joule Assistant from within the storyboard and the graphical navigation tools of the CAP designer itself. The part that I'm most excited about is originally Joule integration in SAP Build Code was really focused on creating new CAP entities. So very useful when you're first starting your project. But we've heard your feedback and we've added a lot of new functionality that also lets you alter an existing CAP data model. So you can add new entities, add or remove associations, and make these changes to an existing model all using the same AI assistant that you've been using to start your projects. In addition to this major enhancement for the AI capabilities, we also see the addition of a guided assistant for Fiori development as well as a new graphical HDBGrants editor as well. So be sure to check out all the latest enhancements to SAP Build Code with the link in the show notes to the blog post that details them.</P><P><STRONG>[DJ]</STRONG> The SAP Developer Challenge this month is well on the way. The challenge is called Reverse APIs, and it's all about you creating, creating CAP-based services and API endpoints for us to call and validate. We're about three quarters of the way through the challenge. There are 12 tasks altogether. So it sounds about right for this time of the month. So far, we've been digging into defining and implementing actions and functions in a couple of simple services across the REST protocol and the OData protocol adapters. And now we're moving more into a sort of Northwind-based service scenario, where we can try and flex our Odata muscles a bit more. It's not too late to get started. There's plenty of discussion and help in the SAP Community Platform for each of the tasks. So what are you waiting for? Head over to the SAP Community. The blog post link is in the description and get going.</P><P><STRONG>[Nico]</STRONG> Hi everyone, and welcome to the SAP Developer News. The UI5 team just released version four of the UI5 tooling, which comes with some handy new features as well as paving the road for UI5 version 2.x, which is still in the works, but hopefully available soon. One of the new features is that the tooling can now generate the supported locales property of the manifest.json. So no more ugly 404s in production. Check out the blog post linked in the description for more information. On a related note, we would like to point our attention to the recordings of {CodeConnect}. They're now available on YouTube. So for UI5Con, reCAP, and ABAPConf, there are a lot of recordings available so you can check out the sessions on YouTube in your own time. Use the summer break wisely. All right, hope to see you soon, and bye.</P><P><STRONG>[Thomas]</STRONG> I wanted to draw your attention to the recent series of YouTube Shorts, all with the tag #GoodToKnow. These are created by our fellow developer advocate, DJ Adams, and look at the basics of the SAP Cloud Application Programming Model. They do it in short 60-second chunks, and all formatted for easy consumption on a mobile device. This makes it easy to learn on the go, or just for those of you looking for some basic, but great CAP knowledge that you can consume in small, bite-sized chunks. In the most recent episode, DJ talks about many-to-many associations in the Cloud Application Programming Model. It's a concept that I thought would be difficult to explain and understand in 60 seconds, but DJ does a perfect job of it. So be sure to check out that latest video and the entire Good to Know series if you wanna learn more about the SAP Cloud Application Programming Model.</P> 2024-07-25T21:10:00.054000+02:00