https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/SAP-HANA-blog-posts.xml SAP Community - SAP HANA 2024-07-26T23:01:21.205039+00:00 python-feedgen SAP HANA blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-sap/how-data-anonymization-in-sap-hana-secure-generative-ai-applications/ba-p/13636987 How Data Anonymization in SAP HANA secure Generative AI applications through SAP Datasphere 2024-03-15T20:12:44.703000+01:00 DKK https://community.sap.com/t5/user/viewprofilepage/user-id/131035 <P><STRONG>Introduction</STRONG></P><P>As Generative AI continues to evolve, the complexities surrounding the management of Personally Identifiable Information (PII) also increase.AI systems can sometimes deduce PII from seemingly harmless data or unintentionally reveal PII in their results. Therefore, it's essential for AI developers and users to understand these potential risks and take proactive measures to address them.</P><P><STRONG>Personally identifiable information (PII)</STRONG> refers to any information that can be used to identify an individual. This might include, but is not limited to, name, social security number, date and place of birth, mother’s maiden name, or biometric records. In the digital age, it could also include digital identity data such as IP addresses or mobile device IDs.</P><P>Handling PII responsibly is critical for many reasons:</P><UL><LI>Respecting Privacy</LI><LI>Ensuring Security</LI><LI>Building Trust</LI></UL><P>On the regulatory front, there are laws including the European Union's General Data Protection Regulation (GDPR) and the U.S.'s California Consumer Privacy Act (CCPA) that offer a framework for PII management. These laws empower individuals with rights over their personal data. However, it's worth noting that these regulations are relatively recent and still evolving. There's also ongoing discourse about the optimal way<BR />to regulate AI systems to balance the need for privacy protection and technological innovation.&nbsp;<STRONG>SAP HANA Data Anonymization</STRONG> provides methods in order to overcome all the above potential risks. The methods supported by SAP HANA are :</P><UL><LI>k-anonymity</LI><LI>l-diversity</LI><LI>Differential privacy</LI></UL><P>More information on the SAP HANA Documentation :<BR /><A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/f88e51df089949b2af06ac891c77abf8/ee693d6584d243e1a0daf7c137f9600c.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_HANA_PLATFORM/f88e51df089949b2af06ac891c77abf8/ee693d6584d243e1a0daf7c137f9600c.html</A></P><P><STRONG>Architecture</STRONG></P><P>On this blog we will explore the various solutions for tackling PII-related challenges through the SAP Business Technology Platform. We'll be focusing on SAP Datasphere's capabilities, which not only enable us to consolidate all necessary data sources, SAP or non-SAP, but also leverage SAP HANA's powerful data anonymization methods. This combination ensures your data's security while maximizing its potential.</P><P>Considering the unique capabilities and skills of the personas interacting with SAP Datasphere, we have come to the following options.</P><P><EM>We really hope that the first option , direct usage of Data Anonymization annotations from SAP Datasphere interface to be on the roadmap really soon.</EM></P><P><EM><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="anon1.png" style="width: 855px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/80029iC024EE3281490FCE/image-size/large?v=v2&amp;px=999" role="button" title="anon1.png" alt="anon1.png" /></span></EM></P><P>&nbsp;</P><P>A generic <STRONG>architecture of a Generative AI</STRONG> project, where SAP Datasphere takes center stage, can be seen below :&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anon2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/80032iC4D078C045C42647/image-size/large?v=v2&amp;px=999" role="button" title="anon2.png" alt="anon2.png" /></span></P><P>More information regarding the <STRONG>CAP LLM Plugin</STRONG> , please check this link</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/elevating-data-privacy-in-sap-cap-based-genai-applications-with-cap-llm/ba-p/13585745" target="_blank">https://community.sap.com/t5/technology-blogs-by-sap/elevating-data-privacy-in-sap-cap-based-genai-applications-with-cap-llm/ba-p/13585745</A></P><P><STRONG>Hybrid Approach, focus mainly for Business personas</STRONG></P><P>The starting point for business users will be a local table accessible through the SAP DSP interface <STRONG>(INPUT)</STRONG>.<BR />We'll elaborate more on this in the upcoming images. The entire process will be seamlessly managed behind the scenes, offering a user-friendly experience <STRONG>(PROCESS)</STRONG>. It will be set up just once on the underlying SAP HANA of SAP DSP. A procedure will generate an Anonymization view, which will be displayed on the SAP Datasphere interface <STRONG>(OUTPUT)</STRONG>. This procedure is programmed to run every minute. Only when the user activates the "enable" flag during the initial step will this procedure execute. Otherwise, it simply remains inactive.&nbsp;The final output will be an SAP Datasphere view, tailor-made for business users based on their specific requirements. The anonymized view produced can be distributed by the Data Controller to the necessary DSP spaces, substituting the original non-anonymized dataset. This straightforward step allows us to exert additional control over the access permissions for the Data Consumer.</P><P><STRONG>Hybrid approach</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anon3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/80038iF49833709ED7B128/image-size/large?v=v2&amp;px=999" role="button" title="anon3.png" alt="anon3.png" /></span></P><P><STRONG>Details regarding the Configuration&nbsp;(SAP Datasphere Local Table)</STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anon4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/80041iAF8553372463858E/image-size/large?v=v2&amp;px=999" role="button" title="anon4.png" alt="anon4.png" /></span></P><P><STRONG>Information regarding SAP HANA Procedure and Scheduler</STRONG></P><P><STRONG><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="anon5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/80044iC36E6A316195D436/image-size/large?v=v2&amp;px=999" role="button" title="anon5.png" alt="anon5.png" /></span></STRONG></P><P><STRONG>Conclusion</STRONG></P><P>In conclusion, the use of SAP Datasphere in a generative AI scenario presents an array of advantages. It significantly enhances data handling and security, ensuring the protection of personally identifiable information through SAP HANA's anonymization methods. The versatility of SAP Datasphere allows it to cater to both IT and Business personas, offering a range of implementation methods including direct, SQL, Python or via a CAP Application. Being a one-stop solution for all generative AI needs, its hybrid approach is highly flexible, capable of extending and adapting to any specific requirement.</P><P>This makes SAP Datasphere a highly efficient and user-friendly tool for handling generative AI scenarios.</P> 2024-03-15T20:12:44.703000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/taking-data-federation-to-the-next-level-accessing-remote-abap-cds-view/ba-p/13635034 Taking Data Federation to the Next Level: Accessing Remote ABAP CDS View Entities in SAP HANA Cloud 2024-03-25T13:35:26.317000+01:00 SeungjoonLee https://community.sap.com/t5/user/viewprofilepage/user-id/204092 <P>Accessing data in ABAP systems, such as SAP BTP ABAP environment, S/4HANA Cloud, BW/4HANA, and others, from an external SAP HANA database is not merely a new requirement or passing trend; it has been a longstanding and ongoing need to enhance and streamline business processes. This need becomes even more crucial when considering the SAP HANA Cloud, which serves as a single gateway for all your enterprise data and where next-generation <A href="https://www.sap.com/products/technology-platform/hana/features/intelligent-data-apps.html" target="_self" rel="noopener noreferrer">Intelligent Data Applications</A> are built and run.</P><P>However, there are several reasons why directly accessing the ABAP-managed standard objects in the underlying SAP HANA database of an ABAP system is not recommended. These include the instability of names and internal structures, unexpected typecasts, incorrect session variables, and bypassed ABAP-level security, among other concerns. For more details on these issues, please refer to <A href="https://me.sap.com/notes/2511210" target="_self" rel="noopener noreferrer">SAP Note 2511210</A>.</P><P>To overcome these challenges, data federation through the Smart Data Integration (SDI) ABAP adapter has been proposed as a potential solution, while data replication is supported by both the SDI ABAP adapter and SAP Landscape Transformation (SLT). It is important to mention, though, that the SDI ABAP adapter, as explained by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/232650" target="_self">Zili Zhou</A> in her <A href="https://community.sap.com/t5/technology-blogs-by-sap/why-sdi-abap-for-virtual-access-in-sap-data-warehouse-cloud-should-be/ba-p/13542586" target="_self">blog</A>, is primarily designed for data replication and may have limitations when it comes to data federation due to limited pushdown capabilities.</P><P>In this context, I'm glad to share that starting with SAP HANA Cloud, SAP HANA Database (SAP HANA database in SAP HANA Cloud) QRC 01/2024, a new Smart Data Access (SDA) ABAP adapter has been released. This adapter allows for accessing ABAP CDS view entities in a remote ABAP system using SQL via Open Database Connectivity (ODBC) from an SAP HANA database in SAP HANA Cloud. Please find a nutshell of this new capability below:</P><UL><LI>Create a remote source to an ABAP system based on SAP ABAP Platform 2108 or later.</LI><LI>Virtualize&nbsp;remote ABAP CDS view entities by creating read-only virtual tables that point to them, and if needed, also pass parameters to the remote parameterized ABAP CDS view entities.</LI><LI>All&nbsp;limitations from <A href="https://me.sap.com/notes/2511210" target="_self" rel="noopener noreferrer">SAP Note 2511210</A> have been lifted, providing the most optimal pushdown capabilities for data federation.</LI><LI>This&nbsp;capability is only available in SAP HANA database in SAP HANA Cloud.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Overview.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79105i6CAD8EAD9B62CA8D/image-size/large?v=v2&amp;px=999" role="button" title="Overview.png" alt="Overview.png" /></span>&nbsp;<SPAN>&nbsp;</SPAN></P><H3 id="toc-hId-1117999706">Prerequisites &amp; considerations</H3><P>First, please ensure that the versions of the ABAP system and SAP HANA database in SAP HANA Cloud are as mentioned below:</P><UL><LI>The&nbsp;ABAP system should be based on SAP ABAP Platform 2108 or a later version where SQL service is available. For instance, starting with S/4HANA 2021, SQL service has been available.</LI><LI><A href="https://help.sap.com/docs/hana-cloud-database" target="_self" rel="noopener noreferrer">SAP HANA Cloud, SAP HANA Database</A> (SAP HANA database in SAP HANA Cloud) should be QRC 01/2024 or a later version where ODBC driver for ABAP is available, and the script server should be enabled and running.</LI></UL><P>Another aspect that should be considered is whether the ABAP system is protected by a corporate firewall (e.g., on-prem S/4HANA). If it is, then SAP Cloud Connector is required.</P><P>If the above conditions are met, the next step is to expose ABAP CDS view entities from the ABAP system side so that they can be accessed from SAP HANA database in SAP HANA Cloud via the SQL service.</P><P>Since developing and exposing an SQL service in the ABAP system is not the focus of this blog and has already been well-explained by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/179779" target="_self">Frank-Martin Haas</A> in his <A href="https://community.sap.com/t5/technology-blogs-by-sap/consuming-cds-view-entities-using-odbc-based-client-tools/ba-p/13509459" target="_self">blog</A>, please refer to his <A href="https://community.sap.com/t5/technology-blogs-by-sap/consuming-cds-view-entities-using-odbc-based-client-tools/ba-p/13509459" target="_self">blog</A> and the following links.</P><UL><LI>SAP Business Technology Platform: <A href="https://help.sap.com/docs/btp/sap-business-technology-platform/developing-and-exposing-sql-service-in-abap-system" target="_self" rel="noopener noreferrer">Developing and Exposing an SQL Service in the ABAP System</A></LI><LI>SAP&nbsp;Tutorials: <A href="https://developers.sap.com/tutorials/abap-environment-abap-sql.html#86c473cc-3d69-4bc1-bd5d-253223304208" target="_self" rel="noopener noreferrer">Using ODBC driver for SQL Service</A> (From Step 3 to Step 9)</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Detail.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/83487iA3AE8FD71B71657F/image-size/large?v=v2&amp;px=999" role="button" title="Detail.png" alt="Detail.png" /></span><SPAN>&nbsp;</SPAN>&nbsp;</P><H3 id="toc-hId-921486201">Getting started with SDA ABAP adapter (<EM>abapodbc</EM>)</H3><P>If everything is ready in the ABAP system to expose ABAP CDS view entities, let’s configure the SDA ABAP adapter from the SAP HANA database in SAP HANA Cloud.</P><P>The configuration steps are almost the same as using SDA with other remote sources: downloading the DigiCert SSL certificate, importing the certificate for SSL connection, creating a remote source, and finally, creating a virtual table. Please refer to the examples below.</P><P><STRONG>Download the DigiCert SSL certificate:</STRONG></P><pre class="lia-code-sample language-bash"><code>-- DigiCert Global Root CA curl -O https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem -- DigiCert Global Root G2 curl -O https://dl.cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem</code></pre><P>Since DigiCert has stopped signing certificates with the root certificate authority (CA) "DigiCert Global Root CA" and is now moving forward with the "DigiCert Global Root G2" certificate, it is recommended to add both certificates during the switching period. However, using only one certificate is basically sufficient.</P><P><STRONG>Import the certificate for SSL connection:</STRONG></P><pre class="lia-code-sample language-sql"><code>-- import the certificate for SSL connection (CA) CREATE PSE SSL; CREATE CERTIFICATE CA_CERT FROM ' -----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh ... CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE----- '; -- import the certificate for SSL connection (G2) CREATE CERTIFICATE G2_CERT FROM ' -----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh ... CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE----- '; ALTER PSE SSL ADD CERTIFICATE CA_CERT; ALTER PSE SSL ADD CERTIFICATE G2_CERT; SET PSE SSL PURPOSE REMOTE SOURCE;</code></pre><P><STRONG>Create a remote source:</STRONG></P><pre class="lia-code-sample language-sql"><code>-- create a remote source to the ABAP SQL service endpoint CREATE REMOTE SOURCE ABAP ADAPTER "abapodbc" CONFIGURATION 'uidtype=alias;driver=ODBC_driver_for_ABAP.so;servicepath=/sap/bc/sql/sql1/sap/s_privileged;host=&lt;abap_host_name&gt;;port=&lt;abap_port_number&gt;;language=EN;typemap=semantic;' WITH CREDENTIAL TYPE 'PASSWORD' USING 'user=&lt;user_name&gt;;password=&lt;password&gt;';</code></pre><P>Alternatively, like other SDA adapters, the remote source can be created using the SAP HANA Database Explorer UI. Once the remote source is created, the exposed ABAP CDS View entities can be browsed using the SAP HANA Database Explorer as described below.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Remote Objects.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79077iFAE849766E95A010/image-size/large?v=v2&amp;px=999" role="button" title="Remote Objects.png" alt="Remote Objects.png" /></span></P><P><STRONG>Create virtual tables:</STRONG></P><pre class="lia-code-sample language-sql"><code>-- create virtual tables by pointing to the exposed ABAP CDS view entities CREATE VIRTUAL TABLE DEMO.V_ORDERS AT "ABAP"."NULL"."ZORDERS"."Orders"; CREATE VIRTUAL TABLE DEMO.V_ORDERITEMS AT "ABAP"."NULL"."ZORDERS"."OrderItems";</code></pre><P>Alternatively, virtual tables can also be created using the SAP HANA Database Explorer UI by selecting the remote object and clicking on the 'Create Virtual Object(s)' button in the screenshot above.</P><P>Please also refer to the links below for further details.</P><UL><LI>SAP&nbsp;HANA Cloud, SAP HANA Database Data Access Guide: <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-data-access-guide/import-certificates-for-ssl-connections-to-remote-sources" target="_self" rel="noopener noreferrer">Import Certificates for SSL Connections to Remote Source</A></LI><LI>SAP&nbsp;HANA Cloud, SAP HANA Database Data Access Guide: <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-data-access-guide/create-abap-cloud-remote-source" target="_self" rel="noopener noreferrer">Create an ABAP Cloud Remote Source</A></LI></UL><P>Before moving forward, please don’t forget to create statistics on virtual tables. Creating statistics is always strongly recommended to ensure optimal decision-making on the query execution plan by the query optimizer.</P><P><STRONG>Create statistics on a virtual table:</STRONG></P><pre class="lia-code-sample language-sql"><code>CREATE STATISTICS ON DEMO.V_ORDERS TYPE SIMPLE; CREATE STATISTICS ON DEMO.V_ORDERITEMS TYPE SIMPLE;</code></pre><P>Further details can be found at the link below.</P><UL><LI>SAP&nbsp;HANA Cloud, SAP HANA Database Data Access Guide: <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-data-access-guide/create-statistics-on-virtual-table-or-linked-database" target="_self" rel="noopener noreferrer">Create Statistics on a Virtual Table or Linked Database</A><BR />&nbsp;</LI></UL><H3 id="toc-hId-724972696">Query execution and execution plan</H3><P>With above configurations, if the same statement from the <A href="https://community.sap.com/t5/technology-blogs-by-sap/consuming-cds-view-entities-using-odbc-based-client-tools/ba-p/13509459" target="_self">blog</A> by <A href="https://community.sap.com/t5/user/viewprofilepage/user-id/179779" target="_self">Frank-Martin Haas</A> is executed but with virtual tables, the result will be as follows.</P><pre class="lia-code-sample language-sql"><code>SELECT OI."Item", SUM(OI."Amount") FROM DEMO.V_ORDERS O INNER JOIN DEMO.V_ORDERITEMS OI ON O."Id" = OI."Orderid" GROUP BY "Item";</code></pre><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Join.png" style="width: 955px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79078i0945DFD451821803/image-size/large?v=v2&amp;px=999" role="button" title="Join.png" alt="Join.png" /></span></P><P>Now, let’s see the query plan using <STRONG><EM>Analyze - Explain Plan</EM></STRONG>.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Plan.png" style="width: 955px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/79079iEDDCEEF77B139DB8/image-size/large?v=v2&amp;px=999" role="button" title="Plan.png" alt="Plan.png" /></span></P><P><SPAN>As you can see, both aggregation and join are pushed down to the remote ABAP system and executed there. In other words, both aggregation and join are performed on the remote side, and then the result is transferred to the SAP HANA database in SAP HANA Cloud. Since SDA is a part of SAP HANA core like the query optimizer, if statistics are available, the query optimizer will create the most optimal execution plan based on the tight integration with SDA.<BR />&nbsp;</SPAN></P><H3 id="toc-hId-528459191">Other limitations</H3><P>The most important limitation to keep in mind is that the SDA ABAP adapter supports only read-only virtual tables at the moment. This leads to the following limitations:</P><UL><LI>DMLs&nbsp;(e.g., INSERT/UPDATE/DELETE) cannot be executed on virtual tables.</LI><LI>WITH&nbsp;REMOTE is not supported when executing CREATE VIRTUAL TABLE.</LI><LI>Join&nbsp;relocation to a remote ABAP system, which requires temporary table creation, is not supported. However, if another remote source with temporary table creation capability is involved additionally, join relocation to that remote source is possible but it will be decided by the query optimizer.<BR />&nbsp;</LI></UL><H3 id="toc-hId-331945686">FAQs</H3><P><STRONG>Q:</STRONG> Is this SDA ABAP adapter only available in the SAP HANA database in SAP HANA Cloud? Is there any plan to support this in SAP HANA Platform 2.0?<BR /><STRONG>A:</STRONG><SPAN> Yes, it is only available in the SAP HANA database in SAP HANA Cloud. There are no concrete plans to support this in SAP HANA Platform 2.0.</SPAN></P><P><STRONG>Q:</STRONG> Is there any plan to support real-time replication, such as SDA-based remote table replication described in this <A href="https://community.sap.com/t5/technology-blogs-by-sap/a-new-approach-for-replicating-tables-across-different-sap-hana-systems/ba-p/13460061" target="_self">blog</A>? If not, what is the recommended technology for replicating ABAP CDS view entities?<BR /><STRONG>A:</STRONG><SPAN> There are no plans to support real-time replication with the SDA ABAP adapter. The SDA ABAP adapter is designed for data federation purposes only, even though toggling to a snapshot replica is supported to improve query performance. For replicating ABAP CDS view entities, it is recommended to use SDI ABAP adapter or SLT.</SPAN></P><P><STRONG>Q:</STRONG> Is it possible to pass parameters to the remote ABAP CDS view entity through the virtual table?<BR /><SPAN><STRONG>A:</STRONG> Yes, passing parameters to the remote ABAP CDS view entity is supported. Please refer to the link below.</SPAN></P><UL><LI>SAP&nbsp;HANA Cloud, SAP HANA Database Data Access Guide: <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-data-access-guide/virtualizing-parameterized-sql-views" target="_self" rel="noopener noreferrer">Virtualizing Parameterized Views</A></LI></UL><P><STRONG>Q:</STRONG> Is it possible to connect to the on-prem ABAP system? If so, how can it be done?<BR /><SPAN><STRONG>A:</STRONG> Yes, the way of connecting the on-prem ABAP system can be found in the links below.</SPAN></P><UL><LI>SAP&nbsp;HANA Cloud, SAP HANA Database Data Access Guide: <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-data-access-guide/create-abap-on-premise-remote-source" target="_self" rel="noopener noreferrer">Create an ABAP On-Premise Remote Source</A></LI></UL><P>However, please ensure that the following conditions are met:</P><OL><LI>The on-prem ABAP system is based on SAP ABAP Platform 2108 or later version.</LI><LI>SAP Cloud Connector is properly configured so that the on-prem ABAP system is ‘reachable’ from the SAP Cloud Connector and SAP BTP Cockpit.</LI><LI>SAP Cloud Connector is enabled, and the corresponding IP addresses are allowed in the SAP HANA database configuration in SAP HANA Cloud.</LI><LI>The CREATE REMOTE SOURCE statement includes the correct specifications for <EM>useCloudConnector</EM> and <EM>ConnectivityLocationId</EM> properties.</LI></OL><P><STRONG>Q:</STRONG> It seems that only the ‘technical user’ can be used for authentication. Are there any plans to support other authentication methods?<BR /><SPAN><STRONG>A:</STRONG> Yes, other authentication methods will be considered in the future.</SPAN></P><P><SPAN><STRONG>Q:</STRONG>&nbsp;Is it also possible to access remote ABAP CDS (DDIC-based) views or other remote ABAP-managed objects?<BR /><STRONG>A:</STRONG>&nbsp;No, only remote ABAP CDS view entities or remote parameterized ABAP CDS view entities can be accessed.&nbsp;For the differences between ABAP CDS (DDIC-based) views and ABAP CDS view entities, please refer to this <A href="https://community.sap.com/t5/technology-blogs-by-sap/a-new-generation-of-cds-views-how-to-migrate-your-cds-views-to-cds-view/ba-p/13508307" target="_self">blog</A>.<BR /></SPAN></P><P><STRONG>Q:</STRONG> Is it possible to use the linked database feature?<BR /><SPAN><STRONG>A:</STRONG> The linked database feature with a 3-part name is supported. However, passing parameters through the linked database feature is not supported. Linked database optimized mode is also not supported in SAP HANA Cloud.<BR /></SPAN>&nbsp;&nbsp;</P><H3 id="toc-hId-135432181">Conclusion</H3><P>To conclude, it is evident that accessing data in ABAP systems plays a vital role in the development of <A href="https://www.sap.com/products/technology-platform/hana/features/intelligent-data-apps.html" target="_self" rel="noopener noreferrer">Intelligent Data Applications</A> on the SAP HANA database in SAP HANA Cloud. This also aligns perfectly with the concept of <A href="https://www.sap.com/products/erp/rise/clean-core.html" target="_self" rel="noopener noreferrer">Clean Core</A>, which involves minimizing customizations and rearchitecting them on SAP BTP, particularly on the SAP HANA database in SAP HANA Cloud. By elevating data federation to the next level with SDA ABAP adapter and embracing these practices, organizations can unlock the full potential of their data, leveraging the power of SAP HANA Cloud. So, don't miss out on the opportunity to harness the benefits of <A href="https://www.sap.com/products/technology-platform/hana/features/intelligent-data-apps.html" target="_self" rel="noopener noreferrer">Intelligent Data Applications</A> and propel your business towards success with the SAP HANA database in SAP HANA Cloud.</P> 2024-03-25T13:35:26.317000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/product-updates-for-sap-business-application-studio-march-2024-edition/ba-p/13648823 Product Updates for SAP Business Application Studio - March 2024 Edition 2024-03-26T08:39:28.924000+01:00 FranziMickIT https://community.sap.com/t5/user/viewprofilepage/user-id/163138 <P><SPAN>Dear community,</SPAN></P><P><SPAN>Welcome to our detailed exploration of some recent enhancements within the SAP Business Application Studio. This post will guide you through key updates, including our streamlined Storyboard, a newly designed 'Welcome' page, the introduction of SAPUI5 adaptation projects, a comprehensive SAPUI5 Walkthrough Tutorial with TypeScript, and the new feature – release of the powerful UI5 linter. Each feature mentioned contributes to overall user productivity, designed to improve your working experience with us.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-860854818"><SPAN>Enhancing Productivity with our Updated Storyboard</SPAN></H1><P><SPAN>SAP Business Application Studio now provides a streamlined storyboard. The improved interface allows you to readily view which service actions and functions your application includes. This overview aids in the comprehension and management of your tools, ensuring you are using your resources to their full potential.</SPAN></P><P><SPAN>We've also added the option to trigger the creation of unbound actions and functions directly. This eliminates the need for extra steps and consolidates key tasks in one location, reducing the time required for task navigation and management.</SPAN></P><P><SPAN>The described enhancements improve the experience in two major ways: by having a more complete, clearer visualization of your app's functions and by simplifying the creation and editing process. </SPAN></P><P><SPAN>Have a look at some sample of our updated storyboard below:</SPAN></P><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Updated Storyboard of SAP Business Application Studio" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86106i8BE37DF5ED510DBF/image-size/large?v=v2&amp;px=999" role="button" title="Storyboard_updated.gif" alt="Updated Storyboard of SAP Business Application Studio" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Updated Storyboard of SAP Business Application Studio</span></span><P>&nbsp;</P></DIV><H1 id="toc-hId-664341313"><SPAN>New Welcome Page for SAP HANA Applications</SPAN></H1><P><SPAN>Our new 'Welcome' page, designed with your needs in mind, serves as an efficient gateway to interact with SAP HANA-related features within SAP Business Application Studio. This hub offers enriched documentation, insightful blogs, and direct access to various integral aspects that can facilitate and speed up your SAP HANA development journey.</SPAN></P><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAP HANA Welcome Page in SAP Business Application Studio" style="width: 804px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86115iD11E7F6904117CAC/image-size/large?v=v2&amp;px=999" role="button" title="SAP HANA Welcome Page.jpg" alt="SAP HANA Welcome Page in SAP Business Application Studio" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">SAP HANA Welcome Page in SAP Business Application Studio</span></span><P><SPAN>As soon as you start your SAP Business Application Studio instance for SAP HANA Native Applications, you will find this new page. Some of the hyperlinks point to guides within SAP Business Application Studio, others to outside of it, including blogs on community.sap.com and material on help.sap.com.</SPAN></P></DIV><P><SPAN>The information is segmented into five structured sections. The 'Start' segment provides straightforward access to SAP HANA project creation, while the 'Development' section enlists tools to accelerate initiating a project or service.</SPAN></P><P><SPAN>The 'Blog posts' segment serves as a crucial knowledge base, offering valuable insights into SAP HANA development, including vital components like calculation view modeling and best practices. For those aspiring to refine their skills, the 'Get Started with SAP HANA' section presents comprehensive learning materials related to SAP HANA development, facilitating continuous skill improvement.</SPAN></P><P><SPAN>Lastly, the 'Help' section plays the role of an informative guide, providing exhaustive documentation pertaining to SAP HANA development topics. In essence, our 'Welcome' page aims to be a comprehensive, easy-to-navigate resource, dedicated to refining your SAP HANA developmental experience, right from the outset.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-467827808"><SPAN>SAPUI5 Adaptation Projects for SAP S/4HANA Cloud Public Edition</SPAN></H1><P><SPAN>SAP Business Application Studio now enables a significant feature for enhancing SAP S/4HANA Cloud Public Edition - the ability to employ SAPUI5 adaptation projects. These projects enable the creation of application variants tailored to fulfill the specific business requirements of diverse business roles, organizational units, and countries. They offer the ability to design efficient processes by concealing unnecessary fields, representing data in chart formats, or alternation between responsive and grid tables for enhanced data comprehension.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Creation of an SAPUI5 Adaptation Project" style="width: 384px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/86119i01D85E8480FE8668/image-size/medium?v=v2&amp;px=400" role="button" title="Adaptation Projects.jpeg" alt="Creation of an SAPUI5 Adaptation Project" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Creation of an SAPUI5 Adaptation Project</span></span></P><P><SPAN>The primary advantage of an adaptation project lies in allowing you to leverage the original SAP Fiori application, its OData service, and application logic, to exclusively govern modifications specific to the application variant. Upon deployment, the source application and the derived application variant co-exist under distinct titles, accessible to corresponding business users via uniquely named application tiles in ‘My Home’, the new SAP S/4HANA Cloud Public Edition’s starting point.</SPAN></P><P><SPAN><A href="https://community.sap.com/t5/enterprise-resource-planning-blogs-by-sap/extending-sap-s-4hana-cloud-public-edition-using-sapui5-adaptation-projects/ba-p/13607813" target="_self">See this blog post from Elisabeth Riemann linking to an extensive, end-2-end tutorial</A>.</SPAN></P><P><SPAN>Did you know that adaptation projects are a part of ‘SAPUI5 flexibility’? <A href="https://help.sap.com/docs/UI5_FLEXIBILITY/430e2c1a4ff241bc8162df4bf51e0730/e36d19b3d24f47199a9a82d3faa508c3.html?language=en-US&amp;locale=en-US" target="_self" rel="noopener noreferrer">Everything you want to know about this toolset is described in our Help Portal</A>.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-271314303"><SPAN>SAPUI5 Walkthrough Tutorial with TypeScript</SPAN></H1><P>Our UI5 team has created this&nbsp;tutorial to introduce&nbsp;<A href="https://ui5.sap.com/#/topic/dad1905a07f849ce9c509721317d38d8" target="_self" rel="noopener noreferrer">all development paradigms of SAPUI5 and also demonstrate the benefits of TypeScript with SAPUI5</A>.</P><P><SPAN>This tutorial provides extensive guidance on key SAPUI5 development principles and data binding concepts through creating an application from scratch. After this, the tutorial guides you through enhancing the app with advanced features like navigation, control extension, responsiveness, and exploring built-in support tools.</SPAN></P><P>&nbsp;</P><H1 id="toc-hId-74800798"><SPAN>Introducing UI5 linter</SPAN></H1><P>We have introduced UI5 linter, a static code analysis tool that enhances code quality, readability, security, and efficiency. Its initial features focus on validating compliance with the Best Practices for UI5 Developers, reporting areas of concern like deprecated APIs, synchronous loading mechanisms, and global variables usage. The UI5 linter can be easily installed and used via .npm package manager and is instrumental in preparing your project for future versions of UI5.</P><P>Use the UI5 linter to identify problematic code that does not follow UI5 best practices.</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/introducing-ui5-linter/ba-p/13633898" target="_self">Learn more about UI5 linter in a blog post from Oliver Graeff</A>.</P><P><SPAN>.</SPAN></P><P><SPAN>That brings us to the end of this update. We hope you found this insight into our recent enhancements beneficial. As we continue to enhance SAP Business Application Studio, we encourage you to explore and leverage these new features to increase your productivity. Thank you for your ongoing commitment to our products, and we ensure that we remain dedicated to improving your user experience. Stay connected for our next round of updates!</SPAN></P><P><SPAN>Happy coding!</SPAN></P> 2024-03-26T08:39:28.924000+01:00 https://community.sap.com/t5/technology-blogs-by-sap/safeguarding-data-privacy-in-ksa-leveraging-sap-to-navigate-ndmo-s/ba-p/13652286 Safeguarding Data Privacy in KSA - Leveraging SAP to navigate NDMO’s Regulations in Digital Era 2024-03-28T12:05:30.971000+01:00 Zainab_ASalam https://community.sap.com/t5/user/viewprofilepage/user-id/1426218 <P><FONT face="courier new,courier" size="2" color="#333333">Blog v1.0 &nbsp;| &nbsp;</FONT><FONT face="courier new,courier" size="2" color="#333333">Published On: 28 March 2024</FONT></P><P><FONT face="courier new,courier" size="2"><FONT color="#333333">Authors:&nbsp;</FONT><a href="https://community.sap.com/t5/user/viewprofilepage/user-id/76380">@asadkhan02</a>&nbsp;,&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1427434">@AyeshaSafeer</a>&nbsp;,&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/1426218">@Zainab_ASalam</a>&nbsp;</FONT></P><P style=" text-align: center; "><FONT face="courier new,courier" size="2" color="#808080">_________________________________________</FONT></P><P><FONT face="arial,helvetica,sans-serif" color="#000080">In today's digital era, data privacy is a crucial issue for both individuals and organizations. The <STRONG>Saudi National Data Management Office</STRONG> (<STRONG>NDMO</STRONG>), in partnership with the <STRONG>Saudi Data and</STRONG> <STRONG>Artificial Intelligence Authority</STRONG> (<STRONG>SDAIA</STRONG>), has introduced stringent <STRONG>Data Governance and Personal Data Protection Standards</STRONG>. These regulations mandate all organizations operating across various industries in the Kingdom of Saudi Arabia comply by <STRONG>September 2024</STRONG>.</FONT></P><P><FONT face="arial,helvetica,sans-serif" color="#000080">Failure to comply with these regulations can result in hefty financial fines reaching SAR 3 million or higher in some cases, reputational damage, legal consequences, and loss of trust among customers and partners.</FONT></P><P><FONT face="arial,helvetica,sans-serif" color="#000080"><SPAN>To ensure compliance with these new regulations, organizations are encouraged to implement processes aligned with the 15 domains outlined by the NDMO for Data Governance and Personal Data Protection Standards. Leveraging technology as an enabler, organizations can implement robust data privacy measures and effectively meet these requirements.</SPAN></FONT></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Top 5 Areas part of 15 Domains outlined by NDMO for Data Governance and Personal Data Protection Standards" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87957i2C22EE02F15D3B98/image-size/large?v=v2&amp;px=999" role="button" title="Picture1.png" alt="Top 5 Areas part of 15 Domains outlined by NDMO for Data Governance and Personal Data Protection Standards" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Top 5 Areas part of 15 Domains outlined by NDMO for Data Governance and Personal Data Protection Standards</span></span></P><P><FONT size="3" color="#000080">SAP, a global leader in enterprise software, provides advanced technologies with artificial intelligence (AI) capabilities that provide a solid foundation for organizations to implement data governance and personal data protection processes. SAP solutions enable Saudi organizations to efficiently navigate and fulfill regulatory requirements:</FONT></P><P><FONT face="arial,helvetica,sans-serif" size="3" color="#333399"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Picture2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/87931iD46B5558704106BA/image-size/large?v=v2&amp;px=999" role="button" title="Picture2.png" alt="Picture2.png" /></span></FONT></P><P><FONT face="arial,helvetica,sans-serif" size="3" color="#000080"><SPAN>By implementing SAP solutions, Saudi organizations can empower their data privacy practices, mitigate compliance risks, and build trust among stakeholders. SAP technologies uphold data integrity, safeguard personal information, offer the framework for regulatory compliance implementation, and adapt to the demands of the digital age.</SPAN></FONT></P><P><FONT face="arial,helvetica,sans-serif" size="3" color="#000080">As a team at SAP, we are committed to supporting organizations in achieving their regulatory compliance initiatives. We invite you to take the next step by exploring how our technologies and solutions can assist you on this journey.</FONT></P><P><FONT face="arial,helvetica,sans-serif" size="3" color="#000080">Contact us today to learn more about how SAP can help you navigate the complex landscape of data privacy regulations in Saudi Arabia and ensure compliance.</FONT></P><P>&nbsp;</P> 2024-03-28T12:05:30.971000+01:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/elucidation-of-associations-in-cds-views/ba-p/13655229 Elucidation of Associations in CDs Views 2024-04-02T20:20:00.019000+02:00 akashkannan22 https://community.sap.com/t5/user/viewprofilepage/user-id/847958 <P><STRONG><U><SPAN>ASSOCIATIONS:</SPAN></U></STRONG></P><P>ASSOCIATIONS are kind of Joins to fetch data from multiple tables on Join Conditions but these are ‘JOINS ON-DEMAND’ i.e. they will only be triggered when user would access the required data which needs the Association of tables.&nbsp; For example, your CDS view has 4 Associations configured and user is fetching data for only 2 tables, the ASSOICATION on other 2 tables will not be triggered and the system would return the results quickly, so it enables really high turn-around time as compared to regular SQL JOINS.<BR /><STRONG><SPAN>Associations</SPAN></STRONG>&nbsp;are defined with ‘Cardinality’. Syntax :&nbsp;<STRONG><SPAN>association[&lt;cardinality&gt;]</SPAN></STRONG><BR />Cardinality concept is not new and holds the same concept with CDS views as well.&nbsp; There are 4 types of Cardinality possible based on the data and relationship in the tables joined;</P><UL><LI><STRONG><SPAN>0..1</SPAN></STRONG></LI><LI><STRONG><SPAN>0..n or 0..*</SPAN></STRONG></LI><LI><STRONG><SPAN>1..0</SPAN></STRONG></LI><LI><STRONG><SPAN>1..n or 1..*</SPAN></STRONG></LI></UL><P><STRONG><U><SPAN>NOTE</SPAN></U></STRONG>: If you are confused on what kind of association I should configure in my CDS view then you can apply a rule of thumb: ‘always use this :&nbsp;<STRONG><SPAN>association[1].&nbsp;&nbsp;</SPAN></STRONG>This will always trigger an OUTER join and will work in all the cases.<BR />Let’s create a CDS view with ASSOCIATION concept.</P><OL><LI>Create View with Association template;</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_13-1712036254761.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89457i9CA1BFE368FEE609/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_13-1712036254761.png" alt="akashkannan22_13-1712036254761.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_14-1712036280209.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89459iFEFD7A93F463E637/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_14-1712036280209.png" alt="akashkannan22_14-1712036280209.png" /></span></P><UL><LI>Below is the default structure you will get. As you can see the association cardinality is defined as ‘Association[1]’. You can keep it as it is, if you are not sure what association you have to assign.</LI><LI>Check the default Association name as&nbsp;<STRONG><SPAN>_association_name</SPAN></STRONG>. This can be any name of your choice but SAP has created a naming convention standard to start this name with an underscore(_) and it is always good to follow SAP standard best practices.</LI></UL><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_15-1712036299874.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89461i2F29AF8D6990688B/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_15-1712036299874.png" alt="akashkannan22_15-1712036299874.png" /></span></P><OL><LI>Add the required data elements to complete the view. Lets take the same example we did with JOIN view.</LI></OL><P><STRONG><SPAN>EXPOSED Association</SPAN></STRONG></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_16-1712036322062.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89463i57464185A6B80F81/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_16-1712036322062.png" alt="akashkannan22_16-1712036322062.png" /></span></P><P>Right click and select ‘Show SQL CREATE Statement;</P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_17-1712036347398.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89465iE10E73146097EE6D/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_17-1712036347398.png" alt="akashkannan22_17-1712036347398.png" /></span></P><P>As you can see, NO Join is created;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_18-1712036370810.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89467i3504C75096E1D278/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_18-1712036370810.png" alt="akashkannan22_18-1712036370810.png" /></span></P><UL><LI>We can add separate fields in the CDS view as well like a join and that is called Ad-Hoc Association Concept. In this scenario a join will be performed beforehand.</LI></UL><P><STRONG><SPAN>AD-HOC Association:</SPAN></STRONG><STRONG><SPAN><BR /></SPAN></STRONG></P><P>&nbsp;</P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_19-1712036394799.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89468i4C32D9A13AA2E572/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_19-1712036394799.png" alt="akashkannan22_19-1712036394799.png" /></span></P><P>Check the SQL CREATE statement.&nbsp; Note that a ‘LEFT OUTER MANY TO ONE JOIN’ is created.&nbsp; The join created because we selected individual fields instead of exposing the whole Association and it is LEFT OUTER MANY TO ONE i.e. *..1 due to the fact that we configured cardinality like ASSOCIATION[1].</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_20-1712036428618.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89472i963532D4B64339C0/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_20-1712036428618.png" alt="akashkannan22_20-1712036428618.png" /></span></P><P>As we saw above the ASSOCIATION concept with EXPOSED and AD-HOC Associations.&nbsp; Now lets activate the view with Exposed Association and see how it performs a join at RUN Time.<BR /><BR />Activate this view and hit F8 to execute;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_21-1712036455327.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89473iB3111837EE1BD912/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_21-1712036455327.png" alt="akashkannan22_21-1712036455327.png" /></span></P><P>Execute and look at highlighted – CDS View name and CARRID data AA and AZ.&nbsp; Also note that NO data from table SPFLI is displayed as NO join is yet performed.</P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_22-1712036478950.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89475i69FF9CBC46641A1D/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_22-1712036478950.png" alt="akashkannan22_22-1712036478950.png" /></span></P><P>Now if you want to see further Airport information for CARRID ‘AA’ from table SPFLI. right click on any row with CARRID ‘AA’ and choose ‘Follow Association’.&nbsp; Another pop-up window will opn, click the Association type;</P><DIV class="">&nbsp;</DIV><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_23-1712036536140.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89477iAD0672D93183985D/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_23-1712036536140.png" alt="akashkannan22_23-1712036536140.png" /></span></P><P>Check data:&nbsp; Join is now performed&nbsp;<STRONG><SPAN>ON-DEMAND</SPAN></STRONG>&nbsp;and data only for CARRID ‘AA’ is displayed based on Association Key.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="akashkannan22_24-1712036559565.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/89479i916287240B2A3358/image-size/medium?v=v2&amp;px=400" role="button" title="akashkannan22_24-1712036559565.png" alt="akashkannan22_24-1712036559565.png" /></span></P><P>In summary, Association concept is one of the wonderful things I liked about CDS views.&nbsp; So intelligently, SAP developed this to save the effort in reading only the information which is required for the analytics purpose.&nbsp; You can feel the real difference after designing a very complex CDS view with a combination of multiple table and other CDS views.&nbsp; The very complex CDS view still performance great when Associations are used.&nbsp; In this blog post, we saw the Association concept together with Exposed and Ad-Hoc associations.</P> 2024-04-02T20:20:00.019000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/workload-analysis-for-hana-platform-series-2-analyze-the-cpu-threads-and/ba-p/13608317 Workload Analysis for HANA Platform Series - 2. Analyze the CPU, Threads and Numa Utilizations 2024-04-02T22:26:10.409000+02:00 tao_shen https://community.sap.com/t5/user/viewprofilepage/user-id/276170 <P>In the previous blog, we had discussed the workload pattern. This blog dissects how the CPU, threads and NUMA related topic will influence the workload, and how to figure out the most useful information through the workload analysis. The conclusion can be used for further tuning the HANA system into a good shape on CPU resources consumption.</P><P><STRONG>How to Begin with CPU Utilization Analysis</STRONG></P><P>The analysis of CPU utilization stands as a key element within the broader scope of workload analysis. Determining the right approach to analyze CPU usage is crucial. It's essential to first identify the type of CPU utilization that may be problematic—be it user CPU utilization within the HANA instance, system CPU utilization governed by the OS, or a combination of both. A clear understanding of this distinction is necessary to properly address the issue.</P><P>Should the user CPU utilization be significant, it would be prudent to delve into thread information to gain insights into ongoing processes. Conversely, if the focus is on system CPU utilization from the OS, gathering thread data alongside call stack histories is advisable. Collaboration with the OS Administrator might also be necessary to investigate any scheduled jobs or activities that coincide with peak usage times.</P><P>In this blog, our primary focus is on user CPU utilization, which is directly impacted by the workload within the HANA instance. A valuable starting point for gaining deeper insights is to analyze thread samples. The monitoring views pertinent to this are:</P><UL><LI><A href="https://help.sap.com/docs/HANA_SERVICE_CF/7c78579ce9b14a669c1f3295b0d8ca16/b6ef1509be6e4b1caeb35cb6675296c3.html" target="_blank" rel="noopener noreferrer">HOST_SERVICE_THREAD_SAMPLES View (Embedded Statistics Service) | SAP Help Portal</A></LI><LI><A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/4fe29514fd584807ac9f2a04f6754767/d2176a65d2951014b80cbf93343900d5.html" target="_blank" rel="noopener noreferrer">M_SERVICE_THREAD_SAMPLES System View | SAP Help Portal</A></LI></UL><P>Although both views contain very similar data, for the purpose of workload analysis, we particularly concentrate on specific columns within these views:</P><DIV class=""><DIV class=""><DIV class=""><DIV class=""><TABLE border="1"><TBODY><TR><TD width="251.475px"><P>HOST</P></TD><TD width="131.709px"><P>VARCHAR(64)</P></TD><TD width="407.207px"><P>Displays the host name.</P></TD></TR><TR><TD width="251.475px"><P>TIMESTAMP</P></TD><TD width="131.709px"><P>TIMESTAMP</P></TD><TD width="407.207px"><P>Displays the timestamp of the record.</P></TD></TR><TR><TD width="251.475px"><P>THREAD_TYPE</P></TD><TD width="131.709px"><P>VARCHAR(128)</P></TD><TD width="407.207px"><P>Displays the thread type.</P></TD></TR><TR><TD width="251.475px"><P class="">THREAD_METHOD</P></TD><TD width="131.709px"><P class="">VARCHAR(256)</P></TD><TD width="407.207px"><P class="">Displays the thread method.</P></TD></TR><TR><TD width="251.475px"><P class="">THREAD_DETAIL</P></TD><TD width="131.709px"><P class="">NVARCHAR(256)</P></TD><TD width="407.207px"><P class="">Displays the thread detail (truncated).</P></TD></TR><TR><TD width="251.475px"><P class="">THREAD_STATE</P></TD><TD width="131.709px"><P class="">VARCHAR(32)</P></TD><TD width="407.207px"><P class="">Displays the thread state.</P></TD></TR><TR><TD width="251.475px"><P class="">STATEMENT_HASH</P></TD><TD width="131.709px"><P class="">VARCHAR(32)</P></TD><TD width="407.207px"><P class="">Displays the unique identifier for an SQL string.</P></TD></TR><TR><TD width="251.475px"><P class="">ROOT_STATEMENT_HASH</P></TD><TD width="131.709px"><P class="">VARCHAR(32)</P></TD><TD width="407.207px"><P class="">Displays the MD5 hash value for the root statement string.</P></TD></TR><TR><TD width="251.475px"><P class="">USER_NAME</P></TD><TD width="131.709px"><P class="">NVARCHAR(256)</P></TD><TD width="407.207px"><P>Displays the SQL user name.</P></TD></TR><TR><TD width="251.475px"><P>APPLICATION_NAME</P></TD><TD width="131.709px"><P>NVARCHAR(256)</P></TD><TD width="407.207px"><P>Displays the name of the application.</P></TD></TR><TR><TD width="251.475px"><P>APPLICATION_USER_NAME</P></TD><TD width="131.709px"><P>NVARCHAR(256)</P></TD><TD width="407.207px"><P>Displays the application user name.</P></TD></TR><TR><TD width="251.475px"><P>APPLICATION_SOURCE</P></TD><TD width="131.709px"><P>NVARCHAR(256)</P></TD><TD width="407.207px"><P>Displays that the application can define which source file SAP HANA is called from. The usage is up to the application. This value is also displayed in M_PREPARED_STATEMENTS.APPLICATION_SOURCE.</P></TD></TR><TR><TD width="251.475px"><P>STATEMENT_THREAD_LIMIT</P></TD><TD width="131.709px"><P>INTEGER</P></TD><TD width="407.207px"><P>Displays the effective statement thread limit.</P></TD></TR><TR><TD width="251.475px"><P>STATEMENT_MEMORY_LIMIT</P></TD><TD width="131.709px"><P>INTEGER</P></TD><TD width="407.207px"><P>Displays the effective statement memory limit.</P></TD></TR><TR><TD width="251.475px"><P>PASSPORT_COMPONENT_NAME</P></TD><TD width="131.709px"><P>NVARCHAR(32)</P></TD><TD width="407.207px"><P>Displays the passport component name.</P></TD></TR><TR><TD width="251.475px"><P>PASSPORT_ACTION</P></TD><TD width="131.709px"><P>NVARCHAR(40)</P></TD><TD width="407.207px"><P>Displays the passport action.</P></TD></TR><TR><TD width="251.475px"><P>NUMA_NODE_INDEX</P></TD><TD width="131.709px"><P>SMALLINT</P></TD><TD width="407.207px"><P>Displays the last known NUMA node that the thread was executed on.</P></TD></TR><TR><TD width="251.475px"><P>WORKLOAD_CLASS_NAME</P></TD><TD width="131.709px"><P>NVARCHAR(256)</P></TD><TD width="407.207px"><P>Displays the name of the workload class.</P></TD></TR></TBODY></TABLE></DIV><DIV><DIV><DIV>&nbsp;</DIV><DIV><SPAN>Please find more information in SAP Note&nbsp;<A href="https://me.sap.com/notes/2114710" target="_self" rel="noopener noreferrer">2114710 - FAQ: SAP HANA Threads and Thread Samples</A></SPAN></DIV></DIV><DIV><DIV><P><STRONG>Considerations for CPU Utilization in HANA Workload Analysis</STRONG></P><P>Now that we have the tools at our disposal, where should we initiate our analysis of CPU utilization? Addressing CPU usage within SAP HANA is multifaceted. A high CPU usage, peaking at 90% of total capacity—for instance, with 8 sockets, 208 CPU cores, and hyper-threading—suggests that approximately 374 threads (90% of 208 x 2 logical CPU cores) are active. This scenario often leads to system hang-ups and prevents new user connections. However, this is not the sole concern.</P><P>We also face perplexing situations where a mere 50% CPU utilization can cause similar system hang-ups, or times when the system appears idle yet experiences high system CPU utilization. Moreover, there are instances where a single statement monopolizes all threads despite workload classifications and global concurrency limits being in place.</P><P>To unravel these complexities, a thorough review of thread samples, supplemented by other monitoring views, is necessary for deeper insight into the system's behaviour.</P><P>Typically, the following factors can lead to CPU-related issues in a HANA system:</P><UL><LI>OS configurations</LI><LI>Expensive SQL statements alongside impractical concurrency settings</LI><LI>Absence of secondary indexes on column tables</LI><LI>NUMA node contentions</LI><LI>System CPU utilization at the OS level</LI><LI>Concurrency controls implemented by applications</LI><LI>Conflicting schedules of background jobs</LI><LI>Activities of the statistics server</LI><LI>Admission control setting</LI><LI>And more.</LI></UL><P>It's worth noting that high CPU usage doesn't inherently indicate a problem. At times, it may signify that the HANA system is effectively utilizing its capacity to handle the workload, which is not a concern. Our goal is to identify workload contributors to minimize CPU consumption and safeguard the system against potential future issues.</P></DIV></DIV></DIV></DIV></DIV></DIV><DIV class=""><DIV class="">&nbsp;</DIV><DIV class="">Please find more information in SAP Note&nbsp;<A href="https://me.sap.com/notes/2100040/E" target="_self" rel="noopener noreferrer">2100040 - FAQ: SAP HANA CPU</A></DIV><DIV class="">&nbsp;</DIV><DIV class=""><P><STRONG>Analyzing CPU Utilization Issues: Two Practical Examples</STRONG></P><P>In this section, we simulate two real-world scenarios to provide deeper insights into CPU utilization analysis in SAP HANA environments.&nbsp;</P><P><SPAN>Before diving into the analysis of expensive statements, it's crucial to establish an understanding of the system's configuration that affects workload management. In the examples that we will explore, the system is equipped with :</SPAN></P><UL><LI><SPAN>8 sockets, and each socket houses 52 logical CPU cores. </SPAN></LI><LI><SPAN>global.ini -&gt; [execution] -&gt; default_statement_concurrency_limit set to 12</SPAN></LI><LI><SPAN>Admission control set to default (indexserver.ini -&gt; [admission_control] -&gt; queue_cpu_threshold = 90)</SPAN></LI></UL></DIV><DIV class=""><P><U>Example 1 - CPU Spikes Caused by Expensive Statements</U></P><P>Expensive statements in a database context typically refer to queries that run longer than anticipated or consume a significant amount of memory during execution. In the realm of workload analysis, especially concerning CPU consumption, we focus on those statements that utilize a large number of running threads. In our example, various types of statements have been identified that could potentially cause extremely high CPU utilization. These could be so intensive as to lead to system hang-ups.</P><P>This situation might involve complex join operations, extensive data aggregation, or poorly optimized queries that put a heavy load on the CPU. Identifying and optimizing these expensive statements is crucial to prevent CPU spikes and maintain system stability. This process involves analyzing query execution plans, reviewing indexing strategies, and possibly restructuring or simplifying the queries themselves to reduce their resource demands.</P></DIV><DIV class=""><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="CPU_Analysis_1.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/67899i333BE2262D15378E/image-size/large?v=v2&amp;px=999" role="button" title="CPU_Analysis_1.jpg" alt="CPU_Analysis_1.jpg" /></span></P></DIV><DIV class=""><P>In the given example, we observe distinct CPU utilization patterns over a span of two weeks on the HANA platform, with utilization nearing 100%. The first week’s pattern is characterized by abrupt spikes in CPU usage, quickly rising and falling, whereas the second week displays more frequent and enduring peaks.</P><UL><LI><STRONG>Peak CPUs Lasting for a Few Minutes:</STRONG> Such short-term CPU spikes are not unusual in database environments. They typically arise from intensive data loading, execution of complex queries, or during routine operations like backups or batch processing. However, the spikes observed here warrant close examination due to their extreme frequency and high utilization rates, which could indicate underlying issues needing immediate attention.</LI><LI><STRONG>Peak CPUs Lasting for Hours:</STRONG> The prolonged CPU peaks, extending over several hours, present a more critical challenge. They could be symptomatic of deeper issues such as inefficient query design, absence of necessary secondary indexes, or even physical hardware constraints. Persistent high CPU utilization of this nature demands a comprehensive analysis to pinpoint the fundamental causes and to devise appropriate strategies for optimization and adjustment to prevent potential system degradation or failure.</LI></UL></DIV><DIV class="">It turns out that three major contributors are responsible for the high CPU utilizations within these two weeks.</DIV><UL><LI><FONT color="#FF0000"><STRONG>Statement 1</STRONG></FONT>: Executed by user axxx from application source axxx:1, this statement has been stable in production for years. Following a logical adjustment on the application side intended to enhance capacity during request processing, the number of connections initiated by this statement increased. Despite the implementation of a global statement concurrency parameter and a designated workload class, this statement alone occupied 90% of CPU resources when activated. The immediate solution is to curb the number of concurrent connections either at the application level or by refining the HANA workload class parameters. Specifically, adjusting the workload class "wlc_1" to impose a stricter statement concurrency limit is recommended, especially by employing the Hierarchies of Workload Classes feature available in HANA 2.0 SPS 6 and above.</LI><LI><STRONG><FONT color="#FF00FF">Statement 2</FONT></STRONG>: Run by the application user SYSTEM, this activity is associated with HANA's internal optimize compression function, which is automatically calculated and optimized as part of the delta merge operation. Historically, it has been challenging to restrict the CPU consumption of this process. However, with the introduction in HANA 2.0 SPS03, the parameter indexserver.ini -&gt; [optimize_compression] -&gt; row_order_optimizer_threads can now be set to a specific value to moderate the concurrency of this activity effectively.</LI><LI><STRONG><FONT color="#339966">Statement 3</FONT></STRONG><SPAN>: A select statement executed by user cxxx and application source axxx:3, it has been noted for its prolonged execution time and exceptionally high CPU usage. Thread sampling revealed that most threads were engaged in "IndirectScanVecOutJob&lt;range&gt;" or "ClusterScanBvOutJob&lt;BV&gt;", indicative of extensive table scans. More information on thread methods related to table scans can be found in SAP Note </SPAN><A href="https://me.sap.com/notes/2114710/E" target="_self" rel="noopener noreferrer">2114710 - FAQ: SAP HANA Threads and Thread Samples</A></LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="tao_shen_0-1708376179959.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/67895i25BBB6890AD7F18B/image-size/large?v=v2&amp;px=999" role="button" title="tao_shen_0-1708376179959.png" alt="tao_shen_0-1708376179959.png" /></span></P><UL class="lia-list-style-type-circle"><LI>When look into the detail, we found that table MATDOC and MATDOC_EXTRACT, had lack of secondary index on the key column "MATNR" or "WERKS". Per seconds, the number of column scan can reach to 10 billions+, which is quite significant.&nbsp;Creating a secondary index on this key column should alleviate the CPU strain by optimizing the data retrieval process.</LI></UL><TABLE width="422"><TBODY><TR><TD width="87">TABLE_NAME</TD><TD width="87">COLUMN_NAME</TD><TD width="151">SCANNED_RECORDS</TD><TD width="97">SCR_PER_S</TD></TR><TR><TD>MATDOC</TD><TD>MATNR</TD><TD>828290874021485</TD><TD>19304757728</TD></TR><TR><TD>MATDOC_EXTRACT</TD><TD>WERKS</TD><TD>109487724317894</TD><TD>10032855641</TD></TR></TBODY></TABLE><DIV class="">&nbsp;</DIV><DIV class=""><U>Example 2 - System Hanging due to NUMA Contention</U></DIV><DIV class="">Sometimes we suffer system hanging situation, but seeing that the overall CPU consumption is not reach to its maximum capacity, or even lower than 50%. This may indicate that the short board is on the NUMA Node (CPU socket) side. The following example showing a NUMA contention analysis from high level, using thread samples. There are also tools to monitor the NUMA awareness from OS level, which gives more details, but thread sample could tell, in the first picture, which contributor may cause the contention issue.</DIV><DIV class="">&nbsp;</DIV><DIV class=""><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="tao_shen_1-1708480795073.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/68527iF4BF4E102E4673B5/image-size/large?v=v2&amp;px=999" role="button" title="tao_shen_1-1708480795073.png" alt="tao_shen_1-1708480795073.png" /></span><BR /><P>The chart offers a detailed view of the running threads across NUMA nodes in a HANA system equipped with 8 sockets, each hosting 52 logical CPUs. Here’s a refined analysis of the patterns observed and their potential implications:</P><UL><LI><FONT color="#808080">NUMA Node 4</FONT>: The count of running threads frequently exceeds the threshold of 52, occasionally spiking to over 95. This pattern suggests excessive parallelism from specific statements or multiple statements accessing the same table or partition. These occurrences appear to bypass the constraints set by global parameters or workload classes, which either lack a total concurrency limit or have a single statement concurrency limit set too high. Such scenarios necessitate a review of the implicated statements to understand the cause of the surge in connections. Repartitioning tables may be beneficial, distributing data across partitions aligned with different NUMA nodes to balance the load. Moreover, the surges in thread count may be attributed to specific thread types like JobWorkers or SQLExecutors. A detailed statement-level investigation is warranted to identify and implement appropriate solutions.</LI><LI><FONT color="#00CCFF">NUMA Node 4:</FONT> There’s a significant, consistent surge that extends for 30 minutes, signalling NUMA node contention. This is a critical observation as it suggests that the transactions competing for memory resources within this node are likely causing system performance degradation or even system hangs. This could be due to a variety of factors such as the lack of secondary indexes which forces full table scans, or database operations, e.g. optimize compression, that have not been sufficiently controlled. Implementing limitations on internal job concurrency, as prescribed by HANA's configuration settings, might serve as a remedial measure.</LI><LI>Across the remaining NUMA nodes, exceeding the 52-thread limit occasionally doesn’t necessarily indicate a problem; it may reflect the system making full use of the resources at its disposal, which is typically a positive scenario. Nevertheless, it is crucial to ensure that the workload is evenly distributed to prevent any single NUMA node from being overloaded while others are underutilized. Vigilant monitoring for NUMA contention is essential, particularly when the overall CPU capacity is not fully leveraged, to mitigate any adverse effects on system behaviour.</LI></UL></DIV><DIV class="">&nbsp;</DIV><DIV class=""><STRONG>Reducing CPU Utilization on Primary Site by Using Active/Active Read Enable Features</STRONG></DIV></DIV><P><SPAN>Utilizing Active/Active Read-Enabled (AARE) in SAP HANA can swiftly reduce CPU and memory usage on the primary site. By rerouting read operations to a secondary site—through hints in SQL, ABAP, Procedure or CDS views—resource consumption can be balanced without altering existing job logic. Monitoring the secondary site is vital to ensure it doesn't affect system replication performance. For details on AARE, refer to the official SAP documentation.</SPAN></P><UL><LI><A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/6b94445c94ae495c83a19646e7c3fd56/fe5fc53706a34048bf4a3a93a5d7c866.html" target="_blank" rel="noopener noreferrer">Active/Active (Read Enabled) | SAP Help Portal</A></LI><LI><A href="https://me.sap.com/notes/2732012/E" target="_blank" rel="noopener noreferrer">2732012 - Using Active/Active read enabled feature of SAP HANA in SAP S/4HANA Collective Note</A></LI><LI><A href="https://me.sap.com/notes/2737255/E" target="_blank" rel="noopener noreferrer">2737255 - Limitations and Fallback Conditions of Statement Routing to a Read Enabled Secondary System Using Active/Active(Read Enabled) Feature in System Replication</A></LI></UL><P>&nbsp;</P><DIV class=""><span class="lia-unicode-emoji" title=":hear_no_evil_monkey:">🙉</span><span class="lia-unicode-emoji" title=":see_no_evil_monkey:">🙈</span><span class="lia-unicode-emoji" title=":speak_no_evil_monkey:">🙊</span></DIV><P><STRONG>Workload Analysis for HANA Platform Series</STRONG></P><P>This blog post is part of the 'Workload Analysis for HANA Platform Series'. In upcoming posts, we will demonstrate how to analyze the issue related to CPU, threads and NUMA Node . Here's what you can look forward to in this series:</P><UL class="lia-list-style-type-disc"><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/workload-analysis-for-hana-platform-series-0-hana-workload-analysis/ba-p/13605267" target="_self">0. HANA Workload Analysis Overview</A></LI><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/workload-analysis-for-hana-platform-series-1-define-and-understand-the/ba-p/13608296" target="_self">1. Define and Understand the Workload Pattern</A></LI><LI><STRONG>2. Analyze the CPU, Threads and Numa Utilizations&nbsp;(This blog)</STRONG></LI><LI>3. Identify the Memory Consumption</LI><LI>4. How the Network, I/O and locks influent the workload</LI><LI>5. Performance Impact by HANA Internal Functions</LI><LI>6. HANA Workload Management Methodology</LI></UL><P><SPAN>Stay tuned as we explore these aspects in detail, providing insights and strategies to optimize your HANA environment.</SPAN></P> 2024-04-02T22:26:10.409000+02:00 https://community.sap.com/t5/artificial-intelligence-and-machine-learning-blogs/mastering-sap-hana-cloud-vector-engine-for-rag-driven-llm-applications-an/ba-p/13662515 Mastering SAP HANA Cloud Vector Engine for RAG-driven LLM Applications: An Insightful Guide 2024-04-08T18:23:37.926000+02:00 YangYue01 https://community.sap.com/t5/user/viewprofilepage/user-id/1409138 <H2 id="toc-hId-991602921">Introduction to Vector Similarity in RAG</H2><P><SPAN>Retrieval-Augmented Generation (RAG) techniques significantly improve the contextual relevance of large language model (LLM) outputs by incorporating real-time database lookups. <A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-vector-engine-guide/sap-hana-cloud-sap-hana-database-vector-engine-guide" target="_self" rel="noopener noreferrer">SAP HANA Cloud vector engine</A> plays a key role here, enabling efficient retrieval of pertinent data through vector similarity measures, thereby augmenting the performance of RAG tasks.</SPAN></P><P><SPAN>This tutorial provides a comprehensive walkthrough, using <STRONG>Python</STRONG>, to showcase the utilization of SAP HANA cloud vector engine&nbsp;in a&nbsp;RAG-based LLM application.</SPAN></P><H2 id="toc-hId-795089416">Setting Up: Connecting to SAP HANA</H2><P>Start by establishing a secure connection to your SAP HANA instance.</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>from hdbcli import dbapi # Establish a connection. Replace placeholders with actual credentials. connection = dbapi.connect( address="HANA_DB_ADDRESS", # Your database address port="HANA_DB_PORT", # Typically 443 for HTTPS user="YOUR_USERNAME", # HANA DB username password="YOUR_PASSWORD", # Corresponding password charset="utf-8", # Ensures correct encoding use_unicode=True # Allows for Unicode characters )</code></pre><P>&nbsp;</P><H2 id="toc-hId-598575911">Creating an Embedding Table</H2><P><SPAN>For RAG to work, we need to store document vector representations. This involves creating a table in SAP HANA for embeddings.</SPAN></P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>cursor = connection.cursor() # SQL statement to create an embedding table create_table_sql = """ CREATE COLUMN TABLE embeddings_table ( id INTEGER PRIMARY KEY, -- Unique identifier for each document document NVARCHAR(5000), -- Text content of the document embedding REAL_VECTOR(768) -- Vector representation of the document ) """ # Executing the table creation SQL command cursor.execute(create_table_sql) connection.commit() cursor.close()</code></pre><P>&nbsp;</P><H2 id="toc-hId-402062406">Populating the Table with Document Embeddings</H2><P>Before retrieval, our table needs populating with document embeddings. This involves defining documents, simulating embedding generation, and batch inserting these into SAP HANA.</P><H3 id="toc-hId-334631620">Defining Documents</H3><P>&nbsp;</P><pre class="lia-code-sample language-python"><code># A curated list of documents for embedding documents = [ "What is natural language processing?", "How do vector embeddings work?", "Examples of machine learning applications.", "Understanding deep learning for text analysis.", "The impact of artificial intelligence on society." ]</code></pre><P>&nbsp;</P><H3 id="toc-hId-138118115">Generating Embeddings</H3><P>Simulate LLM calls for embedding generation. In practice, replace this with actual model interactions.</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>def get_embedding(document): # Placeholder function to simulate embedding generation return [float(i) for i in range(768)] # Returns a fixed-size (768) dummy vector</code></pre><P>&nbsp;</P><H3 id="toc-hId--58395390">Batch Insertion into SAP HANA</H3><P>Efficiently insert the document embeddings into the database.</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>cursor = connection.cursor() # SQL command template for inserting document embeddings insert_sql = """ INSERT INTO embeddings_table (id, document, embedding) VALUES (?, ?, TO_REAL_VECTOR(?)) """ # Iteratively inserting each document and its embedding for i, document in enumerate(documents, start=1): embedding_str = str(get_embedding(document)).replace(" ", "") # Execute insert command for each document cursor.execute(insert_sql, (i, document, embedding_str)) connection.commit() cursor.close()</code></pre><P>&nbsp;</P><H2 id="toc-hId--383991614">Executing Vector Similarity Searches</H2><P>With the database prepared, perform a similarity search to find relevant documents for a given query.</P><H3 id="toc-hId--451422400">Generating Query Embedding</H3><P>First, generate an embedding for the query.</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>query = "What is an example of vector similarity search?" query_embedding = get_embedding(query)</code></pre><P>&nbsp;</P><H3 id="toc-hId--647935905">Conducting Similarity Searches</H3><P>Use L2 distance and cosine similarity measures to find the most relevant documents.</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>cursor = connection.cursor() # L2 Distance search l2_query = """SELECT TOP 5 id, document FROM embeddings_table ORDER BY L2DISTANCE(embedding, TO_REAL_VECTOR(?))""" cursor.execute(l2_query, (str(query_embedding).replace(" ", ""),)) l2_results = cursor.fetchall() # Cosine Similarity search cosine_query = """SELECT TOP 5 id, document FROM embeddings_table ORDER BY COSINE_SIMILARITY(embedding, TO_REAL_VECTOR(?)) DESC""" cursor.execute(cosine_query, (str(query_embedding).replace(" ", ""),)) cosine_results = cursor.fetchall() cursor.close()</code></pre><P>&nbsp;</P><P><SPAN>The </SPAN><EM>l2_results</EM><SPAN> and </SPAN><EM>cosine_results</EM><SPAN> variables in the code snippet above contain the top 5 outcomes of similarity searches performed on the database, ordered from the most relevant to the least relevant.</SPAN></P><H2 id="toc-hId--626277772">Conclusion</H2><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><P><SPAN>This tutorial demonstrates how SAP HANA cloud's vector engine can be utilized in a RAG-based LLM application. The approach enhances LLM responses by ensuring that the generated outputs are informed by the most relevant data.</SPAN></P><H2 id="toc-hId--822791277"><SPAN>Reference</SPAN></H2><UL><LI><SPAN>Official SAP HANA Cloud Vector Engine Documentation:&nbsp;</SPAN><SPAN><A href="https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-vector-engine-guide/sap-hana-cloud-sap-hana-database-vector-engine-guide" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/hana-cloud-database/sap-hana-cloud-sap-hana-database-vector-engine-guide/sap-hana-cloud-sap-hana-database-vector-engine-guide</A></SPAN></LI></UL></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV> 2024-04-08T18:23:37.926000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-datapshere%E3%81%A7%E3%81%AE-hana-cloud-data-lake-%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95/ba-p/13637646 SAP Datapshereでの HANA Cloud, Data Lake の利用方法 2024-04-12T11:12:57.669000+02:00 fumihisa_yagawa https://community.sap.com/t5/user/viewprofilepage/user-id/252530 <H1 id="toc-hId-859899649">はじめに</H1><P>SAPは、インメモリ、カラムストアという優位なアーキテクチャを前提として設計された SAP HANA およびSAP HANA Cloud をご提供しています。この高速な SAP HANA Cloud のデータ処理機能を、Data Warehouse(DWH、あるいは情報系システムやOLAPと呼ばれるかもしれません)の用途でお使いいただくために、DWHの利用や運用に適した様々な機能をパッケージ化した製品としてSAP Datasphere を提供しています。SAP HANAのインメモリアーキテクチャはすべてのデータをメモリに配置する事で高速な検索処理能力を発揮しますが、一方で相対的にメモリはストレージ(HDDやSSD)よりも高価であり、大規模なデータを扱う場合にはコストも重要な課題になります。SAP HANA Cloudにおけるこのコスト最適化問題の解決策として、<A href="https://community.sap.com/t5/technology-blogs-by-sap/hana-cloud-%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E9%9A%8E%E5%B1%A4%E5%8C%96%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%99%E3%82%8Bnative-storage-extension-nse/ba-p/13465950" target="_self">Native Storage Extension&nbsp;</A>と <A href="https://community.sap.com/t5/technology-blogs-by-sap/hana-cloud-data-lake-first-step/ba-p/13448060" target="_self">HANA Cloud, Data Lake</A>という機能を提供していることを、過去のブログでご紹介してきました。今回のブログでは、これらの機能をSAP Datasphereで利用する方法についてご紹介いたします。</P><P>Native Storage ExtensionとHANA Cloud, Data Lakeについては、それぞれのブログ(<A href="https://community.sap.com/t5/technology-blogs-by-sap/hana-cloud-%E3%81%A7%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E9%9A%8E%E5%B1%A4%E5%8C%96%E3%82%92%E5%AE%9F%E7%8F%BE%E3%81%99%E3%82%8Bnative-storage-extension-nse/ba-p/13465950" target="_self">HANA Cloud でデータの階層化を実現するNative Storage Extension(NSE)</A>および <A href="https://community.sap.com/t5/technology-blogs-by-sap/hana-cloud-data-lake-first-step/ba-p/13448060" target="_self">HANA Cloud, Data Lake First step</A>)をご参照いただくとして、ここでは概略をご説明します。</P><P>いずれの機能もSAP HANA Cloudの階層化データ管理を担うための機能です。データベースに格納されるデータは時間の経過とともに利用頻度が低下する傾向にあり、利用頻度の高いデータと、低いデータに対して同じコストをかけて維持するのは得策ではありません。利用頻度の高いデータは高い処理速度で、利用頻度の低いデータはコストに見合った処理性能の領域に格納する事で、コストとシステム性能のバランスを取る事ができます。</P><P>SAP HANA Cloud の Native Storage Extensionは、SAP HANAソフトウエアに組み込まれたデータ階層化機能で、「page loadable」という属性を与えた「データの単位」を対象に、データアクセスがなくなるとメモリから揮発し、次回のデータアクセス要求に応じてHANA Cloudのストレージ領域(永続領域)からメモリ領域に配置され、処理されることでメモリ領域のサイズを抑える事ができます。</P><P>SAP HANA Cloud, Data Lake はSAP HANAとは独立したData Lake relational engine にテーブルが作成され、HANA Cloud 上の仮想テーブルとして利用されます。Data Lake relational engineはインメモリアーキテクチャではありませんが、DWH用途には最適なカラムストアアーキテクチャを有しており、ストレージベースでありながら、(HANAには及ばないものの)高速にデータ処理を行えるエンジンとなっています。<BR /><BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1710396483375.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/80393iECDAC5DAFF93E888/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1710396483375.png" alt="fumihisa_yagawa_0-1710396483375.png" /></span></P><P style=" text-align: center; ">図1 :&nbsp; 階層化機能 概要図</P><P style=" text-align: center; ">&nbsp;</P><H1 id="toc-hId-663386144">SAP DatasphereにおけるNative Storage Extensionの利用</H1><P>前述のNSEに関するブログにあるように、HANA CloudではNSEを利用する対象テーブルに割り当てられたパーティションに対し、SQLコマンドによる操作で<SPAN>「Page Loadable」属性を与える事で、対象のパーティションのデータが階層化管理の対象として機能しました。</SPAN></P><P>SAP Datasphereでは、この設定方法をより簡易に行う事ができる様、管理画面のGUIを使用して設定できるようになっています。一方で、階層化管理の対象の単位は、パーテイションではなく、テーブル単位となっています。また、<FONT color="#FF0000">デフォルトの設定はNSEの機能が有効</FONT>な<A href="https://help.sap.com/docs/SAP_DATASPHERE/c8a54ee704e94e15926551293243fd1d/407d1dff76a842699ea08c17eb8748dd.html?locale=ja-JP" target="_self" rel="noopener noreferrer">ウォームストアへの格納</A>となっています。Databuilder の画面から、該当のテーブルのプロパティを表示させ、「テーブルデータをメモリに保存」のスライドボタンを有効にして、NSEの機能を無効化して、パフォーマンスを上げる事ができます。</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_4-1710408782728.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/80557i08832517FFD8320B/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_4-1710408782728.png" alt="fumihisa_yagawa_4-1710408782728.png" /></span></P><P style=" text-align: center; ">図2 : テーブルデータをメモリに保存(NSEを利用しない)設定</P><P>このことから、Datasphereのテーブルを設定する際は、2つの点を考慮して行っていただく必要があります。</P><UL><LI>テーブル単位で、アクセス頻度が高いか、低いか</LI><LI>アクセス頻度が高いテーブルであると判断される場合はデータビルダ画面の「テーブルサービス」の設定を「テーブルデータをメモリに保存」フラグをONにする</LI></UL><P>HANA Cloudでは、パーティション単位でNSEの機能が設定できるため、一つのテーブル(主に時間の経過とともにデータが増加するトランザクションデータのテーブル)に対して最近のデータと過去のデータを分けて階層化管理が可能でしたが、現時点ではSAP Datasphereではパーティションの作成はできますが、NSE機能の設定の粒度はテーブル単位となっていますので、テーブル単位でアクセス頻度が高いか、低いかを指針にして、NSEの機能を活用するようにして下さい。</P><P>&nbsp;</P><H1 id="toc-hId-466872639">SAP DatasphereにおけるData Lakeの利用</H1><P>一方で、多くのお客様が、一つのテーブルのデータに対して階層化管理を行いたいというニーズをお持ちになると想定されますので、その際は以降でご紹介するData Lakeの機能をご検討下さい。本ブログの以下の手順で設定できる構成を以下に示します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_5-1712818573315.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94937i27F43A5DB15D72BD/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_5-1712818573315.png" alt="fumihisa_yagawa_5-1712818573315.png" /></span></P><P style=" text-align: center; ">図3: 本ブログにおける Data Lake 構成例</P><P>図3では、SAP DatasphereのスペースAにあるメモリテーブルと、Data Lakeに配したストレージベースのテーブルを活用する場合の構成を示しています。この場合でも、オンメモリほどのパフォーマンスではないものの、常にオンラインで利用する事ができる様にData Lakeのデータへは仮想テーブルを介してアクセスできるようになっています。</P><H1 id="toc-hId-270359134">Open SQLスキーマの利用</H1><P>最初にご説明した通り、SAP DatasphereはHANA Cloudのデータベースを利用しており、通常のデータはSAP Datasphereから操作をする事で、テーブルなどのオブジェクトの管理が行われています。一方でData Lakeで利用されるテーブルは現在のところHANA Cloud から直接操作する必要があります。そのためにSAP Datasphereの Open SQL スキーマ を利用します。図3で示されているように、アクティブに利用するデータは通常のスペースで管理され、Data Lakeに格納するデータは、Open SQL スキーマを介してHANA Cloud経由で利用する、という点にご注意下さい。Open SQLスキーマについての詳細は<A href="https://help.sap.com/docs/SAP_DATASPHERE/be5967d099974c69b77f4549425ca4c0/3de55a78a4614deda589633baea28645.html?locale=ja-JP" target="_self" rel="noopener noreferrer">こちら</A>をご参照ください。</P><P>&nbsp;</P><H1 id="toc-hId-73845629">Data Lakeの利用方法</H1><P>最初に、Data Lakeの機能を利用するための準備設定を行います。左画面のメニューから「スペース管理」を選択します。Data Lakeの機能を使用するスペースの「編集」ボタンをクリックします。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_1-1710740839415.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/81996i5C73BFBE4FB80F42/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_1-1710740839415.png" alt="fumihisa_yagawa_1-1710740839415.png" /></span></P><P style=" text-align: center; ">図4:Data Lakeを使用するスペースの選択</P><P>続いてスペース管理の画面から「概要」タブが選択されている事を確認し、「データレイクアクセス」の項で「データレイクにアクセスするには、このスペースを使用します」のチェックボックスをチェックし、保存した後、デプロイをクリックします。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1712557934722.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92636i1CA326C023022E02/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1712557934722.png" alt="fumihisa_yagawa_0-1712557934722.png" /></span></P><P style=" text-align: center; ">図5:Data Lakeアクセスするための設定</P><P>ここでの注意点は、Data Lakeにアクセスするスペースは、<A href="https://help.sap.com/docs/SAP_DATASPHERE/be5967d099974c69b77f4549425ca4c0/93d0b5d4faa24777a4b78513f7ed6172.html?locale=ja-JP#:~:text=%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%81%A7%E3%80%81%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%20%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AC%E3%82%A4%E3%82%AF%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E4%BB%96%E3%81%AE%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AC%E3%82%A4%E3%82%AF%E3%81%AB%E3%81%99%E3%81%A7%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%92%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82" target="_self" rel="noopener noreferrer">1つのインスタンスにおいて1つとなります</A>。複数のスペースでData Lakeにアクセスする場合は、Data Lakeテーブルをそれぞれのスペースで共有するようにして利用します。本ブログでは、Data Lakeアクセス可能なスペースでの手順をご紹介します。</P><P>続いてOpen SQLスキーマを利用する準備を行います。</P><P>左端のメニューから「スペース管理」を選択し、「データベースアクセス」タブをクリックします。データベースユーザにある「作成」ボタンをクリックし、OPEN SQL スキーマにアクセスするためのデータベースユーザを作成します。これはSAP Datasphereとは異なる、HANA Cloudへアクセスするためのユーザになります。</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_3-1712563989885.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92708i264082BDBB9F4A55/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_3-1712563989885.png" alt="fumihisa_yagawa_3-1712563989885.png" /></span></P><P style=" text-align: center; ">図6: Open SQL Schemaにアクセスするためのデータベースユーザの作成</P><P>データベースユーザの作成画面では、「データベースユーザ名の接尾辞」を設定し、「読み込みアクセスを有効化」、「書き込みアクセスを有効化」をチェックして「作成」をクリックし、データベースユーザを登録します。画面が閉じたら、「保存」をし、続けて「デプロイ」を実行してください。</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_4-1712564487323.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92709i23EE7C6D4995CB54/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_4-1712564487323.png" alt="fumihisa_yagawa_4-1712564487323.png" /></span></P><P style=" text-align: center; ">図7 : データベースユーザの登録</P><P style=" text-align: center; ">&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1712565041254.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/92712i6A11300E43DF2879/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1712565041254.png" alt="fumihisa_yagawa_0-1712565041254.png" /></span></P><P style=" text-align: center; ">図8 : 保存とデプロイの実行</P><P>デプロイが完了し、ユーザが追加されたら、そのユーザのチェックボックスにチェックを入れ、行の右端にあるインフォメーションアイコンをクリックします。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1712649283228.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93280iC344CD5D18CCBD8B/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1712649283228.png" alt="fumihisa_yagawa_0-1712649283228.png" /></span></P><P style=" text-align: center; ">図9 : 追加されたユーザの情報確認</P><P>データベースユーザ詳細画面が表示されますので、Open SQL スキーマパスワードを取得します。「新しいパスワードを申請」ボタンをクリックし、可視化ボタン(目玉アイコン)を押してから「パスワードのコピー」をクリックし、作成したユーザ用のパスワードを入手します。以後、この画面からは同じパスワードを入手する事はできませんので、必要があれば記録しておいてください。ただし、本シナリオの場合はログインの度に毎回新しいパスワードを生成しても特に問題はありません(ので記録し忘れても大丈夫)。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_2-1712650248753.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93314i404EEA9A76D544EF/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_2-1712650248753.png" alt="fumihisa_yagawa_2-1712650248753.png" /></span></P><P style=" text-align: center; ">図10 : データベースユーザのパスワードの取得方法</P><P>取得したパスワードを使って、Open SQL スキーマの領域にアクセスします。前述しましたが、Open SQL スキーマとは、SAP Datasphereの管理下ではないHANA Cloud から操作する必要があります。そのため、SQLコマンドを使用することができる、データベースエクスプローラーというツールを介して操作します。作成したデータベースユーザにチェックを入れ、メニューにある「データベースエクスプローラを開く」をクリックします。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_4-1712650527107.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93318i007D227DD44B505A/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_4-1712650527107.png" alt="fumihisa_yagawa_4-1712650527107.png" /></span></P><P style=" text-align: center; ">図11 : データベースエクスプローラの起動</P><P>ログインプロパティの入力画面に先ほど取得したパスワードを入力し、「OK」すれば、Open SQL スキーマを管理するHANA Cloudへのログインが完了します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_5-1712651501710.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/93373iFE30C39A55DB57DA/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_5-1712651501710.png" alt="fumihisa_yagawa_5-1712651501710.png" /></span></P><P style=" text-align: center; ">図12 : ログインプロパティの入力</P><P>ログインに使用したデータベースエクスプローラは、HANA Cloud用のSQL入力用のツールです。このツールを使用して、SAP DatasphereのOpen SQL スキーマで使用しているデータベース領域に直接SQLコマンドを実行する事ができます。以降の操作では、下の図のData Lakeにあるテーブルを作成し、このテーブルをOpen SQL スキーマにある仮想テーブルで参照する設定を行います。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_4-1712818546260.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94936iBFC18E674CA8D784/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_4-1712818546260.png" alt="fumihisa_yagawa_4-1712818546260.png" /></span></P><P style=" text-align: center; ">図3: 本ブログにおける Data Lake 構成例(再掲)</P><P>まずData Lakeの物理テーブル(図中 <FONT color="#FF0000">① <FONT color="#000000">SALES_Datalake</FONT></FONT>)を作成します。HANA Cloudに接続したDatabase ExplorerからData Lakeにテーブルを作成する場合 ”DATA_LAKE_EXECUTE" というシステムプロシージャを使用し、Data Lakeを管理するData Lake relational engineに対してSQL(Create table)文を間接的に実行させます。</P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-sql"><code>call "DWC_GLOBAL"."DATA_LAKE_EXECUTE"('CREATE TABLE SALES_Datalake( Sales_ID INTEGER, ShopID INTEGER, Purchase_Num INTEGER, Prod_ID INTEGER, Price INTEGER, Order_date date )');</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>上記のSQLプロシージャ文を、Database ExplorerのSQLコンソール画面から実行します。左上にあるSQLコンソール起動アイコンをクリックし、実行してください。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_1-1712741537035.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94548i0811761E7EBE4B59/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_1-1712741537035.png" alt="fumihisa_yagawa_1-1712741537035.png" /></span></P><P style=" text-align: center; ">図13 : Data Lake テーブル作成</P><P><SPAN>次に、今作成したData Lake内のテーブルを参照する、Open SQL スキーマ内の仮想テーブル(図中<FONT color="#FF0000">②</FONT> V_SALES_Datalake)を作成します。仮想テーブルの作成は ”DATA_LAKE_CREATE_VIRTUAL_TABLE" というシステムプロシージャを使用します。</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-sql"><code>CALL "DWC_GLOBAL"."DATA_LAKE_CREATE_VIRTUAL_TABLE" ( VIRTUAL_TABLE_NAME =&gt; 'V_SALES_Datalake', DATA_LAKE_TABLE_NAME =&gt; 'SALES_Datalake' );</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>Database Explorerから上記SQLプロシージャ文を実行すると、Data Lakeにある実テーブルを、SAP Datasphereから参照するための仮想テーブルが作成されます。実行完了を確認したのち、左上のペインにある「catalog」フォルダを展開し、「Table」アイコンをクリックすると、左下のペインに作成された仮想テーブルがリストされることが確認できます(図中にもあるWarningに関しては、本シナリオでは特に影響はありません)。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_3-1712743221149.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94583iD36F81ACD0FBE0DE/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_3-1712743221149.png" alt="fumihisa_yagawa_3-1712743221149.png" /></span></P><P style=" text-align: center; ">図14 : Open SQL スキーマ 仮想テーブル作成と確認方法</P><P style=" text-align : left; ">作成した仮想テーブルに対して<SPAN>挿入および更新するための権限を SAP Datasphere のスペースに付与します。これにより、SAP Datasphereのデータ フローによってテーブルにデータを挿入する権限を与えます。次の手順で、スペースにすべての権限を付与します(JAPAN_D&amp;Aは実施した環境のスペース名です、適宜ご自身のスペース名に置き換えてください)。</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-sql"><code>GRANT ALL PRIVILEGES on "JAPAND&amp;A#YAGAWA"."V_SALES_Datalake" to JAPAND&amp;A with grant option</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_2-1712745275984.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94613iEAD06B7FA1D0CE82/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_2-1712745275984.png" alt="fumihisa_yagawa_2-1712745275984.png" /></span></P><P style=" text-align: center; ">図15 : 仮想テーブルに権限付与</P><P>以上で、Data Lakeに物理テーブルを作成し、Open SQL スキーマにこれを参照する仮想テーブルが作成されました。それではSAP Datasphereからこの仮想テーブルを操作してみましょう。</P><P>Data Lakeに作成したテーブルに、SQL Open スキーマにある仮想テーブル経由でデータをインポートするため、ソースとなるCSVファイルを、AMAZON AWS S3に配置し、これをDatasphereのデータフローを使ってデータを格納します。AWS S3との接続設定に関しては、<A href="https://community.sap.com/t5/technology-blogs-by-sap/%E8%A4%87%E8%A3%BD%E3%83%95%E3%83%AD%E3%83%BC-part4-amazon-s3%E3%82%92%E3%82%BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88%E3%81%A8%E3%81%97%E3%81%9F%E8%A4%87%E8%A3%BD%E3%83%95%E3%83%AD%E3%83%BC/ba-p/13590365" target="_self">こちらのブログ</A>をご参照ください。このブログに基づき、Import_Location_from_S3 という接続設定を作成しておきます。また、接続先のAWS S3 には、インポートファイルをアップロードしておいてください。サンプルとして&nbsp;<A href="https://github.com/fyaga/BLOG_SAMPLE/blob/f4c10c9fbe79c8c1d81ebb08d66f6d3a3485c17b/SampleDate_DataLake2024.csv" target="_self" rel="nofollow noopener noreferrer"> SampleData_Datalake2024.csv</A> を添付します。</P><P>ブラウザのSAP Datasphereのタブを選択し左のメニューから「データビルダ」を選択、「フロー」タブをクリックし、「新規データフロー」タイルをクリックします。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_1-1712901572843.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95484i33D6B02837DA9177/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_1-1712901572843.png" alt="fumihisa_yagawa_1-1712901572843.png" /></span></P><P style=" text-align: center; ">図16 : AWS S3からCSVファイルをインポートするデータフローの作成</P><P>新規データフロー作成画面にて、左のペインから「ソース」タブをクリックし、「接続」フォルダを展開すると、上記で準備した Import_Location_from_S3がリストされます。これを展開すると、アップロード済のファイルがリストされます(下の画面では、AWS S3に作成したフォルダ dspimportlocation の下)。この中からData Lakeに配置するためのデータ SampleData_Datalake2024.csv を、Drug &Dropし、中央のワークスペースに配置します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1712903320785.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95491i96E9C5BEEFDE8FC6/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1712903320785.png" alt="fumihisa_yagawa_0-1712903320785.png" /></span></P><P style=" text-align: center; ">図17 : AWS S3に配置したCSVをソースとして定義</P><P>つづいて「リポジトリ」タブをクリックし、作成した仮想テーブル「V_SALES_Datalake」をクリックし、ワークスペースにDrug &amp; Dropします。この時同時に表示されるコンテキストメニューから「ターゲット」を選択します。<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1712906422341.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95508iFD58D126E41547BD/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1712906422341.png" alt="fumihisa_yagawa_0-1712906422341.png" /></span></P><P style=" text-align: center; ">図18 : 仮想テーブルをターゲットとして定義</P><P style=" text-align : left; ">ワークスペースのソースオブジェクト(AWS S3ファイル)の黒い ● を、ターゲット(V_SALES_Datalake)にDrug & Drop で結線し、ターゲットオブジェクトをクリックしたのち右のペインのプロパティ画面を下方にスクロールして、ソースとターゲットの項目をマッピングします。こちらも左の項目をDrug &Dropすることでマッピングする事ができます。なお、ソースのCSVファイルの1行目にヘッダー行としてターゲットテーブルのカラム名を記入しておくと、自動マッピングする事も可能です。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1712906968471.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95515i439C5ABC9DC8EB6C/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1712906968471.png" alt="fumihisa_yagawa_0-1712906968471.png" /></span></P><P style=" text-align: center; ">図19 : ソースとターゲットの関連付け</P><P style=" text-align : left; ">設定したデータフローを左上のアイコン「保存」し(データフロー名を指定します)続いて「デプロイ」します。ワークスペースの中央下に「Deployed...」のメッセージが表示されたらデータフローの準備は完了です。このメッセージは自動的に消えますのでご注意下さい(しばらくすると右ペインのプロパティの表示が「未デプロイ」から「デプロイ済み」に更新されるので、こちらで確認可能です)。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1712907545612.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95520i0EA53AAD9239C929/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1712907545612.png" alt="fumihisa_yagawa_0-1712907545612.png" /></span></P><P style=" text-align: center; ">図20 : データフローの保存とデプロイ</P><P style=" text-align : left; ">このデータフローにより、AWS S3にアップロードされたCSVファイルを、Data Lakeにインポートできるようになりました。このワークフローをスケジュールに基づき実行させる場合は、右ペインのプロパティの「実行ステータス」にある「スケジュール」アイコンをクリックし、スケジュールを作成する事ができます。ここでは、すぐにデータフローを実行したいので、左上にある「実行」アイコンをクリックし、データフローを実行します。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_0-1712908205799.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95529i802096FD6DBAC767/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_0-1712908205799.png" alt="fumihisa_yagawa_0-1712908205799.png" /></span></P><P style=" text-align: center; ">図21 : データフローのスケジュール実行と直接実行方法</P><P>データフロー完了のメッセージ(DIRECT run of DATA_FLOW .... completed&nbsp; このメッセージは自動で消えます)を確認するか、右ペインのプロパティにある実行ステイタスで「完了」を確認したら、ターゲットオブジェクトをクリックし、表示されるコンテキストアイコンから「データのプレビュー」をクリックすると、下方にこのオブジェクトのデータを確認する事ができます。このオブジェクトは仮想テーブルであり、その実態はData Lakeを参照しているので、これでData Lakeにデータをインポートしたことが確認できました。</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="fumihisa_yagawa_3-1712908890292.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/95536i628B76A8E03DF52C/image-size/large?v=v2&amp;px=999" role="button" title="fumihisa_yagawa_3-1712908890292.png" alt="fumihisa_yagawa_3-1712908890292.png" /></span></P><P style=" text-align: center; ">図22 : データフローの実行確認と、その実行結果の確認</P><P>&nbsp;</P><P>&nbsp;</P><P>SAP Datasphereにおける Data Lakeの利用方法については以上となります。</P><P>SAP DatasphereにてData Lakeを利用したときのパフォーマンスに関する情報として、以下のブログが参考になりますので、リンクをご紹介しておきます。</P><P><A href="https://community.sap.com/t5/technology-blogs-by-sap/working-with-the-embedded-data-lake-in-sap-datasphere/ba-p/13569701" target="_self">Working with the Embedded Data Lake in SAP Datasphere</A></P> 2024-04-12T11:12:57.669000+02:00 https://community.sap.com/t5/data-and-analytics-blog-posts/why-don-t-we-use-data-and-analytics-group-on-sap-community/ba-p/13666201 Why Don't We Use Data and Analytics Group on SAP Community? 2024-04-18T18:28:14.375000+02:00 TuncayKaraca https://community.sap.com/t5/user/viewprofilepage/user-id/137163 <P>Hey Data and Analytics Folks! Why Don't We Use <A href="https://community.sap.com/t5/data-and-analytics/gh-p/data-analytics" target="_self">Data and Analytics</A> Group on SAP Community instead of <A href="https://community.sap.com/t5/technology/ct-p/technology" target="_self">Technology</A>?</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="TuncayKaraca_1-1712778519559.png" style="width: 761px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94808iB9F1693F79E6207B/image-dimensions/761x194?v=v2" width="761" height="194" role="button" title="TuncayKaraca_1-1712778519559.png" alt="TuncayKaraca_1-1712778519559.png" /></span></P><P>Of course, it does not matter at the end. As long as if you tag your posts with SAP Managed tags everybody can find your posts. But there is a really one huge difference for usability that here in <A href="https://community.sap.com/t5/interest-groups/ct-p/interests" target="_self">Interests Groups</A> we can <STRONG>reply-the-reply</STRONG> but under <A href="https://community.sap.com/t5/products-and-technology/ct-p/products" target="_self">Products and Technology</A>&nbsp;we cannot! Check out this blog post&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/sap-datasphere-is-ready-to-take-over-the-role-of-sap-bw/bc-p/13666176" target="_self">SAP Datasphere is ready to take over the role of SAP BW</A> by&nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/705968">@kenneth_dalvik</a>&nbsp;and all responses that are very all boring sequential --there is no&nbsp;<STRONG>reply-the-reply</STRONG> option!&nbsp;<span class="lia-unicode-emoji" title=":upside_down_face:">🙃</span></P><P>So let's start using this group&nbsp;Here is already available <A href="https://community.sap.com/t5/data-and-analytics/gh-p/data-analytics" target="_self">Data and Analytics</A>.&nbsp; &nbsp;The group will be definitely a perfect fit for <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Analytics+Cloud/pd-p/67838200100800006884" class="lia-product-mention" data-product="3-1">SAP Analytics Cloud</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Datasphere/pd-p/73555000100800002141" class="lia-product-mention" data-product="16-1">SAP Datasphere</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Analytics+Cloud%25252C+hybrid+analytics/pd-p/464f79a9-d5e9-4113-8e9f-7ff61b577b4f" class="lia-product-mention" data-product="6-1">SAP Analytics Cloud, hybrid analytics</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+HANA+Cloud%25252C+SAP+HANA+database/pd-p/ada66f4e-5d7f-4e6d-a599-6b9a78023d84" class="lia-product-mention" data-product="40-1">SAP HANA Cloud, SAP HANA database</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Analytics+Cloud%25252C+connectivity/pd-p/0db4caf8-3039-4a93-9d11-543de33255a4" class="lia-product-mention" data-product="193-1">SAP Analytics Cloud, connectivity</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Analytics+Cloud%25252C+analytics+designer/pd-p/3f33380c-8914-4b7a-af00-0e9a70705a32" class="lia-product-mention" data-product="97-1">SAP Analytics Cloud, analytics designer</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Cloud%25252C+extended+edition/pd-p/73b37c4d-a4aa-4de9-aeb9-a5dc59710b26" class="lia-product-mention" data-product="244-1">SAP S/4HANA Cloud, extended edition</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+S%25252F4HANA+Embedded+Analytics/pd-p/8492b555-b489-4972-8e37-83f2f27ae399" class="lia-product-mention" data-product="1067-1">SAP S/4HANA Embedded Analytics</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Business+Planning+and+Consolidation%25252C+version+for+SAP+NetWeaver/pd-p/01200615320800001016" class="lia-product-mention" data-product="460-1">SAP Business Planning and Consolidation, version for SAP NetWeaver</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Business+Warehouse+Accelerator/pd-p/01200615320800000698" class="lia-product-mention" data-product="722-1">SAP Business Warehouse Accelerator</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/BW+%252528SAP+Business+Warehouse%252529/pd-p/242586194391178517100436979900901" class="lia-product-mention" data-product="1-1">BW (SAP Business Warehouse)</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+BW%25252F4HANA/pd-p/73554900100800000681" class="lia-product-mention" data-product="466-1">SAP BW/4HANA</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/BW+SAP+BEx+Analyzer/pd-p/720735023700999283551380474299965" class="lia-product-mention" data-product="919-1">BW SAP BEx Analyzer</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/BW+SAP+BEx+Web/pd-p/835872679136515185293228681234825" class="lia-product-mention" data-product="920-1">BW SAP BEx Web</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+ASE+-+BW+Enablement/pd-p/758617099728293421716080695502398" class="lia-product-mention" data-product="1038-1">SAP ASE - BW Enablement</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/BW+SAP+HANA+Data+Warehousing/pd-p/337684911283545157914465705009179" class="lia-product-mention" data-product="921-1">BW SAP HANA Data Warehousing</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Data+Services/pd-p/01200314690800000395" class="lia-product-mention" data-product="527-1">SAP Data Services</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Data+Intelligence/pd-p/73555000100800000791" class="lia-product-mention" data-product="15-1">SAP Data Intelligence</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Data+Custodian/pd-p/73554900100700002051" class="lia-product-mention" data-product="1204-1">SAP Data Custodian</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Big+Data+Services/pd-p/73555000100800000691" class="lia-product-mention" data-product="439-1">SAP Big Data Services</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+BusinessObjects+-+Platform+Administration/pd-p/493706448058243238508632186627562" class="lia-product-mention" data-product="1051-1">SAP BusinessObjects - Platform Administration</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+BusinessObjects+-+Semantic+Layer/pd-p/280909257853820289811451573728573" class="lia-product-mention" data-product="1053-1">SAP BusinessObjects - Semantic Layer</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+BusinessObjects+Mobile/pd-p/01200314690800000346" class="lia-product-mention" data-product="337-1">SAP BusinessObjects Mobile</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+BusinessObjects+-+Semantic+Layer+-+SDK/pd-p/724814917412511087954547042734363" class="lia-product-mention" data-product="1054-1">SAP BusinessObjects - Semantic Layer - SDK</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+BusinessObjects+-+Web+Intelligence+%252528WebI%252529/pd-p/907900296036854683333078008146613" class="lia-product-mention" data-product="1055-1">SAP BusinessObjects - Web Intelligence (WebI)</a>&nbsp;</P><P>These are welcome too <a href="https://community.sap.com/t5/c-khhcw49343/SAP+Master+Data+Governance/pd-p/67837800100800004488" class="lia-product-mention" data-product="697-1">SAP Master Data Governance</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+NetWeaver+Master+Data+Management/pd-p/01200615320800000588" class="lia-product-mention" data-product="739-1">SAP NetWeaver Master Data Management</a>&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Data+Quality+Management+for+SAP+NetWeaver+MDM/pd-p/01200615320800002027" class="lia-product-mention" data-product="526-1">SAP Data Quality Management for SAP NetWeaver MDM</a>&nbsp;</P><P>One thing I've noticed we cannot submit the blog posts directly. We need to "Submit for Review" only. You can still post discussions aka questions directly.&nbsp;</P><P>Thanks owners&nbsp;@ColinC, @meganhoy, @moshenaveh, @caroleighdeneen, @craigcmehil for their support!</P><P>Regards,<BR />Tuncay Karaca</P> 2024-04-18T18:28:14.375000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/understanding-data-modeling-tools-in-sap/ba-p/13689215 Understanding Data Modeling Tools in SAP 2024-05-02T16:25:43.459000+02:00 Marwah_Shwaiki https://community.sap.com/t5/user/viewprofilepage/user-id/7391 <P>Choosing the right SAP data modeling solution can be a challenging task, as there are multiple options available, including cloud-based or on-premise solutions with or without data visualization capabilities etc..so to select the best tool that can meet the project requirements and specifications, several factors need to be considered including, reviewing the raw data source and understanding how it will be used, assessing the need for data warehousing capabilities, evaluating the team's skill sets, and deciding whether a cloud or on-premise solution is preferred.</P><P>During the last few years, I've worked with almost all the SAP Data Modeling tools that are available, and In this blog article, I would like to briefly highlight the strength of each tool and where would be the best fit for it <span class="lia-unicode-emoji" title=":hugging_face:">🤗</span>.</P><P>&nbsp;</P><H3 id="toc-hId-1122738336">Understanding Data Modeling</H3><P>so what it's data modeling in SAP and why it's important?&nbsp;<span class="lia-unicode-emoji" title=":thinking_face:">🤔</span></P><P><SPAN>when we talk about Data modeling we are defining the process of creating diagrams that show how data flows in and out of a database. These diagrams define the data formats, structures, and functions required to support the data flow. Once the database is built, the data model becomes documentation for its existence and design. Data models provide a framework of relationships between data elements within a database. They enable different applications to share the same data and create a simple and logical database that eliminates redundancy, reduces storage requirements, and enables efficient retrieval. </SPAN></P><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV><DIV class=""><DIV class=""><DIV class=""><DIV class=""><DIV class=""><H3 id="toc-hId-926224831">&nbsp;</H3></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV></DIV><H3 id="toc-hId-729711326">SAP HANA Calculation Views</H3><P>SAP HANA calculation views are the key data modeling object on HANA, it's a graphical object that describes all the data processing steps from raw data to the final, consumable output.</P><P>Common data processing steps include filtering data, combining data, aggregating data, calculating new values, converting values, and ranking data. Calculation views are built in layers so that each calculation view can consume other calculation views to form a stack of super-models. This approach promotes the reuse of calculation views at the lower levels.</P><P><!-- notionvc: 1f08f122-aff1-4b17-a252-88f24ff50cd6 --></P><P><STRONG>Strengths:</STRONG></P><UL><LI><STRONG>In-Memory Processing:</STRONG> Data processing occurs directly in memory, ensuring high performance.</LI><LI><STRONG>Graphical Interface:</STRONG> Intuitive tools make it easy to create and visualize models.</LI><LI><STRONG>Custom Logic:</STRONG> Ability to integrate custom SQL for tailored data processing.</LI><LI><STRONG>Advanced Analytics:</STRONG> Supports spatial, graph, text analytics, and predictive/machine learning.</LI></UL><P><STRONG>Best Fit:</STRONG> Developing flexible data marts with custom logic requirements.</P><H3 id="toc-hId-533197821">SAP BW/4HANA</H3><P>SAP BW/4HANA is an on-premise data warehouse. The main purpose of a data warehouse is to extract data from any data source, integrate the data, store the cleansed data, and provide modeling tools so that data models can be created ready for use by any analytical tool. This is exactly what SAP BW/4HANA can do.<!-- notionvc: fbec00b1-c3e6-4815-9168-a79d91e7b64e --></P><P><STRONG>Strengths:</STRONG></P><UL><LI><STRONG>Ready-Made Models:</STRONG> Comprehensive data models are provided for virtual and physical storage.</LI><LI><STRONG>Data Warehousing Features:</STRONG> Supports dimensional modeling, hierarchies, and efficient data storage.</LI><LI><STRONG>Graphical Tool:</STRONG> User-friendly interface for efficient model visualization.</LI><LI><STRONG>On-Premise Deployment:</STRONG> Ideal for industries requiring high security and data control.</LI></UL><P><STRONG>Best Fit:</STRONG> Establishing on-premise data warehouses with strong data integration needs.</P><H3 id="toc-hId-336684316">ABAP CDS Views</H3><P>ABAP CDS Views enable developers to create data models that are semantically rich. These models are then exposed to UI clients by the application services. CDS Views is the central pillar of S/4HANA development and is used as the core technology in most of SAP's programming models.</P><P><STRONG>Strengths:</STRONG></P><UL><LI><STRONG>High Performance:</STRONG> Data processing is pushed down to the database level, ensuring efficiency.</LI><LI><STRONG>Ready-Made Models for SAP S/4HANA:</STRONG> Simplifies operational reporting on S/4HANA.</LI><LI><STRONG>Flexible Development:</STRONG> Allows for code-based customization leveraging SQL skills.</LI></UL><P><STRONG>Best Fit:</STRONG> Operational reporting on SAP S/4HANA with ready-made content.</P><H3 id="toc-hId-140170811">SAP Analytics Cloud</H3><P>SAP Analytics Cloud is an end-to-end cloud solution that brings together business intelligence, augmented analytics, predictive analytics, and enterprise planning in a single system. It is a solution aimed at business users for self-service analytics.<!-- notionvc: d7bd6f38-61bc-42a0-a555-c9dd8eff176f --></P><P><STRONG>Strengths:</STRONG></P><UL><LI><STRONG>Integrated Modeling:</STRONG> Modeling seamlessly integrated with reporting tools for streamlined analytics.</LI><LI><STRONG>Cloud-Based:</STRONG> No need for software installation; data modeling is conducted in the cloud.</LI><LI><STRONG>Self-Service Analytics:</STRONG> Empowers business users to create their own models.</LI></UL><P><STRONG>Best Fit:</STRONG> Organizations seeking self-service analytics with integrated modeling and reporting.</P><H3 id="toc-hId--56342694">SAP Datasphere</H3><P>which is so far My Absolute favorite tool <span class="lia-unicode-emoji" title=":beaming_face_with_smiling_eyes:">😁</span>!&nbsp;<SPAN>It is a public cloud software as a service (SaaS) data warehouse that supports the business data warehouse architecture. This tool effortlessly harmonizes data across the enterprise, making it a must-have for any business. It includes services for data modeling, data integration, cataloging, and data warehousing across SAP and non-SAP data, making it a one-stop-shop for all data management needs</SPAN></P><P><!-- notionvc: 70a2bda6-9fce-4816-8c17-7c73a80c91b7 --></P><P><STRONG>Strengths:</STRONG></P><UL><LI><STRONG>Comprehensive Data Warehouse Features:</STRONG> Supports dimensional modeling, data history management, and hierarchy modeling.</LI><LI><STRONG>Scalability:</STRONG> Easily scale resources in the cloud, supporting new innovations.</LI><LI><STRONG>Cloud Service:</STRONG> Simplifies software management through cloud consumption.</LI></UL><P><STRONG>Best Fit:</STRONG> Cloud-based data warehousing with advanced features and scalability.</P><H3 id="toc-hId--252856199">SAP BusinessObjects BI Semantic Layer (Universes)</H3><P>An organized collection of objects that called a Universe, which consists of dimensions, measures, and attributes grouped by business topics. The skill of a Universe developer is to create objects that resemble business terms by mapping them to the columns of the database tables. In some cases, SQL coding may be required to generate the value of the objects.<!-- notionvc: 28e2218d-7548-4c77-93ca-b664e5293a5d --></P><P><STRONG>Strengths:</STRONG></P><UL><LI><STRONG>User-Friendly Interface:</STRONG> Graphical tool simplifies data modeling tasks.</LI><LI><STRONG>SQL-Based Development:</STRONG> Easy to understand for database developers.</LI><LI><STRONG>Mature Tool:</STRONG> Offers a wide range of features for diverse modeling needs.</LI></UL><P><STRONG>Best Fit:</STRONG> Supporting SAP BusinessObjects reporting tools with Universes.</P><P><SPAN><BR />for more information, I would recommend this&nbsp;&nbsp;<A href="https://learning.sap.com/learning-journeys/exploring-data-modeling-with-sap-solutions" target="_self" rel="noopener noreferrer">Learning journey</A>&nbsp; from SAP which will give you an overview of all the SAP data modeling solutions&nbsp;<span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P><SPAN><!-- notionvc: 5ddaf2db-05cb-4914-8c1b-ab9fad69323a --></SPAN></P> 2024-05-02T16:25:43.459000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/tracking-hana-machine-learning-experiments-with-mlflow-a-technical-deep/ba-p/13692481 Tracking HANA Machine Learning experiments with MLflow: A technical Deep Dive 2024-05-08T17:00:00.007000+02:00 martinboeckling https://community.sap.com/t5/user/viewprofilepage/user-id/43098 <H1 id="toc-hId-865290017">Introduction</H1><P><SPAN><SPAN class="">This blog post is part of a series describing the usage of MLflow with HANA Machine Learning co-authored by &nbsp;<a href="https://community.sap.com/t5/user/viewprofilepage/user-id/39047">@stojanm</a>&nbsp;and <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/43098">@martinboeckling</a>.</SPAN> In this blog post we provide a more technical deep dive on the setup of a MLFlow instance and provide a general introduction how Machine Learning models trained with HANA ML can be logged with MLflow. The first blog post of the blog series is called&nbsp;<A href="https://community.sap.com/t5/technology-blogs-by-sap/tracking-hana-machine-learning-experiments-with-mlflow-a-conceptual-guide/ba-p/13688478" target="_self">Tracking HANA Machine Learning experiments with MLflow: A Conceptual Guide for MLOps</A>&nbsp;and gives an introduction to the topic of MLOps with MLflow.</SPAN></P><P>Starting with the python HANA ML package version 2.13, HANA Machine Learning added support for tracking of experiments with the MLflow package, which makes the incorporation of models developed using HANA Machine Learning into a comprehensive MLOps pipeline easy to achieve.&nbsp;</P><P>In this blog post we will provide an overview how MLflow can be used together with HANA ML. MLflow, which manages the experiment tracking and artefact management can run as a managed service at a hyperscaler platform, deployed locally or on a remote infrastructure. In the following we describe how to deploy MLflow on SAP Business Technology Platform &nbsp;and how to track your HANA machine learning experiments with MLFlow. In addition, we present which methods and algorithms in the hana ml package currently support the experiment tracking feature. Finally, we touch on the possibility to use logged models in MLflow for prediction.</P><H1 id="toc-hId-668776512">Prerequisites</H1><P>In this blog post we solely focus on the technical integration of HANA ML and MLflow as a logging platform. Generally, we assume that Python is already installed together with an already established development environment. Furthermore, we will not completely explain all details of docker and Cloud Foundry, but simply focus on the essential parts for HANA ML and MLFlow within this blog post.</P><H1 id="toc-hId-472263007">Set up MLFlow on BTP</H1><P><SPAN>MLFlow is leveraged and integrated in different solutions. For example Databricks as well Machine Learning in Microsoft Fabric integrate or provide a managed MLflow instance. In case MLFlow is not yet provided, we outline in this section a possibility to deploy MLflow in SAP BTP. We focus for simplicity reasons on the SQLite based deployment of MLflow. However, for productive environments it is recommended to separate the storage from the runtime of the MLFlow instance. A detailed explanation for setting up your own MLFlow server with alternatives to SQLite can be found under the following&nbsp;</SPAN><SPAN>link:&nbsp;<A href="https://mlflow.org/docs/latest/tracking/server.html" target="_blank" rel="noopener nofollow noreferrer">https://mlflow.org/docs/latest/tracking/server.html</A>. In the following paragraphs, we focus on a step by step overview to set up your own MLFlow instance using SQLite in BTP.</SPAN></P><P>As a first step we want to create a local docker file which can be used to upload it to our BTP environment. In the following code snippet, we provide the coding used to construct your own docker container locally. For that, paste the following code into a file called Dockerfile within your desired local folder.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code># Retrieve a python version as a base runtime for our docker container FROM python:3.10-slim # Run the pip install command for the package of mlflow RUN pip install mlflow # Create a temporary folder within our docker container to store our artifact RUN mkdir -p /mlflow # Expose the port 7000 to make our application which runs within docker accessable over the defined port EXPOSE 7000 # Define environment variables BACKEND_URI and ARTIFACT_ROOT to define the backend uri as also the # artifact root ENV BACKEND_URI sqlite:///mlflow//mlflow.db ENV ARTIFACT_ROOT /mlflow/artifacts # run the shell comand to setup our mlflow server within our docker container CMD mlflow server --backend-store-uri ${BACKEND_URI} --host 0.0.0.0 --port 7000</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>After creating successfully the Docker object, you can run&nbsp;<STRONG>docker build -t {tagname}.</STRONG>&nbsp;to construct your docker container. Afterwards, the local docker image is locally built. To expose the docker image, we push the image to a docker registry. In our example, we assume that you already have a docker registry set up where you can push your image to. For that step, you can run the following commands: <STRONG>docker tag {tagname} {dockerhub repository tag}</STRONG>,&nbsp;<STRONG>docker push {</STRONG>dockerhub repository tag<STRONG>&nbsp;}.&nbsp;</STRONG>After the successful run of the command, you see within your private docker hub the newly published docker container, which contains MLflow and all its dependencies inside of it.</P><P>After the successful publishing of your docker image to your registry, we can run the following command to create a BTP app based on the published docker image:</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>cf push APP-NAME --docker-image REPO/IMAGE:TAG</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>After successfully publishing the docker image on our BTP Cloud Foundry environment, we can find our published app within our BTP account and are able to access&nbsp;it under the published URL.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MLFlow Initial UI.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106232iB3F8015926221314/image-size/large?v=v2&amp;px=999" role="button" title="MLFlow Initial UI.png" alt="MLFlow Initial UI.png" /></span></P><H2 id="toc-hId-404832221"><SPAN>Set up tracking for MLflow</SPAN></H2><P>With MLflow users have the possibility to track their trained HANA ML models. In the following paragraph, we introduce the aspects that are needed to be able to log HANA ML models into MLflow itself.&nbsp;</P><P>To be able to use MLFlow together with HANA ML, we need to first install besides the HANA ML package also the MLFlow package. Therefore, you need to run the following command in your virtual environment, to be able to run the following scripts.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-bash"><code>pip install mlflow hana-ml</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>As a general setup, we first need to run the following command to set up our tracking with MLFlow to our available MLFlow instance. Therefore, place into the following two lines first your personal MLFlow tracking URI and your own custom experiment. In case you do not want to create a separate experiment, the different runs together with the MLFlow model are stored under the default experiment.</P><P>The method that allows us to track HANA ML models is implemented in the HANA ML package and is called enable_mlflow_autologging(schema=None, meta=None, is_exported=False, registered_model_name=None). This method can be used for initialised HANA ML models that are under the following methods:</P><UL><LI><A href="https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/pal/algorithms/hana_ml.algorithms.pal.auto_ml.AutomaticClassification.html#hana_ml.algorithms.pal.auto_ml.AutomaticClassification.enable_mlflow_autologging" target="_blank" rel="noopener noreferrer">AutomaticClassification</A></LI><LI><A href="https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/pal/algorithms/hana_ml.algorithms.pal.auto_ml.AutomaticRegression.html#hana_ml.algorithms.pal.auto_ml.AutomaticRegression.enable_mlflow_autologging" target="_blank" rel="noopener noreferrer">AutomaticRegression</A></LI><LI><A href="https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/pal/algorithms/hana_ml.algorithms.pal.auto_ml.AutomaticTimeSeries.html#hana_ml.algorithms.pal.auto_ml.AutomaticTimeSeries.enable_mlflow_autologging" target="_blank" rel="noopener noreferrer">AutomaticTimeSeries</A></LI><LI><A href="https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/pal/algorithms/hana_ml.algorithms.pal.pipeline.Pipeline.html#hana_ml.algorithms.pal.pipeline.Pipeline.enable_mlflow_autologging" target="_blank" rel="noopener noreferrer">Pipeline</A></LI><LI><A href="https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/pal/algorithms/hana_ml.algorithms.pal.unified_classification.UnifiedClassification.html#hana_ml.algorithms.pal.unified_classification.UnifiedClassification.enable_mlflow_autologging" target="_blank" rel="noopener noreferrer">Unified_Classification</A></LI><LI><A href="https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/pal/algorithms/hana_ml.algorithms.pal.unified_regression.UnifiedRegression.html#hana_ml.algorithms.pal.unified_regression.UnifiedRegression.enable_mlflow_autologging" target="_blank" rel="noopener noreferrer">Unified_Regression</A></LI></UL><P>Within the method enable_mlflow_autologging the user has different keywords that can be filled that allows us to influence the behaviour of our MLFlow autologging in HANA ML.</P><UL><LI>schema: Defines the HANA database schema for MLFlow autologging where the MLflow logging table is stored</LI><LI>meta: Defines the name of the model storage table in HANA database</LI><LI>is_exported: Determines if the hana model binaries should be exported to MLflow</LI><LI>registered_model_name: Name of the model stored in MLflow</LI></UL><P>In the following section we provide an overview for the Unified Interface how the logging of MLflow can be used.</P><H1 id="toc-hId-79235997">Run HANA ML Algorithms with MLflow</H1><P>As we have explained and outlined in the sections above, we have created a MLFlow instance and have introduced the syntax that is needed for the logging of HANA ML models in MLflow. In the following sections we will provide based on an example how the logging of HANA ML models on MLflow is done.</P><H2 id="toc-hId-11805211">Model training of HANA ML with MLFlow</H2><P>For the training of HANA ML in combination with MLflow, we focus in this blog post on the Unified Method. We apply for the respective elements a Classification on the sample bank dataset which can be found under the&nbsp;<A href="https://github.com/SAP-samples/hana-ml-samples/blob/main/Python-API/pal/datasets/bank-additional-full-with-header.csv" target="_blank" rel="noopener nofollow noreferrer">HANA ML sample dataset folder on GitHub</A>.</P><P>The dataset can either be uploaded directly to the SAP HANA database or you could also use SAP Datasphere as your starting point. Generally, to use HANA ML directly you would need to store the dataset in a HANA database. However, HANA ML also provides methods to integrate third party files/ data structures. This involves Pandas, Spark as also shapefiles. In addition also HANA Data Lake file tables can be integrated with HANA ML functionalities. An overview of the different methods can be found under the&nbsp;<A href="https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/hana_ml.dataframe.html" target="_blank" rel="noopener noreferrer">following page</A>. In the following paragraphs, we will go through the sample code that we have created to combine HANA ML and MLFlow.</P><H2 id="toc-hId--184708294">Connect to HANA database (Deployed under SAP Datasphere)</H2><P>To be able to connect to the HANA database instance, we first need to build up a connection to the HANA database. In our example, we load the data from the data samples provided by HANA ML. During the time of this blog post, the OpenSQL schema of Datasphere only supports Basic Authentication. Therefore, in this blog post we only elaborate how the connection is done over basic authentication. SAP HANA standalone supports however non-basic authentication, which are also supported in the HANA ML package to connect certificate based to the SAP HANA instance.</P><P>To establish the connection to the HANA database, we make use of the implemented HANA ML dataframe class and call the method ConnectionContext. We store the instance of the connection in the variable&nbsp;<STRONG>conn</STRONG>. To now be able to establish the connection to the HANA database view or table, we will need to specify over the method table the connection. The beautiful aspect is that overall, the dataset is not going to be loaded to the Python runtime, but will only be represented with a proxy to the actual table in the HANA database. All transformations, if done over the methods of HANA ML, are then pushed down to the database itself and executed there if the training is executed. In our case, we load the sample dataset into our database by making use of the provided methods of the HANA ML package.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>""" This script provides a short example how HANA ML and MLFlow can be integrated together. The credentials to the database are following the currently supported authentification (Basic) of the SAP Datasphere OpenSQL schema. Overall, HANA Cloud standalone is also able to support multiple other authentification methods. We have used an abstraction python file (constants) where we retrieve the securely stored authentification properties. To get more details about the exact method structure needed, please have a look at the documentation: https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/hana_ml.dataframe.html#hana_ml.dataframe.ConnectionContext """ from hana_ml import dataframe from hana_ml.algorithms.pal.unified_classification import UnifiedClassification from hana_ml.algorithms.pal.auto_ml import AutomaticClassification import mlflow from hana_ml.algorithms.pal.auto_ml import Preprocessing from hana_ml.algorithms.pal.partition import train_test_val_split from constants import db_url, db_user, db_password # dataset retrieval conn = dataframe.ConnectionContext(address=db_url, port=443, user=db_user, password=db_password) dataset_data, training_data, _, test_data = DataSets.load_bank_data(connection=conn, schema=schema_name, train_percentage=0.7, valid_percentage=0, test_percentage=0.3, seed=43)</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>After connecting to the database, the user is able to use the preprocessing methods implemented in HANA ML. Generally, the different changes are pushed down to the HANA database and are not executed within the Python runtime. In our use case, we do not need to use the data preprocessing as we directly retrieve a sample dataset which we can directly use for our ML training.</P><P>After finishing the potentially needed transformations, we are now able to implement the tracking of our HANA ML runs with the possibility of MLFlow. Similar to the normal usage of MLFlow, we set up first our tracking uri under which we want to store our HANA ML runs and models. In your case you would need to change the keyword <STRONG>mlflow_tracking_uri</STRONG> with your respective MLflow tracking URL. Furthermore, we then are able to specify the experiment name under which the runs are tracked. If we do not specify a specific experiment, the runs are tracked under the Default experiment.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code># set up MLFlow mlflow.set_tracking_uri(mlflow_tracking_uri) mlflow.set_experiment("HANA ML Experiment")</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>In the following chapters, we will provide an outline how the exact training is performed and what components are logged to MLflow.</P><H3 id="toc-hId--252139080">Unified Method</H3><P>For the example we use the implemented Hybrid Gradient Boosting Tree as a classification algorithm for our Classification. In order to perform the classification, we use the Unified Classification in order to be able to run our algorithm. On the defined variable, we then use the implemented enable_mlflow_autologging method. This allows us to directly log the model using implemented auto logging behaviour.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>uc = UnifiedClassification(func="HybridGradientBoostingTree") uc.enable_mlflow_autologging() uc.fit(training_data, key="ID", label="responded")</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>We call the fit method once we have initiated the HANA ML model variable and the associated autologging for MLflow. For the fit method, we have in total two different options. Firstly, the non-partitioned training dataset where we only use the training dataset. If we decide to partition our training dataset, we allow to create a validation dataset for which we can log metrics automatically during training.</P><P>If we do not define for our fit function the partitioning, we will not log metrics within MLFlow. In the following image, you can see how a potential HANA ML tracked run looks like in MLFlow together with the stored HANA ML model in MLflow.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MLflow Initial Model.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107009i7D8C6FCD09145880/image-size/large?v=v2&amp;px=999" role="button" title="MLflow Initial Model.png" alt="MLflow Initial Model.png" /></span></P><P><SPAN>If we decide to partition our dataset, here for instance to partition the dataset along the defined primary key, we are able to directly log evaluation metrics relevant for the Classification we have used. This includes the following metrics: AUC, Recall, Precision, F1 Score, Accuracy, Kappa coefficient and the Mathews Correlation Coefficient (MCC). This would directly allow us to compare multiple runs within our MLFlow project to one another and measure the different performances.</SPAN></P><P><FONT face="inherit"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MLFlow Metric Model.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107015i7FB44324969988A4/image-size/large?v=v2&amp;px=999" role="button" title="MLFlow Metric Model.png" alt="MLFlow Metric Model.png" /></span></FONT></P><P><FONT face="inherit">&nbsp;In addition to the general run, HANA ML also logs the model to MLflow. What is logged to MLflow depends on the parameters set&nbsp;for the method </FONT><STRONG>enable_mlflow_autologging</STRONG><FONT face="inherit">. If for instance everything is set to the default settings, we will see the following yaml file to be logged </FONT>to MLflow.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MLflow model.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107027i73AC9FF7204BAD74/image-size/large?v=v2&amp;px=999" role="button" title="MLflow model.png" alt="MLflow model.png" /></span></P><P>&nbsp;<SPAN>If within the method&nbsp;</SPAN><STRONG>enable_mlflow_autologging </STRONG><FONT face="inherit">the parameter is set to is_exported, the model binaries stored in the model storage on HANA are exported to MLflow. This setting would allow us to </FONT>retrieve<FONT face="inherit">&nbsp;the trained model from MLflow and use it in a different HANA database for prediction purposes. In addition to the yaml file containing the metadata we now can see a created subfolder called models which contains the necessary model </FONT>artefacts<FONT face="inherit">&nbsp;normally stored in the HANA database now in MLflow.</FONT></P><P><FONT face="inherit"><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="MLflow exported model.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107028i5B476B0754A68F6C/image-size/large?v=v2&amp;px=999" role="button" title="MLflow exported model.png" alt="MLflow exported model.png" /></span></FONT></P><P><FONT face="inherit">After the training is finished, we have </FONT><SPAN>besides the auto logging capabilities of HANA ML for MLflow the possibility to track further artefacts in MLflow. In the following section we will outline a few possibilities that exist with the additional tracking.</SPAN></P><H2 id="toc-hId--577735304">Additional logging possibilities</H2><P>Besides the outlined auto logging capabilities, we can track with MLFlow additional artefacts to the respective run. In the following chapters, we outline selected possibilities to further enrich the auto logging for HANA ML runs tracked in MLFlow.</P><H3 id="toc-hId--645166090">Adding run and experiment description</H3><P><SPAN>The description in the experiment section can be handy once the number of your experiments grows in the repository. In addition, mlflow allows to also add individual description to each run of an experiment. Using the following methods you can set up both:</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>from mlflow.tracking import MlflowClient current_experiment=dict(mlflow.get_experiment_by_name("HANA ML Experiment")) experiment_id=current_experiment['experiment_id'] run = mlflow.active_run() MlflowClient().set_experiment_tag(experiment_id,"mlflow.note.content", "This experiment shows the automated methods of HANA machine learning and how to track them with MLFLOW") MlflowClient().set_tag(run.info.run_id, "mlflow.note.content", "This is a run tracked with Unified Classification from HANA Machine Learning")</code></pre><P>&nbsp;</P><P>&nbsp;</P><H3 id="toc-hId--916910964">Logging input datasets</H3><P><SPAN>Sometimes it is important to keep the input dataset also as part of the tracking with MLflow. Since HANA machine learning datasets are located in HANA, they need to be converted to pandas DataFrames to be tracked as shown in the following code:</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code># Store training dataset in MLFlow itself pandas_training_dataset = training_data.collect() mlflow_dataset = mlflow.data.from_pandas(pandas_training_dataset, name="Customer data", targets="LABEL") mlflow.log_input(mlflow_dataset, context='training')</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>This results in the change, that the respective state of the training data is logged to the current run. The logged dataset can be found in the associated MLflow run, where the schema of the dataset is provided together with some metadata information about the number of rows and number of elements. In addition, also the provided context is marked in the UI of MLflow.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="2024-05-07_16-02-25.png" style="width: 799px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/106929iF8F82FDDFDF435A7/image-size/large?v=v2&amp;px=999" role="button" title="2024-05-07_16-02-25.png" alt="2024-05-07_16-02-25.png" /></span></SPAN></P><H3 id="toc-hId--1113424469"><SPAN>Logging a model report</SPAN></H3><P><SPAN>In addition to the logging of the dataset, it might also be important to add a model report to MLFlow. HANA ML generally provides different interactive visualisations for the trained model artefact, which can be stored as an HTML file. After the storing of the model report to your local repository, we can log the input of the model report to our current run. This allows us to interactively explore the model report automatically generated by HANA ML and make it accessible in MLFlow. To log the HANA ML model report, you can use the following code snippet.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code># create additional model report in MLFlow UnifiedReport(uc).display(save_html="UnifiedReport") mlflow.log_artifact("UnifiedReport_unified_classification_model_report.html")</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>After the Model report is stored successfully under the current run, we can see in the artefact&nbsp;tab in MLFlow the interactive model report:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="artifact_mlflow.gif" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107064i48983C52AA76D768/image-size/large?v=v2&amp;px=999" role="button" title="artifact_mlflow.gif" alt="artifact_mlflow.gif" /></span></SPAN></P><P>&nbsp;<SPAN>The complete script used for this section can be found in the following code snippet:</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>from hana_ml import dataframe from hana_ml.algorithms.pal.unified_classification import UnifiedClassification from hana_ml.visualizers.unified_report import UnifiedReport import mlflow from hana_ml.algorithms.pal.utility import DataSets from constants import db_url, db_user, db_password # dataset retrieval conn = dataframe.ConnectionContext(address=db_url, port=443, user=db_user, password=db_password) dataset_data, training_data, _, test_data = DataSets.load_bank_data(connection=conn, schema=schema_name, train_percentage=0.7, valid_percentage=0, test_percentage=0.3, seed=43) # set up MLflow mlflow.set_tracking_uri(tracking_uri) mlflow.set_experiment("HANA ML Experiment") # set up classification uc = UnifiedClassification(func="HybridGradientBoostingTree") uc.enable_mlflow_autologging(is_exported=True) # train model uc.fit(training_data, key="ID", label="LABEL", partition_method="stratified", stratified_column="ID", partition_random_state=43, build_report=True) # create additional model report in MLFlow UnifiedReport(uc).display(save_html="UnifiedReport") mlflow.log_artifact("UnifiedReport_unified_classification_model_report.html") # Store training dataset in MLFlow itself pandas_training_dataset = training_data.collect() mlflow_dataset = mlflow.data.from_pandas(pandas_training_dataset, name="Customer data", targets="LABEL") mlflow.log_input(mlflow_dataset, context='training')</code></pre><P>&nbsp;</P><P>&nbsp;</P><H2 id="toc-hId--1016534967">Apply of trained model</H2><P>After we have finished our training, we are able with HANA ML to retrieve the model from MLFLow and use it for our prediction purposes. For this purpose, we will create a separate Python script where we will provide an overview to retrieve the trained MLflow model.</P><P>Similar to our training script, we first set up our connection to the HANA database and establish the connection to our table. In our case, we simply use the sample dataset provided by HANA ML.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>from hana_ml import dataframe from hana_ml.algorithms.pal.unified_classification import UnifiedClassification from hana_ml.visualizers.unified_report import UnifiedReport import mlflow from hana_ml.algorithms.pal.utility import DataSets from constants import db_url, db_user, db_password # dataset retrieval conn = dataframe.ConnectionContext(address=db_url, port=443, user=db_user, password=db_password) dataset_data, training_data, _, test_data = DataSets.load_bank_data(connection=conn, schema=schema_name, train_percentage=0.7, valid_percentage=0, test_percentage=0.3, seed=43)</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>Similar to our training script, we need to set the tracking url for MLflow and need to initiate the model storage of HANA. If we have decided to not export the HANA ML model to MLflow, we need to specify the same schema for the model storage where our HANA ML model is stored after the successful run. In case we have exported our model, we are able to specify a different schema. In the following, you can see the necessary script in order to retrieve the logged HANA ML model from MLflow.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code># set up MLFlow and model storage mlflow.set_tracking_uri(tracking_url) model_storage = ModelStorage(connection_context=conn, schema=schema_name)</code></pre><P>&nbsp;</P><P>&nbsp;</P><P>After the model storage has been initiated, we are able to retrieve the stored HANA ML model from MLflow. In order to select the correct model, you need to extract the correct run id associated to the model you would like to apply for your prediction dataset. In our case, this is the test dataset we have received from the sample dataset method. The model_uri needed for the model retrieval is consisting of the following pattern 'runs:/{run id}/model', in which you would need to exchange the run id with your respective run. For the actual retrieval of the model, we use the initiated model storage, in our case called <STRONG>model_storage</STRONG>&nbsp;and call the method <STRONG>load_mlflow_model</STRONG> to load the MLflow model to our HANA database and assign the respective proxy to our variable <STRONG>mymodel</STRONG>. The variable <STRONG>mymodel</STRONG> is then used to call the predict method in order to apply our model to our dataset. In the end we transform our prediction dataset into a Pandas DataFrame to look at the content of the created DataFrame. Normally, we could directly persist the created temporary table with the <A href="https://help.sap.com/doc/1d0ebfe5e8dd44d09606814d83308d4b/2.0.07/en-US/hana_ml.dataframe.html#hana_ml.dataframe.DataFrame.save" target="_self" rel="noopener noreferrer">save method</A> and therefore make the dataset available for further processing.</P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code># load logged run from MLflow to HANA ML logged_model = 'runs:/d8a763b7b81940598633605e447cd880/model' mymodel = model_storage.load_mlflow_model(connection_context=conn, model_uri=logged_model) dataset_data_predict = mymodel.predict(data=test_data, key="ID") # collect the predicted dataset to see content in dataframe print(dataset_data_predict.collect())</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>After running the script, you should be able to see the following terminal output, for which we can see the download of the artefact stored in MLflow and the created prediction dataset, which consists in our case of 4 columns: ID (primary key), SCORE (predicted label), CONFIDENCE (prediction confidence for applied row) and REASON_CODE (influence of individual variables to prediction output). </SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Terminal output MLflow HANA model.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/107043i774317219AD52360/image-size/large?v=v2&amp;px=999" role="button" title="Terminal output MLflow HANA model.png" alt="Terminal output MLflow HANA model.png" /></span></SPAN></P><P>&nbsp;<SPAN>In case we have exported our model, the output of our terminal look slightly different indicating that we also download the respective model artefacts stored additionally to the yaml file. In the following you see the complete script used for applying the model to a new dataset.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-python"><code>from hana_ml import dataframe from hana_ml.model_storage import ModelStorage from hana_ml.algorithms.pal.utility import DataSets import mlflow from constants import db_url, db_user, db_password conn = dataframe.ConnectionContext(address=db_url, port=443, user=db_user, password=db_password) # full_set, diabetes_train, diabetes_test, _ = DataSets.load_diabetes_data(conn) dataset_data, training_data, _, test_data = DataSets.load_bank_data(connection=conn, schema=schema_name, train_percentage=0.7, valid_percentage=0, test_percentage=0.3, seed=43) # set up MLFlow and model storage mlflow.set_tracking_uri(tracking_uri) model_storage = ModelStorage(connection_context=conn, schema=schema_name) # load logged run from MLflow to HANA ML logged_model = 'runs:/ed7b8d4734cb42ca90c417f932957b40/model' mymodel = model_storage.load_mlflow_model(connection_context=conn, model_uri=logged_model) dataset_data_predict = mymodel.predict(data=test_data, key="ID") # collect the predicted dataset to see content in dataframe print(dataset_data_predict.collect())</code></pre><P>&nbsp;</P><P>&nbsp;</P><H1 id="toc-hId--919645465"><SPAN>Key take aways</SPAN></H1><P><SPAN>In this blog post we have showcased an end to end example how MLflow can be integrated in your HANA ML workload by providing the possibility to share and compare multiple tracked runs in MLflow. If the data is already stored in HANA, this allows you to directly interact with MLflow while being able to run your Machine Learning algorithms on data stored in the HANA database without the need to transfer your data between multiple systems. This blog covered an essential part of the automated logging capabilities of HANA ML models into MLflow.&nbsp;</SPAN></P><P>We highly appreciate your thoughts, comments and questions under this blog post. In case you want to reach out for general questions around HANA, or specifically HANA ML, don't hesitate to use the <A href="https://community.sap.com/t5/technology-q-a/qa-p/technology-questions" target="_self">Q&amp;A tool</A>&nbsp;with the respective tags that describe your question.</P> 2024-05-08T17:00:00.007000+02:00 https://community.sap.com/t5/application-development-blog-posts/application-development-using-react-and-cap-deployed-in-btp/ba-p/13708089 Application Development using React and CAP – Deployed in BTP 2024-05-23T09:02:28.846000+02:00 sneha_govind https://community.sap.com/t5/user/viewprofilepage/user-id/1448156 <P><STRONG>Objective:</STRONG> Develop a gamification application for the SAP Customer Success event held on April 24 &amp; 25<STRONG>.</STRONG></P><P><STRONG>Key Features:</STRONG> Event agenda for two days of the event; Two types of quizzes - one consisting of general SAP questions, second consisting of Partner Question; Leaderboard consisting of top 15 people of the quiz;&nbsp;QR code scanner for session codes and points;&nbsp;User onboarding via IAS self-registration; My Points session consisting of all the points secured during the games.</P><P><SPAN><STRONG>Technologies Used:&nbsp;</STRONG></SPAN><STRONG>Frontend:</STRONG> React; <STRONG>Backend:</STRONG> CAP;&nbsp;<STRONG>Data Storage:</STRONG> S4; <STRONG>Deployment:</STRONG> SAP Business Technology Platform (BTP); <STRONG>User Management:</STRONG> SAP Identity Authentication Service (IAS)</P><P><STRONG>Development Process:</STRONG></P><P><STRONG><SPAN>Initial Setup:&nbsp;</SPAN></STRONG></P><P><STRONG><SPAN>&nbsp; &nbsp; &nbsp;BAS Studio:&nbsp;</SPAN></STRONG><A title="BAS" href="https://na-customer-success-days-44hjan9a.us10cf.applicationstudio.cloud.sap/index.html" target="_blank" rel="noopener nofollow noreferrer">BAS</A></P><P><STRONG>&nbsp; &nbsp; &nbsp;Database Explorer</STRONG>: <A href="https://uaa.cf.us10.hana.ondemand.com/login" target="_blank" rel="noopener nofollow noreferrer">SAP HANA</A></P><P>&nbsp; &nbsp; &nbsp;<STRONG>BTP Subaccount : <A href="https://developers.sap.com/tutorials/workzone-workshop1-access.html" target="_blank" rel="noopener noreferrer">Training Subaccount</A></STRONG></P><P><STRONG><SPAN>1. Frontend Development with React:</SPAN></STRONG></P><P>&nbsp;&nbsp; - Developed the user interface using React.</P><P>&nbsp;&nbsp; - Designed mock UI screens using Figma <A title="Figma Page" href="https://www.figma.com/design/DWqBw6jcrRnZcFld3MFzJG/Untitled?node-id=0-1&amp;t=P8xARziV71mOSB66-0" target="_blank" rel="noopener nofollow noreferrer">Click to view</A>&nbsp;</P><P>&nbsp;&nbsp; - Followed the SAP community blog for React application development <A title="React Setup in BAS" href="https://community.sap.com/t5/technology-blogs-by-sap/react-development-with-sap-business-application-studio/ba-p/13520135" target="_blank">Click to see the blog&nbsp;</A></P><P>&nbsp; &nbsp;- Learn more from&nbsp;<A href="https://search.sap.com/search.html?t=react&amp;n=1&amp;s=_score&amp;src=defaultSourceGroup&amp;serp_ref=https%253A%252F%252Fdevelopers.sap.com%252F" target="_blank" rel="noopener noreferrer">React Tutorial with UI5 Webcomponents</A></P><P>&nbsp; &nbsp;-&nbsp;Created routing in the React application using SAP's tutorial <A href="https://developers.sap.com/tutorials/ui5-webcomponents-react-routing.html" target="_blank" rel="noopener noreferrer">Routing Guide</A></P><P><STRONG>2. Backend Development with CAP:</STRONG></P><P>&nbsp;&nbsp; - Decided on CAP for backend development after initial research.</P><P>&nbsp;&nbsp; - Set up the database and CDS (Core Data Services) in CAP.</P><P>&nbsp;&nbsp; - Deployed the backend on BTP following the CAP jumpstart guide <A href="https://cap.cloud.sap/docs/get-started/jumpstart" target="_blank" rel="noopener nofollow noreferrer">CAP documentation</A>, <A href="https://www.youtube.com/watch?v=gu5r1EWSDSU&amp;t=785s" target="_blank" rel="noopener nofollow noreferrer">youTube Tutorial</A></P><P><STRONG>3. Data Storage Integration:</STRONG></P><P>&nbsp;&nbsp; - Integrated data storage using S4 <A href="https://developers.sap.com/group.hana-cloud-get-started.html" target="_blank" rel="noopener noreferrer">Refer this article</A>&nbsp;</P><P>&nbsp;&nbsp; - Faced challenges integrating the front and backend, which were resolved through research and community support.</P><P><STRONG>User Onboarding:</STRONG></P><P>- Implemented user onboarding with self-registration through IAS.</P><P>- Followed the SAP Help Portal guide for IAS setup <A href="https://help.sap.com/viewer/product/Identity_Authentication/Cloud/en-US" target="_blank" rel="noopener noreferrer">IAS User Guide</A></P><P><STRONG>Final Integration and Deployment:</STRONG></P><P>- Successfully deployed a mock version of the application to a BTP subaccount.</P><P>- Completed the initial development of the React application within 18 hours &amp; deployed it.</P><P><STRONG>Testing and Launch:</STRONG></P><P>- Delivered the completed application to the team for a demo to the RVP.</P><P>- Addressed minor bugs during testing - fixed them.</P><P>- Launched the application successfully a week before the event day.</P><P><STRONG>Outcome:</STRONG></P><P>- Over 200 customers participated in the event.</P><P>- The application got positive feedback from the end-users(Customers) and was well-received during the SAP BTP Customer Success Day event.</P><P>- The top three participants were awarded prizes from SAP Partners.</P><P>Ultimately, working on this application was a great experience. As the lead developer for the first time, I experienced various ups and downs. I strongly believe that it's okay to make mistakes as long as we are ready to analyze and fix them.</P><P>&nbsp;</P><P><STRONG>APP DEMO:</STRONG></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="App Demo" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/113481i6B5DAA4B0AEF153C/image-size/medium?v=v2&amp;px=400" role="button" title="App-demo.gif" alt="App Demo" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">App Demo</span></span><span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="QR Code Scan" style="width: 225px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/113596i3867B65272ABFF8F/image-size/medium?v=v2&amp;px=400" role="button" title="QR (1).gif" alt="QR Code Scan" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">QR Code Scan</span></span></P><P>&nbsp;</P><P><SPAN>&nbsp;</SPAN></P><P>&nbsp;</P><P>&nbsp;</P> 2024-05-23T09:02:28.846000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/end-to-end-performance-optimization-in-sap-analytics-cloud-with-sap/ba-p/13710924 End-To-End performance optimization in SAP Analytics Cloud with SAP Enterprise Support Services 2024-05-24T11:48:31.997000+02:00 MichaelMoloney https://community.sap.com/t5/user/viewprofilepage/user-id/10058 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="SAC CQC banner.jpg" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122540i605FE338F29DD162/image-size/large?v=v2&amp;px=999" role="button" title="SAC CQC banner.jpg" alt="SAC CQC banner.jpg" /></span></P><P><SPAN>Recently I posted a blog about&nbsp;</SPAN><A class="" href="https://community.sap.com/t5/technology-blogs-by-sap/sap-analytics-cloud-continuous-quality-checks/ba-p/13647230" target="_blank">SAP Analytics Cloud: Continuous Quality Checks</A><SPAN>&nbsp;(CQC services).</SPAN></P><P><SPAN>The overall performance of SAP Analytics Cloud (SAC) is mainly determined by the three components:</SPAN></P><UL><LI>Client time - frontend</LI><LI>Network time</LI><LI>SAP Analytics Cloud service time - backend&nbsp;</LI></UL><P><SPAN>&nbsp;It is important to regularly monitor and analyze the performance of SAP Analytics Cloud to identify and address any bottlenecks or inefficiencies.<BR />The CQC services in my blog above offer great value in assisting you to analyze your system and/or situation based on real life data from your SAP Analytics Cloud Stories or Analytic Applications etc.<BR />They do primarily focus on the frontend and network aspects.&nbsp;</SPAN></P><P><SPAN>In many cases the frontend can be the smaller portion of the total build time of a Story in SAP Analytics Cloud. When connecting to live SAP data sources you must ensure that these have been optimized for reporting usage.&nbsp;This can be achieved by optimizing database queries, tuning configurations and parameters, and scaling resources to handle increasing user loads. Additionally, implementing caching mechanisms, utilizing efficient data storage and retrieval techniques etc.<BR /><BR /></SPAN></P><H3 id="toc-hId-1144641478"><SPAN>Getting to the Root Cause</SPAN></H3><P><SPAN>To begin with you should perform some root cause analysis to narrow down where time is being spent.<BR />Take a look at these useful resources and tooling within SAC&nbsp;&nbsp;</SPAN></P><UL><LI><SPAN><A href="https://me.sap.com/notes/2511489" target="_self" rel="noopener noreferrer">2511489</A> - Troubleshooting performance issues in SAP Analytics Cloud&nbsp;</SPAN></LI><LI><SPAN><SPAN><A class="" title="SAP Analytics Cloud Performance Decision Tree" href="https://help.sap.com/docs/SAP_ANALYTICS_CLOUD/00f68c2e08b941f081002fd3691d86a7/6ae71d6ad2eb4622b0ef9feef61efba4.html" target="_blank" rel="noopener noreferrer">SAP Analytics Cloud Performance Decision Tree</A></SPAN></SPAN></LI><LI><SPAN><A href="https://blogs.sap.com/2021/11/19/sap-analytics-cloud-administration-cockpit/" target="_blank" rel="noopener noreferrer">SAP Analytics Cloud – Administration Cockpit</A></SPAN></LI><LI><SPAN><A href="https://blogs.sap.com/2020/09/24/performance-statistics-and-analysis/" target="_blank" rel="noopener noreferrer">SAP Analytics Cloud Performance Statistics and Analysis</A></SPAN></LI><LI><SPAN><A href="https://blogs.sap.com/2021/04/13/sap-analytics-cloud-data-action-performance-statistics-and-analysis/" target="_blank" rel="noopener noreferrer">SAP Analytics Cloud Data Action Performance Statistics and Analysis</A></SPAN></LI><LI><SPAN><A class="" href="https://community.sap.com/t5/technology-blogs-by-sap/sap-analytics-cloud-performance-measurement/ba-p/13560254" target="_blank">SAP Analytics Cloud - Performance Measurement</A><BR /></SPAN></LI></UL><P><SPAN>Once you establish the total build time and how much time is spent in the three components, you can follow the guidance in the links above to work on improving and optimizing each part.&nbsp;&nbsp;<BR /><BR /></SPAN></P><H3 id="toc-hId-948127973"><SPAN>SAP Enterprise Support Services - Backend&nbsp;</SPAN></H3><P><SPAN>If you encounter a situation where you have performance impact coming from an SAP source system, such as SAP BW or SAP HANA, one option available to you is to engage with us and consume your entitlements from SAP Enterprise Support. We deliver specific recommendations via our CQC checks to help you fine tune these data sources.<BR />Especially relevant for SAP BW and SAP HANA DB are:&nbsp;</SPAN></P><H4 id="toc-hId-880697187">Technical Performance Optimization (TPO)</H4><P>The TPO service is designed to be an overall health check focusing on throughput of your database.<BR />Some of the checks included in the service include:</P><UL><LI>Checks for major misconfigurations and hardware bottlenecks</LI><LI>Parameter settings, table space, expensive SQL statements</LI><LI>Database management (CBO statistics, Index and table storage management, Online log configuration)</LI></UL><P>For more details read the<SPAN>&nbsp;</SPAN><A href="https://support.sap.com/content/dam/support/en_us/library/ssp/offerings-and-programs/sap-enterprise-support/enterprise-support-academy/continuous-quality-check-improvement-services/Technical%20performance%20optimization.pdf" target="_blank" rel="noopener noreferrer">infosheet</A>.<BR /><BR /></P><H4 id="toc-hId-684183682">Business Process Performance Optimization (BPPO)</H4><P>The CQC for SAP Business Process Performance Optimization is designed to ensure best performance for business-critical steps in your solution. It is more relevant for specific issues like modeling.&nbsp;<BR />Some of the checks included in the service include:</P><UL><LI>Detailed technical analysis of critical process steps, evaluates and identifies potential improvement areas.</LI><LI>Investigation of long running process chains / failed process chains.</LI><LI>Investigation of long running BW queries</LI><LI>Parameter checks of the system for both hardware/software and suggestions for performance improvement</LI></UL><P>For more details read the<SPAN>&nbsp;</SPAN><A href="https://support.sap.com/content/dam/support/en_us/library/ssp/offerings-and-programs/sap-enterprise-support/enterprise-support-academy/continuous-quality-check-improvement-services/Business%20Process%20Performance%20Optimization.pdf" target="_blank" rel="noopener noreferrer">infosheet</A><BR /><BR /><BR /></P><H3 id="toc-hId-358587458">Further Support and Empowerment via SAP Enterprise Support Value Maps</H3><P>Value Maps are a support and empowerment program from SAP Enterprise Support and are available to you via the SAP Learning Hub. A one-time sign in with your S User is required, and everything thereafter is free as part of your entitlements. We provide:</P><UL class="lia-list-style-type-circle"><LI>Prescriptive Guidance</LI><LI>Empowerment</LI><LI>Social Collaboration</LI><LI>Expert Access</LI></UL><P>For Data and Analytics we provide all of the services and support outlined above, and much more, as part of our Learning Journeys. This includes SAP Analytics Cloud, SAP Datasphere, and SAP BW topics.&nbsp;&nbsp;<BR />We have dedicated Learning Journeys for SAP Analytics Cloud, SAP Datasphere, and SAP BW topics.</P><P>Check out the SAP Enterprise Support value maps&nbsp;<A href="https://support.sap.com/en/offerings-programs/enterprise-support/value-maps.html" target="_blank" rel="noopener noreferrer">landing page</A><SPAN>&nbsp;</SPAN>for more and start engaging today!</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="MichaelMoloney_0-1716472602963.png" style="width: 200px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114868i9050DA0FB2BB52DD/image-size/small?v=v2&amp;px=200" role="button" title="MichaelMoloney_0-1716472602963.png" alt="MichaelMoloney_0-1716472602963.png" /></span></P><H3 id="toc-hId-162073953">Quicklinks</H3><UL><LI><A class="" href="https://community.sap.com/t5/technology-blogs-by-sap/sap-analytics-cloud-continuous-quality-checks/ba-p/13647230" target="_blank">SAP Analytics Cloud: Continuous Quality Checks</A></LI><LI><A class="" href="https://community.sap.com/t5/technology-blogs-by-sap/safeguard-your-sap-bw-conversion-with-sap-enterprise-support-services/ba-p/13622466" target="_blank">Safeguard your SAP BW conversion with SAP Enterprise Support services</A></LI><LI><A href="https://accounts.sap.com/saml2/idp/sso?sp=https://www.successfactors.eu/learninghub&amp;RelayState=%2Fsf%2Flearning%3FdestUrl%3Dhttps%253a%252f%252fsaplearninghub%252eplateau%252ecom%252flearning%252fuser%252fdeeplink%255fredirect%252ejsp%253flinkId%253dCATALOG%255fSEARCH%2526sbArSel%253d%2526keywords%253dSUP_ELE_5460_2311%2526selKeyWordHeader%253dSUP_ELE_5460_2311%2526catSel%253d%2526srcSel%253dESAC%2526delMthSel%253d%2526ILDateFrm%253d%2526ILDateTo%253d%2526ILBlend%253d%2526ILSchd%253d%2526fromSF%253dY%26company%3Dlearninghub" target="_self" rel="noreferrer noopener">Practical Guide: How to build SAP Analytics Cloud stories using SAP Datasphere</A></LI><LI><A class="" href="https://community.sap.com/t5/technology-blogs-by-sap/e-learning-series-sap-datasphere-connectivity/ba-p/13598537" target="_blank">E-Learning series: SAP Datasphere Connectivity</A></LI><LI><A href="https://performancemanager.successfactors.eu/sf/learning?destUrl=https%3a%2f%2fsaplearninghub%2eplateau%2ecom%2flearning%2fuser%2fdeeplink%5fredirect%2ejsp%3flinkId%3dITEM%5fDETAILS%26componentID%3dSUP%5fEDE%5f120%5f1023%26componentTypeID%3dEXPERT_LED%26revisionDate%3d1698858240000%26fromSF%3dY&amp;company=learninghub" target="_blank" rel="noopener nofollow noreferrer">Plan your Conversion to SAP Datasphere with BW Bridge, or SAP BW/4HANA</A></LI><LI><A title="SAP Analytics Cloud - Expert Guided Implementation" href="https://blogs.sap.com/?p=1169345" target="_blank" rel="noopener noreferrer">SAP Analytics Cloud - Expert Guided Implementation</A></LI><LI><A title="Learning Journey - SAP Extended Planning and Analysis (xP&amp;A)" href="https://blogs.sap.com/?p=1815137" target="_blank" rel="noopener noreferrer">Learning Journey - SAP Extended Planning and Analysis (xP&amp;A)</A></LI><LI><A title="SAP Analytics Cloud - Deployment Readiness" href="https://blogs.sap.com/?p=1713454" target="_blank" rel="noopener noreferrer">SAP Analytics Cloud - Deployment Readiness</A></LI></UL> 2024-05-24T11:48:31.997000+02:00 https://community.sap.com/t5/technology-blogs-by-members/sap-hana-fiori-add-apps-to-business-roles-which-are-not-in-a-business/ba-p/13710268 SAP HANA - Fiori: Add Apps to Business Roles which are not in a Business Catalog. 2024-05-24T15:00:04.449000+02:00 Sashi_G https://community.sap.com/t5/user/viewprofilepage/user-id/1051766 <P>Hi All.</P><P>This blog is for newcomers to <a href="https://community.sap.com/t5/c-khhcw49343/SAP+HANA/pd-p/73554900100700000996" class="lia-product-mention" data-product="639-1">SAP HANA</a> and&nbsp;<a href="https://community.sap.com/t5/c-khhcw49343/SAP+Fiori/pd-p/73554900100700000977" class="lia-product-mention" data-product="18-1">SAP Fiori</a>&nbsp;. This blog shows the basic steps to add Fiori apps which are not available in a business catalog to a business role.</P><P>Please refer to the below SAP pages for understanding business catalogs and technical catalogs.</P><P><A href="https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/22bbe89ef68b4d0e98d05f0d56a7f6c8/71eaa68c02fe4f778d803ac603279184.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/SAP_S4HANA_ON-PREMISE/22bbe89ef68b4d0e98d05f0d56a7f6c8/71eaa68c02fe4f778d803ac603279184.html</A></P><P><A href="https://learning.sap.com/learning-journeys/learn-the-basics-of-sap-fiori/creating-technical-catalogs_aaedcee4-2e13-4ab5-b2f3-21402b9fdf87" target="_blank" rel="noopener noreferrer">https://learning.sap.com/learning-journeys/learn-the-basics-of-sap-fiori/creating-technical-catalogs_aaedcee4-2e13-4ab5-b2f3-21402b9fdf87</A>&nbsp;</P><P><A href="https://help.sap.com/docs/ABAP_PLATFORM_NEW/a7b390faab1140c087b8926571e942b7/f9b0ccce0766442ca8237eee23494f17.html" target="_blank" rel="noopener noreferrer">https://help.sap.com/docs/ABAP_PLATFORM_NEW/a7b390faab1140c087b8926571e942b7/f9b0ccce0766442ca8237eee23494f17.html</A></P><P>Most apps in the Fiori apps library come with a business catalog which can be added to the business roles. This will allow the user to access the app. But this is not the case for some apps. Let us see how we can access the app.</P><P><STRONG>Assumptions:</STRONG> You have access to SAP Fiori Launchpad App Manager, FLP Content Manager and PFCG role maintenance.</P><P><STRONG>Referred System:</STRONG> S4HANA On Premise Release 2022 ,SP - Initial Shipment Stack</P><P>Let us take an example of the below app:</P><P>TINCOV - Display Service Request</P><P>App Library URL: <A href="https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/%23/detail/Apps('TINCOV')/S24OP" target="_blank" rel="noopener nofollow noreferrer">https://fioriappslibrary.hana.ondemand.com/sap/fix/externalViewer/#/detail/Apps('TINCOV')/S24OP</A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_0-1716449364851.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114529i920542A51F30EBF6/image-size/medium?v=v2&amp;px=400" role="button" title="Sashi_G_0-1716449364851.png" alt="Sashi_G_0-1716449364851.png" /></span></P><P>&nbsp;</P><P>In the configuration section of this app, it says that the app is not assigned to a business catalog.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_22-1716449585100.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114553i982D918C42AA7B7C/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_22-1716449585100.png" alt="Sashi_G_22-1716449585100.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>&nbsp;</P><P>This app is generally accessed via navigation from the 'Search Service Requests' app. But there might be scenarios where we have to access the app directly via an URL. For e.g. the service request link should be embedded in an URL to be sent to an agent or service manager for a quick review.</P><P>I will try to access a service request directly via an URL.</P><P>URL: <A href="https://server:host/sap/bc/ui2/flp?sap-client=033&amp;sap-language=EN#ServiceRequest-display?ServiceRequest=8000000029" target="_blank" rel="noopener nofollow noreferrer">https://server:host/sap/bc/ui2/flp?sap-client=033&amp;sap-language=EN#ServiceRequest-display?ServiceRequest=8000000029</A></P><P>I get the below error:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_2-1716449364865.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114531iD24BB07F6A9A80B0/image-size/medium?v=v2&amp;px=400" role="button" title="Sashi_G_2-1716449364865.png" alt="Sashi_G_2-1716449364865.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>To resolve this, we will add the app to a new business catalog and a business role.</P><P><STRONG>Step 1: SAP Fiori Launchpad App Manager</STRONG></P><P>T-Code: /UI2/FLPAM</P><P>The t-code will launch the web browser.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_3-1716449364868.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114532i5EC115F01824F0AC/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_3-1716449364868.png" alt="Sashi_G_3-1716449364868.png" /></span></P><P>&nbsp;</P><P>Get the technical catalog id from the app reference library page.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_4-1716449364874.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114534i37B8D2BBA4835CAF/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_4-1716449364874.png" alt="Sashi_G_4-1716449364874.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_5-1716449364875.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114533i81655135B604AFAA/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_5-1716449364875.png" alt="Sashi_G_5-1716449364875.png" /></span></P><P>&nbsp;</P><P>The technical catalog will open showing all the assigned semantic objects and their actions. Scroll down and select semantic object 'Service Request' with action 'display'.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_23-1716449694314.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114556iFAA3F931AB0000B1/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_23-1716449694314.png" alt="Sashi_G_23-1716449694314.png" /></span></P><P>Now we have the details for the app.</P><P><STRONG>Step 2: FLP Content Manager</STRONG></P><P>T-codes:</P><P><STRONG>/UI2/FLPCM_CONF</STRONG> - To make change at the system level. Affects all clients.</P><P><STRONG>/UI2/FLPCM_CUST</STRONG> - Client specific changes.</P><P>Here I will be using client specific t-code.</P><P>We will be creating anew business catalog. Click on the 'Create' button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_7-1716449364917.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114537i96CF05AE3E1CA9DD/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_7-1716449364917.png" alt="Sashi_G_7-1716449364917.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_8-1716449364919.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114535i2D8845DBCE04A35F/image-size/medium?v=v2&amp;px=400" role="button" title="Sashi_G_8-1716449364919.png" alt="Sashi_G_8-1716449364919.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>It will ask for a transport request. Provide the same and the new business catalog will be created.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_9-1716449364937.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114538i643EBB6AC75DD3DE/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_9-1716449364937.png" alt="Sashi_G_9-1716449364937.png" /></span></P><P>&nbsp;</P><P>Now click on 'Add Tiles/Target Mappings'. The service request display has only a target mapping.</P><P>In the next page you can search for the service request either by using the technical catalog name or the semantic object name.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_10-1716449364962.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114540i45D32570DA40F8ED/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_10-1716449364962.png" alt="Sashi_G_10-1716449364962.png" /></span></P><P>&nbsp;</P><P>Select the required line and click on 'Add TM Reference' since this has only a target mapping.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_11-1716449364984.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114539i9C4AD6AA0B8DE79B/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_11-1716449364984.png" alt="Sashi_G_11-1716449364984.png" /></span></P><P>&nbsp;</P><P>The required target mapping is added to the newly created business catalog.</P><P>&nbsp;</P><P><STRONG>Step 3: Role Maintenance</STRONG></P><P>In this step we will add the business catalog to a new business role. This step is usually done by the BASIS team or the team responsible for roles and users.</P><P><STRONG>T-code: PFCG</STRONG></P><P>Create a new role.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_12-1716449364990.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114542i0DD55C05B2FF94E0/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_12-1716449364990.png" alt="Sashi_G_12-1716449364990.png" /></span></P><P>&nbsp;</P><P>After clicking on create single role, click on save. In the 'Menu' tab, click on 'Transaction'-&gt;SAP Fiori Launchpad-&gt;Launchpad Catalog.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_13-1716449364997.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114541iE0C3886083850D6A/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_13-1716449364997.png" alt="Sashi_G_13-1716449364997.png" /></span></P><P>&nbsp;</P><P>Fill in the newly created business catalog and press Enter.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_14-1716449365009.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114543i18ACB9DC64254F71/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_14-1716449365009.png" alt="Sashi_G_14-1716449365009.png" /></span></P><P>&nbsp;</P><P>Save the role and generate the profile.</P><P><STRONG>Step 3 Alternative:</STRONG></P><P>There is another method to add the business catalog to the business role. This is in launchpad content manager.</P><P>In the content manager, click on the roles tab. In the bottom screen, click on add catalog.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_15-1716449365022.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114546i1D9F43A36608F8F6/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_15-1716449365022.png" alt="Sashi_G_15-1716449365022.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_16-1716449365025.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114544iDC65CDA0E9ADE9A3/image-size/medium?v=v2&amp;px=400" role="button" title="Sashi_G_16-1716449365025.png" alt="Sashi_G_16-1716449365025.png" /></span></P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_17-1716449365048.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114545i4C69493FFEE7B901/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_17-1716449365048.png" alt="Sashi_G_17-1716449365048.png" /></span></P><P>&nbsp;</P><P>This can be cross referenced in the catalogs tab by clicking on the 'Show Usage in Roles' button.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_18-1716449365064.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114549iE51794A115C40854/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_18-1716449365064.png" alt="Sashi_G_18-1716449365064.png" /></span></P><P>&nbsp;</P><P><STRONG>Step 4: Add role to user.</STRONG></P><P>Add the newly created role to the user.</P><P><STRONG>T-code: SU01</STRONG></P><P>Provide the user id and click on edit.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_19-1716449365067.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114547i18FA0BF083ADCF5D/image-size/medium?v=v2&amp;px=400" role="button" title="Sashi_G_19-1716449365067.png" alt="Sashi_G_19-1716449365067.png" /></span></P><P>&nbsp;</P><P>In the roles tab, add the newly created role. Click on save.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_20-1716449365078.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114548i2A11B585D0C28F6E/image-size/medium?v=v2&amp;px=400" role="button" title="Sashi_G_20-1716449365078.png" alt="Sashi_G_20-1716449365078.png" /></span></P><P>&nbsp;</P><P>&nbsp;</P><P>Now open the link to service request. It will open without errors.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Sashi_G_21-1716449365089.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/114550i7B0643E6A29EC5DF/image-size/large?v=v2&amp;px=999" role="button" title="Sashi_G_21-1716449365089.png" alt="Sashi_G_21-1716449365089.png" /></span></P><P>If there is a tile associated with the app, the tile will appear in the fiori home screen.&nbsp;</P><P>This method can also be used to create new business catalogs with your own list of apps based on business needs.</P><P>Hope you found this blog useful. Please comment on anything that could be improved.</P> 2024-05-24T15:00:04.449000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/new-sap-analytics-cloud-performance-workshop/ba-p/13723061 New SAP Analytics Cloud Performance Workshop 2024-06-06T10:49:41.167000+02:00 Johann https://community.sap.com/t5/user/viewprofilepage/user-id/137238 <P><SPAN>Attention, SAP Analytics Cloud professionals!&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Get ready for a new SAP Analytics Cloud performance training course.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Boost your skills in SAP backend modeling and SAP Analytics Cloud performance story design with our specialized training course, “Backend Modeling with SAP Solutions and SAP Analytics Cloud Story Performance Optimization. “</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="SAC Training_Teal.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121813iECE2A330DC135DB3/image-size/large?v=v2&amp;px=999" role="button" title="SAC Training_Teal.png" alt="SAC Training_Teal.png" /></span></SPAN></P><P><SPAN>This one-day training course is designed for seasoned SAP Analytics Cloud users who want to explore SAP`s strategic data modeling options and discover the relationship between story design and performance in SAP Analytics Cloud.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>You can expect to acquire basic knowledge of data modeling in SAP's central solutions, such as SAP BW/4HANA, SAP Datasphere, or SAP HANA. You will also apply story design best practices and performance analysis techniques to improve your story performance in SAP Analytics Cloud.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>&nbsp;</SPAN><SPAN>Are you curious? Book your seats for US or EMEA timezone&nbsp;</SPAN><A href="https://training.sap.com/course/sacpw1-backend-modeling-with-sap-solutions-and-sap-analytics-cloud-story-performance-optimization-remoteclassroom-010-de-en/?" target="_blank" rel="noopener noreferrer"><SPAN>here</SPAN></A><SPAN>&nbsp;</SPAN></P> 2024-06-06T10:49:41.167000+02:00 https://community.sap.com/t5/sap-for-oil-gas-and-energy-blogs/carbon-footprint-calculation-with-idm-from-implico/ba-p/13724349 Carbon Footprint Calculation with IDM from Implico 2024-06-10T08:08:57.471000+02:00 Wolfram_Wege https://community.sap.com/t5/user/viewprofilepage/user-id/877855 <P><SPAN>Integrating with SAP's S4SCSD for Enhanced Sustainability</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Carbon Footprint Calculation with the IDM from Implico</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>As industries worldwide prioritize sustainability and environmental responsibility, managing and reducing carbon emissions has become a critical aspect of logistics and transportation operations. Implico's </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> provides a robust solution designed to enhance these capabilities within SAP S4SCSD. This advanced functionality is tailored for industries such as oil, gas and chemicals, where efficient logistics and environmental compliance are paramount.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Support for Sustainability Goals</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>Aligning logistics operations with broader corporate sustainability goals is a key benefit of the </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN>. By providing actionable insights and recommendations, the module can support companies in achieving significant reductions in carbon emissions. This alignment with sustainability objectives underscores the importance of integrating environmental considerations into logistics management within SAP S4SCSD.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Here are some of the factors that make the calculation and management of carbon footprints easier with Implico's </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN>.</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>IDM as a Core Component of SAP S4SCSD</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>With its functionality, Implico's IDM is an integral component of SAP's S4SCSD (Secondary Distribution Management for Oil &amp; Gas) and boosts the users' requirements for </SPAN><SPAN>a more detailed carbon footprint calculation.</SPAN><SPAN> This integration ensures that secondary distribution operations - which include both bulk and bottled products - are not only efficient, but also environmentally responsible.</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Support for Emissions Calculation</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>By using available data such as fuel consumption, fuel type or distances traveled, Implico's </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> functionality amplifies CO</SPAN><SPAN>2</SPAN><SPAN> emission calculations for each trip or delivery within the SAP S4SCSD framework. In a highly competitive environment where companies are striving to understand and mitigate their environmental impact better, the level of accuracy provided by </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> is essential.</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Data Integration and Analysis</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>IDM </SPAN></STRONG><SPAN>has the ability to collect data (e.g. telematics, GPS, fleet management) and seamlessly integrate with SAP S4SCSD. This integration can be used, for example, for historical analysis of carbon emissions, providing valuable insights for better decision making and strategic planning.</SPAN> <SPAN>The ability to analyze data from multiple sources within a cohesive system is a significant advantage for companies aiming to optimize their operations.</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Route Optimization</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>One of the key features of </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> is its ability to optimize routes and loads, thereby minimizing travel distances and fuel consumption. By suggesting the shortest routes, the module helps reduce the carbon footprint of logistics operations. This functionality, integrated within SAP S4SCSD, ensures that logistics processes are both operationally efficient and environmentally sustainable.</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Data for detailed Reporting and Documentation</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> facilitates transparency and accountability in environmental reporting. By providing important data that can be used for documentation, audits and certifications,</SPAN><STRONG><SPAN> IDM</SPAN></STRONG><SPAN> supports SAP S4SCSD from the inside with its detailed reporting capability. This ensures transparency and accountability in environmental performance and supports companies to meet environmental regulations and standards.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>User-Friendly Interface</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>Designed with a user-friendly interface, the </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> tool makes it easy for operators to enter data, generate reports, and access insights. Its seamless integration with SAP S4SCSD ensures a consistent and efficient user experience, minimizing the learning curve for operators and improving the overall user experience.</SPAN><SPAN>&nbsp;</SPAN></P><P><STRONG><SPAN>Conclusion</SPAN></STRONG><SPAN>&nbsp;</SPAN></P><P><SPAN>By incorporating these features, Implico's </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> not only improves logistics management, but also enables companies to take significant steps to reduce their environmental impact. This makes it an invaluable add-on for all organizations, especially those that are seriously committed to sustainability and responsible logistics operations.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>With </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN>, Implico has developed a product that is </SPAN><STRONG><SPAN>natively integrated into SAP S4SCSD</SPAN></STRONG><SPAN> and closes the gap between sales and returns. </SPAN><SPAN>Most </SPAN><SPAN>previously manual processes in the reconciliation are now automated, allowing back-office operations to shift </SPAN><SPAN>gradually </SPAN><SPAN>from manual to automated processes. </SPAN><SPAN>Since </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> has been used successfully for years within the supply chain of energy and natural resources, Implico is currently working intensively on a new, fully automated version which is in heavy development&nbsp;and ReadyToShip in 2024 already.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>The new version is scalable for every size of organization and provides fully automated trip and route planning.</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Implico's </SPAN><STRONG><SPAN>IDM</SPAN></STRONG><SPAN> provides a significant opportunity for market expansion and revenue growth while enhancing compliance requirements for environmental standards.&nbsp;</SPAN></P><P><SPAN>Let's shape a sustainable future, together.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><P class=""><STRONG><A href="https://www.implico.com/c/sap-sdm-sap-rfno/" target="_self" rel="nofollow noopener noreferrer">SAP S/4HANA SDM:</A><SPAN>&nbsp;</SPAN></STRONG>This tool offers a <STRONG>cohesive approach</STRONG> to the trade and transport of<STRONG> liquids and half-solids,</STRONG> integrating seamlessly with the SAP system to <STRONG>streamline processes</STRONG> from <STRONG>demand forecasting</STRONG> to invoicing, thereby facilitating smoother operations in <STRONG>hydrocarbon product trading</STRONG>.</P><P class=""><STRONG><A href="https://www.implico.com/c/sap-sdm-sap-rfno/" target="_blank" rel="nofollow noopener noreferrer">SAP S/4HANA RFNO</A>:</STRONG><SPAN>&nbsp;</SPAN>A dedicated solution for <STRONG>managing service station networks</STRONG>, it caters to various service station types, offering functionalities like wet <STRONG>goods management</STRONG> and <STRONG>loyalty card management</STRONG>, aiming to enhance the fuel retail experience.</P><DIV class=""><DIV class=""><DIV class=""><P class=""><STRONG><A href="https://www.implico.com/c/sap-quality-assurance/" target="_self" rel="nofollow noopener noreferrer">Implico’s Quality Assurance Program for SAP solutions:</A></STRONG>&nbsp;<SPAN>Implico wants to ensure the implementation of SAP SDM/RFNO solutions is professional and error-free – not only&nbsp;</SPAN><STRONG>when doing so ourselves</STRONG><SPAN>&nbsp;but also when external companies are contracted to oversee implementation. This is why we also offer&nbsp;</SPAN><STRONG>two partner services</STRONG><SPAN>&nbsp;that are designed to supplement the implementation projects based on a methodological approach and with highly skilled consultants, both of which help to achieve the defined targets: the&nbsp;</SPAN><STRONG>Partner Governance Service</STRONG><SPAN>&nbsp;and the&nbsp;</SPAN><STRONG>Partner Advisor Service.</STRONG></P><DIV class="">&nbsp;</DIV></DIV></DIV></DIV><DIV class="">&nbsp;</DIV> 2024-06-10T08:08:57.471000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/release-navigator-for-sap-btp-what-s-new-in-q2-2024/ba-p/13725571 Release Navigator for SAP BTP - What's New in Q2 2024 2024-06-12T13:36:41.584000+02:00 chriskollhed https://community.sap.com/t5/user/viewprofilepage/user-id/6181 <P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="01_Headline.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121303i31253B5D3328D34E/image-size/large?v=v2&amp;px=999" role="button" title="01_Headline.png" alt="01_Headline.png" /></span></P><P><A title="Check out the Release Navigator for SAP BTP" href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE&amp;library=library.txt#slide!SL_120BDFE08096029D" target="_blank" rel="noopener nofollow noreferrer"><EM><span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Check out the Release Navigator." style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121368i3EA224276D8CE3AF/image-size/medium?v=v2&amp;px=400" role="button" title="What is the RN.png" alt="Check out the Release Navigator." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Check out the Release Navigator.</span></span></EM></A></P><P><SPAN>The Release Navigator for SAP BTP continues to evolve and improve to meet the needs of our customers. With the latest update in <STRONG>Q2 2024</STRONG> in addition to the quarterly maintenance of resources, users can access <STRONG>new product pages</STRONG> and a <STRONG>new consolidated release schedule</STRONG> in a simplified and streamlined interface.<BR />These updates reflect our commitment to continuously improve content coverage and user experience based on your valuable feedback. In this blog post, we will highlight the key enhancements and additions made in Q2 2024.</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="03_New Products.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121330i503F6BE52A81DF59/image-size/large?v=v2&amp;px=999" role="button" title="03_New Products.png" alt="03_New Products.png" /></span></P><P><SPAN>We collaborated closely with SAP BTP experts to add <STRONG>new pages for the following products and services</STRONG> in the Release Navigator that are available with the Q2 2024 update:</SPAN></P><UL><LI><A title="Check out the SAP Build Code page" href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE#SL_BF0E0F439FD884BD" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP Build Code</SPAN></A></LI><LI><A title="Check out the SAP Alert Notification page" href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE#SL_49E3723B15FFE48E" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP Alert Notification</SPAN></A></LI><LI><A title="Check out the SAP Automation Pilot page" href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE#SL_FF1D168DACDDD4BA" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP Automation Pilot</SPAN></A></LI><LI><A title="Check out the SAP Cloud Identity Services page" href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE#SL_1A17F7D03BD9B0A8" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP Cloud Identity Services</SPAN></A></LI><LI><A title="Check out the SAP Cloud Transport Management page" href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE#SL_389720104C687893" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP Cloud Transport Management</SPAN></A></LI><LI><A title="Check out the SAP Content Agent page" href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE#SL_D4648AC9DE8B48A7" target="_blank" rel="noopener nofollow noreferrer"><SPAN>SAP Content Agent</SPAN></A></LI></UL><P><A href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE&amp;library=library.txt#slide!SL_120BDFE08096029D" target="_blank" rel="noopener nofollow noreferrer"><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="The new product pages include Foundation and Cross Services and more. Check them out now." style="width: 987px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122439iAF08A8C5038FBFEA/image-size/large?v=v2&amp;px=999" role="button" title="20240610_Q2 Update_Screenshot_New Products.png" alt="The new product pages include Foundation and Cross Services and more. Check them out now." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">The new product pages include Foundation and Cross Services and more. Check them out now.</span></span></SPAN></A></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="05_Schedules.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121332i72383B129F473043/image-size/large?v=v2&amp;px=999" role="button" title="05_Schedules.png" alt="05_Schedules.png" /></span></P><P><A href="https://readiness-at-scale.enable-now.cloud.sap/pub/20230621_ras/index.html?show=book!BO_EC8330B09B97CDBE&amp;library=library.txt#slide!SL_120BDFE08096029D" target="_blank" rel="noopener nofollow noreferrer"><span class="lia-inline-image-display-wrapper lia-image-align-right" image-alt="Check out the new consolidated release schedule in the release calendar." style="width: 387px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122441iA623D6F2D34B56E6/image-size/large?v=v2&amp;px=999" role="button" title="20240610_Q2 Update_Screenshot_Release Calendar.png" alt="Check out the new consolidated release schedule in the release calendar." /><span class="lia-inline-image-caption" onclick="event.preventDefault();">Check out the new consolidated release schedule in the release calendar.</span></span></A></P><P>Release schedules are now being communicated more transparently thanks to close collaboration with various SAP BTP teams. Compared to 2023, more than <STRONG>40 new products and services</STRONG> now announce their release dates via SAP Notes in SAP for Me.</P><P><SPAN>These notes are accessible through the <A href="https://me.sap.com/notes/3430170" target="_blank" rel="noopener noreferrer">Consolidated Release Schedules for SAP BTP</A></SPAN><SPAN>, which can be found in the Release Calendar section of the navigator.</SPAN></P><P><EM><U>Please note:</U> To access SAP Notes you need to log in to SAP for Me using your Universal ID or S-user ID. Read more about the required authorizations <A title="Read more about authorizations required to access SAP for Me." href="https://support.sap.com/content/s4m/help/access.html" target="_blank" rel="noopener noreferrer">here</A>.&nbsp;&nbsp;</EM></P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="The SAP Note Consolidated Release Schedules for SAP BTP" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121344i171F1492319F4987/image-size/large?v=v2&amp;px=999" role="button" title="20240610_Q2 Update_Screenshot_Consolidated Schedule Note.png" alt="The SAP Note Consolidated Release Schedules for SAP BTP" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">The SAP Note Consolidated Release Schedules for SAP BTP</span></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="04_New and Updated Content.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121339i7553BDAF6DE5DDA7/image-size/large?v=v2&amp;px=999" role="button" title="04_New and Updated Content.png" alt="04_New and Updated Content.png" /></span></P><P>We have published a quarterly maintenance update with the Q2 release cycle. Links and resources have been updated according to the latest feature releases. Moving forward, new and retiring content will be marked with a green or red badge.&nbsp;</P><P>Additionally, in Q1 all release navigators received streamlined and consistent UX across solution areas for improved ease of use.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="The release navigator after the Q2 update" style="width: 598px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/122442i346E13371B380DCC/image-size/large?v=v2&amp;px=999" role="button" title="20240610_Q2 Update_Screenshot_Home.png" alt="The release navigator after the Q2 update" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">The release navigator after the Q2 update</span></span></P><P>&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="5 2024 plan.png" style="width: 906px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121359i69CBBB4860E05A96/image-size/large?v=v2&amp;px=999" role="button" title="5 2024 plan.png" alt="5 2024 plan.png" /></span><span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Innovation Plan.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121360iCDA9563D203C0EFB/image-size/large?v=v2&amp;px=999" role="button" title="Innovation Plan.png" alt="Innovation Plan.png" /></span></P><P>&nbsp;</P><P><FONT size="2"><EM>*Disclaimer:&nbsp; The schedule is subject to change without prior notice including, when necessary, delays or incorporating changes in subsequent update windows and not a commitment, promise, or legal obligation to deliver any material, code, or functionality.</EM></FONT></P><P>Next updates are scheduled on a quarterly basis in alignment with the <SPAN><A href="https://me.sap.com/notes/2888562" target="_blank" rel="noopener noreferrer">Harmonized Release Calendar for SAP Cloud Products</A></SPAN>.</P><P>Looking ahead, here's a sneak peek at some of the roadmap items planned for the release navigator:</P><UL><LI><SPAN>Q3: Additional UX elements will be added and aligned across solution areas.</SPAN></LI><LI>Q4: More products and services will be included in the Release Navigator.</LI></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="05_Connect.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121361iE9C41D4175EA01CA/image-size/large?v=v2&amp;px=999" role="button" title="05_Connect.png" alt="05_Connect.png" /></span></P><P><SPAN>The Readiness@Scale team at SAP Enterprise Support is dedicated to ensuring release readiness across the SAP Enterprise Support portfolio. Our mission is to empower SAP customers to be prepared and ready to adopt and utilize innovations. </SPAN></P><P><SPAN>If you have any feedback or specific requests for content in the release navigator, please don't hesitate to reach out to us.</SPAN></P><P><A title="Provide Feedback" href="https://sapinsights.eu.qualtrics.com/jfe/form/SV_egtCPhgGOuO4Iwm?SolutionArea=SAPBTP" target="_blank" rel="noopener nofollow noreferrer"><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Feedback Button.png" style="width: 271px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/121362i76D865169C449CFF/image-size/large?v=v2&amp;px=999" role="button" title="Feedback Button.png" alt="Feedback Button.png" /></span></SPAN></A></P><P><SPAN>And don't forget to check out our team's blogs tagged with <A href="https://community.sap.com/t5/tag/Readiness%40Scale/tg-p" target="_blank"><STRONG>Readiness@Scale</STRONG></A>. </SPAN></P><P><SPAN>Happy navigating!</SPAN></P><P data-unlink="true"><EM>Readiness@Scale,&nbsp;SAP Enterprise Support</EM></P> 2024-06-12T13:36:41.584000+02:00 https://community.sap.com/t5/financial-management-blogs-by-members/update-reference-field-of-payment-document-posted-using-f110-by/ba-p/13732147 Update Reference Field Of Payment Document Posted Using F110 By Substitution / BTE - SAP S4/HANA 2024-06-16T06:00:26.552000+02:00 GOWRESHANHARAN https://community.sap.com/t5/user/viewprofilepage/user-id/5537 <H3 id="toc-hId-1146540479">Introduction:</H3><P><SPAN>This blog will guide you to updating the reference field of the payment document, even if a single payment is not activated and multiple invoices have a single payment document. Using Substitution we can update the reference fields.</SPAN></P><H3 id="toc-hId-950026974"><SPAN>Substitution:</SPAN></H3><P class="">Substitution rules are stored in the Rule Manager. When data is entered in the system, it is substituted by the Integration Manager. Substitution occurs before the data is added to the FI-SL summary tables.</P><P class="">In FI-SL substitution, the values entered into the SAP system are validated against a prerequisite defined by the user. When the prerequisite is met, the system replaces the values entered with substitute values, and the substitute values are transferred into the FI-SL application component.</P><P>A substitution process can contain up to 999 steps. Before posting, therefore, you can substitute the values using any number of Boolean statements.</P><P>A substitution step contains the following statements:</P><H5 id="toc-hId-1011678907">Prerequisite statement</H5><P>The prerequisite statement establishes which conditions must be fulfilled before the substitution can be performed. If the prerequisite statement is false, the transaction is continued without substitution. If the prerequisite statement is true, the transaction is continued with the substituted values.</P><H5 id="toc-hId-815165402">Substitution value(s)</H5><P>The substitution value is a numerical value or a string of letters that replace the value entered. A single substitution process can replace more than one value.</P><H5 id="toc-hId-618651897">Substitution exit</H5><P>You can specify that substitution is to be performed through a substitution exit. The substitution exit number directs the system to an ABAP program defined by the user. Substitution exits enable you to define more complex substitutions and replace more than one value in a substitution. For more information, see User Exits in Validations/Substitutions/Rules .</P><P>When you define substitutions, you use the same syntax that you use with validations. The prerequisite statement used in a substitution can consist of a simple statement or a complex combination of statements composed of logical statements, rules, and sets.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.png" style="width: 873px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124082iE6ADBD4CF2D06947/image-size/large?v=v2&amp;px=999" role="button" title="1.png" alt="1.png" /></span></P><DIV class=""><H3 id="toc-hId-163972954">Application Areas:</H3></DIV><DIV class=""><DIV class=""><DIV class=""><P class="">The application area specifies the general application area where the validation, substitution, or rule occurs (for example,<SPAN>&nbsp;</SPAN><SPAN class="">GL</SPAN><SPAN>&nbsp;</SPAN>for FI-SL postings).</P><P class=""><SPAN class="">Application Areas Used in Validations/Substitutions/Rules</SPAN></P><DIV class=""><DIV class=""><TABLE border="1"><COLGROUP><COL width="25%" /><COL width="25%" /><COL width="25%" /><COL width="25%" /></COLGROUP><TBODY><TR><TD><P class=""><SPAN class="">Application area</SPAN></P></TD><TD><P class=""><SPAN class="">Validations</SPAN></P></TD><TD><P class=""><SPAN class="">Substitutions</SPAN></P></TD><TD><P class=""><SPAN class="">Rules</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">AM Asset Management</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">CO Controlling</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">CS Consolidation</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD>&nbsp;</TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">FI Financial Accounting</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">GL Special Purpose Ledger</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">GR Report Writer</SPAN></P></TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">GS Ledger Selection</SPAN></P></TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">GU Rollups</SPAN></P></TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class="">KC Enterprise Controlling: SAP -EIS</P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">LC Legal Consolidation</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD>&nbsp;</TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">PC Profit Center Accounting</SPAN></P></TD><TD>&nbsp;</TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR><TR><TD><P class=""><SPAN class="">PS Project System</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD><TD><P class=""><SPAN class="">X</SPAN></P></TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV></DIV><DIV class=""><H4 id="toc-hId-96542168">User Exits in Validations/Substitutions/Rules</H4></DIV><DIV class=""><DIV class=""><DIV class=""><P class="">User exits are user-defined FORM routines that are used to calculate and/or replace values within a validation, substitution, or rule.</P><P class="">User exits have the following format:</P><OL><LI>U(for a user-defined user exit)&nbsp;</LI><LI>S(for a standard user exit)</LI></OL><P class="">You can configure the form pool name of the user exits and must store it in the table for client-dependent user exits (T80D) in<SPAN>&nbsp;</SPAN><SPAN class="">Customizing</SPAN><SPAN>&nbsp;</SPAN>. Table T80D contains the form pool names for the user exits used in validations, substitutions, and rules. Each validation/substitution form pool is client-dependent.&nbsp;</P><P class="">The following table shows the types of user exits that can be used in validations, substitutions, and rules.</P><P class="">&nbsp;</P><DIV class=""><DIV class=""><TABLE border="1"><COLGROUP><COL width="25%" /><COL width="25%" /><COL width="25%" /><COL width="25%" /></COLGROUP><TBODY><TR><TD><P class="">User exit type</P></TD><TD><P class="">Description</P></TD><TD><P class="">Application</P></TD><TD><P class="">Example</P></TD></TR><TR><TD><P class="">1</P></TD><TD><P class="">No parameters are defined for the user exit.</P></TD><TD><P class="">Rules, validations, and substitutions (prerequisite)</P></TD><TD><P class="">See form pool RGGBR000, parameter type C_EXIT_PARAM_NONE</P></TD></TR><TR><TD><P class="">2</P></TD><TD><P class="">Same as user exit type 1, except one parameter (the field to be substituted) is defined in the user exit. For example, you can create a substitution routine that analyzes the cost center irrespective of the field used.</P></TD><TD><P class="">Substitution</P></TD><TD><P class="">See form pool RGGBS000, parameter type C_EXIT_PARAM_FIELD</P></TD></TR><TR><TD><P class="">3</P></TD><TD><P class="">All data is passed as one parameter; this exit type can only be used in matrix validations and substitutions.</P></TD><TD><P class="">Rules, validations, and substitutions (prerequisite)</P></TD><TD><P class="">See form pool RGGBR000, parameter type C_EXIT_PARAM_CLASS</P></TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV></DIV><H4 id="toc-hId--99971337">Formula Builder:</H4><P><SPAN>In the Formula Builder, all elements that you can enter in a logical statement (for example, operators, operands, sets, constant values, and so on) are displayed as push buttons. You enter a logical statement by choosing the elements that you want to include in the statement.&nbsp;</SPAN></P><P class="">You can work in the Formula Builder using three different settings:</P><UL class=""><LI><P class="">The default setting when you call up the Formula Builder is<SPAN>&nbsp;</SPAN><SPAN class="">Short descriptions</SPAN><SPAN>&nbsp;</SPAN>. All operands (such as table fields, sets, exits, and so on) are displayed using their respective descriptions.</P></LI></UL><UL class=""><LI><P class="">If you want to enter statements using the technical names of the operands rather than the descriptions, you change the setting by choosing<SPAN>&nbsp;</SPAN><SPAN class=""><SPAN class="">Settings</SPAN>&nbsp;&nbsp;<SPAN class="">Technical names</SPAN></SPAN><SPAN>&nbsp;</SPAN>.</P></LI></UL><UL class=""><LI><P class="">The<SPAN>&nbsp;</SPAN><SPAN class="">Expert mode</SPAN><SPAN>&nbsp;</SPAN>setting displays the technical names of the operands<SPAN>&nbsp;</SPAN><SPAN class="">and</SPAN><SPAN>&nbsp;</SPAN>allows you to enter a statement directly. In this case, the statement field is ready for input.</P></LI></UL><H3 id="toc-hId--425567561">Updating Invoice Text As Payment Document Reference:</H3><P>Prerequisites:</P><P>Go to Transaction : FBZP</P><TABLE border="1" width="44.97537144702841%"><TBODY><TR><TD width="77.6976114585973%" height="43px">Transaction Code</TD><TD width="29.34131736526946%" height="43px">FBZP</TD></TR></TBODY></TABLE><P>Click Payment method in the Country&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124083i9AEBB37F7725F218/image-size/large?v=v2&amp;px=999" role="button" title="2.png" alt="2.png" /></span></P><P>Double click on Payment method&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124084i7AE4CA393524D929/image-size/large?v=v2&amp;px=999" role="button" title="3.png" alt="3.png" /></span></P><P>Posting Details Tab:</P><OL><LI><P>Document type for payment "ZP"</P></LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="4.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124085i96BE9C4C0D4DDAD0/image-size/large?v=v2&amp;px=999" role="button" title="4.png" alt="4.png" /></span></P><P>The Payment Document Will be posting in document type ZP.</P><H4 id="toc-hId--492998347">Configuring the FI Substitution :</H4><P>Go to Transaction : GGB1</P><TABLE border="1" width="47.15762273901809%"><TBODY><TR><TD width="25.710594315245476%" height="30px">Transaction Code</TD><TD width="21.447028423772615%" height="30px">GGB1</TD></TR></TBODY></TABLE><P><STRONG>In this activity, you can create and maintain substitutions.</STRONG></P><P><STRONG>Actions</STRONG></P><OL><LI>Expand the hierarchy to the desired application area and event</LI><LI>Select the substitution that you can to change or use as a template</LI><LI>Proceed according the the instructions for creating and maintaining substitutions</LI></OL><P><STRONG>Create substitution</STRONG></P><OL><LI>To create a substitution without a template, select an event and choose the Create substitution button</LI><LI>To create a substitution using a template, choose the Copy substitution button.</LI></OL><P><STRONG>Maintain substitution</STRONG></P><OL><LI>Create a substitution step and select a substitution step to be edited.</LI><LI>If you want to insert a step, you have to select the field that is to be changed. Enter the prerequisite and define how the substitution is to be carried out.</LI></OL><P>In Financial accounting, we have 5 Part</P><OL><LI>Document Header</LI><LI>Line Item</LI><LI>Completed Document</LI><LI>Cost of Sales Accounting&nbsp;</LI><LI>Cost of Sales Accounting (New)</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="5.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124086iDBDDF1139CD151E8/image-size/large?v=v2&amp;px=999" role="button" title="5.png" alt="5.png" /></span></P><P>The reference field is in the header part, we need to create a substitution in the header part.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="6.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124087iC3B28DA9FC337A65/image-size/large?v=v2&amp;px=999" role="button" title="6.png" alt="6.png" /></span></P><P>Now create a step Inside the substitution.</P><P>Select BKPF-XBLNR in Steps.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="13.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124096i1FF0238536207B4E/image-size/large?v=v2&amp;px=999" role="button" title="13.png" alt="13.png" /></span></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="7.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124088i034CBCD25DC8FB0E/image-size/large?v=v2&amp;px=999" role="button" title="7.png" alt="7.png" /></span></P><P>&nbsp;<SPAN>Here you can define the prerequisite based upon your requirements.</SPAN></P><OL><LI>Document Type = 'ZP'</LI><LI>Company Code = "XXXX'</LI></OL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="8.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124090i2B00F2574A5C5C44/image-size/large?v=v2&amp;px=999" role="button" title="8.png" alt="8.png" /></span></P><P><SPAN>In the Substitution step, define the Substitution based on Exits. We have to define our custom Exit in the EXIT-Formpool provided by SAP or we can copy the standard and create our own Module Pool for the same. In our case, we have copied&nbsp; RGGBS000 to&nbsp; ZRGGBS000.</SPAN></P><P><SPAN>Take a Z copy of&nbsp;RGGBS000</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="9.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124091i9A3C7E47A714FB85/image-size/large?v=v2&amp;px=999" role="button" title="9.png" alt="9.png" /></span></SPAN></P><P><SPAN>In the Module pool, define the exit name in the header in FORM&nbsp;<STRONG>GET_EXIT_TITLES</STRONG>.</SPAN></P><P><SPAN>Define user Exist Called Z300.</SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code> exits-name = 'Z300'. exits-param = c_exit_param_none. exits-title = TEXT-z08. APPEND exits.</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="10.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124092iA182A987EB9D4AEF/image-size/large?v=v2&amp;px=999" role="button" title="10.png" alt="10.png" /></span></SPAN></P><P><SPAN>Down below in code, we define our code based on our logic as follows:</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="15.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124098iF3C871786097D2DF/image-size/large?v=v2&amp;px=999" role="button" title="15.png" alt="15.png" /></span></SPAN></P><P>&nbsp;</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>*&amp;---------------------------------------------------------------------* *&amp; Form Z300 *&amp;---------------------------------------------------------------------* *&amp; text *&amp;---------------------------------------------------------------------* *&amp; --&gt; p1 text *&amp; &lt;-- p2 text *&amp;---------------------------------------------------------------------* FORM z300 . DATA: lv_date TYPE regup-laufd, lv_runid TYPE regup-laufi. TYPES: BEGIN OF ty_regup, lifnr TYPE regup-lifnr, belnr TYPE regup-belnr, gjahr TYPE regup-gjahr, blart TYPE regup-blart, END OF ty_regup. DATA: lt_regup_final TYPE TABLE OF ty_regup. REFRESH: lt_regup_final. IF bkpf IS NOT INITIAL AND bkpf-tcode = 'F110' AND bkpf-bukrs = '7180' AND bkpf-blart = 'ZP'. SPLIT bkpf-bktxt AT '-' INTO lv_date lv_runid. SELECT lifnr, belnr, gjahr, blart, xvorl FROM regup INTO TABLE (lt_regup) WHERE laufd = _date AND laufi = _runid AND zbukr = '7180'. LOOP AT lt_regup INTO DATA(lwa_regup). READ TABLE lt_regup INTO DATA(lwa_regup_temp) WITH KEY belnr = lwa_regup-belnr xvorl = ''. IF sy-subrc NE 0. APPEND lwa_regup to lt_regup_final. CLEAR: lwa_regup, lwa_regup_temp. ENDIF. ENDLOOP. IF lt_regup_final IS NOT INITIAL. SELECT belnr, lifnr, sgtxt FROM bseg FOR ALL ENTRIES IN _regup_final WHERE bukrs = '7180' AND belnr = _regup_final-belnr AND lifnr = _regup_final-lifnr AND gjahr = _regup_final-gjahr AND koart = 'K' INTO TABLE (lt_bseg). SORT lt_bseg ASCENDING BY lifnr. IF lt_bseg IS NOT INITIAL. READ TABLE lt_bseg INTO DATA(lwa_bseg_1) INDEX 1. IF sy-subrc = 0. bkpf-xblnr = lwa_bseg_1-sgtxt. ENDIF. ENDIF. ENDIF. ENDIF. ENDFORM.</code></pre><P>&nbsp;</P><P>&nbsp;</P><P><SPAN>Assign the same in view</SPAN><STRONG><SPAN>&nbsp;</SPAN>V_T80D</STRONG><SPAN>&nbsp;with Application Area as GBLS (Val/sub:Exits for substitution) and Ex.prog. as ZRGGBS000.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="12.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124094i928F19B485FB5A69/image-size/large?v=v2&amp;px=999" role="button" title="12.png" alt="12.png" /></span></SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="11.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124093i44E0D20485408A9F/image-size/large?v=v2&amp;px=999" role="button" title="11.png" alt="11.png" /></span></SPAN></P><P><SPAN>Assign Z300 in substitution step.</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="14.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124097i9BBB44455E41EB3B/image-size/large?v=v2&amp;px=999" role="button" title="14.png" alt="14.png" /></span></SPAN></P><P><SPAN>In our last step, we have to activate this Substitution.</SPAN></P><TABLE border="1" width="61.75710594315245%"><TBODY><TR><TD width="28.87029288702929%">Transaction Code&nbsp;</TD><TD width="32.886813056123174%">OBBH</TD></TR></TBODY></TABLE><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="16.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124099iF3136B41FB6A944A/image-size/large?v=v2&amp;px=999" role="button" title="16.png" alt="16.png" /></span></P><P>There are times when we need to use the substitutions for particular fields but they are unavailable in Tcode GGB1. This requires a small effort to include the requisite field for Substitution.</P><P>1. Check if the field that needs to be substituted is already present in Tcode GGB1 or not.</P><P>2. If it is not present, go to SM30 -&gt; table<SPAN>&nbsp;</SPAN><STRONG>VWTYGB01</STRONG>. Click Maintain.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="33.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124133i2166656A7D31C894/image-size/large?v=v2&amp;px=999" role="button" title="33.png" alt="33.png" /></span></P><P>3. Uncheck the “Exclude” checkbox for the requisite field.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="34.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124135iDBCE457F47605173/image-size/large?v=v2&amp;px=999" role="button" title="34.png" alt="34.png" /></span></P><P>4. Run the program<SPAN>&nbsp;</SPAN><STRONG>RGUGBR00</STRONG><SPAN>&nbsp;</SPAN>via SE38 and click execute.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="35.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124136iB9D2489B13667296/image-size/large?v=v2&amp;px=999" role="button" title="35.png" alt="35.png" /></span></P><P>5. The field will get added to the Substitution Rules.</P><H3 id="toc-hId--893825940">Testing Scenarios:&nbsp;</H3><H5 id="toc-hId--1677145459">Review the Invoice:</H5><P>Open the vendor invoice which you want to make payment and review it.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="17.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124102i8976CAE1BF41B3C7/image-size/large?v=v2&amp;px=999" role="button" title="17.png" alt="17.png" /></span></P><P>Text :&nbsp;<SPAN>F110 Substitution Test</SPAN></P><P><STRONG><U>Manage Automatic Payments:</U></STRONG><BR /><BR />Payment run process is an accounts payable process that is used to handle payments to vendors. The process is called automatic payment program.<BR /><BR />With the transactional app Manage Automatic Payments, you can schedule payment proposals or schedule payments directly and get an overview of the proposal or payment status. The app identifies the overdue invoices and checks whether all the required payment information is complete.<BR /><BR />The Payment Process includes the Following Steps</P><UL><UL><LI>Invoices are Entered</LI></UL></UL><UL><UL><LI>Pending Invoices are analysed for due date</LI></UL></UL><UL><UL><LI>Invoices due for payment are prepared for review</LI></UL></UL><UL><UL><LI>Payments are approved or modified</LI></UL></UL><UL><UL><LI>Invoices are paid</LI></UL></UL><P>Start fiori app “Manage Automatic Payments” and Click Create Parameter.</P><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="18.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124116iFC8C4BD8A5E7AB65/image-size/large?v=v2&amp;px=999" role="button" title="18.png" alt="18.png" /></span></P><P>&nbsp;</P><P><BR />On the first screen, you need to enter run date and identification. In the identification field, give a five-characters alphanumeric code that will be used to identify the payment program. A combination of the run date and identification is used to identify the program in SAP system.<BR /><BR />Fill the Run date and identification and click Create:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="19.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124117i211A67AD74A6E1B2/image-size/large?v=v2&amp;px=999" role="button" title="19.png" alt="19.png" /></span><STRONG>In the Parameters Tab, We have to define the following and Click Save</STRONG></P><UL><UL><LI>What is to be paid – Docs. Entered Up to</LI></UL></UL><UL><UL><LI>What payment methods will be used – Payment Methods</LI></UL></UL><UL><UL><LI>When will the payments be made – Posting Date?</LI></UL></UL><UL><UL><LI>Which company codes will be considered – Company Codes?</LI></UL></UL><UL><UL><LI>How are they going to be paid – The payment Method Sequence decides the Priority of the Payment Method</LI></UL></UL><UL><UL><LI>Enable Additional log – To get some additional log information.</LI></UL></UL><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="20.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124118iBAE23116696D2BD6/image-size/large?v=v2&amp;px=999" role="button" title="20.png" alt="20.png" /></span></P><P>You can see the payment parameter created :</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="21.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124119iAA02D0EC433B77A5/image-size/large?v=v2&amp;px=999" role="button" title="21.png" alt="21.png" /></span></P><P><STRONG><U>Create Payment Proposal:</U></STRONG><BR /><BR />Selected the Parameter and click schedule Proposal:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="22.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124120iA71C47DD54C8C0E8/image-size/large?v=v2&amp;px=999" role="button" title="22.png" alt="22.png" /></span></P><P>When you click on Proposal the system is going to ask whether you want to create it immediately or want to schedule it for a time in the future. For this demo, we are going to run it immediately. You should tick the checkbox for creation of payment medium.<BR /><BR />Make sure you select “Start Immediately” and then click on Schedule.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="23.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124121i75E99F75A50BA212/image-size/large?v=v2&amp;px=999" role="button" title="23.png" alt="23.png" /></span>You can see the payment proposal in the respective tab.<BR /><BR />A payment proposal is generated based on the parameters.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="24.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124122i9D1E78970C1EB10E/image-size/large?v=v2&amp;px=999" role="button" title="24.png" alt="24.png" /></span><BR /><STRONG><U>Review Payment Proposal:</U></STRONG></P><UL><UL><LI>Click on the arrow button to review the document selected in this run.</LI></UL></UL><UL><UL><LI>The system will list all the vendors that have been included in the payment proposal.</LI></UL></UL><UL><UL><LI>We can view the Proposal Log for possible errors by Pressing the Proposal Log Button.</LI></UL></UL><UL><UL><LI>We can edit the proposal to block the some payments if we want, Press the Edit Proposal Button.</LI></UL></UL><P>&nbsp;</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="25.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124123iC81949A91077CB0F/image-size/large?v=v2&amp;px=999" role="button" title="25.png" alt="25.png" /></span><STRONG><U>Payment Run:</U></STRONG><BR /><BR />Go to Proposal and click on Schedule Payment to run Payment.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="26.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124124i5A83A53879AF1BDE/image-size/large?v=v2&amp;px=999" role="button" title="26.png" alt="26.png" /></span><BR />Check “Start Immediately” to start the payment run instantly and then click on Schedule.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="23.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124125iE0F8805BB1DDE355/image-size/large?v=v2&amp;px=999" role="button" title="23.png" alt="23.png" /></span></P><P>Go to “Payments Processed” and You can see the payment posted.<BR /><BR />We can check the status of the Payment run on the Status Tab.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="27.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124126iA90BB85F314DFE20/image-size/large?v=v2&amp;px=999" role="button" title="27.png" alt="27.png" /></span></P><P>You can also select the posted payment to see the log:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="28.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124127i88287AB5E781D63E/image-size/large?v=v2&amp;px=999" role="button" title="28.png" alt="28.png" /></span></P><H4 id="toc-hId--1580255957">Review The Post Payment Document:</H4><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="29.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124128iC9F95A2EC1DDB213/image-size/large?v=v2&amp;px=999" role="button" title="29.png" alt="29.png" /></span></P><P>Invoice Document Text:&nbsp;<SPAN>F110 Substitution Test</SPAN></P><P>Payment Document Text :&nbsp;<SPAN>F110 Substitutio</SPAN></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="30.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124129i253D63CC83013954/image-size/large?v=v2&amp;px=999" role="button" title="30.png" alt="30.png" /></span></P><P>Since the length of BKPF-XBLNR is 16, It allows only 16 characters.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="31.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124130i7D139AAD3147592D/image-size/large?v=v2&amp;px=999" role="button" title="31.png" alt="31.png" /></span></P><H4 id="toc-hId--1776769462">Transport of Substitutions:</H4><P>You transport substitutions manually into the productive system using the function "Substitution" -&gt; "Transport".</P><P>You can also transport substitutions using a specific Customizing transaction. For more information, see the "Transport Substitutions" activity.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="32.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/124132i142188CBA8977761/image-size/large?v=v2&amp;px=999" role="button" title="32.png" alt="32.png" /></span></P><H4 id="toc-hId--1973282967">Updating Reference Fields for single Payment:</H4><P><SPAN>When you clear items using the payment program, the system does not transfer the reference document number to the payment document, even though the reference document number in the items to be cleared is unique to each payment document. The requirement is not programmed, since the reference document number is generally not unique to each payment document.</SPAN></P><P><SPAN>Implement the attached program corrections.<BR /><BR />A reference document number unique in all cleared items is transferred to the payment document.</SPAN></P><P><SPAN>SAP Note Reference :&nbsp;<A title="https://me.sap.com/notes/213551" href="https://me.sap.com/notes/213551" target="_self" rel="noopener noreferrer">https://me.sap.com/notes/213551</A>&nbsp;</SPAN></P><P>Hope this helps you in applying Substitution successfully in SAP.</P> 2024-06-16T06:00:26.552000+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-data-and-analytics-join-our-performance-focused-live-sessions-series/ba-p/13758889 SAP Data and Analytics: Join our Performance focused Live Sessions Series 2024-07-12T08:47:47.532000+02:00 Johann https://community.sap.com/t5/user/viewprofilepage/user-id/137238 <P><SPAN>Performance optimization is a central task for every developer, data modeler, data engineer or data analyst since in addition to quality, speed is a key requirement for modern reporting. With this in mind, we have created a sophisticated series of expert-guided Live Sessions to address this important challenge.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2024-07-12 084327.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/135788i721ABB37C2779887/image-size/large?v=v2&amp;px=999" role="button" title="Screenshot 2024-07-12 084327.png" alt="Screenshot 2024-07-12 084327.png" /></span></SPAN></P><P><SPAN>Boost your skills in SAP Analytics Cloud performance and explore</SPAN><SPAN> key features and optimizations that enhance data analytics efficiency and effectiveness in SAP Analytics Cloud, </SPAN><SPAN>in our </SPAN><SPAN>specialized expert-guided Live Session events, “</SPAN><SPAN>SAP Analytics Cloud Performance overview”</SPAN><SPAN>. </SPAN><A href="https://learning.sap.com/live-sessions/sap-analytics-cloud-performance-overview" target="_blank" rel="noopener noreferrer"><SPAN>Register here</SPAN></A><SPAN>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Understand the performance implications of story design and scripting in SAP Analytics Cloud, in our expert-guided Live Session events "Understanding the relationship between story design and performance in SAP Analytics Cloud". <A href="https://learning.sap.com/live-sessions/understanding-the-relationship-between-story-design-and-performance-in-sap-analytics-cloud" target="_self" rel="noopener noreferrer">Register here.&nbsp;</A></SPAN></P><P><SPAN>Discover best practices in data modeling in SAP HANA</SPAN><SPAN> to ensure your models run at the highest possible speed and are built for sustainability, </SPAN><SPAN>in our expert-guided Live Session events “Best practices when developing calculation views in SAP HANA”. </SPAN><A href="https://learning.sap.com/live-sessions/best-practices-when-developing-calculation-views-in-sap-hana" target="_blank" rel="noopener noreferrer"><SPAN>Register here</SPAN></A><SPAN>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Maximize the performance of accessing data in SAP BW/4HANA. Master the techniques for increasing efficiency and speeding up the retrieval of critical data in your organization, in our expert-guided Live Session</SPAN><SPAN> events </SPAN><SPAN>“Performance aspects of Advanced DataStore Objects and CompositeProviders in SAP BW/4HANA.” </SPAN><A href="https://learning.sap.com/live-sessions/performance-aspects-of-advanced-datastore-objects-and-compositeproviders-in-sap-bw-4hana" target="_blank" rel="noopener noreferrer"><SPAN>Register here</SPAN></A><SPAN>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Explore advanced SAP Analytics Cloud features like custom filtering or display logic and review the scripting power of&nbsp;SAP Analytics Cloud having best practices for a clean code approach in mind, in our expert-guided Live Session events "SAP Analytics Cloud – intermediate reporting".&nbsp;</SPAN><A href="https://learning.sap.com/live-sessions/sap-analytics-cloud-intermediate-reporting" target="_self" rel="noopener noreferrer"><SPAN>Register here.&nbsp;&nbsp;</SPAN></A></P><P><SPAN>The Live Session events mentioned above are linked to the Learning Hub and can only be attended with a <A href="https://www.sap.com/germany/training-certification/learning-hub.html" target="_self" rel="noopener noreferrer">valid subscription</A>.&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P><P><SPAN>Product Learning CoE Analytics Team&nbsp;</SPAN><SPAN>&nbsp;</SPAN></P> 2024-07-12T08:47:47.532000+02:00 https://community.sap.com/t5/technology-blogs-by-members/how-to-migrate-convergent-charging-from-oracle-db-to-hana-db/ba-p/13652292 How to migrate Convergent Charging from Oracle DB to HANA DB. 2024-07-16T18:44:59.972000+02:00 gpiekarski95 https://community.sap.com/t5/user/viewprofilepage/user-id/628642 <P>Hello SAP Community!</P><P>I am coming to you with kind of niche topic about niche product which is a part of the SAP portfolio - Convergent Charging. It was a part of the Hybris solution which evolved into BRIM (SAP Billing and Revenue Innovation Management). There are many descriptions of Convergent Charging on the Internet. Just to make it short: CC is a solution which offer companies a simplified way to charge customers on a pre- and post-paid basis. You may create many different types of subscriptions to offer variety of services for different type of customers and all can be done really quick and on the easy way.&nbsp;</P><H2 id="toc-hId-990676762">Some basic information about CC</H2><P>The first thing we should know, is that CC is officially Netweaver based product. It doesn't mean that it is built like ABAP- or JAVA-stack. It may be, however, closer to JAVA-stack, since it is developed in JAVA. There are common parts with Netweaver stacks, like:</P><UL><LI>profiles: has its own specific parameters, but some are taken from ABAP- or JAVA-stacks,</LI><LI>kernel,</LI><LI>installer: I mean SWPM here, which is used for installations, updates, upgrades and uninstallations, however for the CC you have to use a special version which is delivered exclusively for it,&nbsp;</LI><LI>there may be some more similarities too, but I cannot think of any of them right now.</LI></UL><P>On the other hand, this product is not that complicated as known NW-stacks. It has a documentation and support above the satisfying level. We never had a big issues with it, I can count on the fingers of one hand major issues and on both hands minor ones. Since we started few years ago with implementation of this product, we have a positive thoughts about it. Updates/upgrades are really fast, administration is simple, support is responding very fast. I may write another blog entry about technical side of CC, but I will try to focus on the main topic - migration from Oracle to HANA.&nbsp;</P><H2 id="toc-hId-794163257">Challenges</H2><P>First of all, required OS or DB versions are well described in the PAM:&nbsp;<A href="https://userapps.support.sap.com/sap/support/pam?hash=s%3DSAP%2520CONVERGENT%2520CHARGING%26o%3Dura_prod%257Cdesc%26st%3Dt%26rpp%3D20%26page%3D1" target="_blank" rel="noopener noreferrer">Convergent Charging PAM</A>. According to it, SAP HANA 1.0 (and higher) is supported until CC 5.0 and from 2020 only SAP HANA 2.0. Very good, we can migrate to 2.0. We have been searching for the generic migration Guides, but could not find any. You may find on the Web products, which will help with Oracle to HANA conversion, but you need additional license and probably some trainings. After discussion with SAP they informed us, that there is no official or even unofficial guide how to do it and such procedure is not supported <span class="lia-unicode-emoji" title=":frowning_face:">☹️</span>. At first were disappointed and didn't know how to proceed, because we wanted to move to HANA without a big problems and this type of steering like for ABAP- or JAVA-stack was missing here. Luckily for us, they pointed some HANA tools used by the other clients like: SDA (Smart Data Access) and SDI (Smart Data Integration). Additionally the CC itself is really small system. It has around 700 tables, so it is not that overwhelming. The next thing they pointed was a guideline&nbsp;<A href="https://help.sap.com/docs/Convergent_Charging/5005519cc79643599077d1dc7941036c/42f1e1a984cc44b5807016e50472fbb2.html" target="_blank" rel="noopener noreferrer">Copying an SAP CC system | SAP Help Portal</A>. It describes migration of the CC system to any database, from the higher level, so without specific OS, DB, etc. Just pure, consistent strategy. Not that bad! After some brainstorming and meetings regarding available tools, different approaches, application support, we decided to make it as simple as possible and to use SDA.</P><H2 id="toc-hId-597649752">Oracle-export approach</H2><P>Before I go to the substance, let me present our road to the goal. The first, and seems to be a natural, step was to export content of the tables from Oracle in CSV-format and import them to HANA. What we noticed, was the date format. In Oracle with our default environment variables we had DD.MM.YY while in HANA we needed YYYY-MM-DD HH:MM:SS. Change of the NLS did the job and we could extract the tables. From this point we could choose to have the tables in CSV or in the text files as INSERTs.</P><P>The first approach seems to be very complicated and time consuming, because we will have to import the files via SAP HANA Studio only one at a time. Imagine doing it for ca. 700 tables. The whole procedure is described here: <A href="https://community.sap.com/t5/technology-blogs-by-members/import-csv-flat-file-to-hana-database/ba-p/13532177" target="_blank">Import CSV\Flat file to Hana Database</A>. There is no bulk option built-in. OK, there is one, if the files are already stored on the HANA host.&nbsp;<A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/4fe29514fd584807ac9f2a04f6754767/20f712e175191014907393741fadcb97.html?locale=en-US" target="_blank" rel="noopener noreferrer">IMPORT FROM Statement (Data Import Export)</A>&nbsp;can be used here and in an easy way duplicated for each table. Additionally it may be necessary to modify manually each file, because Oracle export may not be suitable 1:1 for import into HANA.</P><P>The second approach, with generated INSERTs from Oracle, sounds better. The text files can be modified in an easy way, but the biggest problem is the number of line which can be inserted into SQL Statement in SAP HANA Studio. We tried with small numbers like 50.000 or even 10.000 and every time JAVA memory exception was raised.&nbsp;</P><P>There might be other approaches, different methods used, some automation and someone may have also other issues. We gave up here and focused on a tool delivered with SAP HANA - SDA</P><H2 id="toc-hId-401136247">Smart Data Access</H2><P>We have started with the basic questions:</P><OL><LI>What about the license? "<SPAN>Because smart data access is part of the SAP HANA core system, no additional licensing is required to use it."&nbsp;<span class="lia-unicode-emoji" title=":heavy_check_mark:">✔️</span></SPAN></LI><LI><SPAN>Is our database version supported?&nbsp;<A href="https://me.sap.com/notes/2600176" target="_blank" rel="noopener noreferrer">2600176 - SAP HANA Smart Data Access Supported Remote Sources</A>&nbsp;<span class="lia-unicode-emoji" title=":heavy_check_mark:">✔️</span></SPAN></LI><LI>Is it out-of-the-box tool? Unfortunately no, but preparation steps are quite simple and have already been known to our HANA Team. Just for the record - here they are:&nbsp;<A href="https://help.sap.com/docs/SAP_HANA_PLATFORM/6b94445c94ae495c83a19646e7c3fd56/4e955bd42d1a49a29489617515a88c7a.html?locale=en-US" target="_blank" rel="noopener noreferrer">Oracle Database ODBC Driver</A>&nbsp;&nbsp;<SPAN><span class="lia-unicode-emoji" title=":heavy_check_mark:">✔️</span></SPAN></LI></OL><P>After all was set we could finally start. We will follow here the general guideline for copying CC, which I mentioned earlier.&nbsp;</P><H4 id="toc-hId-462788180">Preparing the destination system</H4><P>I assume that the installation has already been done on your side and we can move on. If not, please refer to SAP's Installation Guides. Additionally, user created in HANA for CC installation, should have one more Role under System Privileges: "CREATE REMOTE SOURCE".&nbsp;</P><H4 id="toc-hId-266274675">Backing-up the tables of the destination Core Database and Session Database, according to the copy scenario</H4><P>I suggest now to perform full backup of the destination system, just to be sure, that we can revert our CC to the first working version. Below are the steps we performed to create backup.</P><P>Mark all tables under relevant tenant and CC HANA Admin user, click right mouse button and choose export:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="gpiekarski95_0-1713512725592.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98608iEAC6815447256E58/image-size/medium?v=v2&amp;px=400" role="button" title="gpiekarski95_0-1713512725592.png" alt="gpiekarski95_0-1713512725592.png" /></span></P><P>In the next step, all irrelevant tables can be selected and removed from being backed-up as on the screenshot below. Just for the information: the small icon&nbsp;<span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="gpiekarski95_3-1713513035560.png" style="width: 28px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98616i81021E65FC0F4C87/image-dimensions/28x29?v=v2" width="28" height="29" role="button" title="gpiekarski95_3-1713513035560.png" alt="gpiekarski95_3-1713513035560.png" /></span>&nbsp;indicates, that they are virtual tables. We do not want to back them up, because it does not make any sense.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="gpiekarski95_1-1713512899530.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98610iD5AC319E66A719AA/image-size/medium?v=v2&amp;px=400" role="button" title="gpiekarski95_1-1713512899530.png" alt="gpiekarski95_1-1713512899530.png" /></span></P><P>Following options must be used from “Export Selection” screen. Export catalog will be stored on a local storage. Number of Parallel Threads can be i.e. 5. Click on Finish will start exporting the tables:<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="gpiekarski95_7-1712678512202.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94098iC29C1C7A71DADEA7/image-size/medium?v=v2&amp;px=400" role="button" title="gpiekarski95_7-1712678512202.png" alt="gpiekarski95_7-1712678512202.png" /></span></P><H4 id="toc-hId-69761170"><BR />Backing-up the source Core Database and Session Database</H4><P>This step is not necessary here, because from SAP HANA Studio we are unable to change anything on the source Oracle database. At least I have not found any option to do this.&nbsp;</P><H4 id="toc-hId--126752335"><BR />Transferring the adequate data from the source Core Database and Session Database to the destination ones<BR />Restoring the adequate data within the destination Core Database and Session Database</H4><P>Congratulations, you have finally reached your destination. Thank you for being patient&nbsp;<span class="lia-unicode-emoji" title=":smiling_face_with_smiling_eyes:">😊</span></P><P>At first, we have to create External Source which allows us to connect to the Oracle source database:<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="gpiekarski95_2-1712677582465.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94093iFA878F8AF098E6AD/image-size/medium?v=v2&amp;px=400" role="button" title="gpiekarski95_2-1712677582465.png" alt="gpiekarski95_2-1712677582465.png" /></span></P><P>Then change Adapter to ORACLE, fill in the Data Source Name from tnsnames.ora, enter username and password for access to Oracle DB:<BR /><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="gpiekarski95_3-1712677639813.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/94094iE3996F74450107AF/image-size/medium?v=v2&amp;px=400" role="button" title="gpiekarski95_3-1712677639813.png" alt="gpiekarski95_3-1712677639813.png" /></span></P><P>Now let's create virtual tables with links to the content of the Oracle source system. Expand previously created External Source until you reach username provided above. Mark all tables (I assume there are only CC tables there) and click on "Add as Virtual Table". Provide prefix for the tables and wait. Progress can be monitored in the "Progress" tab:</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="gpiekarski95_2-1713512956225.png" style="width: 400px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/98613iA971AC366DB43569/image-size/medium?v=v2&amp;px=400" role="button" title="gpiekarski95_2-1713512956225.png" alt="gpiekarski95_2-1713512956225.png" /></span></P><P>For the further processing, we have to collect the table names from the target system. To do this, we have to execute a SQL command on the database/tenant where the CC has been installed. As a schema user, insert the CC HANA Admin user used for installation:</P><PRE>select TABLE_NAME from SYS.M_TABLES where SCHEMA_NAME ='&lt;cc_hana_admin_user&gt;';</PRE><P>&nbsp;If you want to list the virtual tables, other statement must be used:</P><PRE>select TABLE_NAME from SYS.VIRTUAL_TABLES where SCHEMA_NAME ='&lt;cc_hana_admin_user&gt;';</PRE><P>The table names are required to build INSERT and SELECT statements, which we used to migrate the tables' content from the Oracle to HANA. The fastest way, for me, was to generate everything in the Excel sheet. So I paste already listed tables into new Excel file.</P><P>First step was to delete (actually to truncate) content of the tables in target system. Under documentation&nbsp;<A href="https://help.sap.com/docs/Convergent_Charging/d1d04c0d65964a9b91589ae7afc1bd45/2b32e184c4ce49ae99031b1b87b24cb3.html?locale=en-US#restoring-the-destination-core-database" target="_blank" rel="noopener noreferrer">Restoring the Destination Core Database</A>&nbsp;SAP describes which tables should be restored with which action. My approach is, that the ones with "Overwrite only", must not be deleted as they already have required content. The other tables can be dropped. Here following statement was used:</P><PRE>TRUNCATE TABLE &lt;cc_hana_admin_user&gt;.&lt;table_name&gt;;</PRE><P>So basically if there is a list of the tables in Excel, the statement for each table can be created easily.</P><P>The next and last step is to insert data from the source into target database. It is done by using following statement:</P><PRE>INSERT INTO &lt;cc_hana_admin_user&gt;.&lt;table_name&gt; SELECT * FROM &lt;cc_hana_admin_user&gt;.&lt;virtual_table_name&gt;;</PRE><H4 id="toc-hId--323265840">Last word for the end</H4><P>It is actually all. Of course you may struggle with performance issues as we did. Just to avoid any, the SQL statements for small tables can be executed in one SQL Console and INSERTs for the big tables in other, running parallel. Additional thing, which may speed up the process, is to perform Housekeeping according to the original documentation:&nbsp;<A href="https://help.sap.com/docs/Convergent_Charging/11f35b088b20494ab55e788b213b9102/f879ba1e82c846efb37a89a7c7f1be89.html?locale=en-US" target="_blank" rel="noopener noreferrer">Purging and Archiving | SAP Help Portal</A>. We could delete a pretty number of outdated logs.&nbsp;</P><P>Hope you find this blog entry interesting. Any comments or questions are always welcome.</P> 2024-07-16T18:44:59.972000+02:00