Skip to Content
Author's profile photo Gerd Schoeffl

How to Check whether a Planning Function or a Disaggregation in PAK is executed in Memory

With BW on HANA (BW 7.30 SP5 and up) we have introduced the Planning Application Kit – the BW on HANA based in memory enabled planning. Planning functions and disaggregations in queries can now be executed directly in HANA. Unfortunately there are some circumstances under which a planning function or a disaggregation can NOT be executed in HANA but will be executed in ABAP. The system behaves similar to BW-IP in this case.

Sometimes it is quite hard to decide whether a planning function/disaggregation has been executed in HANA or in ABAP. Here is a little collection of ideas how you can check this:

 

 

1. Planning Functions

 

1.1 Check the System Settings whether the Planning Function Can be Executed in HANA

 

Run report RSPLS_PLANNING_ON_HDB_ANALYSIS; it analyzes, whether a planning function can be executed in memory. The report shows some traffic lights for the InfoProvider and the single planning functions.

For an InfoProvider you will either get a red light (does not support HANA execution) or a green light (does support HANA execution). You will get more details on why HANA is not supported if you click on the traffic light.

For a planning function you will either get a red traffic light (cannot be executed in HANA) or a yellow traffic light (planning function could be executed in HANA). You will not obtain a green traffic light. The report only can check the static definition of the planning function. If you are execution the planning functions with certain filter criteria it might happen that AT RUNTIME the system decides that the planning function has to be executed in ABAP. We explain some of the situation s further below. Again you will get some additional information if you click on the traffic light.

The report does NOT check disaggregation in queries and whether it can be executed in HANA. The reason for this is that a query is a highly dynamical object and that most checks have to be done at runtime. As only relatively simple checks can be done at design time the report could not give enough valuable information.

If you get a red light for some or all of your InfoProviders please do the following checks:

  • Is note 1637148 implemented?
  • Is the system switched to PAK (see note 1637199)?
  • Is the InfoCube HANA optimized?
  • Is the InfoCube/DataStore Object entered in the list of HANA optimized InfoCubes?
  • Is a characteristic relationship type exit or type hierarchy used in the InfoProvider?
  • Is a data slice type Exit used in the InfoProvider?
  • Is any virtual object used (virtual InfoCube, master data with own read class etc.)?
  • Is a key figure type TIMS or DATS used (input enabled)?
  • Is the user parameter RSPLS_HDB_SUPPORT set to ‘HDB_ON’ (if necessary, see note 1637199)?
  • Have you used a DSO with a characteristic as key figure? If so you need to check note 2196138 to make this feature HANA enabled.

 

If a planning function gets a red light please check the underlying InfoProvider and the following conditions:

  • Is the type of planning function available as optimized type (see list in note 1637199)?
  • Has the planning function more than one condition?

 

As already mentioned above even if these conditions are met a planning function might still be executed in ABAP as the report cannot check all possible situations. This is for example the case if

  • The planning function is a Fox formula and it calls an ABAP exit.
  • The planning function has a condition and
    o the global filter contains selection on attributes, but the  condition contains selection on the basic characteristics or
    o the filter contains selections on hierarchy nodes and the condition has selections on the characteristic the hierarchy  is defined on or
    o the selection contains selections which are not single values restriction and those selection are not one by the same in the  global filter.

 

Please have a look at note 1637199 for the latest information on such cases.

For checking the general system settings you can also use our check tool described in SAP note 1729988.

 

 

1.2 Check the Execution of the Planning Function

 

By debugging:

Open transaction se80 (or se24), open class CL_RSPLFR_CONTROLLER and navigate to method EXECUTE_SERVICE. Set a break-point at about line 600:

*… checks for execution in TREX are done, now we know where we execute the algorithm;

IF l_trex_supported = rs_c_true.

 

If the coding after the if-statement is executed then the planning function runs in memory.

 

As an alternative you can also set a break-point in the class CL_RSPLS_HDB_SWITCH in method IF_RSPLS_HDB_SWITCH_RUNTIME~IS_IPIM_INFOPROV (checking the InfoProvider) and in method IF_RSPLS_HDB_SWITCH_RUNTIME~IS_IPIM_FUNCTION (checking the planning function). Here you can also get some information WHY a certain planning function is not executed in memory.

 

 

By checking the message number:

If the user parameter RS_DEBUGLEVEL is set to 0 or 1 then if a planning function is executed in ABAP then you will receive a message like:

&1 records read  &2 generated &3 changed &4 deleted

The message type and number are RSPLF 019.

 

If a planning function is executed in HANA then NO message regarding the information about used records will be shown (only a message stating that the planning function has been executed successfully).

 

If you set the parameter RS_DEBUGLEVELto 2 or higher you will get a message concerning the number of used records also in the case when the planning function is executed in HANA. The message will have the same text as in the ABAP case but it has a different message number.

The message type and number are RSPLF 091.

 

 

By using the statistics:

When a planning function is executed in HANA it writes different/less entries into the OLAP statistics. When you us transaction ST13, ‘BIIPTOOLS’, then you can view ‘BW Statistics Analysis’ (second button from the top) and then radio button ‘BW Object List’ (third from the top). In case of execution in HANA you do not see an entry for the planning function. When executed in ABAP you DO see the entries.

In both cases you see entries when choosing ‘Overview on Steps’ (first option).

 

Still PAK does write statistical event (just not visible in ST13). You can find those events in the view RSDDSTATEVENTS (PE stand for ‘planning engine’):

51000 PE: Open Session

51001 PE: Close Session

