Skip to Content
Author's profile photo Ashok Babu Kumili

Enhancement (SAP BPC) to Enable Business Process & Improve Data Load Performance. (Part-1)

About Business:

Client is Hi-Tech Product Sales & Service Leader (Mobile, I-Tab, accessories, etc,) Client has Internet sales and service division which is also call as a data generation area. Generating 5+ million business transactions/records per day in the systems (SAP + Legacy Systems). Business heads in the respective region should improvise the earnings based on the buying climate of the day by promoting time sensitive offers (Festival offers / Bundle offer / Offer to Stores).


Current Architecture:


Problem Statement:

Problem identified in the Internet Sales Data flow (Flow includes 5 Source System —> BW(Staging Layer) –> BPC (Planning and Consolidation Platform))

  1. Data load 1 hrs (BW) + Data load 2 (BPC)
  2. BPC Data manager is taking 2 Hrs to complete the data load
  3. Daily 5 + Million records are landing the BPC model
  4. Business team have to wait for the availability of data @ reporting layer
  5. Only One Planning cycle / Business day


Root Cause: Internet sales BPC DM is taking 2hrs to complete the load. When we have a close look on the data & records in the models. The business needed records = 1 Million but the data load has 5+ Million records. So we saw a gap of 4 Million records unwontedly landing here.

We have following SAP BPC dimensions in model and their Data is as follows :

  1. Product Code =  PC_00_00 (Top Node)
  2. Product Code = PC001, PC002 and so on…..
  3. Data source = IS_DS, IS_ORA_DS, IS_ORA1_DS, IS_HADOOP_DS, IS_SAP_DS
  4. Time = Current day
  5. Flow =Flow01, Flow02 and so on . . .


Solution Approach: In Internet Sales Data Manager (BPC) introduced a dynamic filtering condition based on Script logic. If any change in the business. Business team will intimate the back-end. (Support team gets request for change on monthly basis).


Sample Code:

PRODUCT Code  *Logic to select only the need product codes Planning & Consolidation

*XDIM_MEMBERSET TIME = %TIME_SET%  *Select only user driven time

*XDIM_MEMBERSET PRODUCT_CODE <> PC_00_00 *Select the top node of the Product Hierarchy

*XDIM_MEMBERSET FLOW = Flow001, Flow002, Flow003, Flow004, Flow005, Flow006, Flow007, Flow008, Flow009, Flow010 * For us this Flow entities goes to 100 and varies weekly.




*REC(EXPRESSION = %VALUE%, PRODUCT_CODE = PC001, PC002, PC003, PC004)    * For us this Sale numbers goes  to 100 and varies weekly.



*IS IS_DS, IS_ORA_DS, IS_ORA1_DS, IS_HADOOP_DS, IS_SAP_DS * For us this Data Source numbers goes to 10 and varies weekly.




New Architecture



  1. Data load completing in 5 to 10 Mins.
  2. Now the data is available for BPC operations(Planning & Consolidation Models) in 1 Hr (Previously 4 Hrs with old process).
  3. Business team has an ability to do the planning and consolidation more strategically.
  4. Business enabled with 3 Planning cycles / Business day.

Assigned Tags

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

      Hello Ashok,

      How can a script logic reduce data load time into BPC? I assume you use the standard load data manager package to load data from BW to BPC. When is this script logic triggered. ? Just curious to understand this use case.



      Author's profile photo Ashok Babu Kumili
      Ashok Babu Kumili
      Blog Post Author

      HI Nikhil,

      Well we have product Code 1 to 100  The Old process is loading all the available Product codes from 1 to 100,

      Now in the new process. The script is hard coded to choose the codes(Selected). In that way now the selection is 20% (Previously it is 100%).

      In the old process

      The problem area is the Support team has no control over the data coming from DW --> BPC.

      As we have done an analysis on data we could introduce the Script, test and implement. Finally the change is enjoyed by Support & User Team.


      Author's profile photo Vadim Kalinin
      Vadim Kalinin

      Sorry, but the script with the line:

      "*REC(EXPRESSION = %VALUE%, PRODUCT_CODE = PC001, PC002, PC003, PC004) "

      will never work! REC doesn't support multiple targets.

      And same question - the script can run only after data load, not before!


      Author's profile photo Former Member
      Former Member

      Thank you.