SAP Business Planning and Consolidation (SAP BPC) 10.1, version for NetWeaver, is the latest generally available version of SAP BPC and is the most optimized version to use with SAP HANA. (For the purposes of this article, when I refer to SAP BPC NetWeaver from this point on, I mean SAP BPC 10.1, version for NetWeaver.) This version offers two model types: standard and embedded. The embedded model type can be used only with SAP HANA, whereas the standard model type can be used with or without SAP HANA (that is, with any other database supported by SAP NetWeaver).
However, regardless of the model type, SAP endeavors to push the calculations and data processing to the SAP HANA layer to leverage its enhanced processing power. As a result, with the current and subsequent Support Package releases, expect to see more SAP BPC NetWeaver functions pushed down to the SAP HANA layer (Figure 1).
In-memory execution of SAP BPC NetWeaver functions in SAP BPC NetWeaver 10.1
In this article I focus on tips and tricks that you can use to manage the in-memory execution of SAP BPC NetWeaver functions in SAP BPC NetWeaver 10.1.
The in-memory execution of SAP BPC NetWeaver functions can be managed at various levels. I consider all these levels and discuss some technical limitations that exist as of now (May 2016) for the in-memory execution. You can manage the in-memory execution at three different steps. They are:
- Check definitions of SAP BW InfoProviders, SAP BPC planning functions, and other prerequisites for in-memory execution
- Manage in-memory execution of SAP BPC functions with SAP BW techniques
- Manage in-memory execution with user parameters
Step 1. Check Prerequisites for In-Memory Execution of SAP BPC NetWeaver Functions
In order for SAP BPC functions to be executed in-memory, there are certain prerequisites that must be satisfied in the definition of the SAP BW InfoProviders as well as in the definition of SAP BPC planning functions. Also there are some technical limitations (discussed later in this article) that can affect in-memory execution of the planning functions. There is a very informative SAP Note (1729988, log-in required) that you can use to check the prerequisites for in-memory execution. You can run program ZBW_HANA_CHECKLIST to see if your InfoProvider and planning functions satisfy the prerequisites for in-memory execution. To run this program, first install the components specified in SAP Note 1729988 (if necessary). Then log on to SAP BPC, version for NetWeaver, and go to transaction code SE38 (Figure 2).
Go to transaction SE38 to run the program
Once in transaction code SE38, enter program name ZBW_HANA_CHECKLIST and click the execute icon (Figure 3). This opens a screen like the one shown in Figure 4.
Execute program ZBW_HANA_CHECKLIST
Sample result of SAP BW checklist
(Note: Referenced SAP Notes and additional information are displayed when you click the details icon [not shown in this view] next to a selected checklist item.)
Another nifty trick is to check report RSPLS_PLANNING_ON_HDB_ANALYSIS for SAP BPC planning functions. Follow the same steps in Figures 2 and 3, but enter RSPLS_PLANNING_ON_HDB_ANALYSIS as the program name. Once executed, you see an output like the sample shown in Figure 5.
Sample output of program RSPLS_PLANNING_ON_HDB_ANALYSIS
When you double-click any of the Planning Functions, an Information pop-up window opens that shows the details for that function (Figure 6).
Details of the in-memory execution status of the planning function
Step 2. Manage In-Memory Execution of SAP BPC Functions with SAP BW Techniques
One way to check the in-memory execution of a planning function is by debugging the execution of the planning function in SAP BW. The details about how to debug the function in SAP BW is beyond the scope of this article; however, here is a link to a useful blog with more specifics: http://scn.sap.com/community/data-warehousing/business-planning/blog/2013/07/29/how-to-check-whether-a-planning-function-or-a-disaggregation-in-pak-is-executed-in-memory.
Other than debugging the function, you can also view the statistics in table RSDDSTAT_OLAP. The in-memory events in those statistics are events 50009, events 51000 through 51099, and also events that start with prefix PE (which stands for Planning Engine).
To execute this report, go to transaction code SE16 and enter table name RSDDSTAT_OLAP (Figure 7). A sample output of the report is shown in Figure 8.
Check report RSDDSTAT_OLAP
Sample output of the SAP BW in-memory execution statistics
Step 3. Manage In-Memory Execution with User Parameters
There are some user parameters that you should be aware of that may affect the in-memory execution of SAP BPC functions. In the user management transaction code SU01, there is a parameter, parameter RSPLS_HDB_SUPPORT, that controls the support settings while executing SAP BPC planning functions (Figure 9). If this parameter is set to HDB_OFF, then the planning functions are not executed in memory but instead are executed in the ABAP layer. If it is set to HDB_ON, then in-memory execution is enabled.
The RSPLS_HDB_SUPPORT parameter setting in user management
In Figure 9 you can also see parameter RS_DEBUGLEVEL underneath parameter RSPLS_HDB_SUPPORT. Also, notice that the value of parameter RS_DEBUGLEVEL is set to 3. This is required in case you want to debug the planning functions with this user’s credentials in SAP BW. The RS_DEBUGLEVEL parameter has to be set higher than two for debugging the planning functions.
There is one more important user parameter that affects in-memory planning function execution: parameter RSPLS_HDB_PE_TRACE. If this parameter is set to Y, then the planning function is executed immediately. However, if this parameter is set to X, then the execution of the planning function is deferred and all such executions are stacked in a queue and executed when the data is actually requested. I’ll briefly consider the pros and cons of these settings.
For example, if a planning function is set to execute after, say, any change is made to data, then whenever a data load changes plan values, the planning function may be triggered after saving the data. However, if the result of the planning function is not requested at the time the data load occurs, then there is no value added by executing the planning function immediately after the data load. Instead, you can choose to defer the execution of the planning function to the time when the data affected by the planning function is actually requested by the system. In this scenario the data load process is shortened by the duration of the planning function execution, but the data request may be increased by the duration of the execution of planning function. Thus you can see that though the execution time of the planning function is the same, the event of the execution can be controlled by this parameter. Hence, you can use this parameter to fine-tune the performance of the planning functions so that they are executed at the desired time.
Note that there are costs and benefits associated with both values of this parameter (X and Y) and there is no one best practice. Rather this is a choice for execution depending upon the project situation—for example, if you want the planning functions to be executed immediately or stacked and executed only when data is requested. The end result is the same with either setting. It is just a decision about at what point of time you want to spend the in-memory resources for execution.
Figure 10 shows the result of the execution in the log when this parameter is set to X. You can see that the execute_check step takes a performance hit here since it has to execute all the stacked functions in this step. (To see this log, follow the same steps shown in Figures 7 and 8).
Deferred execution of planning functions
Figure 11 shows the log when the planning functions are executed with this parameter set to Y. You can see that the performance hit is now taken by the snapshot step for the execution of the planning functions.
Immediate execution of planning functions
Limitations of In-Memory Execution of SAP BPC Planning Functions
Despite these helpful tips for executing planning functions in-memory, some technical limitations remain. These limitations are described in detail in SAP Note 1637199 (log-in required).
The following limitations exist for in-memory execution of SAP BPC planning functions and they are executed in the ABAP layer because of these limitations:
- Custom-defined (ABAP exit) – Use a FOXor SQL script planning function
- Forecast – Use Predictive Analysis Library (PAL, see below)
- More than one condition – Use several planning functions without conditions
- Certain commands (key words) in FOX formulas – Call Functions (calling ABAP function modules), command ATRV, and command MDEXIST on time characteristics
In addition to these limitations for planning functions, certain limitations exist for in-memory execution of other planning features, such as characteristic relationships and virtual key figures. These are described in more detail in SAP Note 1637199. This note is updated as Support Packages remove these limitations; hence, it is a good idea to refer to this note for recent updates.
With these tips and tricks you should be able to leverage the maximum performance benefit from in-memory execution of planning functions with SAP BPC 10.1, version for NetWeaver.