Processing Application: Cannot find the object ApShellExtra.dbo.Audit…

While testing a new installation of BPC, I encounter an error processing an Application:

Cannot find the object “ApShellExtra.dbo.AuditActivityHdrApShell” because it does not exist or you do not have permissions.

Sure enough SQL Server Management Studio shows the table is not there. On a whim I restart the Admin client and try processing the Application again; it works!?

Turns out, after the install I always modify security to allow the BPCSysAdmin account to have full control over ApShell. Apparently those security changes weren’t completely applied until I restarted.

Re-installing BPC 7.5 MS

Some notes from re-installing BPC 7.5 MS.

  1. Backup AppSets
  2. Thru Server Manager, document existing settings
  3. Reboot the application server
  4. Rename the AppServer, ApShell and ApShellExtra databases
  5. Rename the AppServer, ApShell and ApShellExtra Data folders
  6. Uninstall BPC either thru Add and Remove Programs (Win Server 2003) or the new Win Server 2008 method
  7. Remove the BPC application folder (Not the data folder)
  8. Remove any remaining BPC COM+ objects
  9. Remove any remaining BPC, OutlookSoft and SAP registry entries

BPC Server Version

For the official list of both MS and NW versions, see SAP Note 1366676

Some MS Versions

BPC 7.5

7.5.102 : SP01
7.5.103 : SP02
7.5.104 : SP03
7.5.105 : SP04
7.5.106 : SP05

BPC 7.0

7.0.114 : SP05
7.0.115 : SP06
7.0.116 : SP07


NetWeaver Version

To find the version of NetWeaver BPC is running on:

  1. Start SAPGUI
  2. On the menu bar click System > Status…
  3. In the SAP System data section:
    1. Component version will give you some information
    2. Click the magnifying glass button below that field to see details:
      1. SAP_BASIS indicates the version of NetWeaver. In the screen shot below
        1. Release 701 means version 7.0 EHP1
        2. Level 0005 means SP5
      2. CPMBPC indicates the version of BPC
        1. Release 750 means 7.5
        2. Level 0007 means SP7
System Status
Component Information

Thanks to Stuart Gunter’s post

BPC Processor Preferences

Based on this SQL Server Central post: a processor with more cores is better for Data Warehouses / Decision Support Systems (smells like OLAP). And at this time an Intel processor is better for a transactional system (OLTP).

Changing R/3 SAP GUI Permissions

Recently I needed to apply an SAP Note to our BPC NW environment. To do this, I had to create a new ‘admin’ user and run the Notes Assistant under that new account. Before I could run the Notes Assistant, I need to grant access to the snote transaction in SAP GUI. This is how I did it:

  1. Login with DDIC
  2. Go to su01
  3. Specify user ID
  4. Change
  5. Go to Profiles tab
  6. enter SAP_ALL or whatever objects
  7. Save
  8. Exit

BPC Dimension Members and Office Version

To specify which version of Excel is used when working with Dimension members look at the tblDefaults table with the row containing KeyID MEMBERSHEET_VERSION.

You can change this to 2007 or 2003

Make sure to install MS Data Connectivity Components on the application server as well. See Note: 1289927 and this link: http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8
C28-4598-9B72-EF94E038C891&displaylang=en

Updating BPC Service Pack (Server Package) Work Instruction

Document Server Manager settings

Make a copy of BPC web.config
Make a copy of server level .NET Framework v.2.0 machine.config and web.config

Verify the Office and admin clients can connect

  • Run a report
  • Manage dimensions

Restart all servers before applying any updates to ensure nothing is locked or open.

Make backup of AppServer DB

Run Startup.exe

Successfully Finished – but OK Button Disabled

Recently had an issue when processing dimensions in BPC. The process would complete without errors, but the OK button was disabled. The only way to exit was killing the application. Turns out the recycle limit on the DefaultAppPool was causing this.

Even though minimum memory was set to 60% before the app pool would recycle, and even though the memory on the server never got close to 60%, the process wouldn’t finish. I turned off recycling based on memory usage and processing completed fine.

Loading BPC Data the Old Fashioned Way; Using SQL

Thanks to Gert Andries van den Berg on the SAP BPC forums for making sense of all this. In a nutshell, by writing records to either the WB or FAC2 table, the cube is updated. No need to build SSIS package with Dumpload task. This can be done with SQL. Writing to the FAC2 table seems to be the destination of choice. Though I’ve yet to determine if running optimization is required to see data in reports.

From Gert Andries van den Berg.

As per the tuning doc:

WB – real time data input (ROLAP partition)
This is data that is the most current data sent to the system. Data sent by BPC for Excel data sends and Investigator browser data sends is placed in real-time storage.
FAC2 – short term and Data Manager imports (MOLAP partition)
This is data that is not real-time data, but is also not in long-term storage yet. When you load data via Data Manager (automatic data load from external data sources), it loads the data to short-term storage so that the loaded data does not affect system performance. Only the cube partition associated with this table is processed, so the system is not taken offline.
Fact – long term history (MOLAP partition)
This is the main data storage. All data eventually resides in long-term storage. Data that is not accessed very often remains in long-term storage so that the system maintains performance
This structure allows SAP BPC to maintain the same performance over time even when there is a large increase in data volumes.
Periodically clearing real-time data greatly optimizes the performance of the system and an “Optimization” process is required (this could be scheduled automatically based on given parameters like a numbers of records threshold).

Lite Optimization:

Clears Real-time data storage (WRITEBACK) and moves it to short-term data storage (FAC2). This option doesn’t take the system offline, and can be scheduled during normal business activity.

Incremental Optimization:

Clears both real-time and Short-term data storage (WB and FAC2) and moves both to Long-term data storage (FACT).

This option should be run when the system is offline, but it will not take the system offline so it should be run during off-peak periods of activity.

Full Process Optimization:

Clears both real-time and short-term data storage and processes the dimensions.

This option takes the system offline and takes longer to run than the incremental optimization.

It is best run scheduled at down-time periods – for example after a month-end close.
The Compress Database option is available to rationalize the Fact Tables. “Compress” sums multiple entries for the same CurrentView into one entry so that data storage space is minimized. Compressed databases also process more quickly.

More info on this topic from Sorin Radulescu:

First you have to be aware about structure of BPC cubes:
Each cube has 3 partitions:
1. fact – MOLAP
2. fac2 – MOLAP
3. WB – ROLAP

When you insert records into WB table because WB is ROLAP partitions you will see the impact of that insert into cube in Real Time.
If you insert records into any of MOLAP partitions without processin the partition you are not able to see these records into cube.
I think now you have a clear picture about BPC cube and you undertsood diference between MOLAP and ROLAP partitions.

Lite Optimize is necessary just to keep under contrl the number of records from WB table.
For SSAS if a Rolap Partitions has more than 100 000 records retrieve data from that cube it will be very slow if in the same time users are doing insert into WB Table.
So Lite optimize is schedule usually every 15 minutes when number of records is over 20 000.
That’s means every 15 minutes this dtsx package check if WB has 20 000 records.
If yes then is running this process
If not then is not doing anything.

LITE Optimize process
It is doing the follow steps:
1. Copy records from wb to fac2 and marlk the records from wb move into fac2
2. Create a temporary partitions and start to process this partition just for these records move from wb table
3. When it is finishing the process of partition then the system is doing in transaction the follow:
– merge partition fac2 with temp partition
– delete the records marked from wb