51002 PE: Copy

51003 PE: Lookup

51004 PE: Set Values

51005 PE: Restrict

51006 PE: Delta

51007 PE: Disaggregate

51008 PE: Delete

51009 PE: Get Current View

51010 PE: Set Current View

51011 PE: Describe

51012 PE: Snapshot

51013 PE: Combine

51014 PE: FOX

51015 PE: Cross Join

51016 PE: Copy Multiple

51050 PE: SQL DDL

51051 PE: SQL Query

51099 PE: Aggregate

 

 

 

2. Disaggregation in Query

 

2.1 Check the System Settings

 

Proceed in a similar way as above. Also some check some special requirement for the disaggregation:

 

The disaggregation in the query are executed not in HANA if

  • the planning model uses multi-provider on top of aggregation level
  • a formula is used as reference key figure for disaggregation
  • the key figure is restricted to multiple values for a given characteristic except several single values (e.g. intervals or hierarchy nodes).

 

2.2 Check the Execution of the Disaggregation

 

By debugging:

There are cases when the disaggregation is executed in the ABAP runtime even if the query complies to the above restriction. This is the case for example when you disaggregate by 0FISCPER and the compounding father 0FISCVARNT is not restricted at all.

 

To check the execution open class CL_RSR_RRK0_PLAN and navigate to method DISAGGREGATE. Set a break-point at about line 138:

 

IF ( l_result_type EQ cl_rspls_plan_buffer=>n_c_result_type-index ) OR ( l_result_type EQ cl_rspls_plan_buffer=>n_c_result_typefemsn ).

    p_r_trex->disaggregate_s( EXPORTING i_setxx_type     = l_setxx_type…

 

If this coding is executed then the disaggregation is done in HANA. The method disaggregate_a is called when the disaggregation is
done in ABAP.

 

By using the statistics:

As noted above the system writes certain statistical events. In case a disaggregation was executed in HANA you will find the entry

51007 PE: Disaggregate

 

 

Assigned Tags

      10 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member

      Hi Gerd,

      Thanks for this information.

      I'm facing an issue, where I'm in alignment with most of your inputs. But still my MultiProvider and aggregation level cannnot run on HANA.

      Can you please have a look in my post and let me know what am I missing here ?

      Aggregation Level in not prepared to run on HANA

      Thanks,

      Jomy

      Author's profile photo Former Member
      Former Member

      Hi Gerd,

      please confirm if this is a general issue:

      a DSO with "characteristic as key figures" enabled will get a red light!

      Is there any solution to this?

      Thanks,

      Daniel

      Author's profile photo Gregor Dieckmann
      Gregor Dieckmann

      Hi Daniel,

      yes, this is correct since the InMemory 'after-image' buffer implementation does not yet support the 'characteristics as key figures' feature. When this feature will be available is not yet clear.

      Regards,

      Gregor

      Author's profile photo Shashidhar Garimella
      Shashidhar Garimella

      Update -

      DSO with Character like Kyf is enabled to run in PAK with BW SP13 or SAP Note 2196138

      The check from the report RSPLS_PLANNING_ON_HDB_ANALYSIS which flags this is also removed with this SAP Note.

      Regards,

      Shashi

      Author's profile photo Rajarshi Muhuri
      Rajarshi Muhuri

      How do i add a delete statement in a SQL script procedure in ADMP or how do I implement a delete function with an AMDP SQL script

      rishi

      Author's profile photo Gerd Schoeffl
      Gerd Schoeffl
      Blog Post Author

      Hi Rishi,
      Please have a look at http://www.sap.com/documents/2014/04/e23755b3-517c-0010-82c7-eda71af511fa.html
      This paper explains how to create planning functions with sql-script. As such a planning function always returns the deltas you can simply delete data by returning the negative values of the existing data. Have a look at chapter 3.3. There we show how to create a simple copy function that first delets all data from the target. You can just use this sql-script coding as an example for your AMDP coding.
      Best regards, Gerds 

      Author's profile photo Former Member
      Former Member

       

      Hi Gerd,

      I know its an old post but I have the same issue Jomy wrote and whihc is not answered.

      I am getting the red traffic light for the agg level and tried to debug with your your proposal

      "As an alternative you can also set a break-point in the class CL_RSPLS_HDB_SWITCH in method IF_RSPLS_HDB_SWITCH_RUNTIME~IS_IPIM_INFOPROV (checking the InfoProvider) and in method"

      I didnt understand the whole check part, just that all underlying cubes are checked ... The message I am receiving is.

      InfoProvider ZXXXXXXX (aggr level) is not prepared to run on SAP HANA
      Message no. RSPLS_TREX073. The cubes are all transactional, but not Hana Optimized. Is there any further advice on what are the prerequisites for getting green or yellow traffic light. Do we need to have the planning cubes Hana Opztimized? Is there anything else to be considered .

      Thanks Ralf

      Author's profile photo Gerd Schoeffl
      Gerd Schoeffl
      Blog Post Author

      Hi Ralf,

      There is one central note containing all basic information about the HANA execution of planning features. The note number is 1637199. When you check this note you will find:

      "Every real-time cube must be Hana optimized to run in HANA.  In case of a MultiProvider, all part provider being real time cubes must be HANA enabled..."

      I think this is the reason that you get a red light in your scenario.

      Best regards,

      Gerd

       

       

       

      Author's profile photo Former Member
      Former Member

       

      ok thanks

      Author's profile photo ANIL AGRAWAL
      ANIL AGRAWAL

      Nice Blog.