https://raw.githubusercontent.com/ajmaradiaga/feeds/main/scmt/topics/BW-Business-Explorer-(SAP-BEx)-blog-posts.xml SAP Community - BW Business Explorer (SAP BEx) 2024-05-20T11:10:12.200145+00:00 python-feedgen BW Business Explorer (SAP BEx) blog posts in SAP Community https://community.sap.com/t5/technology-blogs-by-members/date-difference-calculation-bw-4/ba-p/13390711 Date difference calculation BW/4 2019-08-04T13:44:10+02:00 former_member256717 https://community.sap.com/t5/user/viewprofilepage/user-id/256717 Dear All,<BR /> <BR /> &nbsp;<BR /> <BR /> Just a simple approach for a requirement to calculate date difference in BEx query without using Formula Variable with Replacement Path.<BR /> <BR /> Eg : We need to find the difference of posting dates( Stock Age ) of material in inventory with posting date of movement type 531/101&nbsp; as Stock_Out date and posting date of movement type 601/631 as Stock_In.<BR /> <OL><BR /> <LI>Create 2 KFs with type date as below.</LI><BR /> </OL><BR /> &nbsp;<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/08/Capture1.jpg" /><BR /> <BR /> &nbsp;<BR /> <BR /> 2. Add to ADSO and map both KFs to posting date with datasource in TRFN.<BR /> <BR /> 3. To restrict on Query level, add the KFs in query and create a selection, restrict on Movement type BWART as 531/101 for Stock_Out and 601/631 for Stock_In.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/08/pic1.jpg" /><BR /> <BR /> 4. Create a new formula and put below ( If not 0 check is not performed, it will show garbage values in report for Stock Age).<BR /> <BR /> IF("[ZSTOCK_OU] Stock-Out Posting Date" &lt;&gt; 0 AND<BR /> "[ZSTOCK_IN] Stock-In Posting Date" &lt;&gt; 0; "[ZSTOCK_OU] Stock-Out Posting Date"<BR /> - "[ZSTOCK_IN] Stock-In Posting Date"; 0)<BR /> <BR /> 5. Report Output :<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/08/pic2.jpg" /><BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> Regards<BR /> <BR /> Ruma Ghosh 2019-08-04T13:44:10+02:00 https://community.sap.com/t5/enterprise-resource-planning-blogs-by-members/bw-query-on-cds-cube/ba-p/13389126 BW Query on CDS cube? 2019-09-06T10:41:13+02:00 dmitry_kuznetsov1 https://community.sap.com/t5/user/viewprofilepage/user-id/183443 After spending some time in S/4HANA Embedded Analytics building Queries in CDS views I came to a realization that it is a painful exercise. While in some (simple) cases it does, indeed, make a good sense, for real analytical queries probably a Query Designer will be a better choice. By Query Designer I mean BEx (t.b. deprecated) or a BW-MT flavor of it. I will use the latter in my examples.<BR /> <H1 id="toc-hId-778684516">Start</H1><BR /> So, where do I start? I start by connecting to an S/4HANA from BW Modeling Tools perspective in Eclipse.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/queries_add_bwmt.png" /><BR /> <BR /> &nbsp;<BR /> <BR /> Then we proceed the same way as in BW cases. When creating a new Query we need an InfoProvider. In S/4HANA this will be a generated TransientProvider (which is based on CDS view), so don't forget to tick that checkbox before searching.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/Annotation-2019-09-06-112955.png" /><BR /> <H1 id="toc-hId-582171011">OData?</H1><BR /> If you are planning on using the query in KPIs or Reports, it is a good idea to check the box for OData service.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/Annotation-2019-09-06-113106-1.png" height="485" width="394" /><BR /> <H1 id="toc-hId-385657506"></H1><BR /> <H1 id="toc-hId-189144001">Parameters</H1><BR /> In many cases our CDS-based "Cube" will have at least some parameters defined. And there is no such thing as optional parameters in the CDS world. So, we need to fill them somehow. Typically, they are prefixed with a P_* in CDS editor. So we need to find all of them in Query Designer and they look like fields! Take them and add to "Filters" part.<BR /> <H3 id="toc-hId-250795934">Procedure</H3><BR /> Go to transaction RSRTS_ODP_DIS, paste the name of TransientProvider you're dealing with (less 2C prefix) and you will find mapping between parameter name and description.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/parameters.png" height="498" width="811" /><BR /> <BR /> Find the same field by technical name or description and drag to Filters area, map values for them by clicking "Restrict".<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/Annotation-2019-09-06-113254.png" /><BR /> <BR /> &nbsp;<BR /> <H1 id="toc-hId--203883009">Variables</H1><BR /> Chances are you are reading this post because you also would like to use BEx variables. So <STRONG>yes</STRONG>, they can be created and <STRONG>yes</STRONG>, you can use standard ones if your CDS model is properly annotated with @Semantics annotations. I hope you know how to create your own variables. So let us see what is needed to be done to use the SAP-delivered ones.<BR /> <BR /> What you need to do is activate BI Content (same old RSA1) for variables. Decide yourself if it hurts to have all 2000 of them activated...<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/1726192-date-variables-select.png" height="415" width="524" /><BR /> <BR /> &nbsp;<BR /> <BR /> And voila! They're visible in Query Designer<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/1726194-date-variables-visible.png" /><BR /> <BR /> &nbsp;<BR /> <BR /> From this point on, Query build is no different than creating in on e.g. CompositeProvider<BR /> <BR /> &nbsp;<BR /> <BR /> Cheers,<BR /> <BR /> Dmitry Kuznetsov<BR /> <BR /> BI Consulting 2019-09-06T10:41:13+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-analytics-cloud-currency-conversion-part-1/ba-p/13396442 SAP Analytics Cloud & Currency Conversion (Part 1) 2019-09-12T21:49:15+02:00 IngoH https://community.sap.com/t5/user/viewprofilepage/user-id/150260 Some of you might have the need to create a currency conversion in SAP Analytics Cloud because the backend doesn't provide all the required information. In such a scenario we can easily create a Currency Translation table in SAP Analytics Cloud and then leverage the information to allow for a Currency Conversion in our stories.<BR /> <BR /> For SAP Analytics Cloud to be able to provide the ability to translate data from one currency to another, you will have to configure the source currency in your data, as well as you will have to setup the Currency Translation table with the details on the valid period and the translation details.<BR /> <BR /> For our example we will use a relatively simple data set and we will configure the source currency in the model in SAP Analytics Cloud.<BR /> <BR /> You can download the source file for this exercise following this URL:<BR /> <BR /> <A href="https://sapanalyticscloudbook.com/sample-stories" target="_blank" rel="nofollow noopener noreferrer">https://sapanalyticscloudbook.com/sample-stories</A> and the file name is<BR /> Mastering_SAP_Analytics_Cloud_chapter09_DataSource004.xlsx<BR /> <BR /> Our source data contains a dimension for an Order ID, an Order Date, a dimension for the Country, and a dimension for the Currency as well as a measure for the Order Value.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/ch09_072.jpg" /><BR /> <BR /> Figure 1: Source Data<BR /> <BR /> Now lets create the necessary model.<BR /> <OL><BR /> <LI>Logon to your SAP Analytics Cloud tenant.</LI><BR /> <LI>Navigate to the Home menu.</LI><BR /> <LI>Select the menu Create Model.</LI><BR /> <LI>Select the option Import a file from your computer.</LI><BR /> <LI>Click Select Source File.</LI><BR /> <LI>Point to the downloaded file for this exercise.</LI><BR /> <LI>Ensure the option Use first row as column headers is enabled.</LI><BR /> <LI>Click Import.</LI><BR /> </OL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/ch09_073.jpg" /><BR /> <BR /> Figure 2: Imported Data<BR /> <OL start="9"><BR /> <LI>Select the column header for Order Date.</LI><BR /> <LI>Ensure the Type is set to Date Dimension and the Date Format is set to MM/DD/YYYY.</LI><BR /> <LI>Ensure the Order ID column is configured as Generic Dimension.</LI><BR /> <LI>Select the column header for column Country.</LI><BR /> <LI>Set the Type to Organization.</LI><BR /> <LI>Click Add Dimension Attributes.</LI><BR /> <LI>Select the option Currency.</LI><BR /> <LI>Select column Currency as the Currency Attribute.</LI><BR /> <LI>Select the column header for Order Value.</LI><BR /> <LI>Ensure Order Value is configured as Measure.</LI><BR /> <LI>Click Create Model (bottom right).</LI><BR /> <LI>Confirm the message by clicking Create.</LI><BR /> <LI>You will be asked to select a folder.</LI><BR /> <LI>Select a folder, enter a name and description.</LI><BR /> <LI>Click OK.</LI><BR /> </OL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/ch09_074.jpg" /><BR /> <BR /> Figure 3: Data Management<BR /> <OL start="24"><BR /> <LI>Use the disk symbol in the General menu to save the changes.</LI><BR /> <LI>Navigate to the Home menu.</LI><BR /> <LI>Select the menu Create • Currency.</LI><BR /> <LI>Select the option New Currency Conversion Table.</LI><BR /> <LI>Enter CurrencySample as Name and Description.</LI><BR /> <LI>Click Create.</LI><BR /> </OL><BR /> &nbsp;<BR /> <BR /> Our sample data has values for January 2019 to July 2019 for the currencies USD, EUR, and CAD. Our Currency Translation table will need to have entries to cover the timeline as well as those currencies as source and target currencies.<BR /> <BR /> &nbsp;<BR /> <OL start="30"><BR /> <LI>Enter the following entries:</LI><BR /> </OL><BR /> <TABLE><BR /> <TBODY><BR /> <TR><BR /> <TD width="160">Source Currency</TD><BR /> <TD width="160">Valid From</TD><BR /> <TD width="160">Target Currency</TD><BR /> <TD width="160">Exchange Rate</TD><BR /> </TR><BR /> <TR><BR /> <TD width="160">USD</TD><BR /> <TD width="160">2019.01.01</TD><BR /> <TD width="160">EUR</TD><BR /> <TD width="160">0.88</TD><BR /> </TR><BR /> <TR><BR /> <TD width="160">USD</TD><BR /> <TD width="160">2019.01.01</TD><BR /> <TD width="160">CAD</TD><BR /> <TD width="160">1.31</TD><BR /> </TR><BR /> <TR><BR /> <TD width="160">EUR</TD><BR /> <TD width="160">2019.01.01</TD><BR /> <TD width="160">USD</TD><BR /> <TD width="160">1.14</TD><BR /> </TR><BR /> <TR><BR /> <TD width="160">EUR</TD><BR /> <TD width="160">2019.01.01</TD><BR /> <TD width="160">CAD</TD><BR /> <TD width="160">1.49</TD><BR /> </TR><BR /> <TR><BR /> <TD width="160">CAD</TD><BR /> <TD width="160">2019.01.01</TD><BR /> <TD width="160">EUR</TD><BR /> <TD width="160">0.67</TD><BR /> </TR><BR /> <TR><BR /> <TD width="160">CAD</TD><BR /> <TD width="160">2019.01.01</TD><BR /> <TD width="160">USD</TD><BR /> <TD width="160">0.76</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> Table 1: Currency Translation<BR /> <OL start="31"><BR /> <LI>Use the disk symbol in the toolbar to save the changes.</LI><BR /> <LI>Navigate to the Home menu.</LI><BR /> <LI>Select the menu Browse Files.</LI><BR /> <LI>Navigate to the folder where you saved the previously created model.</LI><BR /> <LI>Open the model.</LI><BR /> <LI>Select the option Model (top left).</LI><BR /> <LI>Navigate to the General menu in the toolbar.</LI><BR /> </OL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/ch09_075.jpg" /><BR /> <BR /> Figure 4: Menu General<BR /> <OL start="38"><BR /> <LI>Open the Model Preferences.</LI><BR /> <LI>Navigate to the area Currency.</LI><BR /> </OL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/ch09_076.jpg" /><BR /> <BR /> Figure 5: Currency Preferences<BR /> <OL start="40"><BR /> <LI>Enable the option Currency Conversion.</LI><BR /> <LI>Ensure the Currency Dimension is set to Country.</LI><BR /> <LI>Set the Currency Rates Table to the CurrencySample table.</LI><BR /> <LI>Set the Date Dimension to Order Date.</LI><BR /> <LI>Click OK.</LI><BR /> <LI>Save the changes to the model.</LI><BR /> <LI>Select the option Model (top left).</LI><BR /> <LI>Now click on the Account dimension.</LI><BR /> <LI>Select the entry Order Value.</LI><BR /> <LI>In the Details panel on the right-hand side scroll down to the area Formatting.</LI><BR /> <LI>Ensure the option Units &amp; Currencies is set to Currency.</LI><BR /> </OL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/ch09_077.jpg" /><BR /> <BR /> Figure 6: Formatting<BR /> <OL start="51"><BR /> <LI>Navigate to the menu General</LI><BR /> <LI>Save the changes to the model.</LI><BR /> </OL><BR /> &nbsp;<BR /> <BR /> In the last few steps we create a model and uploaded data with values for three different currencies. We also created a currency translation table and enabled the currency conversion in the model. We have now all the information, so that we can create a story in the next set of steps and use the newly modeled information. 2019-09-12T21:49:15+02:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-analytics-cloud-currency-conversion-part-3/ba-p/13397682 SAP Analytics Cloud & Currency Conversion (Part 3) 2019-09-13T17:10:31+02:00 IngoH https://community.sap.com/t5/user/viewprofilepage/user-id/150260 In <A href="https://blogs.sap.com/2019/09/12/sap-analytics-cloud-currency-conversion-part-1/" target="_blank" rel="noopener noreferrer">part 1</A> and <A href="https://blogs.sap.com/2019/09/13/sap-analytics-cloud-currency-conversion-part-2/" target="_blank" rel="noopener noreferrer">part 2</A> we reviewed the option to create a model and a currency conversion table in SAP Analytics Cloud.<BR /> <BR /> .... but what if you are a customer using SAP Analytics Cloud in combination with SAP BW or SAP BW4HANA and you have already done all the modelling for your currency conversions in BW / BW4HANA and all what you would like to do, is to simply re-use it ?<BR /> <BR /> &nbsp;<BR /> <BR /> Yes - that's exactly what you should be doing and what SAP Analytics Cloud is offering you as an option.<BR /> <BR /> So lets assume we created a table in SAP Analytics Cloud based on an BEx Query and our table shows the measures Profit and Sales Revenue broken down by Country.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/SAC_CURR_03_001.jpg" /><BR /> <BR /> In SAP Analytics Cloud - available in Edit Mode as well as in the View Mode - we can now open the context menu for the table (see image below) and we can use the menu option "Select Conversions".<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/SAC_CURR_03_002.jpg" /><BR /> <BR /> The "Select Conversions" menu then will show the classic menu to choose your Target Currency and the Conversion Type and you can choose from the options that you already created in BW / BW4HANA.<BR /> <BR /> Important, this does not require any specific setting in the BEx Query nor does it require variables for the Currency Conversion.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/SAC_CURR_03_003.jpg" /><BR /> <BR /> After we selected the Target Currency - in this example EUR - and the conversion type, our table is updated and now shows the values converted into EUR.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/SAC_CURR_03_004.jpg" /><BR /> <BR /> &nbsp;<BR /> <BR /> Not only is the table offering the capability, but also the charts are providing the same functionality - as shown below.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/09/SAC_CURR_03_005.jpg" /><BR /> <BR /> &nbsp;<BR /> <BR /> Please be aware that the option to use the Currency Conversion on the fly, is something the user can leverage per visualization (Table, Chart) - it is not something that is triggering the currency conversion based on the BEx Query for all visualizations that are based on that particular BEx query, but instead the currency conversion is only used on a visualization by visualization basis.<BR /> <BR /> &nbsp;<BR /> <BR /> Some recommendation:<BR /> <UL><BR /> <LI>In case you have to guarantee that with a Currency Conversion all visualizations are being updated in a single step, then I would suggest to use BEx Queries with Variables for the Currency Conversion</LI><BR /> <LI>In case you prefer to have the flexibility to choose the currency conversion per visualization, you can use the approach outlined above.</LI><BR /> </UL><BR /> &nbsp; 2019-09-13T17:10:31+02:00 https://community.sap.com/t5/technology-blogs-by-members/bex-query-based-fiori-app/ba-p/13391032 BEx Query based Fiori App 2019-10-09T13:52:39+02:00 former_member468023 https://community.sap.com/t5/user/viewprofilepage/user-id/468023 We all know BEx queries have been the traditional Sap BW reporting method to analyze the dataset of the BI system. Info Objects are combined in a query and data is evaluated in a tabular report.<BR /> <BR /> Now Enterprise Reporting can be taken to the next level with the advent of Fiori and SAP UI5. Here are a few points why you should consider creating a custom SAPUI5 app to analyse BI data.<BR /> <UL><BR /> <LI>Single query can yield multiple reports</LI><BR /> <LI>Attractive graphical representations of BI data</LI><BR /> <LI>On the go slicing and dicing and much more...</LI><BR /> </UL><BR /> <H3 id="toc-hId-1037534213"></H3><BR /> <H2 id="toc-hId-711937989">Steps to consume Bex queries in Fiori Analytical applications</H2><BR /> <OL><BR /> <LI>Create an ODATA compatible BEx Query.</LI><BR /> <LI>Activate ODATA service for the Query. This ODATA service will expose the BI data.</LI><BR /> <LI>Develop a custom UI5 app consuming query ODATA Service</LI><BR /> </OL><BR /> &nbsp;<BR /> <BR /> And the <STRONG>final output</STRONG> will look something like this :<BR /> <BR /> &nbsp;<BR /> <BR /> First chart represents Preventive Maintenance Count by District.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/PMCount-by-District.png" /><BR /> <BR /> Second chart represents PM Count ACTUAL and PLAN values with respect to district.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/PMCount-ACTUAL-and-PLAN-by-District.png" /><BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <H3 id="toc-hId-644507203">Step 1 : Create ODATA compatible BEx Query</H3><BR /> There are a <STRONG>few points to remember</STRONG> when creating a query in query designer with the motive of generating an ODATA for the same<BR /> <UL><BR /> <LI>Key Figures can go only in the columns section.</LI><BR /> <LI>Characteristics have to be in rows section.</LI><BR /> <LI>At least one characteristic in rows.</LI><BR /> <LI>No additional structures are allowed.</LI><BR /> <LI>To keep it simple, we are not&nbsp; going to add any filters in query level, rather implement all filter related details (like filter defaults, select options etc) at the app level</LI><BR /> </UL><BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> <SPAN style="font-size: 1rem">- To get the above output, we need to create a query ZFIORI_SAMPLE with</SPAN><BR /> <UL><BR /> <LI><SPAN style="font-size: 1rem">PM Count in&nbsp; Column</SPAN></LI><BR /> <LI>District and Value Type in Rows</LI><BR /> </UL><BR /> and then save the query as seen below.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/Create-BW-Query.png" /><BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <UL><BR /> <LI>Now go to extended tab of query and select By OData option and hit SAVE again. You can see a message that Gateway service has been generated.</LI><BR /> </UL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/select-odata-and-save.png" /><BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <UL><BR /> <LI>Now change the technical name of PM Count and save.</LI><BR /> </UL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/Change-name-of-measure-pmcount-1.png" /><BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <H3 id="toc-hId-447993698">Step 2 : Activate ODATA service for Query ZFIORI_SAMPLE</H3><BR /> <UL><BR /> <LI>Login to SAP GUI and go to tcode <EM>/n/iwfnd/maint_service </EM>and Follow the instructions as seen in the screenshots.</LI><BR /> </UL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/activate-and-maint-service.png" /><BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/look-for-query-odata-service-in-the-list.png" /><BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/Add-selected-service.png" /><BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/add-selected-service-assign-package.png" /><BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/metadata-loaded-successfully.png" /><BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/call-browser.png" /><BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/in-browser.png" /><BR /> <UL><BR /> <LI>Now to see the metadata, replace <EM>?$format=xml</EM> with <EM>$metadata</EM></LI><BR /> </UL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2019/10/metadata-1.png" /><BR /> <BR /> &nbsp;<BR /> <BR /> Query ODATA Service is ready to be consumed in Fiori App!<BR /> <BR /> &nbsp;<BR /> <H3 id="toc-hId-251480193">Step 3: Develop Custom SAPUI5 app in WebIDE</H3><BR /> This step is explained in detail in my next blog post-<BR /> <BR /> <A href="https://blogs.sap.com/2019/10/14/simple-sapui5-app-to-display-charts/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2019/10/14/simple-sapui5-app-to-display-charts/</A><BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp; 2019-10-09T13:52:39+02:00 https://community.sap.com/t5/technology-blogs-by-members/measuring-performance-for-real-time-bw-on-hana-report/ba-p/13457028 Measuring Performance for Real-time BW on HANA Report 2020-03-10T00:23:34+01:00 vineet_gupta3 https://community.sap.com/t5/user/viewprofilepage/user-id/202975 After upgrading to BW on HANA and Suite on HANA, the scenario for providing real time reports from BW is greatly simplified. (See blog:&nbsp;<A href="https://blogs.sap.com/2019/12/13/cds-based-data-extraction-part-i-overview/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2019/12/13/cds-based-data-extraction-part-i-overview/</A>). Even with HANA everywhere, you could run into performance issues. For complex ABAP CDS models that combine several other ABAP CDS views, the first step is to find which included view is the root cause of the performance issue. This blog may help you in identifying the component CDS view that maybe resulting in overall poor performance. There are several blogs on best practices for ABAP CDS design.<BR /> <H2 id="toc-hId-933565282"><STRONG>System Landscape</STRONG></H2><BR /> 1. BW 7.5 SPS16 on HANA<BR /> 2. Suite on HANA ECC EHP 08<BR /> 3. Business Objects 4.2 SP6 with Lumira Server Add-on<BR /> <BR /> &nbsp;<BR /> <H2 id="toc-hId-737051777">Reporting Scenario</H2><BR /> A typical real time reporting scenario can be setup with ABAP CDS views in ECC that is the source for BW open ODS &nbsp;and BW query. Here are the detail steps:<BR /> <OL><BR /> <LI>You have created a model with several ABAP CDS views to fulfill real-time reporting needs. The ABAP CDS view are combined in a Consumption ABAP CDS view with <a href="https://community.sap.com/t5/user/viewprofilepage/user-id/15206">@analytics</a> dataExtraction and dataCategory annotations</LI><BR /> <LI>BW on HANA system has a source system of type ODP – ABAP CDS context pointing to ECC system. Let us assume that the connection uses ALEREMOTEBW as userid</LI><BR /> <LI>You have created a datasource DS1 in BW that points to the ABAP CDS consumption view</LI><BR /> <LI>You have created an open ODS view OD1 pointing to DS1 data source. Some of the fields in OD1 are identified by existing infoobjects in BW</LI><BR /> <LI>You have created a composite provider CP1 in BW on top of open ODS view OD1</LI><BR /> <LI>You have a query Q1 on composite provider CP1</LI><BR /> <LI>End users access query Q1 from Lumira Generic analysis in Business Objects and you would like to evaluate query performance.</LI><BR /> </OL><BR /> <H2 id="toc-hId-540538272">Measurement Setup</H2><BR /> 1. Execute Lumira Generic analysis to execute the query Q1. I used a BW OLAP connection in Business Objects to connect to the BW query. Navigate to the step for which you would like to measure performance<BR /> <BR /> 2. Using ST05 in SAPGUI, activate SQL trace with filter in Suite on HANA. Set userid ALEREMOTEBW in the filter<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/03/ST05-1.jpg" /><BR /> <BR /> 3. Execute the reporting step in Lumira<BR /> <BR /> 4. Deactivate trace in Suite on HANA<BR /> <BR /> 5. Display captured trace<BR /> <BR /> 6. Select the row that gives duration of the select statement on the ABAP CDS view and select<BR /> <BR /> Display Execution Plan For Recorded Statement<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/03/ST05_2.jpg" /><BR /> <BR /> 7. SQL statement and its execution plan is displayed. A user friendly way to display the plan data is in the HANA Modeler perspective of Eclipse or HANA Studio. Use the Execution trace button in the toolbar to save the trace file on your local file system.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/03/ST05_3.jpg" /><BR /> <BR /> 8. Open the file saved in the previous step in Eclipse HANA Modeler perspective. Select Executed Plan to display a graphical representation of how the result set was built and which components of the ABAP CDS view model took how much time.<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/03/VizPlan.jpg" /><BR /> <BR /> 9. Execution times are displayed<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/03/VizPlan_3.jpg" /> 2020-03-10T00:23:34+01:00 https://community.sap.com/t5/technology-blogs-by-members/getting-bex-query-id-in-customer-exit-for-authorization-variables/ba-p/13439125 Getting BEx query ID in customer exit for authorization variables 2020-05-29T17:30:36+02:00 gdey_geminius https://community.sap.com/t5/user/viewprofilepage/user-id/13422 <H2 id="toc-hId-931778780">Introduction:</H2><BR /> The importing parameter "I_S_RKB1D"(query attribute) is not getting filled for authorization variable(I_STEP=0) in the FM "<STRONG>EXIT_SAPLRRS0_001"(FM for customer exit variable). </STRONG>Recently I have faced this issue in our system and came up with a workaround and thought to share it so that it will be helpful for someone who is having the same issues.<BR /> <H2 id="toc-hId-735265275"><STRONG>Problem Statement:</STRONG></H2><BR /> In customer exit/BAdI for BEx Variable, we often have requirements to get the query related attributes (e.g., ID of the query) so that we can mold our code accordingly. We already have an importing parameter(I_S_RKB1D in case of customer exit) for the query attributes in the FM/Class of the Customer exit/BAdI respectively.<STRONG> The importing parameter works fine for customer exit variables for I_STEP=1 and 2(work fine in the sense, the query id is filled in the imparting parameter). However, for authorization variables(that is when the value of I_STEP is 0), the values are not filled in the query attributes and remain blank.&nbsp;</STRONG><BR /> <BR /> Below screenshot for reference. We can see the variable "I_VNAM" which have the value for authorization variable name, "I_STEP" which have the value "0" which is for authorization check. We can see the value of the variable "I_S_RKB1D-COMPID" is empty, which should have the value of the query being run.<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/FM-3.png" /><BR /> <BR /> <STRONG>(The above screenshot is from the function module "EXIT_SAPLRRS0_001" which belongs to the customer exit "RSR00001"-BI: Enhancements for Global Variables in Reporting).</STRONG><BR /> <BR /> We can see in the below screenshot, the value of I_STEP is "2" and the query id is populated successfully in the variable "I_S_RKB1D-COMPID".<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/FM2-1.png" /><BR /> <BR /> So, to summarize the issue, the query ID is not getting populated for Authorization Variable (I_STEP=0) but, it is working fine for the customer exit variable(I_STEP =1 or 2).<BR /> <H2 id="toc-hId-538751770">Proposed Solution:</H2><BR /> There is a standard class "CL_RSBOLAP_SELECTION_OBJECT" which is responsible for calling the customer exit/BAdI for authorization/customer exit variable of BEx. The class has an attribute "IF_RSBOLAP_MD_SELECTOR~N_S_COMPKEY" which stores the query attributes of the query which is being run.<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/FM3.png" /><BR /> <BR /> So, we can take the help of the "static attribute" of Object-Oriented Programing. We will create a custom class and create a static attribute in the class for the query id. We set the value of query attribute from this class using a "Pre-exit" in the method. Then inside the customer exit/BAdI, we can use our custom class to get the query Id.<BR /> <BR /> Those who are new to Object-Oriented programming, static attributes are the attributes of the class which are not associated with the object of the class directly and exists on per class basis. Which means, there will be only one instance of the attribute for one class and these attribute can be accessed without creating the object of the class. For more information, please refer to the below link.<BR /> <BR /> <A href="https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapclass-data.htm" target="_blank" rel="noopener noreferrer">https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapclass-data.htm</A><BR /> <BR /> As mentioned already, we will be creating a pre-exit in the class of the method. Pre-exit is nothing but the enhancement technique, where we can associate our code to the class which will be called automatically by the system whenever that particular method is called anywhere. As this is the pre-exit, so our code will be called followed by the code of the standard method. For more information, please refer to the below link<BR /> <BR /> <A href="https://wiki.scn.sap.com/wiki/display/ABAP/Enhancement+Framework+-+Class+Enhancements+-+Pre-exit,+Post-exit+and+Overwrite-exit+methods+-+Concept+and+Simple+Scenarios" target="_blank" rel="noopener noreferrer">https://wiki.scn.sap.com/wiki/display/ABAP/Enhancement+Framework+-+Class+Enhancements+-+Pre-exit,+Post-exit+and+Overwrite-exit+methods+-+Concept+and+Simple+Scenarios</A><BR /> <BR /> So, let's start.<BR /> <H2 id="toc-hId-342238265"><STRONG>Step 1: Creation of custom class</STRONG></H2><BR /> Let's create a custom class "ZCL_BW_QUERY_NAME". This class will be used to get the Query Id. This class will have below component:<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-2.png" /><STRONG>Attribute:</STRONG><BR /> <UL><BR /> <LI>MV_QUERY_ID -&nbsp; To store the query Id</LI><BR /> </UL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-2-1.png" /><BR /> <BR /> <STRONG>Methods:</STRONG><BR /> <UL><BR /> <LI><STRONG>SET_QUERY_ID</STRONG> - Sets the query ID - This will be used in the Pre-exit of the method of class "CL_RSBOLAP_SELECTION_OBJECT" to set the value</LI><BR /> <LI><STRONG>GET_QUERY_ID</STRONG> - Gets the query ID - This will be used in customer exit/BAdI to get the query id</LI><BR /> </UL><BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-3.png" /><BR /> <BR /> <STRONG>Method: SET_QUERY_ID</STRONG><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-4.png" /><BR /> <PRE class="language-abap"><CODE> METHOD set_query_id.<BR /> "Set the query id<BR /> mv_query_id = im_v_query_id.<BR /> ENDMETHOD.</CODE></PRE><BR /> <STRONG>Method: GET_QUERY_ID</STRONG><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-5.png" /><BR /> <PRE class="language-abap"><CODE> METHOD get_query_id.<BR /> "Return the query id<BR /> rt_v_query_id = mv_query_id.<BR /> ENDMETHOD.</CODE></PRE><BR /> <H2 id="toc-hId-145724760"><STRONG>Step 2: Creation of pre-exit for setting the value of Query in the custom class</STRONG></H2><BR /> To create the Pre-exit go to the class "CL_RSBOLAP_SELECTION_OBJECT" in class builder(t-code: SE24) and click on "Class--&gt; Enhance" in the menubar.<BR /> <BR /> If you have already an enhancement implementation, then the created enhancement implementation will be shown in the pop-up. Select the implementation to proceed. In my case, there is no existing implementation, so I will go ahead and create one.<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-7-1.png" /><BR /> <BR /> Once the Enhancement Implementation is created, place the cursor on the method "CREATE_OLAP_OBJECT". Then create a pre-exit method.<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-8.png" /><BR /> <BR /> Please click on "Yes" in the pop-up if the pop-up is displayed.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-9-1.png" /></P><BR /> Now click on the button shown in "Pre-exit" column of the method "CREATE_OLAP_OBJECT".<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-10.png" /><BR /> <BR /> Please add below code inside the pre-exit of the method method<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-11.png" /><BR /> <PRE class="language-abap"><CODE>METHOD IPR_ZEHN_QUERY_DETAILS~CREATE_OLAP_OBJECT.<BR /> *"------------------------------------------------------------------------*<BR /> *" Declaration of PRE-method, do not insert any comments here please!<BR /> *"<BR /> *"methods CREATE_OLAP_OBJECT<BR /> *" importing<BR /> *" !I_AUTHCHECK type RS_BOOL<BR /> *" raising<BR /> *" CX_RSBOLAP_UNKNOWN_DATA_PROV .<BR /> *"------------------------------------------------------------------------*<BR /> "Set the query ID <BR /> zcl_bw_query_name=&gt;set_query_id( im_v_query_id = core_object-&gt;if_rsbolap_md_selector~n_s_compkey-compid ).<BR /> ENDMETHOD.</CODE></PRE><BR /> So, we have created the custom class and set the query Id. We are all done. No kidding. Now we can use our method "GET_QUERY_ID" of our class "ZCL_BW_QUERY_NAME" inside customer exit to fetch the query id.<BR /> <H2 id="toc-hId--50788745"><STRONG>Step 3: Get the query id in customer exit&nbsp;</STRONG></H2><BR /> Now, let's go our customer exit for BEx Variable to use our class to get the query id. Let's<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/05/Class-12-3.png" /><BR /> <PRE class="language-abap"><CODE>IF i_s_rkb1d-compid IS INITIAL.<BR /> "Get the query id<BR /> i_s_rkb1d-compid = zcl_bw_query_name=&gt;get_query_id( ).<BR /> ENDIF.</CODE></PRE><BR /> We can call the method "GET_QUERY_ID" of the class "ZCL_BW_QUERY_NAME". We can see we get the name of the query in the which is being run. Please note the value of "I_STEP" is "0", which confirms we are dealing with the authorization variable.<BR /> <H2 id="toc-hId--247302250"><STRONG>Conclusion:</STRONG></H2><BR /> As we saw, we had an issue to get the Query Name for the authorization variable(I_STEP=0). The I_S_RKB1D-COMPID was blank. However, for I_STEP=1 or 2, there is no issues and the variable "I_S_RKB1D-COMPID" is filled correctly. To overcome the issue, we have created a pre-exit in the method "CREATE_OLAP_OBJECT" in the class to set the query id in the custom class "ZCL_BW_QUERY_NAME". Then, we used the class "ZCL_BW_QUERY_NAME" in the customer exit(for BAdI also it will work fine) to get the name of the query. Cheers! 2020-05-29T17:30:36+02:00 https://community.sap.com/t5/technology-blogs-by-sap/conversion-sap-bw-7-x-to-sap-bw-4hana-how-to-handle-missing-sap-exit/ba-p/13424550 Conversion SAP BW 7.x to SAP BW/4HANA: How to handle missing SAP Exit Variables 2020-06-09T16:43:30+02:00 AndreasTenholte https://community.sap.com/t5/user/viewprofilepage/user-id/71289 <EM><STRONG>Update April 2023: </STRONG></EM><BR /> <BR /> <STRONG>In case you are currently on an SAP BW/4HANA conversion project, happy to announce that around 400 Function Modules belonging to standard content SAP Exit Variables previously shipped with BI_CONT (SAP BW) are now included with SAP BW/4HANA Content Add-On 2.0 SP13 </STRONG><STRONG>(applicable for SAP BW/4HANA 2.0 and SAP BW/4HANA 2021). </STRONG><BR /> <BR /> <STRONG>Check <A href="https://launchpad.support.sap.com/#/notes/3301981" target="_blank" rel="noopener noreferrer">SAP Note 3301981</A> for further information. It is highly recommended to update the BW/4HANA Pre-Checks to at least Revision 22 (<A href="https://launchpad.support.sap.com/#/notes/3296875" target="_blank" rel="noopener noreferrer">SAP Note 3296875 - Revision 22 - PRECHECK</A>)</STRONG><BR /> <BR /> <EM><STRONG>End of Update April 2023</STRONG></EM><BR /> <BR /> *****<BR /> <BR /> <EM>This technical blog post is for BW consultants who are involved in SAP BW 7.x to SAP BW/4HANA conversion projects.</EM><BR /> <BR /> During a SAP BW/4HANA conversion project the existing content artifacts will be automatically replaced by the new, future-proofed and HANA-optimized objects such as advanced DataStore objects, CompositeProvider and Open ODS views. Before this is done, following the <A href="https://help.sap.com/doc/999ae5f8c578402dab1fea94fa4599f9/LATEST/en-US/SAP_BW4HANA_20_Conversion_Guide.pdf" target="_blank" rel="noopener noreferrer">SAP BW/4HANA conversion guide</A>, a code scan report is executed to detect various possible issues. Beside other checks, the code scan report detects standard function modules or programs that are used in the data model, for example by BW Transformations or Exit Variables, that are obsolete and not longer available in SAP BW/4HANA.<BR /> <BR /> How to handle these kind of issues, where obsolete standard function modules and programs are used inside your data model, is generally addressed in SAP Note <A href="https://launchpad.support.sap.com/#/notes/2673734" target="_blank" rel="noopener noreferrer">2673734</A>.<BR /> <BR /> In this blog post let us focus on problems related to missing function modules called by SAP Exit Variables.<BR /> <BR /> <STRONG><EM>Why are some SAP Exit Variables and their function modules not longer available in SAP BW/4HANA?</EM></STRONG><BR /> <BR /> In SAP BW and the corresponding BI Content add-ons, there were a very high number of standard SAP Exit variables available. Some of these SAP Exit variables had similar logic as others, e.g. there were five variables providing the last month. At the same time the variables in the classic BI Content for SAP BW did not follow a clear naming convention. This made it hard to find the right variable for a particular reporting use case and many projects ended up creating their own SAP Exit Variables.<BR /> <BR /> With the new standard content for SAP BW/4HANA a new streamlined set of variables following clear naming conventions is introduced to make it easier for content modelers to find the right variable. A full list of the new variables including the definition of the used naming conventions can be found as attachment in <A href="https://launchpad.support.sap.com/#/notes/2395579" target="_blank" rel="noopener noreferrer">SAP Note 2395579</A>.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/06/Variables_naming_conventions.png" height="287" width="672" /></P><BR /> <P class="image_caption" style="text-align: center;font-style: italic">Naming Conventions for Variables - BW/4HANA Standard Content</P><BR /> <STRONG><EM>What can I do when the function module of a currently used SAP Exit Variable is not longer available in SAP BW/4HANA?</EM></STRONG><BR /> <BR /> While the new set of variables following a consistent naming convention is helpful for greenfield implementation projects, this certainly comes as a one-time hurdle when doing a conversion project.<BR /> <BR /> To ease the conversion effort, the new BW/4HANA Content SAP Exit Variables with their function modules have been down ported to SAP BW 7.31 / 7.40 / 7.50 and SAP BI Content 737 / 747 / 757 by the SAP Notes<BR /> <UL><BR /> <LI><A href="https://launchpad.support.sap.com/%23/notes/2851061" target="_blank" rel="noopener noreferrer">2851061</A> - New BEx variables for simplification of conversion to SAP BW/4HANA</LI><BR /> <LI><A href="https://launchpad.support.sap.com/#/notes/2857063" target="_blank" rel="noopener noreferrer">2857063</A> - BI_CONT: New BEx Variables to simplify conversion from SAP BW to SAP BW/4HANA</LI><BR /> </UL><BR /> By implementing the SAP Notes, these SAP Exit Variables are available in your SAP BW 7.x system and all you need to do - prior to the conversion - is to replace the previous used BI_CONT SAP Exit Variables by the new variables in the queries.<BR /> <BR /> The list below shows all down ported SAP Exit variables. With assistance of this table, you can lookup for a currently used variable (<EM>column 'Replaced Variable'</EM>) the functional equivalent variable (<EM>column 'Variable (new)</EM>') that can be used as replacement. To make things more complicated, there are some SAP Exit Variables that dependent on other SAP Exit Variables. As an example the SAP Exit variable 'Current Fiscal Year Period' itself reads the SAP Exit variable 'Fiscal Year Variant'. These kind of dependencies you need to take into account when replacing the SAP Exit variables. To assist you with that, all dependencies are properly documented in the column 'Comment' and in the detailed footnotes below.<BR /> <TABLE style="height: 969px;width: 642px" width="926"><BR /> <TBODY><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182"><STRONG>Replaced Variable</STRONG></TD><BR /> <TD style="width: 155px;height: 13px" width="200"><STRONG>Variable (new)</STRONG></TD><BR /> <TD style="width: 162px;height: 13px" width="264"><STRONG>Description</STRONG></TD><BR /> <TD style="width: 149px;height: 13px" width="103"><STRONG>Comment&nbsp;</STRONG></TD><BR /> <TD style="width: 146px;height: 13px" width="177"><STRONG>InfoObject</STRONG></TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CD_L14D</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEIO_CDL14CDCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last 14 Days</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALDAY</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CD_L7D</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEIO_CDL7CDCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last 7 Days</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALDAY</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CD_LD</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEPO_CDPDCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last Day</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALDAY</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CDFY</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIM_CDFYCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Current Fiscal Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALDAY</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CDLFY</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIM_CDFYPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last Fiscal Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALDAY</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CMCMLY</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPO_CMCMPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Current Month (Comparison) Previous Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CMCQUAR</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_CMCQCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Current Quarter</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CMCQULY</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_CMCQPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Current Quarter (Comparison) Previous Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CML12CM</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_CML12CMCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last 12 Months Including Current Month</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CML12LM</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_CML12PMCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last 12 Months Excluding Current Month</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CML3CM</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEIO_CML3CMCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last 3 Months Including Current Month</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CMLMLY</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPO_CMPMPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last Month (Comparison) Previous Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0CMLMON</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEPO_CMPMCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last Month</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(10)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0DPM_BV0</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0FIPO_GRID_WIDTH</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Grid Width</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0GRID_WIDTH</TD><BR /> </TR><BR /> <TR style="height: 27px"><BR /> <TD style="width: 30px;height: 27px" width="182">0F_LASTDTCD_IFPER</TD><BR /> <TD style="width: 155px;height: 27px" width="200">0CXSM_LASTCLDTV</TD><BR /> <TD style="width: 162px;height: 27px" width="264">Clearing Dt.(Derive last CalDay using Var. 0CIIN_FISCPER)</TD><BR /> <TD style="width: 149px;height: 27px" width="103">(6)</TD><BR /> <TD style="width: 146px;height: 27px" width="177">0CLEAR_DATE</TD><BR /> </TR><BR /> <TR style="height: 27px"><BR /> <TD style="width: 30px;height: 27px" width="182">0F_LASTDTCD_IFPER2</TD><BR /> <TD style="width: 155px;height: 27px" width="200">0CXSM_LASTCLDTV_CMP</TD><BR /> <TD style="width: 162px;height: 27px" width="264">Clearing Dt.(Derive last CalDay by 0CIIN _FISCPER_CMP)</TD><BR /> <TD style="width: 149px;height: 27px" width="103">(7)</TD><BR /> <TD style="width: 146px;height: 27px" width="177">0CLEAR_DATE</TD><BR /> </TR><BR /> <TR style="height: 27px"><BR /> <TD style="width: 30px;height: 27px" width="182">0F_LASTDTND_IFPER</TD><BR /> <TD style="width: 155px;height: 27px" width="200">0CXPM_LASTNDDTV</TD><BR /> <TD style="width: 162px;height: 27px" width="264">Net Due Dt.(Derive last CalDay using Var. 0CIIN_FISCPER)</TD><BR /> <TD style="width: 149px;height: 27px" width="103">(6)</TD><BR /> <TD style="width: 146px;height: 27px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 27px"><BR /> <TD style="width: 30px;height: 27px" width="182">0F_LASTDTND_IFPER2</TD><BR /> <TD style="width: 155px;height: 27px" width="200">0CXPM_LASTNDDTV_CMP</TD><BR /> <TD style="width: 162px;height: 27px" width="264">Net Due Dt.(Derive last CalDay by 0CIIN _FISCPER_CMP)</TD><BR /> <TD style="width: 149px;height: 27px" width="103">(7)</TD><BR /> <TD style="width: 146px;height: 27px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 27px"><BR /> <TD style="width: 30px;height: 27px" width="182">0F_LASTDTPD_IFPER</TD><BR /> <TD style="width: 155px;height: 27px" width="200">0CXPM_LASTPDDTV</TD><BR /> <TD style="width: 162px;height: 27px" width="264">Posting Dt.(Derive last CalDay using Var. 0CIIN_FISCPER)</TD><BR /> <TD style="width: 149px;height: 27px" width="103">(6)</TD><BR /> <TD style="width: 146px;height: 27px" width="177">0PSTNG_DATE</TD><BR /> </TR><BR /> <TR style="height: 27px"><BR /> <TD style="width: 30px;height: 27px" width="182">0F_LASTDTPD_IFPER2</TD><BR /> <TD style="width: 155px;height: 27px" width="200">0CXPM_LASTPDDTV_CMP</TD><BR /> <TD style="width: 162px;height: 27px" width="264">Posting Dt.(Derive last CalDay by 0CIIN_ FISCPER_CMP)</TD><BR /> <TD style="width: 149px;height: 27px" width="103">(7)</TD><BR /> <TD style="width: 146px;height: 27px" width="177">0PSTNG_DATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0I_BA104</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_FPYTCPVCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Cumulated Up To Period (Var. 0CIPM_FISCPER)</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(1)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 27px"><BR /> <TD style="width: 30px;height: 27px" width="182">0I_BA106</TD><BR /> <TD style="width: 155px;height: 27px" width="200">0CXIO_FPYTCPVPY</TD><BR /> <TD style="width: 162px;height: 27px" width="264">Cumulated Up To Prior FY Period (Var. 0CIPM_FISCPER)</TD><BR /> <TD style="width: 149px;height: 27px" width="103">(1)</TD><BR /> <TD style="width: 146px;height: 27px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0I_CUFQU</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_FPCQCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Current Quarter of Fiscal Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0I_CUFYE</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_FPALLPCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">All Periods of Current Fiscal Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0I_FPER</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CIIN_FISCPER</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Fiscal Year/Period</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0I_FPER2</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CIIN_FISCPER_CMP</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Comparison Fiscal Year/Period</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0I_L6MON</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEIO_CML6CMCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last 6 Month Including Current Month</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0I_PRFQU</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_FPPQCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Previous Quarter of Fiscal Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0I_PRFYE</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_FPALLPPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">All Periods of Previous Fiscal Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0LQUART</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_CMPQCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last Quarter</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_AUGDT</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPM_DATE_KEY_CLEAR</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Key Date for Clearing Date</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(3)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0DATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_BA101</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPO_FPCPVPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Previous Year Period (Var. 0CIPM_FISCPER)</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_CHAEX</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPM_CHRT_ACCTS</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Determine Chart of accounts</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CHRT_ACCTS</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_CSDT2</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CIPM_DATE_KEY_CMP</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Key Date for Comparison</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0DATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_DATE_OPEN</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEPM_DATE_OPEN</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Open on Key Date / Default System date</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0DATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_FI_DOCSTAT_OPEN</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CIPO_FI_DOCSTAT_NI</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Item Status Open (No Input)</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FI_DOCSTAT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_FPER</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CIPM_FISCPER</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Fiscal Year/Period</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCPER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_FVAEX</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPN_FISCVARNT</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Fiscal year variant</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCVARNT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_KEYDT</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEPM_NETDUEDATE</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Key Date for Due Date Analysis</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0P_SIMD1</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CIPM_UC_SIM_ID1</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Simulation ID 1</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0UC_SIM_ID1</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_1ST_QUART</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPO_CQQ1CY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">First Quarter of Current Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALQUARTER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_CLEAR_DATE</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXSO_CLEAR_DATE</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Clearing Date</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(4)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CLEAR_DATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_FC_ERDA</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CESO_ERDAT</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Creation Date</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0ERDAT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_FI_DOCSTAT</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CISO_FI_DOCSTAT</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Item Status</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FI_DOCSTAT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_FI_DOCSTAT1</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CISO_FI_DOCSTAT_NI</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Item Status Cleared/Open (No Input)</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FI_DOCSTAT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_GL_CLRSTAT</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CISO_GL_CLRSTAT</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Clearing Status</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0GL_CLRSTAT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_NETDUEDATE_L0</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_NETDUEDATE_G0</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 0</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(8)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_NETDUEDATE_L1</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_NETDUEDATE_G1</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 1</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(8)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_NETDUEDATE_L2</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_NETDUEDATE_G2</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 2</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(8)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_NETDUEDATE_L3</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_NETDUEDATE_G3</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 3</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(8)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_NETDUEDATE_L4</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_NETDUEDATE_G4</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 4</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(8)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_NETDUEDATE_L5</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_NETDUEDATE_G5</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 5</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(8)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0NETDUEDATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_PSTNG_DATE</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXSO_PSTNG_DATE</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Posting Date</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(5)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0PSTNG_DATE</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0S_SIMR1</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXSO_INVDAT_SIM1</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Invoice Data &lt;= Simulation Run 1</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(2)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">0INVOICEDAT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0T_FIBUCKET0</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0TXPO_FIBUCKET0</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 0 - Text</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(9)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">1TEXT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0T_FIBUCKET1</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0TXPO_FIBUCKET1</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 1 - Text</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(9)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">1TEXT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0T_FIBUCKET2</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0TXPO_FIBUCKET2</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 2 - Text</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(9)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">1TEXT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0T_FIBUCKET3</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0TXPO_FIBUCKET3</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 3 - Text</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(9)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">1TEXT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0T_FIBUCKET4</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0TXPO_FIBUCKET4</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 4 - Text</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(9)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">1TEXT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">0T_FIBUCKET5</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0TXPO_FIBUCKET5</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Due Date Grid 5 - Text</TD><BR /> <TD style="width: 149px;height: 13px" width="103">(9)</TD><BR /> <TD style="width: 146px;height: 13px" width="177">1TEXT</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">none (new)</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_CDCMCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Current Month</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALDAY</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">none (new)</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_CDCQCY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Current Quarter</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALDAY</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">none (new)</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CEIO_CDN365CD</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Next 365 Days</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALDAY</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">none (new)</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXIO_CMPQPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Last Quarter (Comparison) Previous Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALMONTH</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">none (new)</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPO_CQCQPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Current Quarter of Previous Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0CALQUARTER</TD><BR /> </TR><BR /> <TR style="height: 13px"><BR /> <TD style="width: 30px;height: 13px" width="182">none (new)</TD><BR /> <TD style="width: 155px;height: 13px" width="200">0CXPO_FYPY</TD><BR /> <TD style="width: 162px;height: 13px" width="264">Previous Fiscal Year</TD><BR /> <TD style="width: 149px;height: 13px" width="103"></TD><BR /> <TD style="width: 146px;height: 13px" width="177">0FISCYEAR</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> (The table above can be also found in SAP Note <A href="https://launchpad.support.sap.com/#/notes/2857063" target="_blank" rel="noopener noreferrer">2857063</A>)<BR /> <BR /> (1):&nbsp;0CXIO_FPYTCPVCY,&nbsp;0CXIO_FPYTCPVPY<BR /> <P style="padding-left: 40px">The new SAP Exit Variables read selection values from variable&nbsp;0CIPM_FISCPER. The functional equivalent BI_CONT classic variables&nbsp;<EM>0I_BA104</EM> and <EM>0I_BA106</EM>&nbsp;read values from variable&nbsp;<EM>0P_FPER</EM>.</P><BR /> <P style="padding-left: 40px">Therefore, if you replace&nbsp;<EM>0I_BA104</EM>&nbsp;by&nbsp;0CXIO_FPYTCPVCY or&nbsp;<EM>0I_BA106 </EM>by&nbsp;0CXIO_FPYTCPVPY&nbsp;in a BEx Query, you will need also to replace variable&nbsp;<EM>0P_FPER</EM>&nbsp;by 0CIPM_FISCPER.</P><BR /> (2): 0CXSO_INVDAT_SIM1<BR /> <P style="padding-left: 40px">The new SAP Exit Variable reads selection values from variable 0CIPM_UC_SIM_ID1. The functional equivalent BI_CONT classic variable&nbsp;<EM>0S_SIMR1</EM>&nbsp;reads values from variable&nbsp;<EM>0P_SIMD1</EM>.</P><BR /> <P style="padding-left: 40px">Therefore, if you replace <EM>0S_SIMR1</EM> by 0CXSO_INVDAT_SIM1 in a BEx Query, you will need also to replace variable&nbsp;<EM>0P_SIMD1</EM> by 0CIPM_UC_SIM_ID1.</P><BR /> (3):&nbsp;0CXPM_DATE_KEY_CLEAR<BR /> <P style="padding-left: 40px">The new SAP Exit Variable reads selection values from variable 0CIPM_DATE_KEY_CMP. The functional equivalent BI_CONT classic variable <EM>0P_AUGDT&nbsp;</EM>reads values from variable&nbsp;<EM>0P_CSDT2</EM>.</P><BR /> <P style="padding-left: 40px">Therefore, if you replace&nbsp;<EM>0P_AUGDT</EM> by&nbsp;0CXPM_DATE_KEY_CLEAR in a BEx Query, you will need also to replace variable&nbsp;<EM>0P_CSDT2</EM>&nbsp;by 0CIPM_DATE_KEY_CMP.</P><BR /> (4):&nbsp;0CXSO_CLEAR_DATE<BR /> <P style="padding-left: 40px">The new SAP Exit Variable read selection values from variables 0CISO_GL_CLRSTAT, 0CISO_FI_DOCSTAT, 0CISO_FI_DOCSTAT_NI, 0CEPM_DATE_OPEN. The functional equivalent&nbsp;BI_CONT classic variable&nbsp;<EM>0S_CLEAR_DATE</EM>&nbsp;reads values from variables&nbsp;<EM>0S_GL_CLRSTAT, 0S_FI_DOCSTAT, 0S_FI_DOCSTAT1, 0P_DATE_OPEN</EM>.</P><BR /> <P style="padding-left: 40px">Therefore, if you replace&nbsp;<EM>0S_CLEAR_DATE</EM> by&nbsp;0CXSO_CLEAR_DATE in a BEx Query, you will need also to replace the four variables&nbsp;<EM>0S_GL_CLRSTAT, 0S_FI_DOCSTAT, 0S_FI_DOCSTAT1 and 0P_DATE_OPEN</EM> by 0CISO_GL_CLRSTAT, 0CISO_FI_DOCSTAT, 0CISO_FI_DOCSTAT_NI and 0CEPM_DATE_OPEN.</P><BR /> (5):&nbsp;0CXSO_PSTNG_DATE<BR /> <P style="padding-left: 40px">The new SAP Exit Variable read selection values from variables 0CISO_GL_CLRSTAT, 0CISO_FI_DOCSTAT, 0CISO_FI_DOCSTAT_NI, 0CIPO_FI_DOCSTAT_NI 0CEPM_DATE_OPEN. The functional equivalent BI_CONT classic variable&nbsp;<EM>0S_PSTNG_DATE</EM>&nbsp;reads values from variables&nbsp;<EM>0S_GL_CLRSTAT, 0S_FI_DOCSTAT, 0P_FI_DOCSTAT_OPEN, 0S_FI_DOCSTAT1, 0P_DATE_OPEN</EM>.</P><BR /> <P style="padding-left: 40px">Therefore, if you replace&nbsp;<EM>0S_PSTNG_DATE</EM> by&nbsp;0CXSO_PSTNG_DATE in a BEx Query, you will need also to replace the five variables&nbsp;<EM>0S_GL_CLRSTAT, 0S_FI_DOCSTAT, 0P_FI_DOCSTAT_OPEN, 0S_FI_DOCSTAT1 and 0P_DATE_OPEN</EM> by 0CISO_GL_CLRSTAT, 0CISO_FI_DOCSTAT, 0CISO_FI_DOCSTAT_NI, 0CIPO_FI_DOCSTAT_NI and 0CEPM_DATE_OPEN.</P><BR /> (6):&nbsp;0CXPM_LASTNDDTV,&nbsp;0CXPM_LASTPDDTV,&nbsp;0CXSM_LASTCLDTV<BR /> <P style="padding-left: 40px">These new SAP Exit Variables read selection values from variables 0CIIN_FISCPER and 0CXPN_FISCVARNT. The functional equivalent BI_CONT classic variables&nbsp;<EM>0F_LASTDTND_IFPER,&nbsp;0F_LASTDTPD_IFPER and</EM>&nbsp;<EM>0F_LASTDTCD_IFPER</EM>&nbsp;read values from&nbsp;<EM>0I_FPER</EM> and&nbsp;<EM>0P_FVANT. </EM></P><BR /> <P style="padding-left: 40px">Therefore, if you replace&nbsp;<EM>0F_LASTDTND_IFPER by&nbsp;</EM>0CXPM_LASTNDDTV,&nbsp;<EM>0F_LASTDTPD_IFPER by&nbsp;</EM>0CXPM_LASTPDDTV and/or&nbsp;<EM>0F_</EM><EM>LASTDTCD_IFPER</EM>&nbsp;by 0CXSM_LASTCLDTV in a BEx Query, you will need also to replace the two variables&nbsp;<EM>0I_FPER</EM>&nbsp;and&nbsp;<EM>0P_FVANT</EM>&nbsp;by 0CIIN_FISCPER and 0CXPN_FISCVARNT.</P><BR /> <P style="padding-left: 40px"><STRONG>Note:</STRONG><EM>&nbsp;</EM>The used variable for fiscal variant 0CXPN_FISCVARNT (new) is defined now as a SAP Exit variable whereas <EM>0P_FVANT</EM> (classic BI Content variable) is defined as an user input variable.</P><BR /> (7):&nbsp;0CXPM_LASTNDDTV_CMP,&nbsp;0CXPM_LASTPDDTV_CMP,&nbsp;0CXSM_LASTCLDTV_CMP<BR /> <P style="padding-left: 40px">These new SAP Exit Variables read selection values from variables&nbsp;0CIIN_FISCPER_CMP and&nbsp;0CXPN_FISCVARNT.&nbsp;The functional equivalent BI_CONT classic variables&nbsp;<EM>0F_LASTDTND_IFPER,&nbsp;0F_LASTDTPD_IFPER and</EM>&nbsp;<EM>0F_LASTDTCD_IFPER</EM>&nbsp;read values from&nbsp;<EM>0I_FPER2</EM>&nbsp;and&nbsp;<EM>0P_FVANT.</EM></P><BR /> <P style="padding-left: 40px">Therefore, if you replace&nbsp;<EM>0F_LASTDTND_IFPER2</EM> by&nbsp;0CXPM_LASTNDDTV_CMP,&nbsp;<EM>0F_LASTDTPD_IFPER2</EM> by&nbsp;0CXPM_LASTPDDTV_CMP and/or&nbsp;<EM>0F_LASTDTCD_IFPER2</EM>&nbsp;by 0CXSM_LASTCLDTV_CMP in a BEx Query, you will need also to replace the two variables&nbsp;<EM>0I_FPER</EM>&nbsp;<EM>and&nbsp;0P_FVANT</EM>&nbsp;by 0CIIN_FISCPER_CMP and 0CXPN_FISCVARNT.</P><BR /> <P style="padding-left: 40px"><STRONG>Note:</STRONG><EM>&nbsp;</EM>The used variable for fiscal variant 0CXPN_FISCVARNT (new) is defined now as a SAP Exit variable whereas <EM>0P_FVANT</EM> (classic BI Content variable) is defined as an user input variable.</P><BR /> (8): 0CXIO_NETDUEDATE_G0, 0CXIO_NETDUEDATE_G1, 0CXIO_NETDUEDATE_G2,&nbsp; 0CXIO_NETDUEDATE_G3, 0CXIO_NETDUEDATE_G4, 0CXIO_NETDUEDATE_G5<BR /> <P style="padding-left: 40px">These new SAP Exit Variables read selection values from variables&nbsp;0CEPM_DATE_OPEN and 0FIPO_GRID_WIDTH. The functional equivalent BI_CONT classic variables<EM> 0S_NETDUEDATE_L0,&nbsp;0S_NETDUEDATE_L1,&nbsp;0S_NETDUEDATE_L2,&nbsp; 0S_NETDUEDATE_L3,&nbsp;0S_NETDUEDATE_L4 and 0S_NETDUEDATE_L5</EM> read values from&nbsp;<EM>0P_DATE_OPEN and 0DPM_BV0</EM>.</P><BR /> <P style="padding-left: 40px">Therefore, if you replace <EM>0S_NETDUEDATE_L0 </EM>by 0CXIO_NETDUEDATE_G0,<EM> 0S_NETDUEDATE_L1 </EM>by 0CXIO_NETDUEDATE_G1,<EM> 0S_NETDUEDATE_L2 </EM>by 0CXIO_NETDUEDATE_G2,<EM> 0S_NETDUEDATE_L3 </EM>by 0CXIO_NETDUEDATE_G3,<EM> 0S_NETDUEDATE_L4 </EM>by 0CXIO_NETDUEDATE_G4<EM> and/or 0S_NETDUEDATE_L5</EM> by 0CXIO_NETDUEDATE_G5 in a BEx Query, you will need also to replace the two variables <EM>0P_DATE_OPEN and 0DPM_BV0</EM> by 0CEPM_DATE_OPEN and 0FIPO_GRID_WIDTH.</P><BR /> (9): 0TXPO_FIBUCKET0, 0TXPO_FIBUCKET1, 0TXPO_FIBUCKET2, 0TXPO_FIBUCKET3,&nbsp; 0TXPO_FIBUCKET4, 0TXPO_FIBUCKET5<BR /> <P style="padding-left: 40px">These new SAP Exit Text-Variables read selection values from variables&nbsp;0CEPM_NETDUEDATE and 0FIPO_GRID_WIDTH. The functional equivalent BI_CONT classic variables&nbsp;<EM>0T_FIBUCKET0</EM>,&nbsp;<EM>0T_FIBUCKET1, 0T_FIBUCKET2, 0T_FIBUCKET3, 0T_FIBUCKET4 and 0T_FIBUCKET5 </EM>read values from <EM>0P_KEYDT</EM>&nbsp;<EM>and</EM>&nbsp;<EM>0DPM_BV0.</EM></P><BR /> <P style="padding-left: 40px">Therefore, if you replace <EM>0T_FIBUCKET0</EM> by 0TXPO_FIBUCKET0, <EM>0T_FIBUCKET1</EM> by 0TXPO_FIBUCKET1, <EM>0T_FIBUCKET2</EM> by 0TXPO_FIBUCKET2, <EM>0T_FIBUCKET3</EM> by 0TXPO_FIBUCKET3, <EM>0T_FIBUCKET4</EM> by 0TXPO_FIBUCKET4 and/or <EM>0T_FIBUCKET5</EM> by 0TXPO_FIBUCKET5 in a BEx Query, you will need also to replace the two variables <EM>0P_KEYDT</EM> and <EM>0DPM_BV0</EM> by 0CEPM_NETDUEDATE and 0FIPO_GRID_WIDTH.</P><BR /> (10): 0CEPO_CMPMCY is defined as "Ready for Input", whereas 0CMLMON is not defined as "Ready for Input".<BR /> <BR /> <STRONG><EM>I cannot find the SAP Exit Variable in the list, what can I do?</EM></STRONG><BR /> <BR /> If your SAP Exit Variable is not included in the list, it is still possible that one of the standard variables can fulfill your requirement. For example you are looking for a SAP Exit Variable that computes the current quarter based on calendar quarter. Although there is not such SAP Exit variable provided by the standard, there is however a standard SAP Exit variable available that restricts the query to the current quarter based on calendar day (0CXIO_CDCQCY) and could be used instead.<BR /> <BR /> For missing SAP Exit variables on time characteristics you may also want to consider <A href="https://help.sap.com/viewer/107a6e8a38b74ede94c833ca3b7b6f51/LATEST/en-US/699cff5bd7a34c83975fa5eb5cb28a1c.html" target="_blank" rel="noopener noreferrer">Replacement Path variables from variables</A>. With this functionality you can define own variables accessing the value(s) of another SAP Exit variable, with the flexibility to read for example only a subset of the computed variable value (can be used to derive e.g. month from a calendar day SAP-Exit Variable), access the lower range limit (from value) or the upper range limit (to value) in case of an interval variable, and/or working with offsets (e.g. current calendar month -3).<BR /> <BR /> <STRONG><EM>No, there is no other SAP Exit Variable I can use and replacement path variables do not fill my gap. What can I do?</EM></STRONG><BR /> <BR /> In this case the only option is as discussed in SAP Note <A href="https://launchpad.support.sap.com/#/notes/2673734" target="_blank" rel="noopener noreferrer">2673734</A>:<BR /> <BR /> "In general, we recommend in such case to copy the missing DDIC and/or ABAP objects to the customer namespace and to adjust the BW objects accordingly. This will then allow you to use the objects in SAP BW/4HANA or transfer them to compatible objects." 2020-06-09T16:43:30+02:00 https://community.sap.com/t5/technology-blogs-by-members/will-analytics-cloud-sac-put-an-end-to-the-agony-of-choice/ba-p/13483007 Will Analytics Cloud (SAC) put an end to the agony of choice? 2020-08-31T21:35:45+02:00 former_member243471 https://community.sap.com/t5/user/viewprofilepage/user-id/243471 Since Business Explorer (BEX) Suite was introduced, back in 1998, SAP’s portfolio of Business Intelligence (BI) tools has continued to grow. The first major boost came in 2007 with the acquisitions of BusinessObjects (BO) as well as Outlooksoft (BPC) and their software products. In 2015 the now called Analytics Cloud was introduced enhancing the portfolio once more. By then, however, a point had been reached where it became difficult to keep track. This vast selection of different products lacked a clear roadmap and guidance for SAP customers. And making the right decision for a future proof BI frontend was a hard thing to do given the diversity.<BR /> <BR /> The result: customers started to use a confusing variety of tools. This could be just the BEX suite as it is still in maintenance, a mixture of different BO products or even a mixture of BO and BEX. In addition, and quite understandably, many customers intended to protect their investments and consider every new tool introduction carefully, without knowing if their current tools are future proof and meet their future demand.<BR /> <H3 id="toc-hId-1065299337"><STRONG>Cloud first provides for new direction </STRONG></H3><BR /> Given SAP’s strategy of pushing cloud software and services, it now appears that one of the analytical frontends could outshine the others. Analytics Cloud (SAC) is the product, which introduces future improvements, very frequent enhancements and bug fixing. Today already, the most common use cases like standard reporting, dashboards, planning or ad hoc analytics are covered by SAC. The tool itself, from our experience, seems a lot more intuitive, especially compared to BO Web Intelligence or Lumira. Clearly, SAP has learned a lesson and again shows better guidance in terms of choosing the right analytics frontends. Since 2020 SAP Analytics Cloud features a new add-in for Microsoft Excel, which also works with web-based versions of the Office suite. It seems, that SAP now succeeds in consolidating the BEX and BO products and moving them to a modern future-proof environment.<BR /> <H3 id="toc-hId-868785832"><STRONG>Possible migration paths</STRONG></H3><BR /> In many blogs and SAP notes there are hints, that Analytics Cloud is the recommended successor of the above-mentioned products. So, the ultimate question no longer seems to be ‘Which tool to choose’ but ‘When and how to migrate’.<BR /> <BR /> The following matrix shows a high-level overview of possible migration scenarios. It does not cover every detail but should give some hints on risks and chances.<BR /> <BR /> &nbsp;<BR /> <TABLE><BR /> <TBODY><BR /> <TR><BR /> <TD width="201"><STRONG>&nbsp;</STRONG></TD><BR /> <TD width="201"><STRONG>Analytics Cloud</STRONG></TD><BR /> <TD width="201"><STRONG>SAC Excel add-in</STRONG></TD><BR /> </TR><BR /> <TR><BR /> <TD width="201"><STRONG>BEX</STRONG></TD><BR /> <TD width="201"></TD><BR /> <TD width="201"></TD><BR /> </TR><BR /> <TR><BR /> <TD width="201">Web Application Designer</TD><BR /> <TD width="201">Simple applications can be migrated to SAC; complex applications can be rebuilt with SAC Application Designer, which offers scripting capabilities</TD><BR /> <TD width="201">-</TD><BR /> </TR><BR /> <TR><BR /> <TD width="201">Analyzer</TD><BR /> <TD width="201">Excel based analytics could be moved to a web-based approach; this would reduce maintenance costs, especially when updating</TD><BR /> <TD width="201">Simple and intermediate analytic scenarios should already be covered; complex workbooks with heavy use of scripting need to be checked; a solution might be to rebuild them with SAC application designer</TD><BR /> </TR><BR /> <TR><BR /> <TD width="201">Query Designer</TD><BR /> <TD width="201">Queries don’t need to be adapted; SAC can read BW queries; in some cases, it is sensible to directly access Composite Providers</TD><BR /> <TD width="201">Queries don’t need to be adapted; SAC can read BW Queries; in some cases, it is sensible to directly access Composite Providers</TD><BR /> </TR><BR /> <TR><BR /> <TD width="201"></TD><BR /> <TD width="201"></TD><BR /> <TD width="201"></TD><BR /> </TR><BR /> <TR><BR /> <TD width="201"><STRONG>BusinessObjects</STRONG></TD><BR /> <TD width="201"></TD><BR /> <TD width="201">-</TD><BR /> </TR><BR /> <TR><BR /> <TD width="201">Web Intelligence</TD><BR /> <TD width="201">Simple applications can be migrated to SAC; complex applications can be rebuilt with the SAC Application Designer, which offers scripting capabilities</TD><BR /> <TD width="201">-</TD><BR /> </TR><BR /> <TR><BR /> <TD width="201">Lumira</TD><BR /> <TD width="201">By now there is no way to migrate or import Lumira applications into SAC; a migration approach would be similar to Web Intelligence or BEX Analyzer</TD><BR /> <TD width="201">-</TD><BR /> </TR><BR /> <TR><BR /> <TD width="201">EPM</TD><BR /> <TD width="201">SAC is integrated with BPC; there is a chance to move reporting and even planning from an excel-based solution&nbsp; to a web-based approach</TD><BR /> <TD width="201">The SAC Excel add-in allows access to SAC data models and also an integration with BPC; BPC functionality like confirming tasks etc. needs to be checked</TD><BR /> </TR><BR /> <TR><BR /> <TD width="201">Analysis for Office</TD><BR /> <TD width="201">Similar as for EPM and BEX Analyzer, there is an opportunity to find out if some or even all excel-based applications can be moved to SAC</TD><BR /> <TD width="201">Most reporting and analytics functionality is already covered; access to data models is now managed via SAC; as soon as SAC is established within a cmpany, excel users can access the same models</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> &nbsp;<BR /> <H3 id="toc-hId-672272327"><STRONG>Getting prepared</STRONG></H3><BR /> There are a number of prerequisites when migrating to SAC. Most are of a technical nature, e.g. network settings and upgrades to related systems. Existing dashboards and standard reports for example can already be replaced. But switching to a modern tool like SAC creates much more opportunities, especially through the features that enable BI self-service. However, these require more preparation than just technical migrations: organizational changes for example, like establishing a decent key user structure and a well-defined authorization concept.<BR /> <BR /> Further technical improvements with SAC strongly depend on the available data sources. Often, a data warehouse like SAP BW is one of the main data sources, delivering a harmonized data model. To allow self-service analytics for non-technical users, all directly accessible datawarehouse layers should have a clear, easily understandable structure, which is also free from inconsistencies. For instance, the harmonization of master data (like InfoObjects) is a key aspect.<BR /> <BR /> &nbsp;<BR /> <H3 id="toc-hId-475758822"><STRONG>Conclusion</STRONG></H3><BR /> Bottom-line of recent hands-on experience with SAC: the product has matured a lot. As of yet, it offers good coverage of many BI and analytics scenarios and shows constantly growing stability – enough reason for SAP customers to prepare for migration and leave their on-premise frontends behind. Still, introducing SAC in an organization is not a quick and easy task. Many users are in doubt about the move and are seeking advice. With good support from SAP and external partners, adopting SAC is a worthwhile endeavor and a meaningful project to start. Always remember that having top management support is a very decisive factor and starting with a small but well-chosen set of reports and analytic applications is the beginning of a rewarding journey. 2020-08-31T21:35:45+02:00 https://community.sap.com/t5/technology-blogs-by-sap/bex-3-x-7-x-to-afo-2-x-automated-mass-conversion-tool-v2-2/ba-p/13463627 BEx 3.x/7.x to AfO 2.x Automated Mass Conversion Tool v2.2 2020-11-18T08:41:41+01:00 mo_ezzat https://community.sap.com/t5/user/viewprofilepage/user-id/597901 <H1 id="toc-hId-805292685">Introduction</H1><BR /> Hello everyone, I am back again with a very interesting topic, the Automated Mass Conversion Tool v2.2, it will be my pleasure to walk you through the newest features that I added to the previous version that was firstly introduced by my colleague <SPAN class="mention-scrubbed">bhargavmalsani.dayanand</SPAN> in <A href="https://blogs.sap.com/2017/07/12/automated-mass-migrationconvertion-of-bex-workbook-to-ao-2.x/" target="_blank" rel="noopener noreferrer">this blog.</A><BR /> <H2 id="toc-hId-737861899">What is the Mass Conversion Tool?</H2><BR /> The Mass Conversion Tool was internally developed by SAP to accelerate and facilitate the conversion process from BEx (Analyzer) Workbooks to Analysis for Microsoft Office Workbooks.<BR /> <BR /> The Automated Mass Conversion Tool is 6x to 8x faster than the manual conversion method, conversion of 100 Workbooks take around 5-6 Minutes, compared to at least 30 seconds per one workbook in case of manual conversion.<BR /> <BR /> This is a screenshot for a real run on 100 Workbooks that were converted in 5:44 minutes, after successfully setting up the tool on the customer's environment:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/Loading.png" /></P><BR /> &nbsp;<BR /> <H2 id="toc-hId-541348394">When is the conversion process mandatory?</H2><BR /> <UL><BR /> <LI>If you are migrating to BW/4HANA, as BEx Analyzer will not be able to access the BW/4HANA system.</LI><BR /> <LI>If you are upgrading your Microsoft Office landscape to 64bit Edition, as BEx Analyzer only runs on Excel 32bit Edition</LI><BR /> </UL><BR /> More information about the maintenance strategy for BW BEx Explorer can be found in note number <A href="https://launchpad.support.sap.com/#/notes/1322923" target="_blank" rel="noopener noreferrer">1322923.</A><BR /> <H1 id="toc-hId-215752170">New Features:</H1><BR /> <H2 id="toc-hId-148321384">Rename workbooks after conversion</H2><BR /> Standardize the naming convention of the converted workbooks, by simply providing a CSV file containing the Workbook ID, Destination Role ID, and New Workbook ID.<BR /> <TABLE style="height: 56px" width="198"><BR /> <TBODY><BR /> <TR style="height: 14px"><BR /> <TD style="height: 14px" width="64">WID</TD><BR /> <TD style="height: 14px" width="66">Role</TD><BR /> <TD style="height: 14px" width="68">WBName</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="height: 14px">3FAFDUZNSGVNIHLO63YTUX9HA</TD><BR /> <TD style="height: 14px">ZE_ROLE1</TD><BR /> <TD style="height: 14px">AFOWB_1</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="height: 14px">3VYKQU1PO9DKICADNOPQN0G70</TD><BR /> <TD style="height: 14px">ZE_ROLE2</TD><BR /> <TD style="height: 14px">AFOWB_2</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="height: 14px">1JW9S8WCDXYZ277J3NDNAVHH8</TD><BR /> <TD style="height: 14px">ZE_ROLE3</TD><BR /> <TD style="height: 14px">AFOWB_3</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/tempsnip-2.png" /></P><BR /> <P class="image_caption" style="font-style: italic;font-family: SAPRegular, 'Helvetica Neue', Arial, sans-serif;text-align: left">&nbsp; &nbsp; &nbsp;Workbook IDs after Conversion</P><BR /> <BR /> <H2 id="toc-hId--48192121">Converted workbooks can now be opened using 64bit Excel:</H2><BR /> This was a limitation even in the manual conversion method, when a workbook is converted the leftover code from BEx Analyzer remains, in order to surpass it, the 3 default VBA modules must be manually deleted, or "Declare PtrSafe" must be written before each Sub.<BR /> <BR /> In the new version of the tool, you do not have to worry about that, you are just one checkbox away from solving it.<BR /> <H2 id="toc-hId--244705626">Saving to multiple different roles:</H2><BR /> This feature allows the converted workbooks to be saved to multiple different workbooks, they can be their original roles or entirely new ones.<BR /> <BR /> For example WB1 to Role1, WB2 to Role2, and WB3 to WB3, a csv can be provided to identify the workbook technical ID and destination role, as shown below:<BR /> <TABLE style="height: 56px" width="283"><BR /> <TBODY><BR /> <TR style="height: 14px"><BR /> <TD style="height: 14px" width="219">WID</TD><BR /> <TD style="height: 14px" width="64">Role</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="height: 14px">3FAFDUZNSGVNIHLO63YTUX9HA</TD><BR /> <TD style="height: 14px">ZE_ROLE1</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="height: 14px">3VYKQU1PO9DKICADNOPQN0G70</TD><BR /> <TD style="height: 14px">ZE_ROLE2</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="height: 14px">1JW9S8WCDXYZ277J3NDNAVHH8</TD><BR /> <TD style="height: 14px">ZE_ROLE3</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> <H2 id="toc-hId--441219131">Workbook branding options:</H2><BR /> Gain advantage of the conversion service by rebranding or standardizing the layout of your old workbooks, the following options are now available to be applied to the converted workbooks:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/Styling1-1.png" /><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/Styling2-1.png" /></P><BR /> A screenshot for a workbook before conversion:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/Before-2.png" /></P><BR /> The workbook had 2 images, the filter and information buttons were clicked, there was no descriptive title, there were the Author and Status of Data info fields in the range below the title.<BR /> <BR /> This is the same workbook after conversion using the options in Advanced Conversion Settings in the first screenshot:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/after-3.png" /></P><BR /> <BR /> <UL><BR /> <LI>The images were removed and replaced by SAP logo and the orange line.</LI><BR /> <LI>The 3 buttons from Analyzer were removed, whether they were opened or closed.</LI><BR /> <LI>A descriptive title was captured from the workbook description, centralized and added in merged cells.</LI><BR /> <LI>The whole workbook was colored white.</LI><BR /> <LI>The old info field was removed and replaced by Query Created By, Data Source Name, Last Date Update and Key Date were added, using a different font for the title and the value.</LI><BR /> <LI>Rows between 1:4 were deleted.</LI><BR /> <LI>Rows between 1:5 were inserted to be populated by the info fields.</LI><BR /> </UL><BR /> <STRONG>Note:</STRONG><BR /> <UL><BR /> <LI>The table styling cannot be applied in this version, it will always reset to the AfO default blue theme.</LI><BR /> <LI>Workbook styling will be applied to the main sheet, not all of them, this is a current limitation that I will be working on.</LI><BR /> </UL><BR /> <H1 id="toc-hId--766815355">Conclusion:</H1><BR /> The new version is not only about conversion, it offers an opportunity to:<BR /> <UL><BR /> <LI>Make all of the converted workbooks 64bit Compatible.</LI><BR /> <LI>Redistribution of the workbooks among different roles.</LI><BR /> <LI>Standardize workbooks format or entirely change the design.</LI><BR /> <LI>Standardize the naming convention for the converted workbooks.</LI><BR /> </UL><BR /> This service is available for both <STRONG>Max Attention(Premium Enagaments)</STRONG> and <STRONG>Professional Services customers</STRONG>, if you would like to request it or find out more about it please contact your <STRONG>Engagement Architect</STRONG>, <STRONG>Technical Quality Manager</STRONG>, <STRONG>Account Manager</STRONG> or you can reach out to the <STRONG>contacts below.</STRONG><BR /> <BR /> This blog post will be updated whenever a new feature is rolled out.<BR /> <BR /> Lastly I would like to give well deserved credit to my colleague <SPAN class="mention-scrubbed">mike.luang-khot1</SPAN> who played a major role in the development of the first version of the tool, and also played a crucial part in this version by thoroughly explaining the tool's primary code to me, without his help these features would not have been possible.<BR /> <H2 id="toc-hId--834246141"><STRONG>SAP Stakeholders can reach out to the following contacts based on their region:</STRONG></H2><BR /> <H2 id="toc-hId--683505289">CoE EMEA Contacts:</H2><BR /> &nbsp;<BR /> <BR /> <SPAN class="mention-scrubbed">m.ezzat</SPAN> Germany CoE, Analytics, Customer Success<BR /> <BR /> <SPAN class="mention-scrubbed">carsten.egner</SPAN>&nbsp; Germany CoE, Analytics, Customer Success<BR /> <BR /> &nbsp;<BR /> <H2 id="toc-hId--880018794">CoE North America Contacts:</H2><BR /> &nbsp;<BR /> <BR /> <SPAN class="mention-scrubbed">mandanna.mu</SPAN> CoE Analytics, Customer Success<BR /> <BR /> Selvakumar Sithavan CoE Analytics, Customer Success<BR /> <BR /> &nbsp;<BR /> <H2 id="toc-hId--1076532299">CoE Ireland Contacts:</H2><BR /> &nbsp;<BR /> <BR /> <SPAN class="mention-scrubbed">muralikrishnan.e</SPAN> CoE Analytics, Customer Success<BR /> <BR /> Ram Ravi Srinivas CoE Analytics, Customer Success<BR /> <BR /> &nbsp;<BR /> <BR /> Thank you for reading this, I hope it was interesting and comprehensive enough, please do not hesitate to ask any questions, provide feedback, or suggest any further enhancements. 2020-11-18T08:41:41+01:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-data-warehouse-cloud-consume-sap-bw-based-queries/ba-p/13468379 SAP Data Warehouse Cloud: Consume SAP BW based Queries 2020-11-20T09:39:43+01:00 former_member136842 https://community.sap.com/t5/user/viewprofilepage/user-id/136842 <H1 id="toc-hId-805438914">Introduction</H1><BR /> SAP Data Warehouse Cloud (DWC) is designed to extend the existing Enterprise Data Warehouse into the Cloud under the lead of the LoB users. Due to its easy to use design, look and feel, Data Harmonization tasks can be achieved directly within your LoB Departments with very little IT involvment.<BR /> <BR /> When we talk about SAP BW Data Model and exposing logic out of SAP BW we talk about BEx/BW Queries. These Queries will be used to expose a Data set to the Front- End such as SAP Analytics Cloud for Data visualization.<BR /> <BR /> We can re- use these Queries in order to expose this logic to DWC aswell. In that case you can secure your TCO that you invested in the past into your SAP BW Data Model.<BR /> <H1 id="toc-hId-608925409"></H1><BR /> <H1 id="toc-hId-412411904">Versioning</H1><BR /> <TABLE style="border-collapse: collapse;width: 100%" border="1"><BR /> <TBODY><BR /> <TR style="height: 14px"><BR /> <TD style="width: 50%;height: 14px;background-color: #f0ab00"><STRONG>Document Version</STRONG></TD><BR /> <TD style="width: 50%;height: 14px;background-color: #cccccc">0.1</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="width: 50%;height: 14px;background-color: #f0ab00"><STRONG>Document Date</STRONG></TD><BR /> <TD style="width: 50%;height: 14px;background-color: #cccccc">19.11.2020</TD><BR /> </TR><BR /> <TR style="height: 14px"><BR /> <TD style="width: 50%;height: 14px;background-color: #f0ab00"><STRONG>DWC Version</STRONG></TD><BR /> <TD style="width: 50%;height: 14px;background-color: #cccccc">2020.23.56</TD><BR /> </TR><BR /> </TBODY><BR /> </TABLE><BR /> <H1 id="toc-hId-215898399"></H1><BR /> <H1 id="toc-hId-19384894">Prerequisites</H1><BR /> In order to follow this Blog you need the following prerequisites fulfilled:<BR /> <OL><BR /> <LI>You have meet the DWC <A href="https://help.sap.com/viewer/d4f3c5a0bb074d09ae9b42b2b9bd7a08/cloud/en-US/2f23baa36782474899b7693f68f23635.html" target="_blank" rel="noopener noreferrer">System requirements</A></LI><BR /> <LI>Your DWC Tenant is <A href="https://help.sap.com/viewer/9f804b8efa8043539289f42f372c4862/cloud/en-US/f1a39d1a763e48c8872f45c110a5a4e2.html" target="_blank" rel="noopener noreferrer">connected</A> to your SAP BW</LI><BR /> <LI>You are using the SAP ABAP connection Tile</LI><BR /> <LI>You have a BEx/BW Query</LI><BR /> <LI>None of the limitations apply<BR /> <UL><BR /> <LI>SAP BW on HANA <A href="https://help.sap.com/viewer/93bea049296a41508d972e117149f784/7.5.19/en-US/4bc347cd494650e9e10000000a15822b.html" target="_blank" rel="noopener noreferrer">Limitations</A></LI><BR /> <LI>SAP BW/4HANA <A href="https://help.sap.com/viewer/107a6e8a38b74ede94c833ca3b7b6f51/2.0.6/en-US/4bc347cd494650e9e10000000a15822b.html" target="_blank" rel="noopener noreferrer">Limitations</A></LI><BR /> </UL><BR /> </LI><BR /> </OL><BR /> <H1 id="toc-hId--177128611"></H1><BR /> <H1 id="toc-hId--373642116">Consume SAP BW based Queries</H1><BR /> In order to consume your Queries within DWC, we have to mark your Query as an InfoProvider. Without doing this, the Query wont show up within DWC. So the general Overview looks like the following:<BR /> <OL><BR /> <LI>Identify your Query</LI><BR /> <LI>Mark the Query as InfoProvider within SAP BW</LI><BR /> <LI>Use it in your Graphical View</LI><BR /> </OL><BR /> <H2 id="toc-hId--441072902">Identify your Query</H2><BR /> In our case i created a simple Query for demoing. My Query is called <EM>CP02Q01_SALOVE</EM> and the definition looks like the following:<BR /> <BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/2020-11-19_15-10-23.png" /><BR /> <BR /> Not a beauty, but does the trick.<BR /> <H2 id="toc-hId--637586407">Mark the Query as InfoProvider</H2><BR /> This part is mission critical. If we do not mark the Query as InfoProvider, the view out of DWC looks as follows:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/2020-11-19_17-03-31.png" /></P><BR /> &nbsp;<BR /> <H3 id="toc-hId--705017193">Mark your Query as InfoProvider</H3><BR /> <OL><BR /> <LI>Log- On to your SAP BW</LI><BR /> <LI>Launch Transaction <EM>RSRT</EM></LI><BR /> <LI>Select your Query<IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/2020-11-19_15-13-32.png" /></LI><BR /> <LI>Hit the <EM>Properties</EM> button</LI><BR /> <LI>Select <EM>Query is used as InfoProvider</EM><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/2020-11-19_15-14-28.png" /><SPAN style="color: #ff0000"><STRONG>Please remark:</STRONG></SPAN> If you get a notification telling you that your Query cannot be used as an InfoProvider, please check the limitations that apply when using a Query as an InfoProvider.</LI><BR /> </OL><BR /> As of now, we can see our Query within DWC:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/2020-11-19_17-02-37.png" /></P><BR /> <BR /> <H2 id="toc-hId--683359060"></H2><BR /> <H2 id="toc-hId--879872565">Use it in your Grapical View</H2><BR /> At the end we are now finally able to use the Query within a Graphical View. In the first hand we import it:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/2020-11-20_09-30-21.png" /></P><BR /> Whereas afterwards it is ready to use within our Graphical View:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2020/11/2020-11-20_09-33-55.png" /></P><BR /> <BR /> <H1 id="toc-hId--782983063"></H1><BR /> <H1 id="toc-hId--979496568">Further Information</H1><BR /> If you seek for further DWC Information material, hit the <A href="https://saphanajourney.com/data-warehouse-cloud/" target="_blank" rel="nofollow noopener noreferrer">DWC Product Page</A>.<BR /> <BR /> You need more help during your Implementation? Check the <A href="https://help.sap.com/viewer/product/SAP_DATA_WAREHOUSE_CLOUD/cloud/en-US" target="_blank" rel="noopener noreferrer">Product documentation</A> for helpful implementation Guides.<BR /> <BR /> Want to know whats coming up in the DWC Universe? Check the <A href="https://roadmaps.sap.com/board?PRODUCT=73555000100800002141&amp;range=CURRENT-LAST" target="_blank" rel="noopener noreferrer">DWC Roadmap</A>.<BR /> <BR /> Regards<BR /> -Seb. 2020-11-20T09:39:43+01:00 https://community.sap.com/t5/technology-blogs-by-members/enabling-cold-store-data-access-using-view-for-external-access-the-8-view/ba-p/13493750 Enabling cold store data access using view for external access (The ‘8’ View) for aDSOs in BW reports with mixed modelling scenario 2021-04-15T14:10:59+02:00 Abhishek_Hazra https://community.sap.com/t5/user/viewprofilepage/user-id/170510 Greetings !<BR /> <BR /> As promised in my earlier <A href="https://blogs.sap.com/2021/04/13/view-for-external-access-the-8-view-for-adsos-in-bw-4hana-2.0-mixed-modelling/" target="_blank" rel="noopener noreferrer">blog post</A>, in this article I will be explaining the possibilities of using the view for external access or the external SAP HANA SQL view for aDSOs or the generated '8' view of aDSOs. The main idea is to gain optimum performance avoiding unnecessary access to cold storage when only Hot data is requested. For details about the '8' view please have a look into the above mentioned blog post link.<BR /> <BR /> For this illustration, I will use the same aDSO used for the earlier blog post : SALESADSO, which has some sample sales data for calendar year 2019 &amp; 2020. Executing suitable DTO rule, I have moved all the data residing in partitions covering calendar year 2019 to external cold storage (IQ). So, the view for external access for the aDSO : <STRONG>/BIC/ASALESADSO8</STRONG>, has the <STRONG>COLD_STORE_FLAG</STRONG> column populated as : 'X' for all data belonging to year 2019 &amp; ' ' for all data belonging to year 2020.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/dto-3.jpg" /></P><BR /> Now let's think about consuming this view into a BW data model using mixed modelling architecture in such a way that unless a request has been made to cold store data, it should not access the cold store causing unnecessary performance penalty.<BR /> <BR /> Meaning, we will build a calculation view based on the '8' view &amp; then consume the calculation view into a composite provider &amp; finally a report on top of the composite provider. The purpose is to explore how can we determine the access to cold store data exposing the flag as a consumer of single value input variable in the application layer of reporting.<BR /> <BR /> Now the challenge is that if we simply expose the field COLD_STORE_FLAG as a variable in the report through the HCPR, user can select either<STRONG> ' '</STRONG> (<STRONG>blank or empty string, no whitespace</STRONG>) or 'X'&nbsp; if we build a single value input variable in frontend, which is the goal here, we could potentially have a multi input variable which can request both the data. But I will try to explain how to build a solution using single value input variable around this flag. The challenge with this approach is if a user, for example, requests data from December 2019 to February 2020 in report, &amp; selects based on the flag values available with just the field exposed as it is, user can see either 2019 year's data (if user selects COLD_STORE_FLAG = 'X') or&nbsp; 2020 year's data (if selected ' '). But with selection of 'X' we need to secure that the user is able to access both 2019 &amp; 2020 years' data. This situation can be handled in multiple ways :<BR /> <OL><BR /> <LI>By using multiple input variable where user needs to select both the values for COLD_STORE_FLAG in such situations.</LI><BR /> <LI>By handling it using an input parameter &amp; necessary filter criteria in calculation view.</LI><BR /> <LI>By using a step 2 exit variable where for user input 'X' against flag value, the step 2 variable can pass '*' (all) as a filter to COLD_STORE_FLAG column.</LI><BR /> </OL><BR /> I will explain the second approach in this blog post, which is handling of the flag completely in calculation view level. I would explaiin two ways of doing it :<BR /> <BR /> <STRONG>Approach#1 : using single input parameter :</STRONG><BR /> <BR /> First step is to consume the view in a calculation view&nbsp; in below way:<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/CLView.jpg" /></P><BR /> I have made 2 nodes out of the view called HDB &amp; HDB_IQ. In HDB I have placed a filter on COLD_STORE_FLAG = ''. So, it contains only data from the hot data store (Active Data Table of aDSO), while the other node has no filter, containing all the data combining hot &amp; cold storage.<BR /> <BR /> In the node Union_1, I have created a new target column : CS_FLAG, with custom constant mapping of the node values as ' ' (HDB) and 'X' (HDB_IQ). This way the pruning is secured.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/union.jpg" /></P><BR /> I have created an input parameter called <STRONG>IP_CS_FLAG (Access Cold Store)</STRONG> as optional single input of type VARCHAR &amp; length 1. This is to pushdown the filter with flag value passed from application layer on access of the data tiering storage by using a filter expression.<BR /> <BR /> <STRONG>If no value is passed through it, the takes the unassigned value, thus only requesting the hot store data avoiding the extra traffic to access the external cold storage.</STRONG><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/iParam1.jpg" /></P><BR /> Coming to the fact that the COLD_STORE_FLAG can have 2 possible values with enabling Cold Storage &amp; movement of some data into it ie. 'X' for cold store data &amp; ' ' for hot store data.<BR /> <BR /> Now in our reports, we want to have a universal variable which enables users to select if<BR /> <OL><BR /> <LI>They want to access data from cold storage('X') - this may lead to some performance penalty</LI><BR /> <LI>Or they just want to access the recent data residing in Hot storage of HANA nodes(' ').For securing no data loss while selecting the variable as 'X', we need to access both HANA &amp; IQ (Cold store) data when user selects the variable value as 'X', to handle cases like accessing data from a period which overlaps between hot &amp; cold storage.</LI><BR /> </OL><BR /> The above scenario is handled using the filter in node 'Aggregation_2' using a filter on the created target column : CS_FLAG &amp; restricting it on the input parameter value.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/filter-1.jpg" /></P><BR /> The filter expression basically reads the input parameter value passed, if it comes with a value 'X' (user requests data from both Hot &amp; Cold store), we set the CS_FLAG to go through the HDB_IQ node as per the definition of the field pruning &amp; both 2019 &amp; 2020 years' data are requested, if the input parameter is not fed or filled with blank value ie. ' ', then according to the constant mapping it should only look through the HDB node with ' ' values for the flag, ensuring only Hot store data is selected &amp; no cold store table is accessed causing unnecessary performance penalty.<BR /> <BR /> Now, let's just make a select query on the calculation view without passing any input parameter value :<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/output1.jpg" /></P><BR /> We can see it only picks the data relevant for year 2020 where the COLD_STORE_FLAG is blank. A planviz shows that the executed plan hits only the Active data table residing in hot store.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/plv.jpg" /></P><BR /> Now, let's execute a select query on the same again but this time with the input parameter value filled in as 'X'.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/output2-1.jpg" /></P><BR /> And this time it shows all the data irrespective of the flag value both from hot &amp; cold store for year 2019 &amp; 2020. The planviz shows it hits both cold store table &amp; active data table this time.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/plv1.jpg" /></P><BR /> &nbsp;<BR /> <BR /> <STRONG>Approach#2 : Using double input parameters</STRONG><BR /> <BR /> Create a calculation view with two input parameters. One input parameter for taking the user input as to determine if access the cold store is needed or not &amp; the other one is to derive the actual filter value to pass for COLD_STORE_FLAG column.<BR /> In this case, we have IP_USER_INPUT input parameter to intake the user input, with default value blank &amp; the other one is IP_CS_FLAG, which is derived using a stored procedure. The stored procedure has the input parameter which is fed by the first input parameter &amp; then if user selects 'X', it passes '*'(both Hot &amp; Cold Store should be accessed), else blank(only Hot data store is accessed).<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/CV-2.jpg" /></P><BR /> Now let's create a procedure&nbsp; which can take the IP_USER_INPUT as input parameter &amp; populate &amp; return the value of COLD_STORE_FLAG as a feeder to IP_CS_FLAG.<BR /> <BR /> The logic of which is as below :<BR /> <PRE class="language-sql"><CODE>CREATE PROCEDURE "ZCSFLAG" ( <BR /> IN IP_USER_INPUT NVARCHAR(1), <BR /> OUT IP_CS_FLAG NVARCHAR(1) )<BR /> LANGUAGE SQLSCRIPT <BR /> READS SQL DATA AS<BR /> BEGIN<BR /> <BR /> IF :IP_USER_INPUT = '' THEN<BR /> IP_CS_FLAG := '';<BR /> ELSE<BR /> IP_CS_FLAG := '*';<BR /> END IF;<BR /> <BR /> END;</CODE></PRE><BR /> Now use this procedure as the derivation factor for IP_CS_FLAG.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/iparam2.jpg" /></P><BR /> Now we need to connect the input parameter IP_USER_INPUT to the same of this procedure. This can be done in semantics of the calculation view under tab : Parameters/Variables from Input Parameter Manage Mapping option as shown below :<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/mapping.jpg" /></P><BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/mapping_1.jpg" /></P><BR /> And then in the lowest Aggregation node we filter the COLD_STORE_FLAG column by using a match function with the IP_CS_FLAG.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/filter-2.jpg" /></P><BR /> <P style="overflow: hidden;margin-bottom: 0px">This way securing, that if user selects blank as IP_USER_INPUT, we only select hot store data by passing '' value as match filter, else if user selects 'X' in the same, both Hot &amp; Cold store data are selected by passing '*' as match filter. We can again check if the pruning is working as intended by doing a select on the calculation view without manually entering any input. This should take the default blank value &amp; should only access Hot data store (Active Data Table). The below plan viz supports the expectation.<BR /> <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/plv-1.jpg" /></P><BR /> And it picks only those 9 records pertaining to year 2020 from hot data store.<BR /> <BR /> &nbsp;<BR /> <BR /> <STRONG>Approach#3 : which does not support proper pruning of maneuvering query to right data tiering storage&nbsp;</STRONG><BR /> <BR /> However, I tried another exercise with one input parameter &amp; the IF-ELSE handling in the MATCH funtion using filter instead of doing the same in a stored procedure. The results were same, but the difference was in prunning.<BR /> <BR /> Let's assume, I have just one input parameter (VARCHAR(1)) in the calculation view &amp; the default value is blank.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/calcv1.jpg" /></P><BR /> &nbsp;<BR /> <BR /> Now in lowest Aggregation_1 node, the filter on COLD_STORE_FLAG is like below :<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/filter1.jpg" /></P><BR /> <BR /> <PRE class="language-sql"><CODE>if('$$IP_CS_FLAG$$' = 'X',match("COLD_STORE_FLAG",'*'),match("COLD_STORE_FLAG",'$$IP_CS_FLAG$$'))</CODE></PRE><BR /> The filter expression basically reads the input parameter value passed, if it comes with a value 'X' (user requests data from both Hot &amp; Cold store), we set the COLD_STORE_FLAG to show all values using a match function with '*' , other values than 'X', which is ' ' should only match with ' ' values for the flag, ensuring only Hot store data is filtered &amp; selected for output.<BR /> <BR /> But the observation from planviz is that it accesses both Hot &amp; Cold store tables even when a blank value is passed.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/CV_1.jpg" /></P><BR /> In terms of performance it is not good if the query hits the external cold store table even if only Hot data is requested &amp; fetched as output. So, the last option is not something we should aim for.<BR /> <BR /> Our job now is to consume this calculation view along in a composite provider &amp; then build a report with the variable based on the input parameter. Let's create an masterdata info object for holding the input parameter possible values for browse help. I created one called CS_FLAG with type CHAR length 1, the master data table of which looks like below :<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/md-1.jpg" /></P><BR /> &nbsp;<BR /> <BR /> So, on browse help in report, it will only show the values as unassigned &amp; 'X' to choose from.<BR /> <BR /> As next step, the HCPR : CP_SALES is created &amp; this info object is assigned to the input parameter in HCPR output tab (IP_CS_FLAG in Approach#1 &amp; IP_USER_INPUT in approach#2)<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/hcpr-1.jpg" /></P><BR /> The next step is to create an input ready single value variable on this info object CS_FLAG to restrict the input parameter in the report using the same.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/var-1.jpg" /></P><BR /> &nbsp;<BR /> <BR /> Now simply create a report with meaningful rows &amp; columns dragged into. I have created a sample report : ZQ_SALES_TEST as below just to show the behaviour of the report data controlled by the flag with a single variable in selection prompt screen which was built on CS_FLAG.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/query.jpg" /></P><BR /> Let's now have a look at the selection prompt screen of the report :<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/prompt-1.jpg" /></P><BR /> &nbsp;<BR /> <BR /> So, as mentioned earlier, I have just included the data tiering controller flag variable to showcase the output variance. As expected from the masterdata entries, the value help shows only two possible values to choose from.<BR /> <BR /> Now let's first execute the report without having any value passed to this variable, since it is optional.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/outputres.jpg" /></P><BR /> &nbsp;<BR /> <BR /> We can see only 2020 data is shown back, which is in the hot storage.<BR /> <BR /> Now let's do it again with the variable value passed as 'X'.<BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/prompt1.jpg" /></P><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/04/outputres1.jpg" /></P><BR /> &nbsp;<BR /> <BR /> And this time we get data from both hot &amp; cold storage ie. both 2019 &amp; 2020 year's data.<BR /> <BR /> &nbsp;<BR /> <BR /> PS : Since the '8' view has a union of the cold store &amp; hot store tables in it's sql defintion (explained in my <A href="https://blogs.sap.com/2021/04/13/view-for-external-access-the-8-view-for-adsos-in-bw-4hana-2.0-mixed-modelling/" target="_blank" rel="noopener noreferrer">blog post</A>), at this point, it always will create a connection to the cold store no matter what data is requested. Meaning when this view is used in the data model &amp; data from aDSO's hot storage is requested, it will still open a connection to the cold store if DTO is active for the aDSO &amp; there is data in cold store. It will not access the cold store table if we use the above mentioned pruning methods of accessing data, but it will still open the connection since it has to structure the definition of the '8' view, ie. union of aDSO's active table in HANA &amp; the virtual 'OU' table pointing to the cold store. So, make sure you have enough connections available if you are opting for this kind of solution. Else You can make a workaround with a union of active table of aDSO &amp; the 8 view of aDSO &amp; make a constant selection mapping based pruning in the union node with a target field directing the query to 8 view if cold data is requested, else direct the query only to hit the active table of the aDSO in case only hot data is requested using a filter expression restricted on the input parameter.<BR /> <BR /> Hope this blog will help gaining some insights about the generated '8' view for aDSOs being consumed in mixed modelling scenario from BW/4 reporting perspective &amp; securing correct control of data across different data temperature tiering systems with optimum performance in mind.<BR /> <BR /> You are welcome to share any comment/feedback/experience regarding this topic for enriching our mutual knowledge bank <span class="lia-unicode-emoji" title=":winking_face:">😉</span><BR /> <BR /> Cheers!<BR /> Abhi 2021-04-15T14:10:59+02:00 https://community.sap.com/t5/technology-blogs-by-members/implementing-amdp-procedure-in-the-bw-customer-exit-variable/ba-p/13499896 Implementing AMDP procedure in the BW customer exit variable 2021-07-09T22:03:26+02:00 lakshminarasimhan_n4 https://community.sap.com/t5/user/viewprofilepage/user-id/200273 <STRONG>Introduction</STRONG><BR /> <BR /> Implementing AMDP procedure for the custom logic used in the BW customer exit variables.<BR /> <BR /> &nbsp;<BR /> <BR /> <STRONG>Applies to</STRONG><BR /> <BR /> BW/4HANA, BW Powered by HANA.<BR /> <BR /> &nbsp;<BR /> <BR /> <STRONG>Summary</STRONG><BR /> <BR /> What you learn from this blog is to push the custom logics based on table lookups into the HANA via AMDP method to Database instead of relying on the application server.<BR /> <BR /> Many a times in our customer exit variables we might have to read from the cube, ADSO tables, info object tables, HANA Tables, SAP Standard, Custom tables etc.<BR /> <BR /> if we are in a bw4hana then we can use the AMDP procedure to do the “select operations” from the tables. The reason is simple we are trying to bring the database operation to the database itself.(Code to Database)<BR /> <BR /> Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : Lakshminarasimhan Narasimhamurthy<BR /> <BR /> Created on&nbsp;&nbsp; : 13/JUN/2021<BR /> <BR /> <STRONG>Body</STRONG><BR /> <BR /> <STRONG>Requirement</STRONG><BR /> <BR /> I have a customer exit variable and the logic is that it must include only the cost centers that are present in the employee master data InfoObject and also include costcenters present for the user in the Z info object(Custom info object).<BR /> <BR /> we can implement the badi RSROA_VARIABLES_EXIT and Now in the custom logic part I'm going to make use of AMDP procedures to read the costcenters.<BR /> <BR /> AMDP stands for abap managed database procedures, basically we're going to make use of native SQL statements within the method.<BR /> <BR /> The interface IF_AMDP_MARKER_HDB must be added to the public section of the class and then add the method to the class with importing and exporting parameters.<BR /> <BR /> The AMDP methods must not be blank and must have SQL statements only.<BR /> <BR /> In the AMDP method implementation we must add the following,<BR /> <BR /> Method &lt;method name&gt;<BR /> <BR /> By database procedure<BR /> <BR /> For HDB<BR /> <BR /> Language sql-script<BR /> <BR /> Options Read-only<BR /> <BR /> Using &lt;table name/view names&gt;<BR /> <BR /> I have created the method “get_cost_centers” inside the class ycl_amdp_var_exit_1(Screen shot 1), the method takes the input of the username and outputs the relevant costcenters from the masterdata.<BR /> <BR /> (Note : The master data infoobjects/ADSO's must be exposed to hana in prior via the check box “External SAP HANA view for master data” if at all you need to read from the generated view(s) in HANA for the BW objects)<BR /> <BR /> &nbsp;<BR /> <BR /> The table type YCOST_CENTERS has been created with the line type as cost center(Screen shots 2 and 3)<BR /> <BR /> &nbsp;<BR /> <BR /> Screen shot 1 -<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS1.png" /></P><BR /> Code snippet<BR /> <PRE class="language-abap"><CODE>class ycl_amdp_var_exit_1 definition<BR /> public<BR /> final<BR /> create public.<BR /> public section.<BR /> interfaces IF_AMDP_MARKER_HDB.<BR /> <BR /> METHODS:<BR /> get_cost_centers<BR /> importing<BR /> value(lp_un) type XUBNAME<BR /> exporting<BR /> value(result) type YCOST_CENTERS raising cx_amdp_error.<BR /> <BR /> protected section.<BR /> private section.<BR /> endclass.<BR /> class ycl_amdp_var_exit_1 implementation.<BR /> method get_cost_centers<BR /> by database procedure for hdb language sqlscript options read-only<BR /> using /BIC/Q&lt;table name&gt; /bic/p&lt;table name&gt;.<BR /> <BR /> result = select MAST_CCTR<BR /> from<BR /> "/BIC/Q&lt;table name&gt;"<BR /> where<BR /> dateto = '99991231' and<BR /> "/BIC/&lt;field name&gt;" = :lp_un<BR /> union<BR /> select "/BIC/&lt;field name&gt;" AS MAST_CCTR<BR /> from<BR /> "/BIC/P&lt;table name&gt;"<BR /> where<BR /> "/BIC/&lt;field name&gt;" = :lp_un;<BR /> <BR /> endmethod.</CODE></PRE><BR /> Screen shot 2 -<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS2.jpg" /></P><BR /> Screen shot 3 -<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS3.jpg" /></P><BR /> Now create a query (Screen shot 5)and customer exit variable for cost center(Screen shot 4). The processing type is customer exit and it is a mandatory variable.<BR /> <BR /> &nbsp;<BR /> <BR /> Screen shot 4 -<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS4.jpg" /></P><BR /> Screen shot 5-<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS5-1.jpg" /></P><BR /> I have implemented the badi RSROA_VARIABLES_EXIT and the debugger comes to the variable Y_COSTCENTERS in i_step 2. (Even in i_step 1 same logic can be applied).<BR /> <BR /> The code is given below in Screen shot 6.<BR /> <BR /> &nbsp;<BR /> <BR /> Screen shot 6 –<BR /> <PRE class="language-abap"><CODE> data : lv_username type xubname,<BR /> ls_range type rrrangesid,<BR /> yob_amdp_var_exit_1 type ref to ycl_amdp_var_exit_1,<BR /> yt_cost_centers type ycost_centers,<BR /> ya_cost_centers type line of ycost_centers.<BR /> <BR /> case i_vnam.<BR /> <BR /> when 'Y_COSTCENTERS_01'. " Customer exit variable</CODE></PRE><BR /> To get the username of the user executing the report(SYST-UNAME can also be used instead of the below FM).<BR /> <PRE class="language-abap"><CODE> clear lv_username.<BR /> <BR /> call function 'RSEC_GET_USERNAME'<BR /> importing<BR /> e_username = lv_username.</CODE></PRE><BR /> Call the AMDP method<BR /> <PRE class="language-abap"><CODE> clear la_pernr.<BR /> <BR /> create object yob_amdp_var_exit_1.<BR /> <BR /> * try.<BR /> call method yob_amdp_var_exit_1-&gt;get_cost_centers<BR /> exporting<BR /> lp_un = lv_username<BR /> importing<BR /> result = yt_cost_centers<BR /> .<BR /> * catch cx_amdp_error .<BR /> * endtry.<BR /> </CODE></PRE><BR /> In debug mode<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS9.jpg" /></P><BR /> After F6 the data is populated in the yt_cost_centers<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS10.jpg" /></P><BR /> As expected 5 cost centers were retrieved from master data.<BR /> <BR /> The report now yields the output<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS12.jpg" /></P><BR /> The user(1736) has the following cost centers in Z* infoobject and master cost center in 0employee master data and all of them are visible in the report.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS13.jpg" height="283" width="456" /></P><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2021/06/SS14.jpg" height="82" width="449" /></P><BR /> <STRONG>Note</STRONG> – We can debug the AMDP procedure step by step using “Debugger perspective” in SAP HANA STUDIO.&nbsp;Step by step debug of AMDP is possible using F5, F6 etc similar to ABAP Debugger. This will give a greater clarity on the execution of SQL Scripts.<BR /> <BR /> Welcoming the readers to provide feedback and engage with me in the comment section.<BR /> <BR /> &nbsp;<BR /> <BR /> <STRONG>References&nbsp;</STRONG><BR /> <BR /> <A href="https://www.saplearners.com/introduction-to-abap-managed-database-procedure-amdp/" target="_blank" rel="nofollow noopener noreferrer">Introduction to ABAP Managed Database Procedure (AMDP) (saplearners.com)</A><BR /> <BR /> &nbsp; 2021-07-09T22:03:26+02:00 https://community.sap.com/t5/technology-blogs-by-members/query-performance-optimization-in-bw-few-tips/ba-p/13546382 Query Performance Optimization in BW - Few Tips 2022-02-02T07:13:27+01:00 pallab_haldar https://community.sap.com/t5/user/viewprofilepage/user-id/594699 In this blog, I am going to discuss about the approach I have taken to optimize queries in SAP BW .<BR /> <BR /> Two-way Bex query performance tuning can be done:<BR /> <OL><BR /> <LI>Changing the development and design of query.</LI><BR /> <LI>Tuning and changing the Setting and properties.</LI><BR /> </OL><BR /> Let’s discuss on the two options in details:<BR /> <BR /> <STRONG>A. Tuning with proper setting:::&nbsp;</STRONG><BR /> <BR /> 1. Use Program <STRONG>RSR_CACHE_RSRV_CHECK_ENTRIES </STRONG>to remove the unused Cache entries.<BR /> <BR /> <STRONG style="font-size: 1rem">2. Using the Selection of Structure Elements activated.</STRONG><BR /> <BR /> This option you need to enable when you are selecting specific selection (restricted Key figure) out other key figure you activated the setting when filter passes to the DB and cell which have value only pass to the query in BW. Not All fields and cells are transferred. As a result, query execution time less.<BR /> <BR /> This function you can also&nbsp;not&nbsp;be activated if the query has read mode 'A’ as in this mode all the key figure value are transferred at the start of the query execution so selective process can be done.<BR /> <BR /> For example -<BR /> <BR /> A. Selected on Structure Element AMMOUNT (MN) Without activating Selection of Structure Elements -<BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2022/02/Structure.png" /></P><BR /> &nbsp;<BR /> <BR /> Selected on Structure Element AMMOUNT (MN) With activating Selection of Structure Elements -<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2022/02/Structure2.png" height="60" width="469" /></P><BR /> &nbsp;<BR /> <BR /> 3. There will be a significant improvement in performance using it if:<BR /> <UL><BR /> <LI>Your queries contain a large number of selections or restricted key figures and that need to be displayed latter on the drilldown, not in the initial screen.</LI><BR /> <LI>When a lot of operations used filters using selections or restricted key figures then this configuration useful.</LI><BR /> </UL><BR /> 4. Steps: <STRONG>Go to RSRT -</STRONG><STRONG>à Go to Query Properties.</STRONG><BR /> <BR /> My recommended setting in general scenario -<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2022/02/Recomended-Setting.png" /></P><BR /> &nbsp;<BR /> <BR /> 5.<STRONG style="font-size: 1rem">Deactivate parallel processing for an individual query.</STRONG><BR /> <UL><BR /> <LI>Deactivate the parallel processing for an individual query which do not have sub query or formula variable with replacement path which execute another subquery. We will gate fast response time.</LI><BR /> <LI>By below process we can deactivate it –</LI><BR /> <LI>Go to RSRT-&gt; select Execute + Debug mode -&gt; Data Manager -&gt; select no parallel processing –</LI><BR /> </UL><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2022/02/Parallel-Processing.png" /></P><BR /> &nbsp;<BR /> <BR /> 6. <STRONG>Operation in BWA/HANA mode: Which is suitable for what scenario:</STRONG><BR /> <OL><BR /> <LI><STRONG>0 -No Optimized Operations in SAP HANA/No BWA: </STRONG>This is not efficient as this setting not allowing to do any kind of operation inside the HANADB. If there is any virtual key figure used in query, then this setting we apply.</LI><BR /> <LI><STRONG>2 - Individual Access per Info Provider: If</STRONG> we used multi-Provider and want to optimize each multi-Provider separately then we use this option,</LI><BR /> <LI>3- <STRONG>Optimized Access: </STRONG>In this setting we the optimization done as a whole i.e., jointly for all the info providers. This is one of the best settings to get optimize query performance.</LI><BR /> <LI><STRONG>6- Exception Aggregation default: </STRONG>Using this setting we can get most optimize performance as it used to perform sub calculation and build sub views on it. But this setting has lots of limitation and everywhere we can not use it. If it is not suitable for your scenario then use 3- Optimize access.</LI><BR /> </OL><BR /> &nbsp;<BR /> <BR /> <STRONG>A. Tuning on Development and Design time:::</STRONG><BR /> <BR /> The below rules are not only true for BEX query but also for other query and views also –<BR /> <BR /> 1.Take only those info object/fields in query which you only want to use in the report. No single additional info object/fields.<BR /> <BR /> 2.Use Multi provider/Composite provider, if possible, to build a query.<BR /> <BR /> 3.Use filter whenever is possible to reduce the dataset into query.<BR /> <BR /> In filter use Not in i.e., Exclude some data point from a data set instead of IN. It improves performance –<BR /> <BR /> <STRONG>&nbsp;</STRONG><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2022/02/BEX-Exclude.png" /></P><BR /> &nbsp;<BR /> <BR /> <STRONG>4. Minimum use of Free Characteristics:</STRONG> If you know how the Report structure looks like then please use structure to develop the query. I recommended to minimum use of free characteristics. It reduces the memory load and improve the performance.<BR /> <BR /> If we use structures selections inside that and enable the setting “<STRONG>Selection of Structure Elements</STRONG>” the performance improves Significantly.<BR /> <BR /> 5. Push the calculation to the transformation layer:<BR /> <BR /> Do not do any kind of calculation i.e., Calculated key figure and Restricted key figure Query Level if it is not required to meet the criteria that cannot be fulfil without creating in query level.<BR /> <BR /> Push all the calculations to the Transformation layer . Develop DSO, info cubes and other objects in different layers and use transformations Layer for Calculated characteristics and calculated info Objects. Pass those info Object/fields to the Reporting Layer.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2022/02/Standard-Query.png" /></P><BR /> Use that field into query.<BR /> <BR /> 6. Avoid Aggregate unnecessary fields, be specific to the key figures required.<BR /> <BR /> 7. in additional in Push the joins (lookups) before aggregation in to narrow down the dataset in info provider level. In native HANA we can use ENUM JOIN_THRU_AGGR same way by alternate we will use via lookup before aggregate whenever it is possible.<BR /> <BR /> 8. If required Use logical partitioning - semantic partitioning, multi provhint<BR /> <BR /> 9. If required use physical partitioning<BR /> <BR /> 10. Use OLAP cache<BR /> <BR /> 11. compress cubes<BR /> <BR /> 12. Always “Suppress Result Row” to get optimize performance for each field in the Bex query –<BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2022/02/subpress.png" /></P><BR /> &nbsp;<BR /> <BR /> 13 .Try to reduce characteristics drilldown at Query Level.<BR /> <BR /> 14. <STRONG>Choosing the proper decimal precisions for key figure calculation:</STRONG><STRONG>&nbsp;</STRONG><BR /> <UL><BR /> <LI>Use higher precisions while creating info object using in Info Object maintenance transaction (RSD1) for key figure, and in the query monitor for all key figures of a query.</LI><BR /> </UL><BR /> <UL><BR /> <LI>By default, “short decfloat” with Dec floating point with 16 places selected.</LI><BR /> </UL><BR /> Use “Long decfloat” with floating number with 32 places. This will reduce memory load.<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp; 2022-02-02T07:13:27+01:00 https://community.sap.com/t5/technology-blogs-by-members/bw4-query-linked-components-an-intelligent-feature/ba-p/13536714 BW4 Query Linked Components – an intelligent feature 2022-03-29T09:24:09+02:00 rashi_singal1 https://community.sap.com/t5/user/viewprofilepage/user-id/594404 <H3 id="toc-hId-1089407011">Introduction to Linked Components</H3><BR /> With BW/4HANA, SAP introduced a new intelligent feature at query level called&nbsp;<STRONG>Linked Components</STRONG>. This allows you to link Query components so that changes in the source query components are reflected in the target query components. The system maintains mapping information that allows the queries to be synchronised automatically. We can create Linked components based on Calculated/Restricted Key figures and Queries.<BR /> <BR /> Mapping is supported for InfoObjects, Hierarchies, Restricted Key Figures, Calculated Key Figures, and Variables. Some features are not currently available/supported, such as Filters and Currency/unit conversions.<BR /> <BR /> For example, the business requirement is to write a large number of BW/4 Queries, the majority of which use comparable Restricted / Calculated Key Figures but are based on different InfoProviders. As they are dependent on common business requirements, most of the Restricted / Calculated Key Figures follow the same logic. If the business logic changes, all Restricted / Calculated Key Figures need to be changed.<BR /> <BR /> Instead of manually altering all of these Restricted/ Calculated Key figures, why not just change one of them and the others would automatically be updated?<BR /> <BR /> The question now is, “How can I accomplish such automatic functionality?” This is where the&nbsp;<STRONG>Linked Components</STRONG>&nbsp;feature comes in.<BR /> <H3 id="toc-hId-892893506">Solution Overview</H3><BR /> Using Linked Components feature, the central management of Query objects is achievable. It is now possible to describe the logic of components centrally (for example Calculated/Restricted Key Figures) and reuse the logic across queries created on top of other Info Providers. When the source Restricted / Calculated Key Figure is modified, all linked (target) components are updated.<BR /> <H3 id="toc-hId-696380001">Deep Dive</H3><BR /> We shall examine four topics in this blog post concerning Linked Components:<BR /> 1. Creating Linked Components<BR /> 2. Modifying the Source Component<BR /> 3. Modifying/Deleting the Target Component<BR /> 4. Decoupling the Target Component<BR /> <BR /> Let us look at the following scenario and see how to work with linked components.<BR /> <BR /> <STRONG>Scenario:</STRONG>&nbsp;IP1 and IP2 are two Info Providers with a similar structure. You have created the query Q1 for IP1. You need to create query Q2 for IP2. This query (Q2) should be similar to query Q1 and should alter automatically whenever query Q1 is changed.<BR /> <H3 id="toc-hId-499866496">Creating Link Components</H3><BR /> To create a Linked Component based on a query, follow the steps below:<BR /> <BR /> 1. Open source query Q1 and click on ‘Show Linked Components View’:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45420" src="https://nttdata-solutions.com/wp-content/usermedia/LC-1.png" alt="" width="1219" height="77" /><BR /> <BR /> This opens a new tab called Linked Components:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45421" src="https://nttdata-solutions.com/wp-content/usermedia/LC2.png" alt="" width="916" height="111" /><BR /> <BR /> 2. Open the context menu for the source component and choose&nbsp;<STRONG>New Component</STRONG>:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45422" src="https://nttdata-solutions.com/wp-content/usermedia/LC3.png" alt="" width="1148" height="315" /><BR /> <BR /> 3. Enter the name of the target component &amp; target Info Provider and a description.<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45423" src="https://nttdata-solutions.com/wp-content/usermedia/LC4.png" alt="" width="852" height="588" /><BR /> <BR /> 4. Click on&nbsp;<STRONG>Create Proposal.</STRONG><BR /> <BR /> When you click “Create Proposal,” the system will automatically map the objects based on the reference info object. You have the option to alter the mapping by clicking on ellipsis button on the target object, this opens up a dialog box to choose from.<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45426" src="https://nttdata-solutions.com/wp-content/usermedia/LC5.png" alt="" width="1524" height="864" /><BR /> <BR /> If the data types for Info Objects match and the system is able to map source and target objects, the status will be green. If the system cannot find any similar fields, the status will be red, with the message “Could not locate a suitable object for **.” In this case, you map it manually.<BR /> <BR /> 5. Validate &amp; Create. Now you can see the newly created query (IP2_Q2) is linked to the source query (IP1_Q1):<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45427" src="https://nttdata-solutions.com/wp-content/usermedia/LC6.png" alt="" width="1152" height="193" /><BR /> <H3 id="toc-hId-303352991">Modifying the Source Component</H3><BR /> If we make any changes to the source component these will be added in the target component as well. Let us look at it in more detail:<BR /> <BR /> 1. Open source query (IP1_Q1) and make any changes to it. Let us add Product in rows.<BR /> <BR /> 2. Save the changes in Source query.<BR /> <BR /> After saving the source query, the target component icon on the Linked Components tab has been changed and an * is added, indicating that the target component is currently not synchronous with the source component and that any changes made in the source will not be reflected in the target:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45428" src="https://nttdata-solutions.com/wp-content/usermedia/LC7.png" alt="" width="1526" height="790" /><BR /> <BR /> 3. To start synchronization, choose&nbsp;<STRONG>Synchronize</STRONG>&nbsp;from the context menu for the source component:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45429" src="https://nttdata-solutions.com/wp-content/usermedia/LC8.png" alt="" width="1374" height="313" /><BR /> <BR /> If the synchronization is successful, you will get status as green.<BR /> <H3 id="toc-hId-106839486">Modifying/deleting the Target Component</H3><BR /> As the target component is linked to the source component, you are allowed to make limited changes to it. You can only change description or mapping.<BR /> <BR /> Let us look at how to make these changes in the target component.<BR /> <BR /> 1. Choose&nbsp;<STRONG>Open</STRONG>&nbsp;from the context menu of the link target component on the&nbsp;<STRONG>Linked Components tab</STRONG>:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45430" src="https://nttdata-solutions.com/wp-content/usermedia/LC9.png" alt="" width="1152" height="265" /><BR /> <BR /> 2. Under&nbsp;<STRONG>General</STRONG>, press the&nbsp;<STRONG>Edit mapping and synchronize with source component&nbsp;</STRONG>button.<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45431" src="https://nttdata-solutions.com/wp-content/usermedia/LC10.png" alt="" width="536" height="418" /><BR /> <BR /> 3.&nbsp;<STRONG>Edit mapping and synchronize with source component dialog box appears</STRONG>, make relevant changes (Description / Mapping):<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45432" src="https://nttdata-solutions.com/wp-content/usermedia/LC11.png" alt="" width="1414" height="861" /><BR /> <BR /> 4. Validate &amp; Synchronize.<BR /> <BR /> <STRONG>Note:</STRONG>&nbsp;If you try to make any more modifications to the target component, such as adding filters, removing characteristics/key figures, or even deleting the target query, you will get an error that the&nbsp;<STRONG>Component is still linked and cannot be changed</STRONG>:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45433" src="https://nttdata-solutions.com/wp-content/usermedia/LC12.png" alt="" width="940" height="440" /><BR /> <H3 id="toc-hId--89674019">Decoupling the Target Component</H3><BR /> In order to make further changes/delete the target component, we need to&nbsp;<STRONG>Decouple&nbsp;</STRONG>(breaking the link between source &amp; target component) the target component.<BR /> <BR /> Follow these steps to decouple target component:<BR /> <BR /> 1. From the Linked Components tab, open the context menu of target component and press&nbsp;<STRONG>Decouple</STRONG>:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45434" src="https://nttdata-solutions.com/wp-content/usermedia/LC13.png" alt="" width="866" height="193" /><BR /> <BR /> Or<BR /> <BR /> 2. Open the target component, in the general tab press&nbsp;<STRONG>Decouple</STRONG>&nbsp;button:<BR /> <BR /> <IMG class="aligncenter size-full wp-image-45435" src="https://nttdata-solutions.com/wp-content/usermedia/LC14.png" alt="" width="480" height="441" /><BR /> <BR /> <STRONG>Note:&nbsp;</STRONG>It is not possible to re-link a broken query component; if you wish to re-synchronize, you must restart the entire process.<BR /> <H3 id="toc-hId--286187524">Conclusion</H3><BR /> Overall, Linked Components is a helpful and straightforward feature for mapping source and destination components and automatically synchronising them. It also assures uniformity and saves time.<BR /> <H3 id="toc-hId--482701029">Supporting Documentation &amp; Information</H3><BR /> You can find more information on Linked Components on <A href="https://help.sap.com/viewer/dd104a87ab9249968e6279e61378ff66/11.0.8/en-US/ec2998cc10d44c7c8d26817fe8eb63b3.html?q=BWMT%20linked%20components" target="test_blank" rel="noopener noreferrer">https://help.sap.com/viewer/dd104a87ab9249968e6279e61378ff66/11.0.8/en-US/ec2998cc10d44c7c8d26817fe8eb63b3.html?q=BWMT%20linked%20components</A><BR /> <BR /> &nbsp;<BR /> <BR /> I hope this blog post has helped you understand Linked Components better. Thank you very much for reading it; please provide your valuable feedback, and if you have any questions, please message me, or you can find more Q&amp;A and post questions in the community by using the links below.<BR /> <A href="https://answers.sap.com/tags/73554900100800000681" target="test_blank" rel="noopener noreferrer">https://answers.sap.com/tags/73554900100800000681</A> (BW/4HANA) <A href="https://answers.sap.com/tags/834511320631052684142696158061592" target="test_blank" rel="noopener noreferrer">https://answers.sap.com/tags/834511320631052684142696158061592</A> (SAP Business Explorer)<BR /> <BR /> Please note that this blog post was first published at&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<A href="https://nttdata-solutions.com/uk/local-blog/bw4-query-linked-components-an-intelligent-feature/" target="_blank" rel="nofollow noopener noreferrer">https://nttdata-solutions.com/uk/local-blog/bw4-query-linked-components-an-intelligent-feature/</A> 2022-03-29T09:24:09+02:00 https://community.sap.com/t5/technology-blogs-by-sap/how-to-consume-an-analytical-query-bex-query-in-abap/ba-p/13570280 How to consume an analytical query / BEx Query in ABAP 2023-01-17T19:59:03+01:00 martin_mayer https://community.sap.com/t5/user/viewprofilepage/user-id/191669 <H3 id="toc-hId-1092917757">How can I consume an analytical query in ABAP ?</H3><BR /> Normally analytical queries are used with reporting tools like SAC, Analysis Office, WebDynpro Grid,&nbsp; or RSRT in backend.<BR /> <BR /> This post show how to directly access and use the query within your own ABAP application by the use of <STRONG>L</STRONG>ightweight <STRONG>B</STRONG>ICS <STRONG>A</STRONG>PI ( LBA ) .<BR /> <BR /> It's really easy and needs only 2 ABAP calls . Development was driven by the need for testing the query with unit test. But for sure this approach also fits to others usecase where you want to use the query in your ABAP application.<BR /> <BR /> This example show the most simple case. Calling a query without variables.<BR /> <PRE><CODE>DATA(lr_std_query) = NEW cl_lba_std_query( i_query_name = 'MyQueryName' ).<BR /> <BR /> lr_std_query-&gt;get_resultset(&nbsp; <BR /> "EXPORTING i_t_requested_columns = lt_requested_columns "dimensions&amp;keyfigures for resultset <BR /> " i_t_variable_values = lt_variable "mandatory and optional variables<BR /> " i_t_filter_values = lt_filter "additional filters <BR /> IMPORTING e_r_resultset = DATA(lr_resultset) "resultset table<BR /> &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e_t_column_catalog = DATA(lt_column_catalog) ). "resultset description</CODE></PRE><BR /> LBA comes also with a 2nd flavours to call the CDS based query.<BR /> <PRE><CODE>DATA(lr_std_query) = NEW cl_lba_cds_query( i_view_name = 'MyCDSview' ). <BR /> <BR /> lr_cds_query-&gt;get_resultset(&nbsp; ...</CODE></PRE><BR /> &nbsp;<BR /> <BR /> Query in this context means BW modelled queries:<BR /> <UL><BR /> <LI>CDS based analytical queries ,</LI><BR /> <LI>Query modelled using BW modelling tools ( BWMT )</LI><BR /> <LI>Query modelled using BEx Query Designer</LI><BR /> </UL><BR /> <A href="https://i7p.wdf.sap.corp/sap/support/notes/0003269710" target="_blank" rel="nofollow noopener noreferrer">Note 3269710</A> contain further details like available releases and has 2 attachments<BR /> with several sample cases for CDS based queries and classical analytical queries.<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp; 2023-01-17T19:59:03+01:00 https://community.sap.com/t5/technology-blogs-by-members/amount-in-certain-currency-is-multiplied-by-100-at-report-level/ba-p/13558447 Amount in certain currency is multiplied by 100 at Report Level 2023-02-09T18:08:51+01:00 hari_prasad1 https://community.sap.com/t5/user/viewprofilepage/user-id/472505 <STRONG>About Author:</STRONG><BR /> <BR /> Hari Boda is working as a SAP Lead BW-HANA consultant at TekLink Software Pvt&nbsp; Ltd and has worked on multiple assignments in BW-HANA analytics&nbsp; domain.<BR /> <BR /> <STRONG>Brief about issue:<BR /> </STRONG><BR /> <BR /> Amount in certain currency is multiplied by 100 in bex report in other terms the decimal places in a query is returning wrong values, sometimes the amount might be too high or too low by a factor of 100.<BR /> <BR /> &nbsp;<BR /> <BR /> <STRONG>Explanation and solution:</STRONG><BR /> <BR /> This generally happens due to the decimal places maintained in table TCURX.<BR /> <BR /> The Table TCURX defines how currency amounts are converted between DB storage and display on the front-end.<BR /> <BR /> Not only at front end,the TCURX settings are considered also when loading data. Therefore, in order to get consistency, always there should be inverse calculation done at loading time at Application level.<BR /> <BR /> By default, all amounts are stored with 2 decimal places on the database and are later converted for display based on the currency entry in the table TCURX.<BR /> <BR /> If a currency is entered with e.g. value 0, then the currency is displayed with 0 decimal places in BW Queries (which means that the amount is displayed with factor 100 higher than it is stored on DB Level).<BR /> <BR /> <STRONG>Example:</STRONG><BR /> <BR /> TCURX = NO ENTRY: Database entry = 123.45<BR /> <BR /> The above number is displayed as 123.45<BR /> <BR /> TCURX = 3: Database entry = 123.45<BR /> <BR /> The above number is displayed as 12.345(3 decimal places, as 3 is maintained in the TCURX table).<BR /> <BR /> TCURX = 0 Database entry = 123.45<BR /> <BR /> The above number is displayed as 12345(0 decimal places and shows 12345 as no decimal places&nbsp; maintained in the TCURX table)<BR /> <BR /> &nbsp;<BR /> <BR /> <STRONG>In order to correct this in BW:</STRONG><BR /> <BR /> we have to correct the data for the currencies having issue while loading in BW within the transformation.<BR /> <OL><BR /> <LI>In the routine, get the data from TCURX&nbsp; to fetch number of decimal places for the respective currency.</LI><BR /> <LI>for 0 decimal currencies that are having issue's at reporting layer, assign 100 value to&nbsp; a variable and store it in internal table.</LI><BR /> <LI>using above internal table, for the respective KPI's and Currency Unit we need to divide by 100.</LI><BR /> </OL><BR /> By doing this division by 100, at the reporting layer the KPI will show correctly i.e. without multiplication of 100.<BR /> <BR /> Thank you for reading my blog. Comments and feedback are welcome! 2023-02-09T18:08:51+01:00 https://community.sap.com/t5/technology-blogs-by-sap/sap-premium-engagement-a-service-roadmap-for-sac-s-4-embedded-analytics/ba-p/13577480 SAP Premium Engagement: A service roadmap for SAC, S/4 Embedded Analytics, Business Objects and Planning 2023-10-11T23:58:54+02:00 thomas_ernst https://community.sap.com/t5/user/viewprofilepage/user-id/239619 <P><STRONG>Who we are </STRONG><BR /><BR />We are SAP’s Center of Expertise (COE) for Analytics, Planning, and Consolidation in the globally operating Adoption Service Center. Our goal is to drive adoption and consumption of SAP Business Technology Platform technologies and lay the foundation for the Intelligent Enterprise. We are a trusted partner for customers with MaxAttention or Premium Engagement (PE). Also, we engage in the area of Professional Services, Preferred Success and other partnerships.</P><P><IMG src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/SAP_PE.png" border="0" /></P><P><BR /><STRONG>Introduction</STRONG><BR /><BR />With thousands of established and new customers moving and expanding their Analytics &amp; Planning solutions in S/4 and BTP, we want to explain how our Premium Engagement services offer every type of help needed for your success.<BR /><BR /><STRONG>OnPrem, in the cloud or hybrid</STRONG><BR /><BR />Our services and experts provide solutions and guidance in S/4, BTP, BW/4 and <A href="https://blogs.sap.com/?p=1844489?source=email-global-notification-mod" target="_blank" rel="noopener noreferrer">Business Objects</A>. We support with integration, implementation and prototyping. We guide you in your Big Data and AI innovation journey to a quick and positive ROI with modern analytics, planning and forecasting.</P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Analytics Portfolio 3.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55185i04BA4431F1B9BD1A/image-size/large?v=v2&amp;px=999" role="button" title="Analytics Portfolio 3.png" alt="Analytics Portfolio 3.png" /></span></P><P>&nbsp;</P><P class="">Priorities for the Customer from Analytics and Data Management Perspective</P><P><BR /><STRONG>From discovery to run</STRONG><BR /><BR />Our service portfolio (<A href="https://servicescatalog.cvdp3eof-dbsservic1-p1-public.model-t.cc.commerce.ondemand.com/c/Focus-Package:-SAP-Analytics-Cloud-Design,-Integration-and-Deployment/p/FP000015" target="_blank" rel="noopener nofollow noreferrer">Service and Support Catalog link</A>) and engagement model range from:<BR /><BR /></P><UL><UL><LI>Expert workshops for discovering innovation.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI>Architecture and strategy services where new solutioning options are defined reflecting your requirements.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI>Design, configuration, migration, enablement and prototyping services for your specific analytics, data mangement and planning scenarios.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI>Holistic functional and technical assessments, verifications, performance tuning and stress testing.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI>E2E monitoring and issue analysis during go-live and cutover.</LI></UL></UL><P><BR /><BR /></P><P><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Analytics Portfolio.png" style="width: 999px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/55172i0C9CAB1A25DF1B2D/image-size/large?v=v2&amp;px=999" role="button" title="Analytics Portfolio.png" alt="Analytics Portfolio.png" /></span></P><P>&nbsp;</P><P class="">Service Portfolio for SAP Analytics and Planning</P><P><BR />&nbsp;<STRONG>Key services and highlights</STRONG><BR /><BR /></P><UL><UL><LI><A href="https://blogs.sap.com/2023/12/11/sap-premium-engagement-analytics-strategy-workshop/" target="_blank" rel="noopener noreferrer"><U>Analytics Strategy</U></A>: Workshop with experts to define your own path and strategy to a modernized SAP landscape in the area of enterprise analytics and planning, S/4HANA embedded analytics, enterprise data warehousing, and integration scenarios.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI><A href="https://blogs.sap.com/2023/12/21/sap-premium-engagement-analytics-design-workshop/" target="_blank" rel="noopener noreferrer"><U>Analytics Design</U></A>: Learn how to refine the implementation aspects of the analytics architecture, e.g., <A href="https://blogs.sap.com/2023/12/11/unlock-data-integrations-with-sap-analytics-cloud-sac/" target="_blank" rel="noopener noreferrer">source system connections to SAC, SSO</A>, creating models, UX and reporting &amp; planning applications.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI><U>Jump-start for Analytics and Data Management</U>: Demo realization and prototyping of a use case. Identify and realize business processes and KPIs for your enterprise analytics, data management and planning. <A href="https://blogs.sap.com/2023/08/02/navigating-the-path-to-sap-analytics-cloud-re-platforming-from-lumira/" target="_blank" rel="noopener noreferrer">For example, re-platforming Lumira to SAC</A>.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI><U>Enablement Workshop for Data and Analytics</U>: Show-and-tell session and teaching for your technical and functional teams on analytics features, concepts and methods.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI><U>Technical Integration Check</U>: Technical assessment of the solution, business processes, interfaces, and system landscape. Transparency and action plans for expert guidance and follow up.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI><A href="https://community.sap.com/t5/technology-blogs-by-sap/business-process-performance-optimization-a-premium-engagement-offering/ba-p/13574680" target="_self"><U>Business Process Performance Optimization</U></A>: Analyzing and improving the performance of business processes.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI><A href="https://blogs.sap.com/2023/10/04/volume-test-optimization-service-for-sap-analytics-cloud/?source=email-global-notification-bp-new-in-tag-followed" target="_blank" rel="noopener noreferrer"><U>Volume Test Optimization</U></A>: Simulation of peak usage in Analytics to validate if the underlying solution architecture can handle the load.</LI></UL></UL><P>&nbsp;</P><UL><UL><LI><U>Analytics &amp; Data Management Health Check</U>: Remote check of the analytics solution for a potential misconfiguration of parameter settings or logs and operational aspects (e.g., housekeeping).</LI></UL></UL><P>&nbsp;</P><UL><UL><LI><A href="https://blogs.sap.com/2023/10/04/go-live-support-service-for-sap-analytics-cloud/?source=email-global-notification-bp-new-in-tag-followed" target="_blank" rel="noopener noreferrer"><U>Going Live Support</U></A>: System monitoring during go-live and hyper-care. Root cause analysis of critical issues during cut-over period.</LI></UL></UL><P><BR /><BR /><STRONG>Service Assignment Options</STRONG><BR /><BR />These services are available for a variety of SAP support frameworks, including Value Assurance, SAP MaxAttention, SAP Active Embedded, and SAP Active Attention.&nbsp;Don’t hesitate to reach out to your Technical Quality Manager (TQM), your SAP Account, your Customer Success Partner (CSP), or our central entry channel, the <A href="mailto:sap_vpr_emea@global.corp.sap" target="_blank" rel="noopener nofollow noreferrer">Virtual Project Room</A> (VPR) to unleash the full potential of SAC, the unrivaled symphony of data insights that elevate your business intelligence to new heights.<BR /><BR />In the blogs below we share more tools and insights from our engagements.<BR /><BR /></P><UL><UL><LI><A href="https://blogs.sap.com/2023/09/09/sap-analytics-cloud-planning-in-unified-story-using-input-controls/" target="_blank" rel="noopener noreferrer">SAP Analytics Cloud – Planning in Unified Story using Input Controls</A></LI></UL></UL><P>&nbsp;</P><UL><UL><LI><A href="https://blogs.sap.com/2020/11/18/bex-3.x-7.x-to-afo-2.x-automated-mass-conversion-tool-v2.1/" target="_blank" rel="noopener noreferrer">BEx to AfO Automated Mass Conversion Tool</A></LI></UL></UL><P>&nbsp;</P><UL><UL><LI><A href="https://blogs.sap.com/2021/12/02/sap-analytics-cloud-replicating-bw-analysis-authorizations-into-dimension-read-write-property/" target="_blank" rel="noopener noreferrer">SAP Analytics Cloud – Replicating BW Analysis Authorizations into Dimension Read/Write Property</A></LI></UL></UL><P>&nbsp;</P><UL><UL><LI><A href="https://blogs.sap.com/2023/08/04/enhancing-sap-analytics-cloud-the-power-of-ux-and-accessibility/" target="_blank" rel="noopener noreferrer">why UX and Accessibility are important</A></LI></UL></UL><P>&nbsp;</P> 2023-10-11T23:58:54+02:00 https://community.sap.com/t5/technology-blogs-by-members/bex-query-afo-reports-development-tips-tricks-performance-improvement/ba-p/13571935 Bex Query/AFO Reports Development tips/tricks & Performance Improvement Techniques. 2023-10-25T16:10:28+02:00 narasingha https://community.sap.com/t5/user/viewprofilepage/user-id/618193 Hello All,<BR /> <BR /> Welcome back to yet another blogpost on Bex Query/AFO Reports Development, Tips/Tricks&nbsp; &amp; Performance Improvement Techniques. This blogpost will explain best practices to follow during the development of these objects, tips and tricks to follow, and how to optimize the performance of these queries so that we can develop better business reports for our customers.<BR /> <BR /> Before deep diving, first let us understand the flow of data while creating a Business Explorer Report Aka Bex Query in a typical SAP BW or SAP BWONHANA or SAP BW4HANA and BW4HANA mixed and hybrid modelling scenario looks. PFB picture :<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/1-187.png" /></P><BR /> &nbsp;<BR /> <BR /> There are a lot of blog posts and learning videos available on the web to understand how to create BW objects for modeling before reaching the Bex query. Here I am not going to discuss BW development. Here we will discuss Bex query best practices to follow and optimization techniques.<BR /> <BR /> &nbsp;<BR /> <H2 id="toc-hId-963871406"><SPAN style="text-decoration: underline"><STRONG>Best Practices to follow during Bex Query Development&nbsp;</STRONG></SPAN></H2><BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">1.&nbsp;</SPAN><SPAN class="css-rh820s">When&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-15iwe0d">reports&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-2yp7ui">from&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Web&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Intelligence&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">(also&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-2yp7ui">known&nbsp;</SPAN><SPAN class="css-15iwe0d">as&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">WebI&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">or&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-0">Webi)&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-0">are&nbsp;</SPAN><SPAN class="css-0">connected&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN class="css-0">via&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~12" class="css-1m8t0fv"><SPAN class="css-0">a&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~13" class="css-1m8t0fv"><SPAN class="css-0">BICS&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~14" class="css-1m8t0fv"><SPAN class="css-0">connection,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~15" class="css-1m8t0fv"><SPAN class="css-0">all&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~16" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-0">data&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~17" class="css-1m8t0fv"><SPAN class="css-0">is&nbsp;</SPAN><SPAN class="css-rh820s">extracted&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~18" class="css-1m8t0fv"><SPAN class="css-rh820s">depending&nbsp;</SPAN><SPAN class="css-0">on&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~19" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-0">characteristics&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~20" class="css-1m8t0fv"><SPAN class="css-rh820s">listed&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~21" class="css-1m8t0fv"><SPAN class="css-0">under&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~22" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-1eh0vfs">columns,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~23" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">rows,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~24" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">or&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~25" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">free&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~26" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">characteristics.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-0">In&nbsp;</SPAN><SPAN class="css-rh820s">order&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-0">for&nbsp;</SPAN><SPAN class="css-0">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-0">SAP&nbsp;</SPAN><SPAN class="css-0">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-0">BEx&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-0">Query&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-rh820s">to&nbsp;</SPAN><SPAN class="css-rh820s">provide&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">aggregated&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">results,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">only&nbsp; </SPAN><SPAN class="css-15iwe0d">necessary&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-15iwe0d">characteristics&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~10" class="css-1m8t0fv"><SPAN class="css-15iwe0d">should&nbsp;</SPAN><SPAN class="css-15iwe0d">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~11" class="css-1m8t0fv"><SPAN class="css-2yp7ui">present&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~12" class="css-1m8t0fv"><SPAN class="css-1ber87j">in&nbsp;</SPAN><SPAN class="css-1ber87j">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~13" class="css-1m8t0fv"><SPAN class="css-1ber87j">columns,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~14" class="css-1m8t0fv"><SPAN class="css-1ber87j">rows,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~15" class="css-1m8t0fv"><SPAN class="css-1ber87j">and&nbsp;</SPAN><SPAN class="css-1ber87j">free&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~16" class="css-1m8t0fv"><SPAN class="css-0">characteristics.&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">2.&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-rh820s">Employ&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-15iwe0d">filters&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">to&nbsp;</SPAN><SPAN class="css-2yp7ui">reduce&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-15iwe0d">query's&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">expected&nbsp;</SPAN><SPAN class="css-15iwe0d">result&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">set&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">as&nbsp;</SPAN><SPAN class="css-2yp7ui">much&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">as&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-2yp7ui">you&nbsp;</SPAN><SPAN class="css-2yp7ui">can&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-15iwe0d">(to&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN class="css-1ber87j">a&nbsp;</SPAN><SPAN class="css-1ber87j">maximum&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~12" class="css-1m8t0fv"><SPAN class="css-1ber87j">of </SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~13" class="css-1m8t0fv"><SPAN class="css-1ber87j">1000 </SPAN></SPAN><SPAN id="output-phrase~0~14" class="css-1m8t0fv"><SPAN class="css-0">lines).</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Large&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-15iwe0d">result&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-15iwe0d">sets&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-2yp7ui">produced&nbsp;</SPAN><SPAN class="css-2yp7ui">by&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">SAP&nbsp;</SPAN><SPAN class="css-15iwe0d">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">BEx&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">are&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-rh820s">resource-intensive&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-0">and&nbsp;</SPAN><SPAN class="css-0">have&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~10" class="css-1m8t0fv"><SPAN class="css-0">an&nbsp;</SPAN><SPAN class="css-rh820s">immediate&nbsp;</SPAN><SPAN class="css-rh820s">effect&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~11" class="css-1m8t0fv"><SPAN class="css-0">on&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~12" class="css-1m8t0fv"><SPAN class="css-0">reporting&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~13" class="css-1m8t0fv"><SPAN class="css-0">performance.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">3.&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-0">Instead&nbsp;</SPAN><SPAN class="css-0">of&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-rh820s">using&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">formulas&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">SAP&nbsp;</SPAN><SPAN class="css-15iwe0d">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">BEx&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Queries,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-1ber87j">build&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-1ber87j">calculated&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-1ber87j">key&nbsp;</SPAN><SPAN class="css-1ber87j">figures&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN class="css-1ber87j">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~12" class="css-1m8t0fv"><SPAN class="css-1ber87j">restricted&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~13" class="css-1m8t0fv"><SPAN class="css-1ber87j">key&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~14" class="css-1m8t0fv"><SPAN class="css-1ber87j">figures&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~15" class="css-1m8t0fv"><SPAN class="css-1ber87j">at&nbsp;</SPAN><SPAN class="css-1ber87j">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~16" class="css-1m8t0fv"><SPAN class="css-1ber87j">InfoCube&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~17" class="css-1m8t0fv"><SPAN class="css-15iwe0d">level.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-0">This&nbsp;</SPAN><SPAN class="css-0">is&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-rh820s">due&nbsp;</SPAN><SPAN class="css-0">to&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-rh820s">the&nbsp;</SPAN><SPAN class="css-rh820s">fact&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-rh820s">that&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">whereas&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">calculated&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">key&nbsp;</SPAN><SPAN class="css-1eh0vfs">figures&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">restricted&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">key&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~10" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">figures&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~11" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">are&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~12" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">global&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~13" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~14" class="css-1m8t0fv"><SPAN class="css-0">nature,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~15" class="css-1m8t0fv"><SPAN class="css-rh820s">formulae&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~16" class="css-1m8t0fv"><SPAN class="css-0">are&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~17" class="css-1m8t0fv"><SPAN class="css-0">local&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~18" class="css-1m8t0fv"><SPAN class="css-0">to&nbsp;</SPAN><SPAN class="css-0">a&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~19" class="css-1m8t0fv"><SPAN class="css-0">query.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><SPAN id="output-sentence-box~2" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~2"><SPAN data-testid="output-sentence-2"><SPAN id="output-phrase~2~0" class="css-1m8t0fv"><SPAN class="css-rh820s">As&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~1" class="css-1m8t0fv"><SPAN class="css-0">a&nbsp;</SPAN><SPAN class="css-rh820s">result,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~2" class="css-1m8t0fv"><SPAN class="css-0">they&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~3" class="css-1m8t0fv"><SPAN class="css-rh820s">may&nbsp;</SPAN><SPAN class="css-0">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~4" class="css-1m8t0fv"><SPAN class="css-rh820s">applied&nbsp;</SPAN><SPAN class="css-0">to&nbsp; </SPAN></SPAN><SPAN id="output-phrase~2~5" class="css-1m8t0fv"><SPAN class="css-0">queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~6" class="css-1m8t0fv"><SPAN class="css-rh820s">created&nbsp;</SPAN><SPAN class="css-rh820s">using&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~7" class="css-1m8t0fv"><SPAN class="css-0">InfoProviders,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~8" class="css-1m8t0fv"><SPAN class="css-rh820s">resulting&nbsp;</SPAN><SPAN class="css-0">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~9" class="css-1m8t0fv"><SPAN class="css-15iwe0d">values&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~10" class="css-1m8t0fv"><SPAN class="css-2yp7ui">that&nbsp;</SPAN><SPAN class="css-2yp7ui">are&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~11" class="css-1m8t0fv"><SPAN class="css-15iwe0d">consistent&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~12" class="css-1m8t0fv"><SPAN class="css-15iwe0d">across&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~13" class="css-1m8t0fv"><SPAN class="css-15iwe0d">queries.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~3" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~3"><SPAN data-testid="output-sentence-3"><SPAN id="output-phrase~3~0" class="css-1m8t0fv"><SPAN class="css-rh820s">Additionally,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~1" class="css-1m8t0fv"><SPAN class="css-0">it&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~2" class="css-1m8t0fv"><SPAN class="css-rh820s">reduces&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~3" class="css-1m8t0fv"><SPAN class="css-0">maintenance&nbsp;</SPAN><SPAN class="css-rh820s">work&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~4" class="css-1m8t0fv"><SPAN class="css-rh820s">because&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">all&nbsp;</SPAN><SPAN class="css-15iwe0d">queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~6" class="css-1m8t0fv"><SPAN class="css-2yp7ui">that&nbsp;</SPAN><SPAN class="css-2yp7ui">use&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~7" class="css-1m8t0fv"><SPAN class="css-1ber87j">a&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~8" class="css-1m8t0fv"><SPAN class="css-1ber87j">calculated&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~9" class="css-1m8t0fv"><SPAN class="css-1ber87j">key&nbsp;</SPAN><SPAN class="css-1ber87j">figure&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~10" class="css-1m8t0fv"><SPAN class="css-1ber87j">or&nbsp;</SPAN><SPAN class="css-2yp7ui">limited&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~11" class="css-1m8t0fv"><SPAN class="css-15iwe0d">key&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~12" class="css-1m8t0fv"><SPAN class="css-15iwe0d">figure&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~13" class="css-1m8t0fv"><SPAN class="css-2yp7ui">receive&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~14" class="css-1m8t0fv"><SPAN class="css-2yp7ui">the&nbsp;</SPAN><SPAN class="css-2yp7ui">effects&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~15" class="css-1m8t0fv"><SPAN class="css-2yp7ui">of&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~16" class="css-1m8t0fv"><SPAN class="css-15iwe0d">any&nbsp;</SPAN><SPAN class="css-2yp7ui">modifications&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~17" class="css-1m8t0fv"><SPAN class="css-15iwe0d">made&nbsp;</SPAN><SPAN class="css-15iwe0d">to&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~18" class="css-1m8t0fv"><SPAN class="css-2yp7ui">them.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">4.&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-0">Any&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-rh820s">computations&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">(such&nbsp;</SPAN><SPAN class="css-15iwe0d">as&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">currency&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">or&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">unit&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">conversions)&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">that&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-2yp7ui">must&nbsp;</SPAN><SPAN class="css-15iwe0d">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-2yp7ui">performed&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN class="css-15iwe0d">before&nbsp; </SPAN></SPAN><SPAN id="output-phrase~0~12" class="css-1m8t0fv"><SPAN class="css-15iwe0d">aggregation&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~13" class="css-1m8t0fv"><SPAN class="css-0">should&nbsp;</SPAN><SPAN class="css-0">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~14" class="css-1m8t0fv"><SPAN class="css-0">done&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~15" class="css-1m8t0fv"><SPAN class="css-rh820s">either&nbsp;</SPAN><SPAN class="css-0">before&nbsp;</SPAN><SPAN class="css-1eh0vfs">or&nbsp;</SPAN><SPAN class="css-1eh0vfs">during&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~16" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">the&nbsp;</SPAN><SPAN class="css-1eh0vfs">transformation&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~17" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~18" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">loading&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~19" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">into&nbsp;</SPAN><SPAN class="css-1eh0vfs">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~20" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">InfoProviders&nbsp; </SPAN></SPAN><SPAN id="output-phrase~0~21" class="css-1m8t0fv"><SPAN class="css-rh820s">operations.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-0">You&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-rh820s">can&nbsp;</SPAN><SPAN class="css-rh820s">skip&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-0">a&nbsp;</SPAN><SPAN class="css-rh820s">significant,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-0">time-consuming&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-0">query-processing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">step&nbsp;</SPAN><SPAN class="css-1ber87j">by&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-1ber87j">processing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-1ber87j">currency&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-1ber87j">or&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-1ber87j">unit&nbsp;</SPAN><SPAN class="css-1ber87j">conversion&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~10" class="css-1m8t0fv"><SPAN class="css-1ber87j">during&nbsp;</SPAN><SPAN class="css-1ber87j">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~11" class="css-1m8t0fv"><SPAN class="css-1ber87j">data-load&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~12" class="css-1m8t0fv"><SPAN class="css-1ber87j">process&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~13" class="css-1m8t0fv"><SPAN class="css-15iwe0d">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~14" class="css-1m8t0fv"><SPAN class="css-15iwe0d">storing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~15" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-15iwe0d">result&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~16" class="css-1m8t0fv"><SPAN class="css-15iwe0d">as&nbsp;</SPAN><SPAN class="css-15iwe0d">part&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~17" class="css-1m8t0fv"><SPAN class="css-15iwe0d">of&nbsp;</SPAN><SPAN class="css-15iwe0d">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~18" class="css-1m8t0fv"><SPAN class="css-15iwe0d">InfoProvider.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~2" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~2"><SPAN data-testid="output-sentence-2"><SPAN id="output-phrase~2~0" class="css-1m8t0fv"><SPAN class="css-0">As&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~1" class="css-1m8t0fv"><SPAN class="css-0">a&nbsp;</SPAN><SPAN class="css-0">result,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~2" class="css-1m8t0fv"><SPAN class="css-rh820s">queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~3" class="css-1m8t0fv"><SPAN class="css-rh820s">run&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~4" class="css-1m8t0fv"><SPAN class="css-rh820s">more&nbsp;</SPAN><SPAN class="css-rh820s">quickly.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">5.&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-0">InfoCubes&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-0">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-0">MultiProviders,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-rh820s">which&nbsp;</SPAN><SPAN class="css-0">are&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-0">optimized&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-0">for&nbsp;</SPAN><SPAN class="css-15iwe0d">data&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">aggregation,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-2yp7ui">should&nbsp;</SPAN><SPAN class="css-15iwe0d">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-2yp7ui">used&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-2yp7ui">to&nbsp; </SPAN><SPAN class="css-2yp7ui">develop&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN class="css-15iwe0d">SAP&nbsp;</SPAN><SPAN class="css-15iwe0d">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~12" class="css-1m8t0fv"><SPAN class="css-15iwe0d">BEx&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~13" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~14" class="css-1m8t0fv"><SPAN class="css-1ber87j">for&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~15" class="css-1m8t0fv"><SPAN class="css-1ber87j">SAP&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~16" class="css-1m8t0fv"><SPAN class="css-1ber87j">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~17" class="css-1m8t0fv"><SPAN class="css-1ber87j">systems&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~18" class="css-1m8t0fv"><SPAN class="css-1ber87j">running&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~19" class="css-1m8t0fv"><SPAN class="css-1ber87j">on&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~20" class="css-1m8t0fv"><SPAN class="css-1ber87j">non-SAP&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~21" class="css-1m8t0fv"><SPAN class="css-1ber87j">HANA&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~22" class="css-1m8t0fv"><SPAN class="css-15iwe0d">databases.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-0">AVOID&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-rh820s">writing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-0">queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-0">on&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">InfoSets&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">or&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">DataStore&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Objects&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-0">(DSOs).</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~2" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~2"><SPAN data-testid="output-sentence-2"><SPAN id="output-phrase~2~0" class="css-1m8t0fv"><SPAN class="css-0">DSOs,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~1" class="css-1m8t0fv"><SPAN class="css-0">which&nbsp;</SPAN><SPAN class="css-0">are&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~2" class="css-1m8t0fv"><SPAN class="css-0">flat-table&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~3" class="css-1m8t0fv"><SPAN class="css-0">structures,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~4" class="css-1m8t0fv"><SPAN class="css-0">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~5" class="css-1m8t0fv"><SPAN class="css-0">InfoSets&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~6" class="css-1m8t0fv"><SPAN class="css-0">are&nbsp;</SPAN><SPAN class="css-rh820s">largely&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~7" class="css-1m8t0fv"><SPAN class="css-0">join&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~8" class="css-1m8t0fv"><SPAN class="css-0">conditions&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~9" class="css-1m8t0fv"><SPAN class="css-0">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~10" class="css-1m8t0fv"><SPAN class="css-0">their&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~11" class="css-1m8t0fv"><SPAN class="css-0">analytical&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~12" class="css-1m8t0fv"><SPAN class="css-0">engines&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~13" class="css-1m8t0fv"><SPAN class="css-rh820s">lack&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~14" class="css-1m8t0fv"><SPAN class="css-rh820s">efficient&nbsp; </SPAN></SPAN><SPAN id="output-phrase~2~15" class="css-1m8t0fv"><SPAN class="css-0">data-processing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~16" class="css-1m8t0fv"><SPAN class="css-rh820s">components.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~3" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~3"><SPAN data-testid="output-sentence-3"><SPAN id="output-phrase~3~0" class="css-1m8t0fv"><SPAN class="css-1ber87j">Queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~1" class="css-1m8t0fv"><SPAN class="css-1ber87j">on&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~2" class="css-1m8t0fv"><SPAN class="css-1ber87j">DSOs&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~3" class="css-1m8t0fv"><SPAN class="css-1ber87j">are&nbsp;</SPAN><SPAN class="css-2yp7ui">preferred&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">for&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">systems&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~7" class="css-1m8t0fv"><SPAN class="css-2yp7ui">built&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">on&nbsp;</SPAN><SPAN class="css-2yp7ui">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~9" class="css-1m8t0fv"><SPAN class="css-15iwe0d">SAP&nbsp;</SPAN><SPAN class="css-15iwe0d">HANA&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~10" class="css-1m8t0fv"><SPAN class="css-2yp7ui">platform.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~4" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~4"><SPAN data-testid="output-sentence-4"><SPAN id="output-phrase~4~0" class="css-1m8t0fv"><SPAN class="css-0">As&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~1" class="css-1m8t0fv"><SPAN class="css-0">a&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~2" class="css-1m8t0fv"><SPAN class="css-0">columnar&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~3" class="css-1m8t0fv"><SPAN class="css-0">database,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~4" class="css-1m8t0fv"><SPAN class="css-0">SAP&nbsp;</SPAN><SPAN class="css-0">HANA&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~5" class="css-1m8t0fv"><SPAN class="css-0">is&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~6" class="css-1m8t0fv"><SPAN class="css-0">highly&nbsp;</SPAN><SPAN class="css-0">optimized&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~7" class="css-1m8t0fv"><SPAN class="css-0">for&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~8" class="css-1m8t0fv"><SPAN class="css-rh820s">reading&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~9" class="css-1m8t0fv"><SPAN class="css-0">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~10" class="css-1m8t0fv"><SPAN class="css-rh820s">aggregating&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~11" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">data&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~12" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">at&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~13" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">the&nbsp;</SPAN><SPAN class="css-1eh0vfs">database&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~14" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">level,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~15" class="css-1m8t0fv"><SPAN class="css-rh820s">producing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~16" class="css-1m8t0fv"><SPAN class="css-0">high&nbsp;</SPAN></SPAN><SPAN id="output-phrase~4~17" class="css-1m8t0fv"><SPAN class="css-rh820s">query&nbsp;</SPAN><SPAN class="css-0">performance.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">6.&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-0">The&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-0">exclude&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-0">operator&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-rh820s">should&nbsp;</SPAN><SPAN class="css-15iwe0d">not&nbsp;</SPAN><SPAN class="css-2yp7ui">be&nbsp;</SPAN><SPAN class="css-2yp7ui">used&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-1ber87j">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-1ber87j">restricted&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-1ber87j">key&nbsp;</SPAN><SPAN class="css-1ber87j">figures,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-1ber87j">filters,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-1ber87j">or&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-2yp7ui">selects&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN class="css-2yp7ui">since&nbsp;</SPAN><SPAN class="css-15iwe0d">it&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~12" class="css-1m8t0fv"><SPAN class="css-15iwe0d">is&nbsp;</SPAN><SPAN class="css-15iwe0d">not&nbsp; </SPAN><SPAN class="css-2yp7ui">designed&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~13" class="css-1m8t0fv"><SPAN class="css-0">to&nbsp;</SPAN><SPAN class="css-rh820s">work&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~14" class="css-1m8t0fv"><SPAN class="css-rh820s">with&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~15" class="css-1m8t0fv"><SPAN class="css-0">indexes.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-0">It&nbsp;</SPAN><SPAN class="css-0">is&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-rh820s">preferable&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-0">to&nbsp;</SPAN><SPAN class="css-rh820s">incorporate&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">characteristic&nbsp;</SPAN><SPAN class="css-15iwe0d">values&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">selections&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">rather&nbsp;</SPAN><SPAN class="css-15iwe0d">than&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">to&nbsp;</SPAN><SPAN class="css-15iwe0d">exclude&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-2yp7ui">them.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN data-testid="output-word-0-0-0"><SPAN class="css-0">7.&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN data-testid="output-word-1-0-0"><SPAN class="css-rh820s">Because&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN data-testid="output-word-2-0-0"><SPAN class="css-15iwe0d">BusinessObjects&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN data-testid="output-word-3-0-0"><SPAN class="css-15iwe0d">client&nbsp;</SPAN></SPAN><SPAN data-testid="output-word-3-0-1"><SPAN class="css-15iwe0d">tools&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN data-testid="output-word-4-0-0"><SPAN class="css-2yp7ui">do&nbsp;</SPAN></SPAN><SPAN data-testid="output-word-4-0-1"><SPAN class="css-15iwe0d">not&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN data-testid="output-word-5-0-0"><SPAN class="css-15iwe0d">use&nbsp;</SPAN></SPAN><SPAN data-testid="output-word-5-0-1"><SPAN class="css-15iwe0d">the&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN data-testid="output-word-6-0-0"><SPAN class="css-15iwe0d">Result&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN data-testid="output-word-7-0-0"><SPAN class="css-15iwe0d">Rows&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN data-testid="output-word-8-0-0"><SPAN class="css-2yp7ui">parameter&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN data-testid="output-word-9-0-0"><SPAN class="css-1ber87j">for&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN data-testid="output-word-10-0-0"><SPAN class="css-1ber87j">each&nbsp; </SPAN></SPAN><SPAN data-testid="output-word-10-0-1"><SPAN class="css-1ber87j">characteristic&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN data-testid="output-word-11-0-0"><SPAN class="css-1ber87j">in&nbsp;</SPAN></SPAN><SPAN data-testid="output-word-11-0-1"><SPAN class="css-1ber87j">a&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~12" class="css-1m8t0fv"><SPAN data-testid="output-word-12-0-0"><SPAN class="css-1ber87j">BEx&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~13" class="css-1m8t0fv"><SPAN data-testid="output-word-13-0-0"><SPAN class="css-15iwe0d">Query,&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~14" class="css-1m8t0fv"><SPAN data-testid="output-word-14-0-0"><SPAN class="css-15iwe0d">it&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~15" class="css-1m8t0fv"><SPAN data-testid="output-word-15-0-0"><SPAN class="css-15iwe0d">should&nbsp;</SPAN></SPAN><SPAN data-testid="output-word-15-0-1"><SPAN class="css-15iwe0d">be&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~16" class="css-1m8t0fv"><SPAN data-testid="output-word-16-0-0"><SPAN class="css-15iwe0d">set&nbsp;</SPAN></SPAN><SPAN data-testid="output-word-16-0-1"><SPAN class="css-15iwe0d">to&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~17" class="css-1m8t0fv"><SPAN data-testid="output-word-17-0-0"><SPAN class="css-15iwe0d">Always&nbsp;</SPAN></SPAN></SPAN><SPAN id="output-phrase~0~18" class="css-1m8t0fv"><SPAN data-testid="output-word-18-0-0"><SPAN class="css-15iwe0d">Suppress.</SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">8.&nbsp;</SPAN><SPAN class="css-1eh0vfs">If&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">non-cumulative&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-1ber87j">key&nbsp;</SPAN><SPAN class="css-1ber87j">figures&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-1ber87j">are&nbsp;</SPAN><SPAN class="css-1ber87j">used&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-1ber87j">in&nbsp;</SPAN><SPAN class="css-1ber87j">a&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-1ber87j">BEx&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Query,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">InfoCube&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-2yp7ui">queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-15iwe0d">must&nbsp;</SPAN><SPAN class="css-15iwe0d">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-0">compressed.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-0">The&nbsp;</SPAN><SPAN class="css-1eh0vfs">two&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">cumulative&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">key&nbsp;</SPAN><SPAN class="css-1eh0vfs">figures&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">that&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">are&nbsp;</SPAN><SPAN class="css-1eh0vfs">used&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">to&nbsp;</SPAN><SPAN class="css-1eh0vfs">define&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">a&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">non-cumulative&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-1ber87j">key&nbsp;</SPAN><SPAN class="css-1ber87j">figure&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-15iwe0d">are&nbsp;</SPAN><SPAN class="css-2yp7ui">processed&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~10" class="css-1m8t0fv"><SPAN class="css-2yp7ui">more&nbsp;</SPAN><SPAN class="css-2yp7ui">efficiently&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~11" class="css-1m8t0fv"><SPAN class="css-2yp7ui">thanks&nbsp;</SPAN><SPAN class="css-15iwe0d">to&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~12" class="css-1m8t0fv"><SPAN class="css-15iwe0d">InfoCube&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~13" class="css-1m8t0fv"><SPAN class="css-15iwe0d">compression,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~14" class="css-1m8t0fv"><SPAN class="css-2yp7ui">which&nbsp;</SPAN><SPAN class="css-2yp7ui">also&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~15" class="css-1m8t0fv"><SPAN class="css-2yp7ui">lowers&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~16" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-2yp7ui">amount&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~17" class="css-1m8t0fv"><SPAN class="css-15iwe0d">of&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~18" class="css-1m8t0fv"><SPAN class="css-15iwe0d">records&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~19" class="css-1m8t0fv"><SPAN class="css-15iwe0d">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~20" class="css-1m8t0fv"><SPAN class="css-15iwe0d">InfoCube&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~21" class="css-1m8t0fv"><SPAN class="css-0">tables.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">9.&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-rh820s">Whenever&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-0">possible,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-0">let&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-0">global&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-rh820s">filtering&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-rh820s">of&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-rh820s">temporal&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-rh820s">characteristics&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-0">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-rh820s">used.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-rh820s">By&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-rh820s">reading&nbsp;</SPAN><SPAN class="css-0">data&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-rh820s">solely&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-0">from&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-rh820s">required&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">database&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">partitions&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">that&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">are&nbsp;</SPAN><SPAN class="css-rh820s">constructed&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-15iwe0d">based&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~10" class="css-1m8t0fv"><SPAN class="css-15iwe0d">on&nbsp;</SPAN><SPAN class="css-15iwe0d">time&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~11" class="css-1m8t0fv"><SPAN class="css-15iwe0d">characteristics,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~12" class="css-1m8t0fv"><SPAN class="css-1ber87j">the&nbsp;</SPAN><SPAN class="css-1ber87j">Structure&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~13" class="css-1m8t0fv"><SPAN class="css-1ber87j">Query&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~14" class="css-1m8t0fv"><SPAN class="css-1ber87j">Language&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~15" class="css-1m8t0fv"><SPAN class="css-1ber87j">(SQL)&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~16" class="css-1m8t0fv"><SPAN class="css-1ber87j">engine&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~17" class="css-1m8t0fv"><SPAN class="css-15iwe0d">is&nbsp;</SPAN><SPAN class="css-2yp7ui">able&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~18" class="css-1m8t0fv"><SPAN class="css-2yp7ui">to&nbsp;</SPAN><SPAN class="css-15iwe0d">create&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~19" class="css-1m8t0fv"><SPAN class="css-15iwe0d">an&nbsp;</SPAN><SPAN class="css-15iwe0d">execution&nbsp;</SPAN><SPAN class="css-15iwe0d">plan&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~20" class="css-1m8t0fv"><SPAN class="css-15iwe0d">that&nbsp;</SPAN><SPAN class="css-0">is&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~21" class="css-1m8t0fv"><SPAN class="css-0">as&nbsp;</SPAN><SPAN class="css-rh820s">efficient&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~22" class="css-1m8t0fv"><SPAN class="css-0">as&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~23" class="css-1m8t0fv"><SPAN class="css-rh820s">possible.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">10.&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-0">Ensure&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-0">that&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-rh820s">there&nbsp;</SPAN><SPAN class="css-15iwe0d">is&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">a&nbsp;</SPAN><SPAN class="css-15iwe0d">filter&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">order&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-0">within&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-15iwe0d">structures&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-1ber87j">and&nbsp;</SPAN><SPAN class="css-1ber87j">that&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-1ber87j">it&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-1ber87j">is&nbsp;</SPAN><SPAN class="css-1ber87j">filtered&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN class="css-1ber87j">at&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~12" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">the&nbsp;</SPAN><SPAN class="css-1eh0vfs">highest&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~13" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">level.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><EM><STRONG><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-0">The&nbsp;</SPAN><SPAN class="css-0">analytical&nbsp;</SPAN><SPAN class="css-0">engine&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-rh820s">constructs&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">the&nbsp;</SPAN><SPAN class="css-1eh0vfs">where&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">clause&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">in&nbsp;</SPAN><SPAN class="css-1eh0vfs">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">SQL&nbsp;</SPAN><SPAN class="css-1eh0vfs">statement&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-rh820s">using&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-rh820s">appropriate&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-0">filter&nbsp; </SPAN></SPAN></SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-0">order.</SPAN></SPAN></SPAN></SPAN></SPAN></STRONG></EM><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">11.&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-rh820s">Decrease&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-rh820s">amount&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-rh820s">of&nbsp;</SPAN><SPAN class="css-0">data&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-0">by&nbsp;</SPAN><SPAN class="css-rh820s">adding&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-rh820s">numerous&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-rh820s">necessary&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-0">variables.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-0">Mandatory&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-0">variables&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-rh820s">ensure&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-rh820s">greater&nbsp;</SPAN><SPAN class="css-15iwe0d">performance&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">by&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-2yp7ui">forcing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-15iwe0d">query&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">user&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">to&nbsp;</SPAN><SPAN class="css-2yp7ui">supply&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-15iwe0d">filters&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~10" class="css-1m8t0fv"><SPAN class="css-15iwe0d">at&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~11" class="css-1m8t0fv"><SPAN class="css-15iwe0d">runtime&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~12" class="css-1m8t0fv"><SPAN class="css-15iwe0d">and&nbsp;</SPAN><SPAN class="css-2yp7ui">reducing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~13" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-2yp7ui">amount&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~14" class="css-1m8t0fv"><SPAN class="css-2yp7ui">of&nbsp;</SPAN><SPAN class="css-15iwe0d">data&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~15" class="css-1m8t0fv"><SPAN class="css-2yp7ui">that&nbsp;</SPAN><SPAN class="css-2yp7ui">needs&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~16" class="css-1m8t0fv"><SPAN class="css-1ber87j">to&nbsp;</SPAN><SPAN class="css-1ber87j">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~17" class="css-1m8t0fv"><SPAN class="css-1ber87j">read&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~18" class="css-1m8t0fv"><SPAN class="css-1ber87j">from&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~19" class="css-1m8t0fv"><SPAN class="css-1ber87j">the&nbsp;</SPAN><SPAN class="css-15iwe0d">database.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><SPAN id="output-sentence-box~2" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~2"><SPAN data-testid="output-sentence-2"><SPAN id="output-phrase~2~0" class="css-1m8t0fv"><SPAN class="css-rh820s">Make&nbsp;</SPAN><SPAN class="css-0">sure&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~1" class="css-1m8t0fv"><SPAN class="css-1ber87j">all&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~2" class="css-1m8t0fv"><SPAN class="css-1ber87j">exit&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~3" class="css-1m8t0fv"><SPAN class="css-1ber87j">variables&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~4" class="css-1m8t0fv"><SPAN class="css-1ber87j">used&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~5" class="css-1m8t0fv"><SPAN class="css-1ber87j">in&nbsp;</SPAN><SPAN class="css-1ber87j">a&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~6" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">SAP&nbsp;</SPAN><SPAN class="css-1eh0vfs">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~7" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">BEx&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~8" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">Query&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~9" class="css-1m8t0fv"><SPAN class="css-rh820s">have&nbsp;</SPAN><SPAN class="css-0">optimized&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~10" class="css-1m8t0fv"><SPAN class="css-0">ABAP&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~11" class="css-1m8t0fv"><SPAN class="css-0">code.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~3" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~3"><SPAN data-testid="output-sentence-3"><SPAN id="output-phrase~3~0" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Performance&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~1" class="css-1m8t0fv"><SPAN class="css-15iwe0d">can&nbsp;</SPAN><SPAN class="css-2yp7ui">be&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~2" class="css-1m8t0fv"><SPAN class="css-2yp7ui">greatly&nbsp;</SPAN><SPAN class="css-2yp7ui">hampered&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~3" class="css-1m8t0fv"><SPAN class="css-2yp7ui">by&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">programs&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~5" class="css-1m8t0fv"><SPAN class="css-2yp7ui">with&nbsp;</SPAN><SPAN class="css-2yp7ui">poor&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">ABAP&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~7" class="css-1m8t0fv"><SPAN class="css-2yp7ui">coding.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">12. </SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Only&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-2yp7ui">incorporate&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">navigational&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">time-dependent&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">attributes&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-2yp7ui">into&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">queries&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-0">when&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-rh820s">necessary.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-15iwe0d">The&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-15iwe0d">InfoCube&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-15iwe0d">tables&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-2yp7ui">do&nbsp;</SPAN><SPAN class="css-15iwe0d">not&nbsp;</SPAN><SPAN class="css-2yp7ui">store&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">time-dependent&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-2yp7ui">qualities&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-2yp7ui">or&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">navigational&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">attribute&nbsp;</SPAN><SPAN class="css-15iwe0d">data.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~2" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~2"><SPAN data-testid="output-sentence-2"><SPAN id="output-phrase~2~0" class="css-1m8t0fv"><SPAN class="css-15iwe0d">In&nbsp;</SPAN><SPAN class="css-2yp7ui">order&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~1" class="css-1m8t0fv"><SPAN class="css-15iwe0d">to&nbsp;</SPAN><SPAN class="css-2yp7ui">provide&nbsp;</SPAN><SPAN class="css-15iwe0d">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~2" class="css-1m8t0fv"><SPAN class="css-15iwe0d">output&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">with&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">time-dependent&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~5" class="css-1m8t0fv"><SPAN class="css-2yp7ui">features&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">navigational&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">attributes,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~9" class="css-1m8t0fv"><SPAN class="css-1ber87j">additional&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~10" class="css-1m8t0fv"><SPAN class="css-1ber87j">table&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~11" class="css-1m8t0fv"><SPAN class="css-1ber87j">joins&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~12" class="css-1m8t0fv"><SPAN class="css-1ber87j">and&nbsp;</SPAN><SPAN class="css-1ber87j">data&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~13" class="css-1m8t0fv"><SPAN class="css-1ber87j">processing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~14" class="css-1m8t0fv"><SPAN class="css-2yp7ui">must&nbsp;</SPAN><SPAN class="css-15iwe0d">be&nbsp; </SPAN></SPAN><SPAN id="output-phrase~2~15" class="css-1m8t0fv"><SPAN class="css-2yp7ui">done&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~16" class="css-1m8t0fv"><SPAN class="css-15iwe0d">at&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~17" class="css-1m8t0fv"><SPAN class="css-15iwe0d">query&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~18" class="css-1m8t0fv"><SPAN class="css-2yp7ui">execution&nbsp;</SPAN><SPAN class="css-15iwe0d">time,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~19" class="css-1m8t0fv"><SPAN class="css-15iwe0d">which&nbsp;</SPAN><SPAN class="css-rh820s">causes&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~20" class="css-1m8t0fv"><SPAN class="css-0">a&nbsp;</SPAN><SPAN class="css-0">performance&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~21" class="css-1m8t0fv"><SPAN class="css-0">lag.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">13. </SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-rh820s">Reduce&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-1ber87j">the&nbsp;</SPAN><SPAN class="css-1ber87j">number&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-1ber87j">of&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-1ber87j">nodes&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-0">query&nbsp;</SPAN><SPAN class="css-15iwe0d">results&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">if&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-15iwe0d">hierarchies&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-15iwe0d">are&nbsp;</SPAN><SPAN class="css-2yp7ui">utilized&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-15iwe0d">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~11" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-0">query.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-rh820s">The&nbsp;</SPAN><SPAN class="css-15iwe0d">performance&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-2yp7ui">of&nbsp;</SPAN><SPAN class="css-15iwe0d">a&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-1ber87j">SAP&nbsp;</SPAN><SPAN class="css-1ber87j">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-1ber87j">BEx&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-1ber87j">Query&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-rh820s">is&nbsp;</SPAN><SPAN class="css-rh820s">significantly&nbsp;</SPAN><SPAN class="css-rh820s">impacted&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-rh820s">when&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-0">hierarchy&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-0">nodes&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-rh820s">are&nbsp;</SPAN><SPAN class="css-rh820s">used.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~2" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~2"><SPAN data-testid="output-sentence-2"><SPAN id="output-phrase~2~0" class="css-1m8t0fv"><SPAN class="css-0">This&nbsp;</SPAN><SPAN class="css-0">is&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~1" class="css-1m8t0fv"><SPAN class="css-rh820s">because&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~2" class="css-1m8t0fv"><SPAN class="css-0">temporary&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~3" class="css-1m8t0fv"><SPAN class="css-0">hierarchy&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~4" class="css-1m8t0fv"><SPAN class="css-0">tables&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~5" class="css-1m8t0fv"><SPAN class="css-rh820s">are&nbsp;</SPAN><SPAN class="css-rh820s">created&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~6" class="css-1m8t0fv"><SPAN class="css-rh820s">and&nbsp;</SPAN><SPAN class="css-0">then&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~7" class="css-1m8t0fv"><SPAN class="css-0">read&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~8" class="css-1m8t0fv"><SPAN class="css-rh820s">during&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~9" class="css-1m8t0fv"><SPAN class="css-0">execution.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~3" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~3"><SPAN data-testid="output-sentence-3"><SPAN id="output-phrase~3~0" class="css-1m8t0fv"><SPAN class="css-rh820s">Utilizing&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~1" class="css-1m8t0fv"><SPAN class="css-0">user-entry&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~2" class="css-1m8t0fv"><SPAN class="css-15iwe0d">variables&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">is&nbsp;</SPAN><SPAN class="css-15iwe0d">one&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~4" class="css-1m8t0fv"><SPAN class="css-2yp7ui">method&nbsp;</SPAN><SPAN class="css-15iwe0d">of&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~5" class="css-1m8t0fv"><SPAN class="css-2yp7ui">lowering&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-15iwe0d">number&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">of&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~8" class="css-1m8t0fv"><SPAN class="css-0">hierarchies.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <BR /> 14. <SPAN id="output-sentence-box~0" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~0"><SPAN data-testid="output-sentence-0"><SPAN id="output-phrase~0~0" class="css-1m8t0fv"><SPAN class="css-0">Suppress&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~1" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~2" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">Not&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~3" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">Assigned&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~4" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">node&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">at&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-15iwe0d">hierarchy&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~7" class="css-1m8t0fv"><SPAN class="css-0">definition&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~8" class="css-1m8t0fv"><SPAN class="css-rh820s">to&nbsp;</SPAN><SPAN class="css-rh820s">remove&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~9" class="css-1m8t0fv"><SPAN class="css-0">it&nbsp;</SPAN><SPAN class="css-rh820s">from&nbsp;</SPAN></SPAN><SPAN id="output-phrase~0~10" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-0">hierarchy.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~1" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~1"><SPAN data-testid="output-sentence-1"><SPAN id="output-phrase~1~0" class="css-1m8t0fv"><SPAN class="css-15iwe0d">Performance&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~1" class="css-1m8t0fv"><SPAN class="css-15iwe0d">is&nbsp;</SPAN><SPAN class="css-2yp7ui">enhanced&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~2" class="css-1m8t0fv"><SPAN class="css-15iwe0d">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~3" class="css-1m8t0fv"><SPAN class="css-2yp7ui">unnecessary&nbsp;</SPAN><SPAN class="css-15iwe0d">data&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">is&nbsp;</SPAN><SPAN class="css-2yp7ui">prevented&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~5" class="css-1m8t0fv"><SPAN class="css-rh820s">from&nbsp;</SPAN><SPAN class="css-rh820s">being&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~6" class="css-1m8t0fv"><SPAN class="css-rh820s">fetched&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~7" class="css-1m8t0fv"><SPAN class="css-rh820s">into&nbsp;</SPAN><SPAN class="css-0">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~8" class="css-1m8t0fv"><SPAN class="css-0">query-result&nbsp;</SPAN></SPAN><SPAN id="output-phrase~1~9" class="css-1m8t0fv"><SPAN class="css-0">set.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~2" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~2"><SPAN data-testid="output-sentence-2"><SPAN id="output-phrase~2~0" class="css-1m8t0fv"><SPAN class="css-0">To&nbsp;</SPAN><SPAN class="css-rh820s">choose&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~1" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-15iwe0d">hierarchy,&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~2" class="css-1m8t0fv"><SPAN class="css-2yp7ui">enter&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~3" class="css-1m8t0fv"><SPAN class="css-15iwe0d">the&nbsp;</SPAN><SPAN class="css-15iwe0d">SAP&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~4" class="css-1m8t0fv"><SPAN class="css-15iwe0d">BW&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~5" class="css-1m8t0fv"><SPAN class="css-15iwe0d">transaction&nbsp;</SPAN><SPAN class="css-15iwe0d">code&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~6" class="css-1m8t0fv"><SPAN class="css-15iwe0d">RSH1&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~7" class="css-1m8t0fv"><SPAN class="css-15iwe0d">and&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~8" class="css-1m8t0fv"><SPAN class="css-2yp7ui">choose&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~9" class="css-1m8t0fv"><SPAN class="css-1ber87j">Main&nbsp;</SPAN><SPAN class="css-1ber87j">Menu&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~10" class="css-1m8t0fv"><SPAN class="css-1ber87j">&gt;&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~11" class="css-1m8t0fv"><SPAN class="css-1ber87j">Goto&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~12" class="css-1m8t0fv"><SPAN class="css-1ber87j">&gt;&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~13" class="css-1m8t0fv"><SPAN class="css-1ber87j">Hierarchy&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~14" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">attributes&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~15" class="css-1m8t0fv"><SPAN class="css-rh820s">from&nbsp;</SPAN></SPAN><SPAN id="output-phrase~2~16" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-0">menu.</SPAN></SPAN></SPAN> </SPAN></SPAN></SPAN><SPAN id="output-sentence-box~3" class="output-sentence"><SPAN class="css-x5hiaf"><SPAN id="output-sentence~3"><SPAN data-testid="output-sentence-3"><SPAN id="output-phrase~3~0" class="css-1m8t0fv"><SPAN class="css-0">Set&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~1" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~2" class="css-1m8t0fv"><SPAN class="css-0">Suppress&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~3" class="css-1m8t0fv"><SPAN class="css-0">'Unassigned'&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~4" class="css-1m8t0fv"><SPAN class="css-0">Node&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~5" class="css-1m8t0fv"><SPAN class="css-0">parameter&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~6" class="css-1m8t0fv"><SPAN class="css-0">check&nbsp;</SPAN><SPAN class="css-0">box&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~7" class="css-1m8t0fv"><SPAN class="css-0">in&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~8" class="css-1m8t0fv"><SPAN class="css-0">the&nbsp;</SPAN><SPAN class="css-0">pop-up&nbsp;</SPAN><SPAN class="css-rh820s">window&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~9" class="css-1m8t0fv"><SPAN class="css-0">that&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~10" class="css-1m8t0fv"><SPAN class="css-rh820s">appears&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~11" class="css-1m8t0fv"><SPAN class="css-0">(Figure below </SPAN></SPAN><SPAN id="output-phrase~3~12" class="css-1m8t0fv"><SPAN class="css-0">),&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~13" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">and&nbsp;</SPAN><SPAN class="css-1eh0vfs">then&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~14" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">click&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~15" class="css-1m8t0fv"><SPAN class="css-1eh0vfs">the&nbsp;</SPAN><SPAN class="css-1eh0vfs">green&nbsp;</SPAN><SPAN class="css-1eh0vfs">checkmark&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~16" class="css-1m8t0fv"><SPAN class="css-rh820s">symbol&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~17" class="css-1m8t0fv"><SPAN class="css-0">to&nbsp;</SPAN><SPAN class="css-0">save&nbsp;</SPAN></SPAN><SPAN id="output-phrase~3~18" class="css-1m8t0fv"><SPAN class="css-0">your&nbsp;</SPAN><SPAN class="css-0">settings.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN><BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/2-64.png" /></P><BR /> <STRONG>15</STRONG>. Make sure that&nbsp;the&nbsp;Use&nbsp;Selection&nbsp;of&nbsp;Structure&nbsp;Elements&nbsp;parameter&nbsp;in&nbsp;the&nbsp;query<BR /> attributes&nbsp;is&nbsp;enabled&nbsp;for&nbsp;queries&nbsp;that&nbsp;contain&nbsp;a&nbsp;number&nbsp;of&nbsp;restricted&nbsp;and&nbsp;computed&nbsp;key&nbsp;figures.<BR /> By&nbsp;structuring&nbsp;the&nbsp;SQL&nbsp;statement,&nbsp;it&nbsp;is&nbsp;possible&nbsp;to&nbsp;only&nbsp;retrieve&nbsp;the&nbsp;structural&nbsp;elements&nbsp;or&nbsp;key<BR /> figures&nbsp;that&nbsp;are&nbsp;truly&nbsp;needed.<BR /> <BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <BR /> <STRONG>16</STRONG>. for a heavy Bex report where <STRONG>JAN-DEC MTD Data,</STRONG> J<STRONG>AN-DEC YTD Data, Q1-Q4 Data &amp; H1-H2 data need to be shown</STRONG> better to create a period structure and try to load MTD, YTD,QTD,HTD data into the <STRONG>ADSO</STRONG> rather than calculating at the Bex Query. If flat data is loaded to ADSO and still if we create a bex query on top these ADSOs then <STRONG>also performance can be managed to some extent with above points</STRONG>. But if MTD,YTD,QTD,HTD calculations need to be done at a HANA CV level and you are trying to show these calculations in a Bex Query where raw data sits in HANA CV then definitely we will have performance issues as calculation is happening on the analytic engine then hits to DB eng before rendering the number on your screen.<BR /> <BR /> So follow the strategy of&nbsp; <STRONG>calculate -&gt; Store --&gt; Report</STRONG>.&nbsp; (Do not do complex calculations at HANA CV level. If we have huge data volume then for sure report performance will go down)<BR /> <BR /> <SPAN style="text-decoration: underline"><STRONG>For Example.</STRONG></SPAN><BR /> <BR /> Create a <STRONG>period</STRONG> structure in the Bex Query with individual selections for optimum performance.<BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/12-22.png" /></P><BR /> &nbsp;<BR /> <BR /> 17. Avoid Cell restrictions in the Bex query or try to minimize as much as possible.<BR /> <BR /> &nbsp;<BR /> <BR /> 18. <STRONG>Once the trace is generated we can use of standard hints&nbsp; for the info provider.</STRONG><BR /> <BR /> &nbsp;<BR /> <BR /> How to do this directly without&nbsp; SM30 and as it is a cross client transparent table:-<BR /> <BR /> Go to SAP T Code S37, &amp; enter the function Module SE16N_INTERFACE<BR /> <BR /> Once we execute the same as below :-<BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/13-21.png" /></P><BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/14-17.png" /></P><BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/15-31.png" /></P><BR /> For best performance NO_JOIN_THRU_AGGR would be most promising.<BR /> <BR /> why? answer is : Hints are typically used&nbsp;<B>to optimize SAP HANA performance or memory consumption</B>&nbsp;and have no effect on the result set of the request.<BR /> <BR /> &nbsp;<BR /> <H3 id="toc-hId-896440620"><SPAN style="text-decoration: underline"><STRONG>How to Analyze the Bex Query performance&nbsp;</STRONG></SPAN></H3><BR /> If we have taken care With the above steps, the bex query should be in a proper shape and manageable performance.<BR /> <BR /> But still bottlenecks, then how can we analyze the performance of BexQuery?<BR /> <BR /> &nbsp;<BR /> <BR /> Kindly follow the steps:<BR /> <BR /> These steps are by my own learning experience by working with <STRONG>various SAP PE experts during actual project work.</STRONG><BR /> <H3 id="toc-hId-699927115">Step 1 :-&nbsp; <STRONG>First go to ST 12 and do HANA trace collection from the bankend.</STRONG></H3><BR /> How the ST 12 screen looks like. I found it difficult when I do by my own but took Basis help to collect the trace.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/3-54.png" /></P><BR /> &nbsp;<BR /> <BR /> Now with the ST 12 screen open&nbsp; go to RSRT and run the Bex Query in my case it is <STRONG>ZTEST_NAREN_COPA_REORT. Once the report runs fine then again go back to ST 12 then clink end trace collection and click on Fullscreen below or click the SQL Summary:-</STRONG><BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/4-51.png" /></P><BR /> &nbsp;<BR /> <BR /> How the SQL summary looks :-<BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/5-45.png" /></P><BR /> &nbsp;<BR /> <BR /> Next Click on the call statement<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/6-47.png" /></P><BR /> So total DB time arround 321.226 seconds, HANA performance analysis performed.<BR /> <BR /> &nbsp;<BR /> <H3 id="toc-hId-503413610">Step 2: Now say a workbook is created on top this bex query then kindly follow below steps :-</H3><BR /> <OL><BR /> <LI>Open Analysis for Office the click on File --&gt; Home--&gt;Analysis --&gt;TroubleShoot --&gt; Advanced Mode -- &gt;Analysis --&gt;&nbsp; Then check mark Enable BW server tracing and Enable workbook Profiling (BW statistics). PFB the picture</LI><BR /> </OL><BR /> <P style="overflow: hidden;margin-bottom: 0px">2. <IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/7-49.png" /></P><BR /> Now run the workbook and check TRACE in transaction RSTT<BR /> <BR /> Rerun and Debug is possible here too.<BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/8-39.png" /></P><BR /> &nbsp;<BR /> <H3 id="toc-hId-306900105">Step 3 : Enable BW query Statistics</H3><BR /> Go to SAP T Code : <STRONG>RSDDSTAT</STRONG> to enable the statistics for BW Queries<BR /> <BR /> Change the default setting for all BW Bex Queries as in below picture<BR /> <BR /> Change setting for Individual query or Info providers<BR /> <BR /> &nbsp;<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/9-34.png" /></P><BR /> &nbsp;<BR /> <BR /> &nbsp;<BR /> <H3 id="toc-hId-110386600">Step 4 : Check BW query Statistics</H3><BR /> Go to SAP&nbsp; T Code ST13, tool - BIIBTOOLS.<BR /> <BR /> Run BW Statistics Analysis<BR /> <BR /> Select Statistics by User ID and Time .PFB below .<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/10-30.png" /></P><BR /> Check the query statistics analysis.<BR /> <BR /> OLAP time reflects the complexity of the BW query design and the time spent on the ABAP time in the application.<BR /> <BR /> Data Manager time reflects the data collection time in the database. PFB snapshot.<BR /> <P style="overflow: hidden;margin-bottom: 0px"><IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/blog_attachments/2023/10/11-27.png" /></P><BR /> &nbsp;<BR /> <BR /> Kindly refer to below SAP notes as well<BR /> <BR /> &nbsp;<BR /> <UL><BR /> <LI>SAP Note 1681396 - Query Performance.</LI><BR /> <LI>SAP Note 2620998 for Analysis for Office.</LI><BR /> </UL><BR /> <H3 id="toc-hId--86126905"><SPAN style="text-decoration: underline"><STRONG>AO workbook design : Best Practices to follow</STRONG></SPAN></H3><BR /> When we refresh a workbook it refreshed every query and the sheet in the workbooks sequentially.<BR /> <BR /> <STRONG>Recommendation</STRONG>:<BR /> <UL><BR /> <LI>Refreshing individual Data sources is faster than refreshing all sources.</LI><BR /> <LI>Use only one query in the sheet, and allow all users to change the columns in the WORKBOOK and refresh the query to change the granularity.</LI><BR /> <LI>Consider refreshing a single sheet instead of refreshing all at once.</LI><BR /> <LI>For pure reporting purpose, consider using BI tools instead of Excel. For example SAP BO WEBI and SAC can execute BW bex queries in parallel.</LI><BR /> </UL><BR /> &nbsp;<BR /> <UL><BR /> <LI><STRONG>do not check refresh workbook on opening</STRONG> and if we do this refresh before input variables in prompt window and after input new variables, the AO workbook will refresh again.</LI><BR /> </UL><BR /> &nbsp;<BR /> <UL><BR /> <LI>This will cause duplicate workbook refresh on open.</LI><BR /> <LI>There are few blogpost and&nbsp; PDF document available on the internet kindly follow this document to&nbsp; check in Bex query optimization in detail and we can understand from scratch.</LI><BR /> </UL><BR /> <A href="https://blogs.sap.com/2022/02/02/query-performance-optimization-in-bw-few-tips/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2022/02/02/query-performance-optimization-in-bw-few-tips/&nbsp;</A><BR /> <BR /> <STRONG>(By Pallab Haldar)&nbsp;</STRONG><BR /> <UL><BR /> <LI>The PDF credit goes to <STRONG>Pravin Gupta (As in the document )&nbsp;</STRONG> and I do not own the rights for it. The link is just used for self-analysis and reference purposes, as I personally found it useful where each information is given from scratch to end of Bex Query optimization.</LI><BR /> </UL><BR /> <A href="https://teklink.com/wp-content/uploads/2015/12/RA2015_Gupta_Optimizingbexqueryperformance.pdf" target="_blank" rel="nofollow noopener noreferrer">https://teklink.com/wp-content/uploads/2015/12/RA2015_Gupta_Optimizingbexqueryperformance.pdf</A><BR /> <BR /> &nbsp;<BR /> <BR /> <STRONG>These pieces of information are neither copied from anyone nor performed in a client system. These queries are performed in a local SAP server. Where ever references were used I gave the credit to the blogpost author.</STRONG><BR /> <BR /> Thank you,<BR /> <BR /> Narasingha 2023-10-25T16:10:28+02:00 https://community.sap.com/t5/technology-blogs-by-sap/how-to-replace-rrw3-get-query-view-data/ba-p/13598083 How to replace RRW3_GET_QUERY_VIEW_DATA 2024-02-07T23:59:11.396000+01:00 martin_mayer https://community.sap.com/t5/user/viewprofilepage/user-id/191669 <P><SPAN>This blog&nbsp;</SPAN><SPAN>is about how to replace the outdated function module in latest system using the <STRONG>L</STRONG>ightwight</SPAN><SPAN>&nbsp;</SPAN><SPAN class=""><STRONG>B</STRONG>ICS</SPAN><SPAN>&nbsp;</SPAN><SPAN class=""><STRONG>A</STRONG>PI</SPAN><SPAN>&nbsp; (LBA)</SPAN></P><H5 id="toc-hId-1353166646">function to be replaced</H5><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>DATA lt_parameter TYPE rrxw3tquery. lt_parameter = VALUE #( ( name = 'VAR_LAND' value = 'DE' ) ). CALL FUNCTION 'RRW3_GET_QUERY_VIEW_DATA' EXPORTING i_query = l_query * i_view_id = i_t_parameter = lt_parameter IMPORTING e_axis_info = lt_axis_info e_cell_data = lt_cell_data e_axis_data = lt_axis_data. * E_TXT_SYMBOLS</code></pre><P>&nbsp;</P><P>this call is showing an example for an analytical query with 1 query variable.&nbsp;Provide a query name and retrieve query resultset with table lt_cell_data. Depending on the use case additional information about axis and text symbols can fetched and need to interpreted by the caller.</P><H5 id="toc-hId-1156653141">replacing with LBA</H5><P>using LBA the same query is called like this</P><P>&nbsp;</P><pre class="lia-code-sample language-abap"><code>DATA(lr_lba_query) = NEW cl_lba_std_query( i_query_name = l_query ). Data(lt_varialbe_value) = VALUE cl_lba_std_query=&gt;tn_t_values( ( name = 'VAR_LAND' sign = 'I' opt = 'EQ' value_low = 'DE' ) ). lr_lba_query-&gt;get_resultset( EXPORTING "i_t_requested_columns = "i_t_filter_values = i_t_variable_values = lt_varialbe_value IMPORTING e_t_column_catalog = DATA(lt_column_catalog) e_r_resultset = DATA(lt_resultset) ).</code></pre><P>&nbsp;</P><P><SPAN>resultset comparision function module output and LBA output</SPAN></P><H5 id="toc-hId-960139636"><span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="martin_mayer_0-1707314594279.png" style="width: 813px;"><img src="https://community.sap.com/t5/image/serverpage/image-id/62118iC34E009DA99CCA67/image-dimensions/813x208?v=v2" width="813" height="208" role="button" title="martin_mayer_0-1707314594279.png" alt="martin_mayer_0-1707314594279.png" /></span></H5><H5 id="toc-hId-763626131"><SPAN class="">changing query desingtime setting at runtime</SPAN></H5><P><SPAN><SPAN class="">RRW3_GET_QUERY_VIEW_DATA has parameter i_view_id to overrule the query desingtime setting. A view_id contains other query resultset setting than the designtime with regards to dimension-&amp; keyfigures selection and filter settings. The view_id need to be created before using it.</SPAN></SPAN></P><P><SPAN><SPAN class="">Overruling designtime setting with LBA works different , view_id's are not needed anylonger.</SPAN></SPAN></P><UL><LI>Instead dimension and keyfigure selection can be changed and set with each call dynamicly with i_t_requested_columns.</LI><LI>not providing or empty&nbsp;i_t_requested_columns means to select all available dimensions and keyfigures including dimension from free axis for resultset</LI><LI><SPAN>Filters can be supplied with i_t_filter_values.</SPAN></LI></UL><P>Further details are available with ABAPDoc in the code.</P><P>Also see this blog introducing LBA<SPAN>&nbsp;</SPAN><A class="" href="https://blogs.sap.com/2023/01/17/how-to-consume-an-analytical-query-bex-query-in-abap/" target="_blank" rel="noopener noreferrer">https://blogs.sap.com/2023/01/17/how-to-consume-an-analytical-query-bex-query-in-abap/</A></P><H5 id="toc-hId-567112626">Release Info:&nbsp;&nbsp;</H5><P>Valid for all SAP_BW &amp; BW/4 codelines equal or later than&nbsp; <SPAN class="">SAP_BW </SPAN><SPAN class="">755 ( <SPAN><SPAN class="">embedded BW 7.55 in S/4HANA 2009</SPAN></SPAN>&nbsp;) and </SPAN><SPAN class="">DW4CORE</SPAN><SPAN class="">300 ( BW/4Hana 2021 )</SPAN></P> 2024-02-07T23:59:11.396000+01:00