https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/ABAP-Cloud-blog-posts.xml SAP Community - ABAP Cloud 2024-05-10T11:00:01.126327+00:00 python-feedgen ABAP Cloud blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-sap/how-to-create-a-value-help-for-custom-and-released-domain-fixed-values/ba-p/13605706 How to create a value help for custom and released domain fixed values? 2024-02-15T02:15:22.925000+01:00 Andre_Fischer https://community.sap.com/t5/user/viewprofilepage/user-id/55 <H2 id="toc-hId-986153060">Introduction</H2><P>For creating value helps based on domain fixed values in ABAP Cloud the recommendation so far was to create custom CDS views based on the released CDS views&nbsp;DDCDS_CUSTOMER_DOMAIN_VALUE&nbsp; and&nbsp;DDCDS_CUSTOMER_DOMAIN_VALUE_T.&nbsp;</P><P>The drawback of this solution is&nbsp;</P><OL><LI>that you have to create dedicated CDS views for each domain and</LI><LI><SPAN>that the aforementioned CDS views only work for domains that reside in software components owned by customers.&nbsp;</SPAN></LI></OL><P>Based on a question in a forum of the German SAP user group DSAG where the question was raised whether there is no alternative solution I thought again about this requirement.&nbsp;</P><P>Instead of using CDS views it is possible just use one single custom entity which uses RTTI to retrieve the domain fixed values.</P><H2 id="toc-hId-789639555">Result</H2><P>When adding the new value help to the projection view as follows:</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code> @Consumption.valueHelpDefinition: [{ entity: { name : 'ZI_DOMAIN_FIX_VAL' , element: 'low' } , additionalBinding: [{ element: 'domain_name', localConstant: 'BEL_API_RETCODE', usage: #FILTER }] , distinctValues: true }] Low,</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>We get the following result:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="domain_fix_value_help_result.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71872iE19ADCE47313411E/image-size/large?v=v2&amp;px=999" role="button" title="domain_fix_value_help_result.png" alt="domain_fix_value_help_result.png" /></span></P><H2 id="toc-hId-593126050">Implementation</H2><P>The challenge to get this to work with just one custom entity is, to provide the name of the domain that is used as a value help via additional binding.&nbsp;</P><P>This can be achieved by using <STRONG>localConstant</STRONG> key word&nbsp;<SPAN>&nbsp;and in addition it needs the <STRONG>usage</STRONG> parameter set to <STRONG>#FILTER</STRONG>. This way we can specify the name of the domain whose domain fixed values shall be used within the coding.</SPAN></P><P><SPAN>Be careful !</SPAN></P><P><SPAN>It doesn't work if the element ("domain_name" in this case) is hidden in the Value Help CDS View (e.g. through "UI.hidden: true").</SPAN></P><H3 id="toc-hId-525695264">Custom Entity</H3><P>The DDL source code of the custom entity looks like this:</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@EndUserText.label: 'Get domain fix values' @ObjectModel.resultSet.sizeCategory: #XS @ObjectModel.query.implementedBy: 'ABAP:ZCL_GET_DOMAIN_FIX_VALUES' define custom entity ZI_DOMAIN_FIX_VAL { @EndUserText.label : 'domain name' @UI.hidden : true key domain_name : sxco_ad_object_name; @UI.hidden : true key pos : abap.numc( 4 ); @EndUserText.label : 'lower_limit' low : abap.char( 10 ); @EndUserText.label : 'upper_limit' high : abap.char(10); @EndUserText.label : 'Description' description : abap.char(60); }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><H3 id="toc-hId-329181759">Query implementation class</H3><P>And the code of the query implementation class is as follows:</P><P>The domain name is retrieved from the filter that is filled via the additional binding.</P><P>Once the domain name has been retrieved the domain fixed values are being retrieved using RTTI&nbsp;as described in the following blog post&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-members/fetching-texts-for-domain-fixed-values/ba-p/13578443" target="_blank">Fetching texts for domain fixed values - SAP Community</A>&nbsp;by&nbsp;<A href="https://community.sap.com/t5/user/viewprofilepage/user-id/8484" target="_self">Michał Badura</A>.</P><P>Another option would be to use the XCO library.&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>CLASS zcl_get_domain_fix_values DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_rap_query_provider. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_get_domain_fix_values IMPLEMENTATION. METHOD if_rap_query_provider~select. DATA business_data TYPE TABLE OF zi_domain_fix_val . DATA business_data_line TYPE zi_domain_fix_val . DATA(top) = io_request-&gt;get_paging( )-&gt;get_page_size( ). DATA(skip) = io_request-&gt;get_paging( )-&gt;get_offset( ). DATA(requested_fields) = io_request-&gt;get_requested_elements( ). DATA(sort_order) = io_request-&gt;get_sort_elements( ). DATA domain_name TYPE sxco_ad_object_name . DATA pos TYPE i. TRY. DATA(filter_condition_string) = io_request-&gt;get_filter( )-&gt;get_as_sql_string( ). DATA(filter_condition_ranges) = io_request-&gt;get_filter( )-&gt;get_as_ranges( ). READ TABLE filter_condition_ranges WITH KEY name = 'DOMAIN_NAME' INTO DATA(filter_condition_domain_name). IF filter_condition_domain_name IS NOT INITIAL. domain_name = filter_condition_domain_name-range[ 1 ]-low. ELSE. "do some exception handling io_response-&gt;set_total_number_of_records( lines( business_data ) ). io_response-&gt;set_data( business_data ). EXIT. ENDIF. business_data_line-domain_name = domain_name . CAST cl_abap_elemdescr( cl_abap_typedescr=&gt;describe_by_name( domain_name ) )-&gt;get_ddic_fixed_values( EXPORTING p_langu = sy-langu RECEIVING p_fixed_values = DATA(fixed_values) EXCEPTIONS not_found = 1 no_ddic_type = 2 OTHERS = 3 ). IF sy-subrc &gt; 0. "do some exception handling io_response-&gt;set_total_number_of_records( lines( business_data ) ). io_response-&gt;set_data( business_data ). EXIT. ENDIF. LOOP AT fixed_values INTO DATA(fixed_value). pos += 1. business_data_line-pos = pos. business_data_line-low = fixed_value-low . business_data_line-high = fixed_value-high. business_data_line-description = fixed_value-ddtext. APPEND business_data_line TO business_data. ENDLOOP. IF top IS NOT INITIAL. DATA(max_index) = top + skip. ELSE. max_index = 0. ENDIF. SELECT * FROM business_data AS data_source_fields WHERE (filter_condition_string) INTO TABLE business_data UP TO max_index ROWS. IF skip IS NOT INITIAL. DELETE business_data TO skip. ENDIF. io_response-&gt;set_total_number_of_records( lines( business_data ) ). io_response-&gt;set_data( business_data ). CATCH cx_root INTO DATA(exception). DATA(exception_message) = cl_message_helper=&gt;get_latest_t100_exception( exception )-&gt;if_message~get_longtext( ). DATA(exception_t100_key) = cl_message_helper=&gt;get_latest_t100_exception( exception )-&gt;t100key. "do some exception handling ENDTRY. ENDMETHOD. ENDCLASS.</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-02-15T02:15:22.925000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/bring-your-own-git-for-sap-btp-abap-environment/ba-p/13585439 Bring your own Git for SAP BTP ABAP Environment 2024-02-18T10:00:00.024000+01:00 christoph_pohl https://community.sap.com/t5/user/viewprofilepage/user-id/194384 <P>Since its <A href="https://blogs.sap.com/2018/09/04/sap-cloud-platform-abap-environment/" target="_blank" rel="noopener noreferrer">first announcement</A>, <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>&nbsp; (a.k.a. <A href="https://blogs.sap.com/2019/08/20/its-steampunk-now/" target="_blank" rel="noopener noreferrer">Steampunk</A>) has been using git-based repositories for customer lifecycle management under the hood. However, customer developers have hardly ever noticed this in daily work, and despite <A href="https://blogs.sap.com/2019/11/14/gcts-is-here/" target="_blank" rel="noopener noreferrer">gCTS</A>&nbsp;being used internally, it was hard to tap into the benefits of a git-based lifecycle. This now changes with the 2402 release of SAP BTP ABAP Environment.</P><P>You will be able to choose your own git service provider and thus also connect CI/CD pipelines (cf. <A href="https://blogs.sap.com/2020/10/22/ci-cd-tools-for-sap-cloud-platform-abap-environment/" target="_blank" rel="noopener noreferrer">CI/CD Tools for SAP BTP ABAP Environment</A>) of your choice directly to the commit hooks of that service.</P><P>&nbsp;</P><H1 id="toc-hId-835826571">Prerequisites</H1><P>First, you need to create a new git repository with an initial commit and branch &nbsp;at the git service of your choice. We have used GitHub in our example below. The repository must be accessible from the internet, i.e., not hidden behind a firewall. You need a user with permissions to clone, pull, and push the chosen repository. Lastly, the SAP BTP ABAP systems you want to connect (e.g., dev, test, prod) all need to belong to the same global account.</P><P>&nbsp;</P><H1 id="toc-hId-639313066">Create and clone a new Software Component</H1><P>You log on to the SAP Fiori Launchpad of your development system with a user holding a business role from template id SAP_BR_ADMINISTRATOR and go to the <STRONG>Manage Software Components</STRONG> app to create a new software component. With release 2402 you will notice the additional, optional <STRONG>Repository URL</STRONG> field on the <STRONG>New Software Component</STRONG> dialog:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_0-1706542646691.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55086i0623BF09669901C7/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_0-1706542646691.png" alt="christoph_pohl_0-1706542646691.png" /></span></P><P>As the name suggests, here you enter the URL of your initially empty git repository that your software component shall be connected to.&nbsp;The repo must already have an initial branch, usually „main“. Otherwise the user cannot clone the repository. In this case the user will see a „No branches were found. Please create a branch before cloning.“ message in the clone popup.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_1-1706542646707.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55088i38B9080CDB1B5C3A/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_1-1706542646707.png" alt="christoph_pohl_1-1706542646707.png" /></span></P><P>You will see the resulting software component as available in the <STRONG>Manage Software Components</STRONG> app. The connection to your git repository is registered but not yet locally cloned.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_2-1706542646718.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55087i248EB073BEAE7C2A/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_2-1706542646718.png" alt="christoph_pohl_2-1706542646718.png" /></span></P><P>Next step is to clone the remote git repository to your app server’s local filesystem from where the objects will be imported into the ABAP runtime. You need to provide user credentials with sufficient privileges for this purpose on the first page of the <STRONG>Clone Software Component</STRONG> dialog. After the credentials have been validated, you must select a branch to be checked out and decide on the local role of your repository. For development systems, choose the role “Source” so that you can also push from your system to the remote repository.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_3-1706542646726.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55090i346F5D75E154C100/image-size/medium?v=v2&amp;px=400" role="button" title="christoph_pohl_3-1706542646726.png" alt="christoph_pohl_3-1706542646726.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_4-1706542646733.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55091i5B11E171D13601C7/image-size/medium?v=v2&amp;px=400" role="button" title="christoph_pohl_4-1706542646733.png" alt="christoph_pohl_4-1706542646733.png" /></span></P><P>Once you are done, you will see a new commit on your remote repository that has written a new file “<FONT face="courier new,courier">.gcts.properties.json</FONT>”. This file must not be deleted because it stores essential configuration data for gCTS.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_5-1706542646737.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55089i9656F1E0693BF679/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_5-1706542646737.png" alt="christoph_pohl_5-1706542646737.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-442799561">Branching</H1><P>Afterwards you need to pull the branch of your choice using the <STRONG>Manage Software Components</STRONG> app. It is important that your branches always contain the aforementioned “<FONT face="courier new,courier">.gcts.properties.json</FONT>” file created by the commit titled “Modify repository layout”. Otherwise, you will not be able to pull this branch to your system. Then you are ready to start some development.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_6-1706542646758.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55093i55DC8E7561F5DBBE/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_6-1706542646758.png" alt="christoph_pohl_6-1706542646758.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-246286056">Develop and release transports</H1><P>As a developer you can now create some objects in ABAP Development Tools for Eclipse (ADT) underneath the structure package corresponding to the name of your software component. Changes will be recorded in tasks of transport requests as usual. Release them when you are ready with your development.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_7-1706542646786.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55094iF31708C1DB8F9350/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_7-1706542646786.png" alt="christoph_pohl_7-1706542646786.png" /></span></P><P>As soon as you have released a transport request, a new commit will become visible in your remote git repository on the active branch that you have chosen. You will notice that new files and folders have been created there.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_8-1706542646790.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55092i75E1078A0EF93BDC/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_8-1706542646790.png" alt="christoph_pohl_8-1706542646790.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId-49772551">Pull into target system</H1><P>To import your released transport into a target system (e.g., your test or production system), your administrator must clone the same software component to the desired system. The only difference is the “Repository Role”, which now must be set to “Target”. After pulling the corresponding commit to the system, the changes will be imported to the ABAP runtime.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_9-1706542646794.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55097i612176813C1F2796/image-size/medium?v=v2&amp;px=400" role="button" title="christoph_pohl_9-1706542646794.png" alt="christoph_pohl_9-1706542646794.png" /></span></P><P>&nbsp;</P><H1 id="toc-hId--146740954">Fingerprints and external changes</H1><P>Now let’s have a closer look at the details of the files written to git.</P><P>Besides the metadata and sources, a file <FONT face="courier new,courier">FINGERPRINT.json</FONT> is written for every transported object. It contains fingerprints for every include file of the object, which will be validated in the target system during pull from git.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_10-1706542646800.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55095i0C8F7F7157C308CC/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_10-1706542646800.png" alt="christoph_pohl_10-1706542646800.png" /></span></P><P>This fingerprint is calculated from the content hash of your file and a secret that is only known internally to ABAP Cloud systems of your global account. The following picture gives an overview.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_11-1706542646804.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55098i06858354378514FF/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_11-1706542646804.png" alt="christoph_pohl_11-1706542646804.png" /></span></P><P>This ensures that only commits pushed (and validated) from ABAP Cloud systems can be pulled to target systems. Otherwise, stability of target systems could be jeopardized when external changes from git that have not passed ABAP Cloud allow-list checks and consistency rules are inadvertently imported. This is especially important for production systems.</P><P>Now let’s check what happens when you try pull an external commit. Therefore, let’s arbitrarily change some file directly in your git service.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_12-1706542646807.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55099i23D0710DC0125FD7/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_12-1706542646807.png" alt="christoph_pohl_12-1706542646807.png" /></span></P><P>When trying to pull this into one of the ABAP Cloud systems in your account via the Manage Software Components app, you will receive an error in the Execution Log.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_13-1706542646817.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55101iEF1AB8DD3B995ED3/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_13-1706542646817.png" alt="christoph_pohl_13-1706542646817.png" /></span></P><P>You can further drill down into the transport logs to finally see that there was an exception when matching the fingerprints of pulled files.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="christoph_pohl_14-1706542646824.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55100i0B6705E10D3E4758/image-size/large?v=v2&amp;px=999" role="button" title="christoph_pohl_14-1706542646824.png" alt="christoph_pohl_14-1706542646824.png" /></span></P><P>To recover from this situation, you must revert the conflicting commit on your remote repository. It is important that the fingerprints match again to the files as originally exported from your development system, before pulling again to an ABAP Cloud system.</P><P>&nbsp;</P><H1 id="toc-hId--343254459">Outlook</H1><P>Being able to edit ABAP sources with external tools would have a lot of benefits, e.g., for conflict resolution after merging or cherry-picking. For the future, the idea is to allow also external changes by falling back to an inactive import in case of mismatching fingerprints. This will ensure that all necessary ABAP Cloud checks are conducted when activating the objects again in the importing (development) system.</P><P>Another restriction is that there is currently no straightforward possibility to migrate existing applications to your own git repository, especially when it has already been deployed to production. This feature is of course also high on the wish list.</P><P>&nbsp;</P><H1 id="toc-hId--539767964">Further Information</H1><UL><LI>SAP Help on <A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/how-to-configure-your-git-repository" target="_blank" rel="noopener noreferrer">How to Configure Your Git Repository</A></LI><LI>Tutorial on <A title="ByoG tutorial" href="https://developers.sap.com/tutorials/abap-environment-gcts-byog.html" target="_blank" rel="noopener noreferrer">Transport a Software Component Between two Systems Using Any Git Repository</A> (BYOG)</LI></UL><P>&nbsp;</P> 2024-02-18T10:00:00.024000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-release-2402/ba-p/13616379 SAP BTP ABAP Environment – Release 2402 2024-02-22T23:14:19.045000+01:00 FlorianWahl https://community.sap.com/t5/user/viewprofilepage/user-id/9127 <P>As follow-up to our previous release <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-release-2311/ba-p/13580795" target="_blank">2311</A>, this blog post provides an update concerning our most recent release 2402, which is available for customers and partners since last weekend. This particular release features highlights such as a Bring-your-own-Git capability, support for Enterprise Search and Data Replication from ABAP.</P><P>All available new features can be found on the&nbsp;<A href="https://help.sap.com/whats-new/cf0cb2cb149647329b5d02aa96303f56?Environment=ABAP&amp;sel4=ABAP&amp;from=2021-02-19&amp;locale=en-US&amp;Valid_as_Of=2024-02-01%3A2024-02-18&amp;Component=ABAP%20Environment" target="_blank" rel="noopener noreferrer">official release notes&nbsp;</A>page.</P><P><STRONG>Bring-your-own git</STRONG></P><P>You can now connect own Git repositories to your ABAP environment system via the Manage Software Components app. This allows you to manage the lifecycle of software components in a customer-chosen Git service as well as to connect custom CI/CD services. Please note that changes to the code in Git are only allowed through transport requests in the system (<A href="https://community.sap.com/t5/technology-blogs-by-sap/bring-your-own-git-for-sap-btp-abap-environment/ba-p/13585439" target="_blank">details</A>).</P><P><STRONG>Enterprise Search</STRONG></P><P>With enterprise search, it is possible to create a CDS-based search model via enterprise search annotations. These annotations refer to a suitable CDS view entity which can be either reused or created from scratch (<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>).</P><P><STRONG>Data Replication with ABAP as a Source</STRONG></P><P>The ABAP environment can now be used as source for data replication to SAP Datasphere. The replication scenario covers both initial load and delta extraction as well as replication from public and custom CDS view entities (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/data-consumption-using-sap-datasphere" target="_blank" rel="noopener noreferrer">details</A>).</P><P><STRONG>SOAP Provider Model</STRONG></P><P>The SOAP Provider Model now allows you to expose SOAP services for inbound communication. The description of the service is done via a WSDL file (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/generate-provider-proxies-from-wsdl-files?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>).</P><P><STRONG>ABAP Development Tools</STRONG></P><UL><LI>Support for SAP-provided&nbsp;<STRONG>CDS aspects to store field definitions </STRONG>and<STRONG> calculations</STRONG>, such as CDS expressions</LI><LI>Support for <STRONG>displaying system client in editor tab </STRONG>(<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/version-3-40?version=sap_btp#loiob1dcf6dcfee048d2b9c7ed2985667931__section_system_client" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Enhancements to the <STRONG>refactoring functionality for ABAP classes </STRONG>and <STRONG>interfaces</STRONG> (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/version-3-40?version=sap_btp#loiob1dcf6dcfee048d2b9c7ed2985667931__section_refactoring_rename" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Availability of the <STRONG>server-driven UI editor</STRONG> for <STRONG>ILM objects</STRONG> (ILMB) (<A href="https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/working-with-ilm-objects?version=s4hana_cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI></UL><P><STRONG>ABAP RESTful Application Programming Model</STRONG></P><UL><LI>Support for the <STRONG>definition of static and instance feature control</STRONG> for <STRONG>fields</STRONG> which have been added for <STRONG>key user extensibility</STRONG></LI><LI>Support for <STRONG>generating custom OData UI services based on RAP BO interfaces</STRONG> using a generator wizard</LI></UL><P><STRONG>Administration</STRONG><STRONG> &amp; Operations</STRONG></P><UL><LI>Support for <STRONG>displaying and analyzing ABAP runtime errors</STRONG> with the new ABAP Runtime Errors app (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/displaying-and-analyzing-abap-runtime-errors?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI><SPAN>Support for <STRONG>displaying dependency of scope items</STRONG> in <STRONG>business role templates</STRONG> (</SPAN><A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/business-role-templates?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A><SPAN>)</SPAN></LI><LI>Support for <STRONG>displaying components </STRONG>to which a<STRONG> restriction type </STRONG>belongs to create incidents (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/display-restriction-types?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>using additional metrics for e-mail transmissions</STRONG> and <STRONG>changes to database table entries</STRONG> in the Health Monitoring app (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/local-health-monitoring?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for<STRONG> using additional metric for e-mail transmissions</STRONG> in <STRONG>SAP Cloud ALM </STRONG>(<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/central-health-monitoring-using-sap-focused-run-and-sap-cloud-alm?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>copying restrictions from a deprecated restriction type </STRONG>using Mass Change Wizard (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/maintain-business-roles-new-preview?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>, <A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/how-to-compare-business-roles?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>monitoring system workload</STRONG> with focus on metrics such as ABAP and HANA CPU time as well as processing time (<A href="https://help.sap.com/docs/btp/technical-monitoring-cockpit-cloud-version/navigating-from-system-workload-to-individual-abap-statistics-records?locale=en-US" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Enhancements to the <STRONG>monitoring screens</STRONG> for <STRONG>sampled work process data</STRONG> (<A href="https://help.sap.com/docs/btp/technical-monitoring-cockpit-cloud-version/sampled-work-process-data-abap-cpu-time?locale=en-US" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>merging</STRONG> of <STRONG>spaces</STRONG> or <STRONG>pages</STRONG> in the <STRONG>SAP Fiori Launchpad</STRONG> via respective apps</LI></UL><P><STRONG>Continuous Integration and Delivery</STRONG></P><UL><LI>Support for <STRONG>MANAGE_SOFTWARE_COMPONENTS API</STRONG> to work with <STRONG>software components</STRONG> on ABAP Environment systems</LI></UL><P><STRONG>Infrastructure</STRONG></P><UL><LI>Support for <STRONG>elastic scaling </STRONG>of application servers (<A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-elastic-scaling-of-application-servers/ba-p/13614903" target="_blank">blog post</A> and <A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/creating-abap-system?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI></UL><P><STRONG>Integration &amp;&nbsp;</STRONG><STRONG>Connectivity</STRONG></P><UL><LI>Support for <STRONG>adding the AIR key to a SOAP request</STRONG> in the HTTP header (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/add-air-key-to-soap-request-in-http-header?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for <STRONG>configuring event filters</STRONG> for outbound event topics via Enterprise Event Enablement - Maintain Event Channel Binding app (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/maintain-filters-for-outbound-event-topics?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for<STRONG> integrating enterprise event enablement</STRONG> with Advanced Event Mesh service plan (<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/integration-with-advanced-mesh-service-plan-for-service-cloud?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A>)</LI><LI>Support for the specification of <STRONG>customized OAuth scopes</STRONG> in <STRONG>communication arrangements</STRONG></LI><LI>Availability of the <STRONG>new function module </STRONG><SPAN><STRONG>RS_ABAP_GET_NAMETAB_INFOS_E </STRONG></SPAN><SPAN>in <STRONG>ATC scenarios</STRONG></SPAN><SPAN>, which comes with new versions of the source code extractor notes bundled in the SAP Note (</SPAN><A href="https://help.sap.com/docs/link-disclaimer?site=https%3A%2F%2Fme.sap.com%2Fnotes%2F2270689" target="_blank" rel="noopener noreferrer">details</A><SPAN>)</SPAN></LI><LI><SPAN>Support for <STRONG>Refresh Allowed checkbox</STRONG> and <STRONG>Refresh Token Expiry Time</STRONG> in communication systems (</SPAN><A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/communication-systems?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A><SPAN>)</SPAN></LI><LI><SPAN>Support for <STRONG>displaying dependency of scope items </STRONG>in <STRONG>communication scenarios</STRONG> (</SPAN><A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/display-communication-scenarios?locale=en-US&amp;version=Cloud" target="_blank" rel="noopener noreferrer">details</A><SPAN>)</SPAN></LI></UL><P><STRONG>Additional Information</STRONG></P><P>You can find the 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 technical documentation, please refer to our&nbsp;<A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/abap-environment" target="_blank" rel="noopener noreferrer">Standalone Documentation</A>.</P><P>Please refer to&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 about planned features as part of the product roadmap.</P><P>As always, please let us know if you have questions.</P><P>Stay healthy and take care!</P><P>&nbsp;</P> 2024-02-22T23:14:19.045000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/customer-amp-partner-roundtable-for-sap-btp-abap-environment-10/ba-p/13621247 Customer & Partner Roundtable for SAP BTP ABAP Environment #10 2024-02-27T18:59:52.646000+01:00 iwona_hahn https://community.sap.com/t5/user/viewprofilepage/user-id/4326 <H2 id="toc-hId-987876258"><STRONG><span class="lia-unicode-emoji" title=":light_bulb:">💡</span>&nbsp;</STRONG><STRONG>Update </STRONG></H2><P>Thanks for joining our last roundtable. If you weren’t able to join, you can find the slides and the <STRONG>recording from March 19th</STRONG>&nbsp;and all the previous sessions in this <A href="https://github.com/iwonahahn/SAP-BTP-ABAP-Environment-Roundtable/blob/main/README.md#roundtable-10---2024-03-19" target="_blank" rel="noopener nofollow noreferrer">GitHub repository</A>.</P><H5 id="toc-hId-1178610910"><STRONG>References shared in the roundtable:&nbsp;</STRONG></H5><UL class=""><LI><SPAN class=""><A href="https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/working-with-abapgit" target="_blank" rel="noopener noreferrer"><SPAN class="">Working with abapGit</SPAN></A></SPAN></LI><LI><SPAN class=""><A href="https://community.sap.com/t5/technology-blogs-by-sap/important-update-changes-to-the-free-tier-option-for-sap-btp-abap/ba-p/13592731" target="_blank"><SPAN class="">Important Update: Changes to the Free Tier Option</SPAN></A></SPAN></LI><LI><SPAN class=""><A href="https://blogs.sap.com/2024/01/10/optimize-your-sap-btp-abap-environment-budget-a-detailed-cost-analysis-for-customers/" target="_blank" rel="noopener noreferrer"><SPAN class="">Optimize Your SAP BTP ABAP Environment Budget | Blog Post</SPAN></A></SPAN></LI><LI><SPAN class=""><A href="https://blogs.sap.com/2023/11/09/sap-btp-abap-environment-maintenance-windows-and-major-upgrade-windows-in-2024/" target="_blank" rel="noopener noreferrer"><SPAN class="">Maintenance Windows and Major Upgrade Windows in 2024 | Blog Post</SPAN></A></SPAN></LI><LI><SPAN class=""><A href="https://me.sap.com/systemsprovisioning/getNotified" target="_blank" rel="noopener noreferrer"><SPAN class="">Cloud System Notification Subscriptions (CSNS) | SAP for Me</SPAN></A></SPAN>&nbsp;</LI><LI><SPAN class=""><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-on-google-cloud/ba-p/13631489" target="_blank"><SPAN class="">Steampunk on Google Cloud | Blog Post</SPAN></A></SPAN></LI><LI><SPAN class=""><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-elastic-scaling-of-application-servers/ba-p/13614903" target="_blank"><SPAN class="">Elastic Scaling of Application Servers | Blog Post</SPAN></A></SPAN></LI><LI><SPAN class=""><A href="https://discovery-center.cloud.sap/index.html#/viewServices?regions=all" target="_blank" rel="noopener nofollow noreferrer"><SPAN class="">SAP Discovery Center</SPAN></A><BR /><BR /></SPAN></LI></UL><H3 id="toc-hId-723931967"><STRONG><span class="lia-unicode-emoji" title=":backhand_index_pointing_right:">👉</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 <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-398335743">Introduction</H2><P>&nbsp;</P><DIV><SPAN class="">A</SPAN><SPAN class="">s </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> and ABAP Cloud <SPAN class="">became&nbsp;more&nbsp;</SPAN><SPAN class="">and more popular</SPAN><SPAN class=""> 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" title=":light_bulb:">💡</span>&nbsp;If you weren’t able to join one of our previous roundtables, you can find the slides presented,&nbsp; recordings, and further references in this <A href="https://github.com/iwonahahn/SAP-BTP-ABAP-Environment-Roundtable/tree/main" target="_blank" rel="noopener nofollow noreferrer">GitHub repository</A>.</DIV><DIV><H2 id="toc-hId-201822238"><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="iwona_hahn_0-1706528994432.jpeg" style="width: 0px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/54827i0103728828B21A27/image-size/small?v=v2&amp;px=200" width="0" height="0" role="button" title="iwona_hahn_0-1706528994432.jpeg" alt="iwona_hahn_0-1706528994432.jpeg" /></span></H2><H2 id="toc-hId-5308733">&nbsp;</H2><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="iwona_hahn_0-1706548176771.jpeg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55190iE56A8DB7F248D088/image-size/large?v=v2&amp;px=999" role="button" title="iwona_hahn_0-1706548176771.jpeg" alt="iwona_hahn_0-1706548176771.jpeg" /></span><P>&nbsp;</P><H2 id="toc-hId--191204772"><BR /><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="">March 19th</SPAN></STRONG>, 4:00 - 5:00 PM CET&nbsp; – <A href="https://sap-se.zoom.us/meeting/register/tJAvc-qorDMiH9zFzP1crl7RMweqkb9bvbLQ" target="_blank" rel="noopener nofollow noreferrer">Zoom Meeting</A>&nbsp;(<STRONG>please register</STRONG> 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;</SPAN><STRONG>Guido Derwand</STRONG> &amp; <STRONG>Arne Harren</STRONG> as the project leads for BTP ABAP infrastructure topics,&nbsp;<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><BR /><BR /></LI></UL></DIV><DIV><STRONG>Preliminary Agenda:</STRONG><BR /><UL><LI>Product news</LI><LI><SPAN>Important Update: <A href="https://community.sap.com/t5/technology-blogs-by-sap/important-update-changes-to-the-free-tier-option-for-sap-btp-abap/ba-p/13592731" target="_blank">Changes to Free Tier Option for SAP BTP ABAP Environment</A></SPAN></LI><LI><SPAN class="">New features:&nbsp;<SPAN><SPAN class=""><A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-elastic-scaling-of-application-servers/ba-p/13614903" target="_blank">Elastic Scaling of Applications Servers</A> &amp; <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-on-google-cloud/ba-p/13631489" target="_self">Steampunk on Google Cloud (GCP)</A> (including demo)</SPAN></SPAN></SPAN></LI><LI>Q&amp;A</LI></UL><SPAN>Looking forward meeting you!</SPAN></DIV><DIV>&nbsp;</DIV><DIV><STRONG><A href="https://sap-se.zoom.us/meeting/register/tJAvc-qorDMiH9zFzP1crl7RMweqkb9bvbLQ" target="_blank" rel="noopener nofollow noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Register.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55134i8EFE430FACAEE483/image-size/small?v=v2&amp;px=200" role="button" title="Register.png" alt="Register.png" /></span></A></STRONG></DIV><DIV>&nbsp;</DIV><DIV><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"><SPAN>SAP Business Technology ABAP Environment</SPAN></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></DIV> 2024-02-27T18:59:52.646000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/classic-apis-for-tier-2-abap-cloud-development-in-sap-s-4hana-cloud-private/ba-p/13620329 Classic APIs for Tier 2 ABAP Cloud Development in SAP S/4HANA Cloud Private Edition 2024-02-28T08:38:22.351000+01:00 bjoern_panter https://community.sap.com/t5/user/viewprofilepage/user-id/186631 <P><SPAN>The following blog post relates to implementation of clean core extensions on top of SAP S/4HANA Cloud Private Edition. We introduce a set of classic APIs that can be leveraged in the <A href="https://www.sap.com/documents/2023/05/b0bd8ae6-747e-0010-bca6-c68f7e60039b.html" target="_self" rel="noopener noreferrer">Cloud API enablement</A> layer to build custom applications and extensions while keeping the core clean.</SPAN></P><P><SPAN>In 2022 SAP announced the availability of the new  </SPAN><A href="https://blogs.sap.com/2022/12/22/abap-cloud/" target="_blank" rel="noopener noreferrer"><SPAN>ABAP Cloud</SPAN></A><SPAN> development model in SAP S/4HANA Cloud Private Edition and SAP S/4HANA. More information about that can be found in the blog post<BR /></SPAN><SPAN><A href="https://blogs.sap.com/2022/10/25/how-to-use-embedded-steampunk-in-sap-s-4hana-cloud-private-edition-and-in-on-premise-the-new-abap-extensibility-guide/" target="_blank" rel="noopener noreferrer">How to use Embedded Steampunk in SAP S/4HANA Cloud, private edition and in on-premise.</A> The part of the announcement is the new  </SPAN><A href="https://www.sap.com/documents/2022/10/52e0cd9b-497e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer"><SPAN>ABAP extensibility guide.</SPAN></A><SPAN> In this guide, the 3-tier model was introduced to set up ABAP Cloud in SAP S/4HANA Cloud Private Edition and SAP S/4HANA as the default extensibility model while keeping full flexibility in these environments. The 3-tier model offers customers and partners the environment to build clean core extensions.  </SPAN></P><P><SPAN>In this blog, we will focus on Classic APIs for tier 2 developments – where to find and how to use them to develop clean core extensions.</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><H3 id="toc-hId-1116930087"><STRONG><SPAN>What is a Classic API and Cloud API enablement and when should you use it?&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></H3><P><SPAN>SAP recommends that new custom developments/extensions are done by default in tier 1 layer. It follows a pure ABAP Cloud extensibility model that allows the usage of released public SAP APIs only (ABAP Cloud APIs). Custom objects are created in language version </SPAN><I><SPAN>ABAP for Cloud Development</SPAN></I><SPAN>. ABAP Cloud rules are enforced by syntax and runtime checks.&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><EM>The question is - what happens when such a public SAP API is missing?&nbsp;</EM></STRONG><SPAN>&nbsp;</SPAN></P><P><STRONG>The answer is customer implementation with tier 2 – Cloud API enablement.&nbsp;</STRONG></P><P><SPAN>You can mitigate the missing ABAP Cloud APIs via tier 2 Cloud API enablement by building custom wrappers around the listed Classic APIs using classic ABAP as language version. Then release the wrapper for ABAP Cloud development to be used for your own tier 1 developments. ABAP Test Cockpit (ATC) should be used to establish governance for tier 2 development by enforcing the syntax of ABAP Cloud and controlling usage of non-released APIs via ATC exemptions.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bjoern_panter_1-1709018117206.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71666i133EE984EF26874A/image-size/large?v=v2&amp;px=999" role="button" title="bjoern_panter_1-1709018117206.png" alt="bjoern_panter_1-1709018117206.png" /></span></SPAN></P><P><SPAN>Refer to blog for details -&nbsp; </SPAN><SPAN>&nbsp;<BR /></SPAN><A href="https://blogs.sap.com/2023/05/24/abap-cloud-how-to-mitigate-missing-released-sap-apis-in-sap-s-4hana-cloud-private-edition-and-sap-s-4hana-the-new-abap-cloud-api-enablement-guide/" target="_blank" rel="noopener noreferrer"><SPAN>ABAP Cloud – How to mitigate missing released SAP APIs in SAP S/4HANA Cloud, private edition and SAP S/4HANA – The new ABAP Cloud API enablement guide | SAP Blogs</SPAN></A><SPAN><BR /></SPAN></P><H3 id="toc-hId-920416582"><STRONG><SPAN>Where is the list of the available Classic APIs in SAP </SPAN></STRONG><STRONG><SPAN>S/4HANA Cloud Private Edition?</SPAN></STRONG><SPAN>&nbsp;</SPAN></H3><P><SPAN>The list of available S/4HANA Cloud Private Edition Classic APIs can be downloaded from </SPAN><A href="https://github.com/SAP/abap-atc-cr-cv-s4hc" target="_blank" rel="noopener nofollow noreferrer"><SPAN>GitHub - SAP/abap-atc-cr-cv-s4hc</SPAN></A></P><P><SPAN>Classic APIs for tier 2 consumption are offered across different application areas in SAP S/4HANA, such as Financial Accounting, Master Data Governance, Policy Management (FS-PM), SCM Basis, Advanced Planning and Optimization (APO), HCM – Payroll and Personnel Management, Bill of Materials, Plant Maintenance, Industry Solutions such as IS-Utilities.</SPAN><SPAN>&nbsp;</SPAN></P><P>The list of objects is release independent. R<SPAN>eason is that the classic APIs are well-known from old OP releases and are all already delivered in 2022)</SPAN></P><P><SPAN>The JSON&nbsp;file “objectClassifications.json” has only the recommended Classic APIs and the substituted objects. The state values are:</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>classicAPI: Objects nominated by SAP as classic API to be consumed in a self-released custom wrapper.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>noClassicAPI: Link to another Classic API with improved scope</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>The JSON file is designed to be reused in other applications like ATC (ABAP Test Cockpit) and stands for the positive amount of Classic APIs.<BR /></SPAN><SPAN>To use the content in&nbsp; ATC, please implement note&nbsp;<A href="https://me.sap.com/notes/3449860" target="_self" rel="noopener noreferrer">3449860</A>&nbsp;-&nbsp;<SPAN class="">ATC Checks 'Usage of Released APIs' and 'Usage of Released APIs (Cloudification Repository)' Support of Classic APIs</SPAN></SPAN></P><P><SPAN>The csv file “objectClassifications.csv” contains additional content for offline purposes. It might be helpful in cases of implementation project discussions to evaluate extensibility options in specific business areas or if the can be used in ABAP Cloud context.</SPAN></P><P><SPAN>The list has the following </SPAN><SPAN>classifications</SPAN><SPAN>:</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><STRONG><SPAN>TI2</SPAN></STRONG><SPAN>: Objects nominated by SAP as classic API to be consumed in an own custom wrapper.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><STRONG><SPAN>SUB</SPAN></STRONG><SPAN>: no classic API but link to another Classic API with improved scope.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><STRONG><SPAN>NA</SPAN></STRONG><SPAN>: Not intended to be a classic API either due to modern successor (public SAP API) or technical limitations. </SPAN><SPAN>&nbsp;</SPAN></LI></UL><H3 id="toc-hId-723903077"><STRONG><SPAN>How to use the file</SPAN></STRONG><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></H3><P><SPAN>For now, you can download the content and import the file into excel to display the table content.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>In general, you can filter the Classic API list by application components to focus on your desired business application areas. The main use case is to find the objects with the classification TI2. These objects can be wrapped for example in a custom class method in classic ABAP and released for ABAP Cloud development.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Objects with the classification SUB have a link to the improved classic API successor object.&nbsp;</SPAN><SPAN>The ABAP development tools for Eclipse offers on top the possibility to display modern replacements for legacy APIs.</SPAN><SPAN>&nbsp;</SPAN><SPAN>For objects with the classification NA – not applicable – there are several reasons why it is not possible to consume them in Cloud API enablement, including:</SPAN><SPAN>&nbsp;</SPAN></P><UL><LI><SPAN>The object is not compatible with the ABAP RAP (RESTful Application Programming) development model, because there is an explicit commit work or violating the guidelines.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>The object only covers a specific, SAP internal use case.</SPAN><SPAN>&nbsp;</SPAN></LI><LI><SPAN>The object is not compatible with newer SAP S/4HANA functions and features.</SPAN><SPAN>&nbsp;</SPAN></LI></UL><P><SPAN>In the future more tools for consuming this Classic API information are planned to improve the developer experience in the development process.</SPAN><SPAN>&nbsp;<BR /><BR /><BR /></SPAN></P><H3 id="toc-hId-527389572"><SPAN>Access to Released and Classic API Viewer:</SPAN></H3><P><SPAN>If you want to browse through all existing APIs:</SPAN></P><P><SPAN><STRONG>released API</STRONG>s for ABAP Cloud&nbsp;to be consumed in tier1 layer:</SPAN><SPAN>&nbsp;<A href="https://sap.github.io/abap-atc-cr-cv-s4hc/?version=objectReleaseInfo_PCE2023_1.json&amp;states=released" target="_blank" rel="noopener nofollow noreferrer">Cloudification Repository Viewer (sap.github.io)</A>&nbsp;</SPAN></P><P><SPAN><STRONG>classic APIs</STRONG> to be consumed in tier2 API enablement:&nbsp;<A href="https://sap.github.io/abap-atc-cr-cv-s4hc/?version=objectClassifications.json" target="_blank" rel="noopener nofollow noreferrer">Cloudification Repository Viewer (sap.github.io)</A><BR /><BR /></SPAN></P><H3 id="toc-hId-330876067"><STRONG><SPAN>How to create custom wrappers using Classic APIs&nbsp;</SPAN></STRONG><SPAN>&nbsp;</SPAN></H3><P><SPAN>Details how to consume the Classic APIs can found at:<BR /></SPAN></P><P><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/abap-cloud-how-to-mitigate-missing-released-sap-apis-in-sap-s-4hana-cloud/ba-p/13561479" target="_self">Cloud API Enablement blog and guidelines blog</A></P><P>and <A class="" href="https://www.sap.com/documents/2023/05/b0bd8ae6-747e-0010-bca6-c68f7e60039b.html" target="_blank" rel="noopener noreferrer">Cloud API Enablement Guidelines PDF</A>&nbsp;</P><P><SPAN>Refer to this blog for details on ATC setup&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/how-the-abap-test-cockpit-supports-you-to-adopt-abap-cloud/ba-p/13548202" target="_self">How the ABAP Test Cockpit supports you to adopt ABAP Cloud&nbsp;</A></SPAN></P><P><SPAN><STRONG>Example:</STRONG>&nbsp;tutorial</SPAN> <SPAN>on how wrap a non-released object and release it for tier 1 consumption</SPAN>&nbsp;<A href="https://developers.sap.com/tutorials/abap-s4hanacloud-purchasereq-create-wrapper.html" target="_blank" rel="noopener noreferrer"><SPAN>Implement a Wrapper for the "Create Purchase Requisition" (BAPI_PR_CREATE) function module | SAP Tutorials</SPAN></A><SPAN>&nbsp;</SPAN></P><P><SPAN>If more APIs are needed, please send your requests via SAP Customer Influence Channel - </SPAN><A href="https://influence.sap.com/sap/ino/#/campaign/3516" target="_blank" rel="noopener noreferrer"><SPAN>SAP S/4HANA Cloud Private Edition for Extensibility and Integration (APIs)</SPAN></A><SPAN>&nbsp;</SPAN></P> 2024-02-28T08:38:22.351000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/how-to-reuse-access-control-from-a-released-sap-cds-entity-in-abap-cloud/ba-p/13622564 How to reuse access control from a released SAP CDS entity in ABAP Cloud? 2024-02-28T15:14:56.649000+01:00 Andre_Fischer https://community.sap.com/t5/user/viewprofilepage/user-id/55 <H2 id="toc-hId-987908991">Introduction</H2><P>When you want to reuse the access control settings from a released SAP CDS entity such as&nbsp;<SPAN>I_BUSINESSUSERBASIC in ABAP Cloud (e.g in SAP BTP ABAP Environment or in a software component in an SAP S/4HANA on prem or private cloud system that uses software components with ABAP Cloud) you might try the following DCL source code:</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@EndUserText.label: 'Test DCL inheritence' @MappingRole: true define role ZI_BUSINESSUSERBASIC_NOTWORK { grant select on ZI_BUSINESSUSERBASIC where INHERITING CONDITIONS FROM ENTITY I_BUSINESSUSERBASIC; }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>This however would cause the following error message:</SPAN></P><P><STRONG><EM>The use of inheritance is restricted in this language version</EM></STRONG></P><P>The reason is that the reuse of access control requires a special syntax.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="the use of 2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/72770i81C9FB1007946DF2/image-size/large?v=v2&amp;px=999" role="button" title="the use of 2.png" alt="the use of 2.png" /></span></P><H1 id="toc-hId-662312767">&nbsp;</H1><H1 id="toc-hId-465799262">Solution</H1><P>In order to reuse the access controll settings of a base entity that has been released by SAP you have to equip your custom code entity with a [1..1] association <STRONG>_toBaseEntity</STRONG> that points back to the base entity.</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AccessControl.authorizationCheck: #MANDATORY @EndUserText.label: 'test dcl inheritence' define view entity ZI_BusinessUserBasic as select from I_BusinessUserBasic association [1..1] to I_BusinessUserBasic as _toBaseEntity on $projection.BusinessPartner = _toBaseEntity.BusinessPartner { key BusinessPartner, BusinessPartnerUUID, LastName, FirstName, PersonFullName, FormOfAddress, AcademicTitle, AcademicSecondTitle, CorrespondenceLanguage, MiddleName, AdditionalLastName, BirthName, NickName, Initials, LastNamePrefix, LastNameSecondPrefix, NameSupplement, UserID, IsMarkedForArchiving, BusinessPartnerIsBlocked, CreatedByUser, CreationDate, CreationTime, LastChangedByUser, LastChangeDate, LastChangeTime, IsBusinessPurposeCompleted, AuthorizationGroup, DataControllerSet, DataController1, DataController2, DataController3, DataController4, DataController5, DataController6, DataController7, DataController8, DataController9, DataController10, /* Associations */ _BusinessPartnerExternalID, _BusinessPartnerRole, _User, _WorkplaceAddress, _toBaseEntity }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>In addition you have to use the following syntax in your DCL.</P><P>The statement&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>REPLACING { ROOT WITH _toBaseEntity }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>makes sure that inheritence will still work even if SAP would add additional authorization checks in the where clause of the DCL that protects the released base entity I_BusinessUserBasic.</P><P>Though the syntax seems to be not self explaining at a first glance it is straight forward to simply create the above mentioned [1..1] association to the based entity.</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@EndUserText.label: 'Test DCL inheritence' @MappingRole: true define role ZACL_ZI_BUSINESSUSERBASIC { grant select on ZI_BUSINESSUSERBASIC where INHERITING CONDITIONS FROM ENTITY I_BUSINESSUSERBASIC REPLACING { ROOT WITH _toBaseEntity } // AND ... to make it more restricive // OR .... to widen access for additional autorizations ; }</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>Hope this helps when you run into this issue.&nbsp; &nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-02-28T15:14:56.649000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/cds-view-time-comparison/ba-p/13620651 CDS View: Time comparison 2024-02-28T22:27:29.400000+01:00 LinaRaut https://community.sap.com/t5/user/viewprofilepage/user-id/179963 <P><FONT color="#000000">This blog is about CDS scalar functions - CALENDER_SHIFT and CALENDER_OPERATIONS and how to use it in analytical queries for time comparison. Similarly FISCAL_CALENDAR_SHIFT and FISCAL_CALENDAR_OPERATION can be used.</FONT></P><P><FONT color="#000000">These CDS scalar functions are used to compare the measure value of current time period with previous time period. Further it can be used to calculate measure value for year to date (YTD), month to date (MTD) or quarter to date (QTD). Current member can only be used when time dimensions are in drilldown else restricted measure is used. The usage of current member is not as fast as restricted measure. Detail specification of the mentioned scalar functions can be found in Help.</FONT></P><H2 id="toc-hId-987850336">&nbsp;</H2><H2 id="toc-hId-791336831"><FONT color="#000000"><STRONG>Usage of Current Member</STRONG></FONT></H2><P><FONT color="#000000">This function can be used by modeling an association with the cube. In the ON-condition, the scalar functions are specified on the right side.</FONT></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>association to ZOQ_FLIGHT as _previousMonth on _previousMonth.fyearMonth = calendar_shift( base =&gt; $projection.fyearMonth, base_level =&gt; calendar_date_level.#MONTH, shift =&gt; abap.int2'-1', shift_level =&gt; calendar_date_level.#MONTH )</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><FONT color="#000000"><STRONG>Constraints:</STRONG></FONT></P><UL><LI><FONT color="#000000">Current member to work properly, we have to mark all the time fields which are related with annotation - @ObjectModel.value.derivedFrom. We should also specify semantics. </FONT><FONT color="#000000">for example,</FONT></LI></UL><P><FONT color="#000000">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<STRONG>key</STRONG> fldate,<BR />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<STRONG>@ObjectModel.value.derivedFrom: 'fldate'</STRONG><BR />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@Semantics.calendar.yearMonth: true<BR />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@ EndUserText.label: 'FL Month'<BR />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_calday.calmonth <STRONG>as</STRONG> fyearMonth,&nbsp;</FONT><FONT color="#000000">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</FONT></P><UL><LI><FONT color="#000000">The base parameter must be filled with the same field name as it appears on the left: for example, the field name __previousMonth<STRONG>.</STRONG><SPAN><STRONG>fyearMonth</STRONG> &nbsp;&nbsp;should be same as base </SPAN><STRONG>=&gt;</STRONG> $projection<STRONG>.fyearMonth</STRONG></FONT></LI></UL><UL><LI><FONT color="#000000">The Semantics of field $projection.fyearMonth must match the base_level parameter. As In the cube view example, the fyearMonth field has the annotation &nbsp;@Semantics.calendar.yearMonth: true, &nbsp;base_level is specified as calendar_date_level<STRONG>.</STRONG>#MONTH.</FONT></LI><LI><FONT color="#000000">In the example to restrict the measure to the previous month, shift is set to -1 and shift_level is set to #MONTH. There is a constraint in using shift_level with base_level : for example for base level #MONTH, shift _level can be #MONTH,#QUARTER or #YEAR But can’t be #DAY.</FONT></LI></UL><P><FONT color="#000000">&nbsp;&nbsp;<STRONG>Example 1:&nbsp;</STRONG> Time comparison with time in drill-down (Current Member Variables)</FONT></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AccessControl.authorizationCheck: #NOT_ALLOWED @EndUserText.label: 'Query: Current Memeber on Month' define transient view entity ZLR_PC_CM_1 provider contract analytical_query as projection on ZOQ_FLIGHT association to ZOQ_FLIGHT as _previousMonth on _previousMonth.fyearMonth = calendar_shift( base =&gt; $projection.fyearMonth, base_level =&gt; calendar_date_level.#month, shift =&gt; abap.int2'-1', shift_level =&gt; calendar_date_level.#month ) association to ZOQ_FLIGHT as _firstMonthOfQuarter on _firstMonthOfQuarter.fyearMonth between calendar_operation( base =&gt; $projection.fyearMonth, base_level =&gt; calendar_date_level.#month, operation =&gt; calendar_date_operation.#first, operation_level =&gt; calendar_date_level.#quarter ) and $projection.fyearMonth association to ZOQ_FLIGHT as _CMM1_CMP1 on _CMM1_CMP1.fyearMonth between calendar_shift( base =&gt; $projection.fyearMonth, base_level =&gt; calendar_date_level.#month, shift =&gt; abap.int2'-1', shift_level =&gt; calendar_date_level.#month ) and calendar_shift( base =&gt; $projection.fyearMonth, base_level =&gt; calendar_date_level.#month, shift =&gt; abap.int2'1', shift_level =&gt; calendar_date_level.#month ) { @AnalyticsDetails.query: { axis: #ROWS, totals: #SHOW } @EndUserText.label: 'Year Quarter' flquarter, @AnalyticsDetails.query: { axis: #ROWS, totals: #SHOW } @EndUserText.label: 'Year Month' fyearMonth, @AnalyticsDetails.query.axis: #FREE .hidden: true currency, @Semantics.amount.currencyCode: 'currency' paymentsum, _previousMonth.currency as PrevMonthCurrency, @Semantics.amount.currencyCode : 'PrevMonthCurrency' @EndUserText.label: 'Previous Month' _previousMonth.paymentsum as PrevMonthPayment, _firstMonthOfQuarter.currency as firstMonthOfQuartCurrency, @Semantics.amount.currencyCode : 'firstMonthOfQuartCurrency' @EndUserText.label: 'Quarter to today' _firstMonthOfQuarter.paymentsum as firstMonthOfQuartPayment, _CMM1_CMP1.currency as last3MonthCurrency, @Semantics.amount.currencyCode : 'last3MonthCurrency' @EndUserText.label: 'Previous month To next month' _CMM1_CMP1.paymentsum as CMM1_CMP1Payment } where flyear = '2019' and currency = 'EUR'</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><FONT color="#000000"><STRONG>Result:</STRONG></FONT></P><P><FONT color="#000000"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LinaRaut_2-1709031740486.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71830iDE9646596608699E/image-size/large?v=v2&amp;px=999" role="button" title="LinaRaut_2-1709031740486.png" alt="LinaRaut_2-1709031740486.png" /></span></FONT></P><P><FONT color="#000000">In this Result</FONT></P><UL><LI><FONT color="#000000"><FONT color="#FF0000"><STRONG>Red</STRONG></FONT>- column Previous Month -shows value from previous month.</FONT></LI><LI><FONT color="#000000"><FONT color="#FFCC00"><STRONG>Yellow</STRONG></FONT>- column Quarter to Today- shows the aggregate values of previous months in this quarter.</FONT></LI><LI><FONT color="#000000"><FONT color="#339966"><STRONG>Green</STRONG></FONT>- column Gliding window of 3 month- shows aggregate value of previous month + current month + next month.</FONT></LI></UL><P>&nbsp;</P><H2 id="toc-hId-594823326"><FONT color="#000000"><STRONG>Usage of Restricted Measure</STRONG></FONT></H2><P><FONT color="#000000">This can be done using the CASE statement, where one of the scalar function is used.&nbsp;</FONT></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code> case when fyearMonth = calendar_shift( base =&gt; $parameters.p_month, base_level =&gt; calendar_date_level.#MONTH, shift =&gt; abap.int2'-1', shift_level =&gt; calendar_date_level.#MONTH ) then paymentsum end as paymentPrev</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><FONT color="#000000"><STRONG>Constraints:</STRONG></FONT></P><UL><LI><FONT color="#000000">The base parameter must be a parameter or a literal.</FONT></LI><LI><FONT color="#000000">The type of parameter or literal must match to &nbsp;base_level. In the example for base_level &nbsp;calendar_date_level.#MONTH, the type of parameter p_month must be NUMC6.</FONT></LI><LI><FONT color="#000000">In the example to restrict the measure to the previous month, shift is set to -1 and shift_level is set to #MONTH.</FONT></LI></UL><P><FONT color="#000000"><STRONG>Example 2:</STRONG> Time comparison (Restricted key figure)</FONT></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>@AccessControl.authorizationCheck: #NOT_ALLOWED @EndUserText.label: 'Query: Current Memeber on Month' define transient view entity ZLR_PC_RSRT_SHIFT1 provider contract analytical_query with parameters p_month : /bi0/oicalmonth as projection on ZOQ_FLIGHT { @AnalyticsDetails.query: { axis: #ROWS, totals: #SHOW } carrid, currency, virtual currCur : abap.cuky, @Semantics.amount.currencyCode : 'currCur' @Consumption.dynamicLabel: { label: 'Bookings &amp;1', binding: [{ index : 1 , element : 'fyearMonth' }] } case when fyearMonth = $parameters.p_month then paymentsum end as paymentCur, virtual currPrev : abap.cuky, @Semantics.amount.currencyCode : 'currPrev' @Consumption.dynamicLabel: { label: 'Previous Bookings &amp;1', binding: [{ index : 1 , element : 'fyearMonth' }] } case when fyearMonth = calendar_shift( base =&gt; $parameters.p_month, base_level =&gt; calendar_date_level.#month, shift =&gt; abap.int2'-1', shift_level =&gt; calendar_date_level.#month ) then paymentsum end as paymentPrev, virtual currLastInYear : abap.cuky, @Semantics.amount.currencyCode : 'currLastInYear' @Consumption.dynamicLabel: { label: 'Bookings from &amp;1 To &amp;2', binding: [{ index : 1 , element : 'fyearMonth', replaceWith: #LOW }, { index : 2 , element : 'fyearMonth', replaceWith: #HIGH }] } case when fyearMonth between calendar_operation( base =&gt; $parameters.p_month, base_level =&gt; calendar_date_level.#month, operation =&gt; calendar_date_operation.#first, operation_level =&gt; calendar_date_level.#year ) and $parameters.p_month then paymentsum end as paymentToDate } where currency = 'EUR'</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><FONT color="#000000"><STRONG>Result:</STRONG></FONT></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="LinaRaut_3-1709031740488.png" style="width: 800px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71829i4C6A60C9C4189EE8/image-dimensions/800x159?v=v2" width="800" height="159" role="button" title="LinaRaut_3-1709031740488.png" alt="LinaRaut_3-1709031740488.png" /></span></P><P><FONT color="#000000">In this example I have used @Consumption.dynamicLabel to dynamically set the column label with values calculated from parameter.</FONT></P><H2 id="toc-hId-398309821">&nbsp;</H2><H2 id="toc-hId-201796316"><FONT color="#000000">Release Info:</FONT></H2><P><FONT color="#000000">On-Prem SAP_BW from 7.58 and Cloud from 2308</FONT></P><H2 id="toc-hId-5282811"><FONT color="#000000">Related Notes:</FONT></H2><P><FONT color="#000000">3270090-CurrentMember + FemsN</FONT></P><P><FONT color="#000000">3359468-Current Member on reference characteristic and selection for Partial Time Characteristic</FONT></P> 2024-02-28T22:27:29.400000+01:00 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 How to find SAP APIs for SAP S/4HANA 3-tier extensibility model 2024-02-29T20:45:17.161000+01:00 bjoern_panter https://community.sap.com/t5/user/viewprofilepage/user-id/186631 <P>If you want to develop a custom application in your SAP S/4HANA Cloud Private Edition or SAP S/4HANA system using ABAP Cloud and the 3-tier extensibility model you will need to work with the SAP APIs to access the SAP standard in a clean core compatible way. This blog provides the overview of the relevant sources for looking for the SAP APIs, whereby all sources have the same content.</P><H3 id="toc-hId-1117024234">1. In the ABAP Development Tools for Eclipse</H3><P><SPAN>In the ABAP development tools for Eclipse create your own ABAP Repository Tree (context menu&nbsp;</SPAN><EM>New-&gt;ABAP Repository Tree</EM><SPAN>&nbsp;on the project node in the Project Explorer), choose "Released Objects" from the list in the <EM>Create Tree</EM> wizard, click the&nbsp;<EM>Next</EM>&nbsp;button, enter the name ("Released Objects") and click the <EM>Finish</EM> button. The Released Objects tree will be added to the Project Explorer:&nbsp;</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bjoern_panter_0-1709212303564.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/73406iFC1EB1272DA3C684/image-size/medium?v=v2&amp;px=400" role="button" title="bjoern_panter_0-1709212303564.png" alt="bjoern_panter_0-1709212303564.png" /></span></P><P>USE_IN_CLOUD_DEVELOPMENT is valid for S/4HANA Cloud Public Edition<BR />USE_IN_CLOUD_DEVLPMNT_ACTIVE is valid for S/4HANA Cloud Private Edition<BR /><BR />(reason: In Private Cloud/OnPremise there are some released APIS assigned to a Public Cloud catalog. They exists but have no functional behavior. ADT will show an error in case you consume them in your custom code)</P><H3 id="toc-hId-920510729">2. On the SAP Business Acceleration Hub</H3><P><SPAN class="">SAP Business Acceleration Hub is a SAP operated plat</SPAN><SPAN class="">form to explore, discover and consume APIs, pre</SPAN><SPAN class="">-</SPAN><SPAN class="">packaged integrations, business services and sample apps from SAP. You can look there for SAP APIs for the relevant SAP S/4HANA product:</SPAN></P><P><A href="https://api.sap.com/products/SAPS4HANACloud/overview" target="_self" rel="noopener noreferrer">SAP S/4HANA Cloud Public Cloud Edition</A><BR /><A href="https://api.sap.com/products/SAPS4HANACloudPrivateEdition/overview" target="_self" rel="noopener noreferrer">SAP S/4HANA Cloud Private Cloud Edition</A><BR /><A href="https://api.sap.com/products/SAPS4HANA/overview" target="_self" rel="noopener noreferrer">SAP S/4HANA</A></P><P>Please note under Developer Extensibility the you will find details about released APIs for ABAP Cloud. Only the main object types like Behavior Definitions, CDS Views and Cloud BAdIs are displayed including documentation.</P><H3 id="toc-hId-723997224">3. On the GitHub</H3><P>The Cloudification Repository&nbsp; on the Github provided by SAP offers you for the SAP S/4HANA products the relevant SAP APIs lists as .json and .csv files:</P><P><A href="https://github.com/SAP/abap-atc-cr-cv-s4hc/tree/main/src" target="_blank" rel="noopener nofollow noreferrer">Cloudification Repository at SAP/abap-atc-cr-cv-s4hc (github.com)</A><BR /><BR />This is a pure technical list to be reused in ATC check for "Cloud Readiness". Besides the released objects (also available on SAP Business Accelerator Hub) additional technical elements like Classes, Authorizations,.. are available. The list is identical to the content in the Repository Tree.<BR />In addition you have access to all deprecated objects, classic APIs, not to be released APIs including successor information.</P><H3 id="toc-hId-527483719">4. In the Cloudification Repository Viewer</H3><P>You can use the Cloudification Repository Viewer to access the SAP APIs lists from the Cloudification Repository in the comfortable way:</P><P><A href="https://sap.github.io/abap-atc-cr-cv-s4hc/?states=released" target="_self" rel="nofollow noopener noreferrer">SAP S/4HANA Cloud Public Edition</A><BR /><A href="https://sap.github.io/abap-atc-cr-cv-s4hc/?states=released&amp;version=objectReleaseInfo_PCE2023_1.json" target="_self" rel="nofollow noopener noreferrer">SAP S/4HANA Cloud Private Edition 2023 FPS1</A><BR /><A href="https://sap.github.io/abap-atc-cr-cv-s4hc/?version=objectClassifications.json" target="_blank" rel="noopener nofollow noreferrer">SAP S/4HANA Cloud Private Edition - Classic APIs</A></P><P>For details click on a single row to display additional meta data and available successors.<BR />Using the <EM>Show Filter Bar</EM> button you can choose the relevant SAP APIs list for your SAP S/4HANA product.</P><H3 id="toc-hId-330970214">4. External tooling</H3><P>There are also external tools using above mentioned information.</P><P><A href="https://software-heroes.com/en/cloudification-repository-viewer" target="_blank" rel="noopener nofollow noreferrer">Software-Heroes</A></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P> 2024-02-29T20:45:17.161000+01:00 https://community.sap.com/t5/technology-blogs-by-members/consume-machine-learning-api-in-sapui5-sap-build-sap-abap-cloud-and-sap/ba-p/13620596 Consume Machine Learning API in SAPUI5, SAP Build, SAP ABAP Cloud and SAP Fiori IOS SDK 2024-03-01T11:03:14.858000+01:00 ipravir https://community.sap.com/t5/user/viewprofilepage/user-id/15221 <P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="House Price Prediction.jpg" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/72008iAABC3EF8D0A10DE3/image-size/medium?v=v2&amp;px=400" role="button" title="House Price Prediction.jpg" alt="House Price Prediction.jpg" /></span></P><P>In the current era,&nbsp;<STRONG>machine learning</STRONG>&nbsp;and&nbsp;<STRONG>artificial intelligence</STRONG>&nbsp;dominate the landscape, with a majority of blogs and innovations centered around these transformative technologies. In today’s business landscape,&nbsp;<STRONG>machine learning (ML)</STRONG>&nbsp;and&nbsp;<STRONG>artificial intelligence (AI)</STRONG>&nbsp;play pivotal roles. ML, a subset of AI, enables systems to learn from data and improve performance without explicit programming. The advantages include efficiency, enhanced decision-making, improved customer experiences, fraud detection, and cost savings. Businesses leverage AI for customer service, cybersecurity, content production, inventory management, and more. Looking ahead, strategic AI adoption is crucial for staying competitive and driving innovation .</P><P>This blog delves into constructing a straightforward Linear Regression model for predicting house prices using relevant parameters.</P><P>To prepare the model, the hana_ml library has used to establish a connection via SAP HANA Cloud and access relevant tables.</P><P>Let’s review each step together.</P><P style=" text-align: center; "><FONT face="arial black,avant garde"><STRONG>SAP HANA Cloud Setup and Data Upload</STRONG></FONT></P><P>Follow the tutorial below to set up an instance of the SAP HANA Database in the BTP Platform.</P><P><A href="https://developers.sap.com/tutorials/hana-cloud-deploying.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/hana-cloud-deploying.html</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_0-1709030263887.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71797i07DA9741A6DCEE02/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_0-1709030263887.png" alt="ipravir_0-1709030263887.png" /></span></P><P>Established a fresh Schema and table named “HouseData” using a CSV file containing house details.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_0-1709030361074.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71798i19C5256699EDDA97/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_0-1709030361074.png" alt="ipravir_0-1709030361074.png" /></span></P><P>Data Upload in HDB using CSV File : <A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/fc5ace7a367c434190a8047881f92ed8/d7a79a58bb5710149ed293cc617231b9.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_HANA_PLATFORM/fc5ace7a367c434190a8047881f92ed8/d7a79a58bb5710149ed293cc617231b9.html</A></P><P style=" text-align: center; "><FONT face="arial black,avant garde">VSCode Setup and ML Model Development</FONT></P><P>Visual Studio code (VS Code) is a powerful python editor that offer auto completion, debugging, and seamless environment switching. It simplifies Python development across different platforms, making it a favorite among developers.</P><P>VSCode Download&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="https://code.visualstudio.com/download" target="_blank" rel="noopener nofollow noreferrer">https://code.visualstudio.com/download</A></P><P>Follow the below details and link to setup Jupyter Notebooks in VS Code.</P><P>Jupyter Notebook is a proffered choice for python development due to its interactive nature. It allows live exploration, rich documentation combining code and explanations, easy debugging, and widespread adoption in data science and research domain.</P><P><A href="https://jupyter.org/" target="_blank" rel="noopener nofollow noreferrer">https://jupyter.org/</A></P><P><A href="https://code.visualstudio.com/docs/datascience/jupyter-notebooks" target="_blank" rel="noopener nofollow noreferrer">https://code.visualstudio.com/docs/datascience/jupyter-notebooks</A></P><P>Details about the libraries used for creating models and APIs:</P><OL><LI>HANA_ML&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="https://pypi.org/project/hana-ml/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/hana-ml/</A></LI><LI>SKLearn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="https://pypi.org/project/scikit-learn/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/scikit-learn/</A></LI><LI>Pickle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="https://wiki.python.org/moin/UsingPickle" target="_blank" rel="noopener nofollow noreferrer">https://wiki.python.org/moin/UsingPickle</A></LI><LI>FLASK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="https://pypi.org/project/Flask/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/Flask/</A></LI><LI>FLASK_RESTFUL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="https://pypi.org/project/Flask-RESTful/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/Flask-RESTful/</A></LI><LI>FLASK_CORS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="https://pypi.org/project/Flask-Cors/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/Flask-Cors/</A></LI></OL><P>Imports of libraries:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_1-1709030418722.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71799iF0D857337F0797E9/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_1-1709030418722.png" alt="ipravir_1-1709030418722.png" /></span></P><P>Retrieve data from a database table using ConnectionContext, create a linear regression model, and generate a pickle file for future use. The code includes a condition to avoid creating a new model file if one already exists. You can customize the code to adjust the frequency of model file updates based on current database data.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_2-1709030663150.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71802i376C58DEE88D2266/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_2-1709030663150.png" alt="ipravir_2-1709030663150.png" /></span></P><P>Subsequently, an API built using the Flask library, along with the creation of a model file. The utilization of a request option within the URL facilitated the retrieval of all necessary parameter values. These values are then stored in a payload, which is used to process the model and predict house prices based on various input values.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_3-1709030681188.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71803iA8380C929FD4806C/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_3-1709030681188.png" alt="ipravir_3-1709030681188.png" /></span></P><P>To address the CORS issue when making requests to the generated API URL from any front-end application, the following approach was employed.</P><P><STRONG>CORS(app, support_credentials=True)</STRONG></P><P>The output following the execution of the API is as follows:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_4-1709030725335.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71804i78DB18A8C05737B9/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_4-1709030725335.png" alt="ipravir_4-1709030725335.png" /></span></P><P>Subsequently, the Business Application Studio application was activated within the BTP platform. The steps for this process are outlined in the following tutorial for the trial plan:</P><P><A href="https://developers.sap.com/tutorials/appstudio-onboarding.html#3d3b8693-e86f-4120-8666-25b62797897b" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/appstudio-onboarding.html#3d3b8693-e86f-4120-8666-25b62797897b</A></P><P>Subsequently, a new development space was established using the “Full-Stack Application Using Productivity Tools” template. Within this space, Python Tools were selected, and additional tools were enabled based on specific requirements.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_5-1709030747578.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71805iD94A65DF7DDF956A/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_5-1709030747578.png" alt="ipravir_5-1709030747578.png" /></span></P><P>Given that the API has already been tested and validated with the necessary parameters locally in Visual Studio Code, we can proceed to directly deploy the solution to Cloud Foundry and generate the API.</P><P>Provided below are the specifics of the files and the step-by-step process for deploying the solution and creating an API in Cloud Foundry.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_6-1709030759813.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71806iB2D835D5B999201C/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_6-1709030759813.png" alt="ipravir_6-1709030759813.png" /></span></P><P>In above image below are the file created:</P><OL><LI>Server.py : This file has same code which has been used in Visual Studio Code.</LI><LI>Runtime.txt :<P>The runtime.txt file allows you to explicitly specify the Python version that your application should use.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_8-1709030834863.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71809i0FA1578227777087/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_8-1709030834863.png" alt="ipravir_8-1709030834863.png" /></span><P>Use below line of syntax to get the installed version of python.</P><P>Remember that this file is particularly useful when deploying Python applications to ensure compatibility with the desired Python version.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_9-1709030859134.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71810iCED4E50A075C74C4/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_9-1709030859134.png" alt="ipravir_9-1709030859134.png" /></span><P>&nbsp;</P></LI><LI>&nbsp;Requirement.txt :&nbsp;<P>The requirements.txt file is essential for tracking and managing dependencies in Python projects. It ensures consistent package versions, simplifies collaboration, and facilitates smooth deployment across different environments.</P><P>To retrieve the versions of all installed libraries, use the following syntax.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_10-1709030894830.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71811i604C66A97B72A9E8/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_10-1709030894830.png" alt="ipravir_10-1709030894830.png" /></span><P>&nbsp;</P></LI><LI>&nbsp;manifest.yml :&nbsp;<P>The manifest.yml file serves as an essential configuration when deploying Python applications to Cloud Foundry. It acts as an application deployment descriptor, containing crucial information such as the app name, path to the application file, and other relevant settings. By using this manifest, you ensure consistency across deployments, facilitate collaboration, and streamline the deployment process on Cloud Foundry.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_11-1709030919953.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71812iC27D21425C47A841/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_11-1709030919953.png" alt="ipravir_11-1709030919953.png" /></span><P>Open the terminal (using Ctrl + Shift + `) in Visual Studio Code (BAS). Navigate to project directory using the CD command. Log in to Cloud Foundry by executing the CF LOGIN command, providing user ID and password when prompted.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_0-1709030965032.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71813i3B9D550BF30F79CE/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_0-1709030965032.png" alt="ipravir_0-1709030965032.png" /></span><P>Next, use the CF PUSH command to deploy the solution to Cloud Foundry as below screen :</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_1-1709030978422.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71814i9D7ABECFA6A0C903/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_1-1709030978422.png" alt="ipravir_1-1709030978422.png" /></span><P>After a successful process, the application will be accessible in the application section.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_2-1709030991288.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71815iEB1A1D3EAC05021D/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_2-1709030991288.png" alt="ipravir_2-1709030991288.png" /></span><P>&nbsp;When the application name is chosen, details like application information, instance details, and the most recent application events become visible.</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_3-1709031001094.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71816i9355B5BD4D621D96/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_3-1709031001094.png" alt="ipravir_3-1709031001094.png" /></span><P>Below is calling of above route with and without using request:</P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_4-1709031012858.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71817iFF72581D5D0F78B1/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_4-1709031012858.png" alt="ipravir_4-1709031012858.png" /></span><P style=" text-align: center; "><FONT face="arial black,avant garde"><STRONG>SAPUI5 Application using Created ML API</STRONG></FONT></P>Utilized the same Development Space to build a basic SAPUI5 application.</LI></OL><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_5-1709031050032.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71818i07E0DAC6C41C45D2/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_5-1709031050032.png" alt="ipravir_5-1709031050032.png" /></span></P><P>In this application, the created API is directly invoked when the user clicks the “Predict House Price” button:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_6-1709031071153.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71819i55B18BDDD282E313/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_6-1709031071153.png" alt="ipravir_6-1709031071153.png" /></span></P><P>Initially, I considered using the API I created via a destination.</P><P>Find below post question&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P><P><A href="https://community.sap.com/t5/technology-q-a/how-to-access-destination-from-bas-which-created-using-python-app-deployed/qaq-p/13596319" target="_blank">https://community.sap.com/t5/technology-q-a/how-to-access-destination-from-bas-which-created-using-python-app-deployed/qaq-p/13596319</A></P><P>Upon integrating the created API into the destination, it successfully returns a 200 status response. However, when attempting to utilize the same API within the application, a CORS error occurs.</P><P>After thorough analysis, The flask_cors library was instrumental in resolving the CORS error when directly invoking the API within the application. By incorporating this library, the issue was successfully mitigated.</P><P style=" text-align: center; "><STRONG>Build App (Web/Mobile Application) using ML API</STRONG></P><P>Created a web and mobile application using SAP Build, leveraging the same API.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_7-1709031125516.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71820iE823EA436C38D6ED/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_7-1709031125516.png" alt="ipravir_7-1709031125516.png" /></span></P><P>Utilized created API following the tutorial below.</P><P><A href="https://developers.sap.com/tutorials/appgyver-connect-publicapi.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/appgyver-connect-publicapi.html</A></P><P>The placeholder details for the GET event of API calling are provided below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_8-1709031140458.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71821iC92D53AFA62C17B2/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_8-1709031140458.png" alt="ipravir_8-1709031140458.png" /></span></P><P>Following the configuration of API details, I applied them to the ‘Predict House Price’ button event, resulting in the display of the predicted house price in an alert as shown below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_9-1709031154676.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71822iCE0E64A8FF6C25CF/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_9-1709031154676.png" alt="ipravir_9-1709031154676.png" /></span></P><P style=" text-align: center; "><FONT face="arial black,avant garde"><STRONG>Consuming API on ABAP Cloud</STRONG></FONT></P><P>Developed an ABAP class using the CL_HTTP_DESTINATION_PROVIDER and CL_WEB_HTTP_CLIENT_MANAGER classes. In this class, ensure that all necessary input parameters are provided as importing parameters. The objective is to retrieve house prices as a response using the GET_TEXT method, following the logic outlined below:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_10-1709031180100.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71823i82C2DA190930BDF2/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_10-1709031180100.png" alt="ipravir_10-1709031180100.png" /></span></P><P>To verify the aforementioned logic, the following tutorial was utilized to establish an HTTP service and invoke the method from the developed class within the handle class:</P><P><A href="https://developers.sap.com/tutorials/abap-environment-create-http-service.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/abap-environment-create-http-service.html</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_11-1709031192076.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71824i18B565FC9BD8BBD7/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_11-1709031192076.png" alt="ipravir_11-1709031192076.png" /></span></P><P>When invoking the aforementioned method with the necessary request parameters, the following output will be presented:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_12-1709031201439.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71825i4D371AF61DF3050E/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_12-1709031201439.png" alt="ipravir_12-1709031201439.png" /></span></P><P>Code logic of handle class:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_13-1709031212137.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/71826iF92BE9DEB954DEE0/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_13-1709031212137.png" alt="ipravir_13-1709031212137.png" /></span></P><P style=" text-align: center; "><FONT face="arial black,avant garde"><STRONG>Consuming API using SAP IOS SDK Frameworks</STRONG></FONT></P><P>Developed a compact application using XCode IDE and the SAP iOS SDK Framework to interact with the custom House Price Prediction API.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ipravir_0-1709201675732.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/73283i33AEC18C14155746/image-size/medium?v=v2&amp;px=400" role="button" title="ipravir_0-1709201675732.png" alt="ipravir_0-1709201675732.png" /></span></P><P>Utilized the SAPURLSession from SAPFramework libraries to invoke the API with all necessary parameters and displayed the predicted house price value in an alert message, as shown in the screenshot above.</P><P><A href="https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/Frameworks/SAPFoundation/Classes/SAPURLSession.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/Frameworks/SAPFoundation/Classes/SAPURLSession.html</A></P><P><FONT face="arial black,avant garde"><STRONG>Question</STRONG> </FONT>:&nbsp;<SPAN>Upon configuring the API within the BTP Cloud Application, it becomes accessible from any web browser or software application. Surprisingly, it doesn’t prompt for cloud credentials. kindly suggest any necessary steps to address this access issue?</SPAN></P><P><A href="https://github.com/ipravir/Machine-Learning-API-in-SAPUI5-SAP-Build-and-SAP-ABAP-Cloud" target="_self" rel="nofollow noopener noreferrer">Git Links:</A></P><UL><LI><A href="https://github.com/ipravir/Machine-Learning-API-in-SAPUI5-SAP-Build-and-SAP-ABAP-Cloud/tree/main/hosprchdb" target="_self" rel="nofollow noopener noreferrer">Python File</A></LI><LI><A href="https://github.com/ipravir/Machine-Learning-API-in-SAPUI5-SAP-Build-and-SAP-ABAP-Cloud/tree/main/fioritest" target="_self" rel="nofollow noopener noreferrer">SAPUI5</A></LI><LI><A href="https://github.com/ipravir/Machine-Learning-API-in-SAPUI5-SAP-Build-and-SAP-ABAP-Cloud/tree/main/SAP%20Build%20Export" target="_self" rel="nofollow noopener noreferrer">SAP Build</A></LI><LI><A href="https://github.com/ipravir/Machine-Learning-API-in-SAPUI5-SAP-Build-and-SAP-ABAP-Cloud/tree/main/ABAP%20Cloud" target="_self" rel="nofollow noopener noreferrer">SAP ABAP Cloud</A></LI><LI><A href="https://github.com/ipravir/Machine-Learning-API-in-SAPUI5-SAP-Build-and-SAP-ABAP-Cloud/tree/main/IOS%20Project/AIProcess" target="_self" rel="nofollow noopener noreferrer">IOS Project</A></LI></UL><P>Referred Links:</P><P><A href="https://developers.sap.com/tutorials/hana-cloud-deploying.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/hana-cloud-deploying.html</A></P><P><A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/fc5ace7a367c434190a8047881f92ed8/d7a79a58bb5710149ed293cc617231b9.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_HANA_PLATFORM/fc5ace7a367c434190a8047881f92ed8/d7a79a58bb5710149ed293cc617231b9.html</A></P><P><A href="https://code.visualstudio.com/download" target="_blank" rel="noopener nofollow noreferrer">https://code.visualstudio.com/download</A></P><P><A href="https://jupyter.org/" target="_blank" rel="noopener nofollow noreferrer">https://jupyter.org/</A></P><P><A href="https://code.visualstudio.com/docs/datascience/jupyter-notebooks" target="_blank" rel="noopener nofollow noreferrer">https://code.visualstudio.com/docs/datascience/jupyter-notebooks</A></P><P><A href="https://pypi.org/project/hana-ml/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/hana-ml/</A></P><P><A href="https://pypi.org/project/scikit-learn/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/scikit-learn/</A></P><P><A href="https://wiki.python.org/moin/UsingPickle" target="_blank" rel="noopener nofollow noreferrer">https://wiki.python.org/moin/UsingPickle</A></P><P><A href="https://pypi.org/project/Flask/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/Flask/</A></P><P><A href="https://pypi.org/project/Flask-RESTful/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/Flask-RESTful/</A></P><P><A href="https://pypi.org/project/Flask-Cors/" target="_blank" rel="noopener nofollow noreferrer">https://pypi.org/project/Flask-Cors/</A></P><P><A href="https://en.wikipedia.org/wiki/Linear_regression" target="_blank" rel="noopener nofollow noreferrer">https://en.wikipedia.org/wiki/Linear_regression</A></P><P><A href="https://developers.sap.com/tutorials/appstudio-onboarding.html#3d3b8693-e86f-4120-8666-25b62797897b" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/appstudio-onboarding.html#3d3b8693-e86f-4120-8666-25b62797897b</A></P><P><A href="https://developers.sap.com/tutorials/appgyver-connect-publicapi.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/appgyver-connect-publicapi.html</A></P><P><A href="https://developers.sap.com/tutorials/abap-environment-create-abap-cloud-project.html" target="_blank" rel="noopener noreferrer">https://developers.sap.com/tutorials/abap-environment-create-abap-cloud-project.html</A></P><P><A href="https://blog.sap-press.com/how-to-integrate-a-python-app-with-sap-business-application-studio-for-an-sap-s4hana-cloud-system" target="_blank" rel="noopener nofollow noreferrer">https://blog.sap-press.com/how-to-integrate-a-python-app-with-sap-business-application-studio-for-an-sap-s4hana-cloud-system</A></P><P><A href="https://help.sap.com/doc/62a5837b7ce74a92be118efa284c0100/2023_2_QRC/en-US/python_machine_learning_client_for_sap_hana_2.17.230808.pdf" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/62a5837b7ce74a92be118efa284c0100/2023_2_QRC/en-US/python_machine_learning_client_for_sap_hana_2.17.230808.pdf</A></P><P><SPAN><A href="https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/index.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/index.html</A></SPAN></P><P><A href="https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/Frameworks/SAPFoundation/index.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/978e4f6c968c4cc5a30f9d324aa4b1d7/Latest/en-US/Documents/Frameworks/SAPFoundation/index.html</A></P><P>Happy Learning&nbsp;<span class="lia-unicode-emoji" title=":open_book:">📖</span>&nbsp;<span class="lia-unicode-emoji" title=":laptop_computer:">💻</span></P><P>Praveer Kumar Sen</P> 2024-03-01T11:03:14.858000+01:00 https://community.sap.com/t5/technology-blogs-by-members/what-s-new-for-sap-btp-in-february-2024/ba-p/13619476 What's new for SAP BTP in February 2024? 2024-03-06T09:26:05.338000+01:00 David_Cresson https://community.sap.com/t5/user/viewprofilepage/user-id/147853 <P style=" text-align : justify; ">Welcome to this second iteration of the "What's new for SAP BTP?" newsletter. I got very good feedback from the community for the first occurence, so thanks for the positive comments, and the forwarding in your network.</P><H1 id="toc-hId-858110360"><SPAN>SAP BTP</SPAN></H1><P style=" text-align : justify; "><SPAN>My objective with this newsletter is to provide a quick overview what's happened during the month on the BTP area but also highlight the differents channels of information offered by SAP you can use to stay up to date. If you are reading this, you already know this channel, the SAP community&nbsp;<span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span>, I mainly used as reference on last newsletter. I already mentioned SAP BTP Innobytes,&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/386">@cecihuergo</a>&nbsp;forwarded me the link to <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-innobytes-do-you-have-3-minutes/ba-p/13556291" target="_blank">her post</A> where she maintains link to all episodes. You can also use the <A href="https://www.youtube.com/watch?v=AwCUNQ5bhpQ&amp;list=PLWV533hWWvDkLRKiY-2aVnlXu5CpERDf9" target="_blank" rel="noopener nofollow noreferrer">playlist on youtube</A> and subscribe to the channel to get notification when new video is out. As we talk about youtube channel, you can also check the <A href="https://www.youtube.com/@sapdevs/videos" target="_blank" rel="noopener nofollow noreferrer">SAP Developers</A> channel which has a huge content with various format. Last year this channel hosted the Devtoberfest event, and currently DJ Adams aka&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/53">@qmacro</a>&nbsp;&nbsp;animates livestream on CAP. Let's close this round of table with another medium, podcast, with&nbsp;</SPAN><SPAN><A href="https://podcast.opensap.info/cloud-platform/" target="_blank" rel="noopener nofollow noreferrer">SAP BTP Talk</A></SPAN>&nbsp;podcast; we will talk about last episode on the Integration Suite section.</P><P style=" text-align : justify; "><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/189303">@thomas_volmering</a>&nbsp;provides good highlights on the <A href="https://community.sap.com/t5/technology-blogs-by-sap/a-glimpse-at-our-product-strategy-for-application-development-automation/ba-p/13604754?source=social-BTP-BTP_Awareness-Image-Awareness-Global-N%2FA-SAP_Build-SAP_Build_Code-SAP_Integration_Suite-SAP.com&amp;campaigncode=CRM-YA23-SMS-1941773&amp;sprinklrid=12650290362" target="_self">SAP product stragegy in the developpement, automation and integration</A> areas. It gives a nice overview on how all the new features on&nbsp; the low code/no code suite SAP Build, the new family member SAP Build&nbsp; Code, and the improvement on Integration Suite will help in this strategy and how these solutions are intercomplementary. Finally, IA is the center of discussions for last months, so how to talk about product strategy without mentioning how the generative IA will provide added value on these services.</P><P style=" text-align : justify; ">In the newsletter format, I can also mention the <A href="https://community.sap.com/t5/technology-blogs-by-sap/top-picks-innovations-highlights-from-sap-business-technology-platform-q4/ba-p/13609184?sap-outbound-id=EC7BF988A8F9CB93FE88EAD7F6005A5DFC105C8C&amp;smc_campaign_id=0000039500&amp;source=email-smc" target="_self">blog post</A> of&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/10354">@Stephanie_Stang</a>&nbsp;on the BTP updates happened on Q42023.</P><P style=" text-align : justify; ">Finally, we close the general update on BTP with the release of the new <A href="https://sap.github.io/btp-solution-diagrams/" target="_self" rel="nofollow noopener noreferrer">BTP Repository Diagram</A>.</P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-661596855"><SPAN>SAP BTP ABAP environment</SPAN></H1><P style=" text-align : justify; "><SPAN>Version 2402 has been released this month. As every quarter, lot of improvments, small and big, are there.</SPAN></P><P style=" text-align : justify; "><SPAN><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/9127">@FlorianWahl</a>provided a detailled inventory of this new release in his <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-release-2402/ba-p/13616379" target="_self">blog post</A>. If I would have to highlight only two functionalities, no doubt I will mention the <A href="https://community.sap.com/t5/technology-blogs-by-sap/bring-your-own-git-for-sap-btp-abap-environment/ba-p/13585439" target="_self">"bring your own Git"</A></SPAN><SPAN>&nbsp;functionality which finally offers similar option than the gCTS+ framework on S4/Hana, ie specify your own git repository used to host your software component. Beyond the fact it provides a full control on your source code, I'm pretty sure it will open new options and usages for the community. Second feature is the <A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-btp-abap-environment-elastic-scaling-of-application-servers/ba-p/13614903" target="_self">elastic scaling</A></SPAN><SPAN>; after the hibernation last year, the elastic scaling feature is another nice feature to keep the cost under control while using the possibilities of the service at full capacity.</SPAN></P><P style=" text-align : justify; "><SPAN>On blog side,&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/55">@Andre_Fischer</a>&nbsp;posted two interesting blogs on the <A href="https://community.sap.com/t5/technology-blogs-by-sap/how-to-create-a-value-help-for-custom-and-released-domain-fixed-values/ba-p/13605706" target="_self">creation of value help for custom and released domain fixed values</A></SPAN><SPAN>&nbsp;which provides an alternative to the original recommandation of using custom view on CDS views DDCDS_CUSTOMER_DOMAIN_VALUE and&nbsp;DDCDS_CUSTOMER_DOMAIN_VALUE_T and on&nbsp;<A class="" href="https://community.sap.com/t5/technology-blogs-by-sap/how-to-reuse-access-control-from-a-released-sap-cds-entity-in-abap-cloud/ba-p/13622564" target="_self">how to reuse access control from a released SAP CDS entity.</A></SPAN></P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-465083350"><SPAN>Cloud Management Tools</SPAN></H1><P style=" text-align : justify; "><SPAN>There are lot of visible changes in the services using the BTP, but the platform itself also continously evolves. Most of the time, they are silent because related to technical things behind the scene, but sometimes they are also visible for end user. This month, SAP released a big change in the "<STRONG>Usage Analytics" </STRONG>section of the BTP cockpit which is now called "<STRONG>Cost and Usage</STRONG>": all detail in this <A href="https://community.sap.com/t5/technology-blogs-by-sap/enhancing-costs-usage-and-contract-transparency/ba-p/13614671" target="_self">blog post</A>.</SPAN></P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-268569845"><SPAN>Integration Suite</SPAN></H1><P style=" text-align : justify; "><SPAN>The&nbsp;</SPAN><SPAN><A href="https://podcast.opensap.info/cloud-platform/2024/02/23/episode-104-unleash-next-generation-hybrid-integrations-with-edge-integration-cell/" target="_self" rel="nofollow noopener noreferrer">Episode 104 of BTP Talk podcast</A> </SPAN><SPAN>&nbsp;came back on the announcement of the Edge Integration Cell solution during TechEd last year. The guest of this podcast,&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/184977">@finny_babu</a>, explains in detail what is Edge Integration Cell, what are the use cases, the difference with PO, and how to activate it...</SPAN></P><P style=" text-align : justify; "><SPAN>If you prefer reading instead of listening, you can also refer to <A href="https://community.sap.com/t5/technology-blogs-by-sap/next-gen-hybrid-integration-with-sap-integration-suite-edge-integration/ba-p/13577780" target="_self">his blog post</A> published last year.</SPAN></P><P style=" text-align : justify; "><SPAN>The International Focus Group for Integration, aka IFG for integration has a monthly event for Integration Suite update. You can find previous sessions and shceduled ones for the year <A href="https://webinars.sap.com/sap-user-groups-k4u/en/ifgintegration" target="_self" rel="noopener noreferrer">there.</A></SPAN></P><P style=" text-align : justify; "><SPAN>You can find the February session recording <A href="https://sapvideo.cfapps.eu10-004.hana.ondemand.com/?entry_id=1_ddndabid" target="_self" rel="nofollow noopener noreferrer">here</A>, where you will get updates on API Management, Event Mesh, B2B and a reminder about the upgrade of the outdated third party connector as described in the note&nbsp;<A href="https://me.sap.com/notes/3001980" target="_self" rel="noopener noreferrer">3001980.</A></SPAN></P><P style=" text-align : justify; ">&nbsp;</P><H1 id="toc-hId-72056340">Configuration Changes</H1><P>Note a change is planned in March on the&nbsp;<A href="https://me.sap.com/notes/3427722" target="_blank" rel="noopener noreferrer">username and domain changes for email notifications sent for SAP Cloud Integration for data services.</A></P> 2024-03-06T09:26:05.338000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/customer-amp-partner-roundtable-for-sap-btp-abap-environment-11/ba-p/13648510 Customer & Partner Roundtable for SAP BTP ABAP Environment #11 2024-03-25T19:21:59.111000+01:00 iwona_hahn https://community.sap.com/t5/user/viewprofilepage/user-id/4326 <DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId-1119017339"><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-793421115">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-596907610"><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="">April 23rd</SPAN></STRONG>, 10:00 - 11:00 AM CET&nbsp; –<SPAN>&nbsp;</SPAN><A href="https://sap-se.zoom.us/meeting/register/tJ0lfuGuqTIqHdFjmkPO_33nYMZ_FuYEe6DG" 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/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;(Product Managers for SAP BTP ABAP&nbsp;Environment)</SPAN></LI><LI><SPAN class=""><STRONG>Our guests: Sebastian Werner&nbsp;(</STRONG>Product Manager SAP Fiori elements),<STRONG>&nbsp;Stefan Engelhardt </STRONG>(Architect SAP Fiori elements)</SPAN><BR /><BR /></LI></UL></DIV><DIV><STRONG>Preliminary Agenda:</STRONG><BR /><UL><LI>Product news &amp; updates</LI><LI><SPAN>SAP Fiori elements for ABAP developers incl.&nbsp;demo</SPAN></LI><LI>Q&amp;A</LI></UL><SPAN>Looking forward meeting you!</SPAN></DIV><DIV>&nbsp;</DIV><DIV><A href="https://sap-se.zoom.us/meeting/register/tJ0lfuGuqTIqHdFjmkPO_33nYMZ_FuYEe6DG" 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-03-25T19:21:59.111000+01:00 https://community.sap.com/t5/application-development-blog-posts/customer-amp-partner-roundtable-for-sap-btp-abap-environment-11/ba-p/13649033 Customer & Partner Roundtable for SAP BTP ABAP Environment #11 2024-03-27T10:03:34.167000+01:00 iwona_hahn https://community.sap.com/t5/user/viewprofilepage/user-id/4326 <DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId-1119042390"><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-793446166">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-596932661"><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="">April 23rd</SPAN></STRONG>, 10:00 - 11:00 AM CET&nbsp; –<SPAN>&nbsp;</SPAN><A href="https://sap-se.zoom.us/meeting/register/tJ0lfuGuqTIqHdFjmkPO_33nYMZ_FuYEe6DG" 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), </SPAN></LI><LI>&nbsp;<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&nbsp;</A></STRONG></LI><LI><SPAN class=""><STRONG>Our guests: Sebastian Werner&nbsp;(</STRONG>Product Manager SAP Fiori elements),<STRONG>&nbsp;Stefan Engelhardt </STRONG>(Architect SAP Fiori elements)</SPAN><BR /><BR /></LI></UL></DIV><DIV><STRONG>Preliminary Agenda:</STRONG><BR /><UL><LI>Product news &amp; updates</LI><LI><SPAN>SAP Fiori elements for ABAP developers incl.&nbsp;demo</SPAN></LI><LI>Q&amp;A</LI></UL><SPAN>Looking forward meeting you!</SPAN></DIV><DIV>&nbsp;</DIV><DIV><A href="https://sap-se.zoom.us/meeting/register/tJ0lfuGuqTIqHdFjmkPO_33nYMZ_FuYEe6DG" 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-03-27T10:03:34.167000+01:00 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 <P>Dear all,</P><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-836835714"><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, log off, then log on with the user DEVELOPER, client 001.</LI><LI>Choose&nbsp;<STRONG>Install</STRONG>.</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-640322209"><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-443808704"><SPAN>Highlights of the 2022 Edition</SPAN></H1><H2 id="toc-hId-376377918">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-179864413"><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--16649092">&nbsp;</H2><H2 id="toc-hId--213162597">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--409676102">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--606189607">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--802703112"><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--651962260">&nbsp;</H2><H2 id="toc-hId--848475765"><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--1044989270"><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>Enjoy!</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><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><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