Quantcast
Channel: SCN : Document List - SAP Planning and Consolidation, version for SAP NetWeaver
Viewing all 192 articles
Browse latest View live

Aggregates on BPC Generated Cube

$
0
0

Aggregates on BPC cubes

 

EPM query performance is major concern for all the clients in SAP BPC.

When I posted about aggregates on BPC generated cubes to improve the performance, lot of people opined that, they would improve the query performance.

http://scn.sap.com/thread/3621371

In my case there are around 10 categories and most of the time users use only 1 category. So I wanted to create aggregates on Rolling Forecast category.

Created 1 aggregate for each fiscal year on Rolling forecast category. There is no query performance improvement at all. Query run time is same with and without aggregates.

Reason:

When reading the data from SAP NetWeaver BI Info Cubes, SAP BPC uses two different SAP NetWeaver technologies.

RSDRI – is the function group in SAP NetWeaver BW that deals with access to Info Providers. In the SQE, an RSDRI query calls the internal SAP NetWeaver BW functions to read data from an InfoProvider and accesses the E and F fact tables. This is the preferred query mode as RSDRI queries are faster than MDX queries. However, RSDRI queries do not bring in aggregated data, just base level information.

MDX – SAP NetWeaver BW exposes OLAP BAPIs to access data from an InfoProvider through MDX. The MDX query method in SAP BPC generates the MDX statements required to retrieve data with the SAP BPC application logic applied. It is always used when there are dimension member formulas, measure formulas, or hierarchy parent values (2014.TOTAL, Total Organization) to be retrieved and are often slower than RSDRI queries.

RSDRI query can read the data from aggregates and query performance can be improved considerably.

If you see the below screenshot, RSDRI query is executed. Refreshed the same report with and without aggregates.

(Cleared the cache before each execution.)

To have RSDRI query we should not use any custom measures or parent members.

All dimension members should be base level.

RSDRI query.jpg

But if you use

1.       1.Custom measure (Except Periodic, QTD, YTD)

2.       2.Member formula dimension member in your report

3.       3.Hierarchy Parent(Total.2014,Total Organization)

MDX query would retrieve the data.We can get the infromation(whether the  EPM report executing RSDRI query or MDX query)

in SLG1 also.

MDX statement.png

But MDX query would not read the data from Aggregates and read the data with it’s own logic. In this case aggregates wouldn’t help to improve the query performance.

 

Usually we have at least 2-3 dimensions which we query on parent hierarchy in any EPM report.

Only case where we use all base members is input forms.

Conclusion: If you use base members for all the dimensions in EPM reports in most of your reports, you may get benefit with the creation of aggregates, else, it is of no use.

 

 

 


SAP BPC tutorial for beginers

Converting Flat Hierarchy to True Hierarchy

$
0
0
Introduction

This document will explain how to convert a flat hierarchy into true hierarchy.

 

Scope

We will be referring to Product Hierarchy for the scope of our documentation. More often than not, product hierarchy is maintained as separate attributes for each level in BW.

 

Assumptions

The different hierarchy levels in a product hierarchy will follow a basic rule which can help identify the desired level based on the length of the string.

 

Software Components

- SAP BPC 10.0 on SAP NW BW(7.31)

- EPM Addin - Version 10 SP21 .NET4

 

Business Case

The product hierarchy is maintained as string - generally 18 characters in length - field PRDHA in Basic Data1 view of Material Master in ECC. The level details can be understood using table T179 and T179T in ECC. The levels have been extracted in BW but instead of storing them as a true hierarchy, each level is updated in BW as a separate InfoObject and these InfoObjects are then added into BW Material Master as its attributes. BPC needs true hierarchy so that reporting can be easier as well as it is easy to get description for each node whenever required.

 

Approach

Let us say that there are three levels to the hierarchy for document purpose and only those three have been maintained in BW.

Level1: First 4 Characters

Level2: First 6 Characters

Level3: First 8 Characters

 

The hierarchy string we have is ABCDEFGHIJKLMNOPQR.

Level1 will be ABCD

Level2 will be ABCDEF

Level3 will be ABCDEFGH


Level 1 is the highest node with no Parent.

 

Here is how the Material Master looks

Material Master.jpg

We also have 0PRODH2, 0PRODH3 and 0PRODH4 as the objects that are storing ID and text for each level shown above.

 

We have BPC dimension BPC_MATERIAL which has a property called PROD_HIER and a hierarchy PARENTH1. First we will load all the base level members and parent nodes.

 

We will create 4 packages, each of which will be loading into the BPC_MATERIAL.

- Load Material ID and Text

- Load 0PRODH2 ID and Text

- Load 0PRODH3 ID and Text

- Load 0PRODH4 ID and Text

 

The transformations will be as follows:

Load from BW Material Master

ID=ID

PROD_HIER=0PRODH4

 

Load from 0PRODH4

ID=ID

PROD_HIER=ID(1:6)

 

Load from 0PRODH3

ID=ID

PROD_HIER=ID(1:4)

 

Load from 0PRODH2

ID=ID

 

 

In case, 0PRODH2, 0PRODH3 and 0PRODH4 reference to the standard InfoObject 0PRO_HIER, you will have to skip the records of undesired length. You can do that using conversion file. Here is how Conversion will look for 0PRODH2:

PRODH2_Conversion.jpg

You might have to make other adjustments based on your data.

 

Once all the 4 packages are executed, here is how the dimension members will look like.

Members.jpg

 

Now we need to copy these values in the property to PARENTH1.

 

Create a flat file in CSV format and upload it to BPC server. The file will have just a dummy record and a header row with column name ID.

FF Preview.jpg

We cannot load hierarchy from BW InfoObject as there is no hierarchy there and an empty selection is not accepted by the system. Hence this one record will help us to trigger the End Routine BADI. You can either maintain this dummy member in your dimension or if you do not want, adjust the BADI code to delete the record before passing to the result table. In this case, dummy member TEST is present in the BPC_MATERIAL. Here is the transformation file:

Hierarchy Transformation.jpg

The BADI implementation is written in UJD_ROUTINE. You will need to adjust as per your dimension name and the property name in your landscape.

 

Create a Data Manager Package with Data Collection process chain /CPMB/IMPORT_MASTER - BPC: Import Master Data Attributes/Hier from Flat File.

 

Execute the DMP by calling the previously uploaded file. The log will show that 1 record was accepted and a submit count of 5 - A record for dummy member and 4 that we loaded.

Log.jpg

The hierarchy is now updated in the dimension.

After Load.jpg

 

The flat hierarchy is now available as true hierarchy in BPC.

Performing Selective Data Deletion on BPC Models

$
0
0
Introduction

This document will explain how to delete data selectively in a BPC model.

 

Software Components

- SAP BPC 10.0 on SAP NW BW(7.31)

- EPM Addin - Version 10 SP21 .NET4

 

Requirement

SAP BPC provides provision to clear data through data manager package or script logic. However, what each of these approaches do is that they zero out the existing records. Moreover, zero record elimination (compression/Light Optimization) cannot be performed selectively to get rid of those records. You can remove zero records from your template or report through Sheet Options but it could have an impact on other users if the same template is being used.

 

Approach

SAP BW provides a standard program to generate a program for selective deletion - RSDRD_DELETE_FACTS. We will leverage the same program to make it more easy to use for BPC Models.

 

BPC Models in essence are real-time InfoCubes and hence this program will treat them in a similar fashion as other regular InfoCubes. Here is how the initial screen of the program looks like:

BW Program Selection Screen.jpg

When program is executed after the data target has been entered and option to generate selection program has been selected, the field "Name of report" is populated by an ID - which is generated program that can be used to perform selective deletion. It can also be transported as well.

BW Program Executed.jpg

Execute this generated program, it will direct you to the selection screen where all the fields are available for selection. You can make selections based on single values, ranges, exclusions and other operators. You can put selections and save as variant to be called in process chain.

 

 

We will be creating a custom program - ZBPC_DELETE_FACTS where you can make a selection for Environment and its corresponding model for which selective deletion program is required to be generated. We will create a selection screen for selecting BPC Environment and corresponding models in that Environment.

 

BPC Program Selection Screen.jpg

Once you enter the Environment, you will be required to select Model. The program restricts the list of models based on Environment.

Selections.jpg

When the program is executed successfully, it will display the name of the generated program.

Output.jpg

Use this program to create your selection variant. Execute this generated program using SE38 and you will be presented with the selection screen:

Make Selections.jpg

 

After having selected your appropriate selections, you can save it as variant by clicking on "Save" icon.

Variant.jpg

There is an option to simulate your deletion process as well. It will not delete any records but will let you know how many records will be deleted. This could act as a preliminary check when setting up this process.

 

Now you have the program name and the variant and that is all that is needed to execute it via process chain.

 

Remember to turn the BPC Model to Load Mode before calling the program and turn it back to planning mode after selective deletion program has been executed. Now there are standard process types available in the process chain to do that but there you need to provide technical name.

Plan_Load Switch.jpg

It would be better to provide Environment and Model ID for selection as we did above for switching between load mode and planning mode. We can create two small programs whereby we can save variant and call that using process chain.

 

Your process chain will have three programs called in sequence:

- Program with variant to switch BPC Model to Load Mode

- Selective Deletion Program with variant to perform selective deletion of data in BPC Model

- Program with variant to switch BPC Model to Plan Mode

 

You can configure to trigger this process chain using data manager package too.

 

Note

Since the program involves deletion of data, please be careful and liaise with your security and compliance team for any concerns. Use your judgement in using it. I cannot be held liable for any issues that it may cause.

Generic Function Module (RFC-enabled) for Extracting Comments of Any BPC Model

$
0
0
Introduction

This document will explain one of the ways to create a generic function module to extract comments for a given BPC model.

 

Software Components

- SAP BPC 10.0 on SAP NW BW(7.31)


Business Case

SAP BPC can be leveraged as a sales forecast input tool to support forecast gathering process for SAP APO. The data at the start of the planning run is extracted into SAP BPC. The planners enter/modify the sales forecast numbers along with comments and submit. Their input - numbers and comments then need to be sent back to SAP APO. Numbers can be updated via BW InfoCubes - both in SAP BW and SAP APO. However, there is no direct way to extract comments.


Challenges

The table of comments for each BPC model is generated/re-generated at the time of model creation/modification. The number of fields can be variable and therefore it is not advisable to create extractor on top of it.

We cannot use the concept of dynamic internal table as it is not support for an RFC-enabled function module.


Approach

We know that every time a BPC model is created or modified, its corresponding comments table is generated. The naming convention of the comments table follow a set logic.

Comment table Name = '/1CPMB/' + 2 Characters after the first 6 characters from the Model Technical Name + 3 Characters after the first 9 characters of the Model Technical Name + 'CMT'

* '+' stands for concatenation


Also, we need to ensure that the comments stored in this table can also be accessed in APO so that they can be uploaded into the APO planning book through respective BAPI.


Let us understand the comments table. The comments table will have the following 8 fields for each model:

  1. RECORDID
  2. USER_ID
  3. DATEWRITTEN
  4. KEYWORD
  5. PRIORITY
  6. KPI
  7. MEASURES
  8. SCOMMENT

The remaining fields will be the dimensions of the model - which is the variable we have to deal with. We will therefore create a structure that will have all these fields and a generic field. This structure can now be used for getting data from any BPC comments table.

Generic Comments Structure.jpg

What this generic field will do is that it will contain values from all the dimensions of the model that were present against a given comment. There could be better ways to handle this scenario but this is one which I could think of. Now we have the values concatenated, we will also need a way to know which value belongs to which dimension. We will create a data element as show below:

Model Fields Data Element.jpg

This data element will be given as the type for the export parameter. Here are the function module parameters:

Attributes:

FM Attributes.jpg

Import Parameters:

FM Import.jpg

Export Parameters:

FM Export.jpg

Tables:

FM Tables.jpg

The code will use the import parameters to determine the technical name of the model from the table UJA_APPL. Using that technical name, the comments table name will be derived based on the aforementioned logic.


With the use of field-symbols, we can read the data dynamically and then transfer into the respective fields of the output table ET_COMMENTS. Refer the attachment for the entire code.


On executing this FM, here is how the input screen will look like:

FM Input Screen.jpg

Here is how the output will be:

FM Output Screen.jpg

On looking at the entries of ET_COMMENTS:

Table Output.jpg

 

I am sure there will be many more refined ways to do it. This is one of the approach that can be used to extract comments dynamically from BPC NW system to another connected SAP system for any BPC model.

 

Note

if you create model ID with lowercase letters, you need to tweak the FM to accept it or check the Uppercase/Lowercase check box at the run time in the Input screen.

How to maintain BPF email notification template

$
0
0

This article is to clarify the understanding of the program “RSBPCB_MAINTAIN_EMAIL_TMPL”(or UJB_MAINTAIN_EMAIL_TMPL) and explain how to use it to maintain BPF email template.

 

1,Execute the program and check BPF templates.

 

1) Logon to SAPGUI


2) Go to ABAP Editor (using “se80”) ->select “Program” and type “RSBPCB_MAINTAIN_EMAIL_TMPL” as you can see below.

 

1.png

3) Click on F8 or hit the icon in the toolbar. It opens “BPC: BPF Email template table” overview like below.

 

2.png

4) You can see the detail of each template by double clicking on a template.

 

3.png

You can also execute T-code 'SE38' ->Execute the program 'UJB_MAINTAIN_EMAIL_TMPL' ->You will see the BPF template table as below:

22.png

 

There are 2 ways to set body of email template, either using Smart Form Body or Email Body.


If you set both of them, the Smart Form Body will be used. If there is not Smart Form Body,then, the Email Body will be used.


Email Body is just plain single line text that you can easily create.

 

For Smart Form Body,please refer to a section Manage Smart Form
Body
.

 

2,Activate email notification.

 

This is how to activate and deactivate email notification. Each email notification can be
activated or deactivated.

 

 

1) Click on the 'edit' button, then, the email template list becomes Edit mode.

2) You can select to activate or deselect to deactivate in the column “Is Active”.

 

3,Manage smart form body.

 

Using Smart Form editor, user can change the Smart Form Body.

 

1)Open Smart Form editor using transaction “SMARTFORMS”.

5.png

2) Create a new email template by copying an existing template.

 

First,select an existing email template from the Form list.

8.png

And, copy it by clicking on the copy icon in the toolbar.

9.png

3) Enter the name of the new Smart Form Body. And, create it.

Note: Name of custom email template should start with “Z” or “Y”.

Note: You can create this new template only as a Local object. Or you
can transport it by choosing a package.

 

10.png

 

4) You can either view by clicking on “Display” button. Or, you can change by clicking on the “Change” button. Or you can create new one using “Create” button from scratch.

 

11.png

Below screen shot shows the SAP Form Builder in which the newly created Smart Form Body is open in edit mode.

 

12.png

 

Note: By default, the Form Painter will be displayed as shown below. If
you want turn of, you can hit F9 key or go to Utilitiesand select a menu item Form Painter on/off
F9
.

 

5) Open the email template body by expanding “Pages and Windows” until you see the leaf node
which is “NOTIF_BODY”. This node actually has the notification text body that you can edit.

 

13.png

6) Double click the “NOTIF_BODY” to open the notification text body as shown below.

 

14.png

 

7) The variables used in the email template are like below.

-&I_PROCESS_NAME&: Process instance name.

-&I_INST_CTX_STR&: Process instance context.

-&I_RGN_NAME&: Activity name.

-&I_RGN_CTX_STR&: Activity context.

-&GV_URL&: URL to either Activities list or Process Monitor in user friendly name.

-&URL&: Full URL to either Activities list or Process Monitor.


Please see the example email here.

15.png

Note:you can Maintain parameter EMAIL_NOTIFICATION_URL_PREFIX  to replace the http link with the relevant
server name.Refer to SAP note 1717100.

.

4,Create custom email templates.

 

BPF provides 15 system email notification templates. Customer can use these templates as is. But, it
is also possible for customer to create their own email notification template.

1) Click on New Entries button in the toolbar.

 

18.png

 

 

2) Choose “C”(Customizing email template) for the Email Type.

3) ChooseE-mail Template ID which you want to replace with the custom email template.

4) Type email template title using these 2 variables.

 

-%PROCESS_NAME%: Process instance name.

-%STEP_REGION_NAME%: Activity name

 

5) Choose “Yes”if you want to activate this custom email template.

Note: If both custom and system email templates are active, the custom
email template will be used.

 

19.png

6) Select Smart Form Body which you have created above.

20.png

 

7) Just enter “RSBPCB_SF_XSF_URL_CALLBACK” for the URLCallback. This is used later to call
the proper URL.

8) You can leave the Email Body blank as you already set the Smartform Body.

9) Choose a appropriate BPF Operation from the operation.

 

21.png

10) Just save your changes. Then, you can receive email notifications which will be generated
based on the custom template.

A BPC consolidation limitation

$
0
0

BPC consolidation has a limitation: If there are two rule items, one item has 'periodic calc' selected and the other one doesn't and both rule items have the same destination data region (destination account+ destination flow), the result of both rule items will affect each other. This has been documented in SAP KBA 2217212.On this KBA,it gives a simple example which causes problem. But some customers’ configuration is much more complicated than the simple example so it causes difficulty to customers to identify if the problem they have is exact the same problem.

 

This article gives a more complicated example and explains how it affects calculation result.

 

In The elimination and adjustment rule ,detail table is configured as below:

1.png

We can see that some rule items have  'periodic calc' selected but the others don’t -this satisfys the prerequisite of the problem so we should be careful about the destination data region.

Let’s take a look at the destination data region: all the destination group account is set to be ‘PROP (ELIMACC)’ and the destination flow is empty. Therefore, when executing consolidation, BPC will search for those accounts which are maintained as the value of the property ‘ELIMACC’ of the source accounts. Refer to SAP KBA 2217652.

It will cause problem if account dimension is configured as below:

2.png

3.png

For account 2000004, it’s ‘TYPEELIM’ is set to ‘ELIM05’ and it’s ‘ELIMACC’ is set to be 99000050.

For account 22030001, it’s ‘TYPEELIM’ is set to ‘ELIM10’ and it’s ‘ELIMACC’ is set to be 99000050.

So the account 2000004 is found as the one of the source accounts of the rule item’ ELIM05’ and the account 22030001 is found as one of the source accounts of the rule item ‘ELIM10’.

For both source accounts, the account 99000050 is found as the destination group account. Since both rule items has the field ‘destination flow’ se to be empty, which cause the fact that the destination data region of both rule items duplicated.

This will cause a problem as below:

Account 22030001 data has been inputted for Audit ID INP002, for Feb-15 and Mar-15 with values 1,108,680 & 1,110,000 for respective months. The snap Shot for the same is provided below.

 

Snap shot for Feb-15 before Consolidation.

4.png

  Snap shot for Mar-15 before Consolidation.

5.png

After Consolidation, for the period Feb-15, the Clearing account 99000050 offsets the data for Account 22030001 in the AUDITID “ICO010” . The Below snap shot shows the value of ICO010 Audit adding to Zero.

 

Snap shot for Feb-15 after Consolidation.

6.png

After Consolidation, for the period Mar-15, the Clearing account 99000050 offsets the data for Account 22030001 in the AUDITID “ICO010”. But the Clearing Account is also showing the value that was cleared for the period Feb-15 for the account 99000050 for the value 1,108,680 which is incorrect. This value is actually being pulled from the previous month value for the Account 99000050.

 

Snap shot for Mar-15 After Consolidation.

7.png

This is because of the limitation explained this article.

 

To solve the issue, we have the options below:

1, Uncheck the ‘periodic calc’ option for both rules

2, Change the destination data region to be different.

Using different FX-rate sets (multiple R_ENTITY's) in BPC

$
0
0

Hi

 

have never really seen this feature well documented. Had to use it recently in a project, so I thought maybe others would be interested in how we resolved it. Feel free to comment and suggest modifcations/simplifications.

 

Rgds Trond


Creating a csv file in other format than comma for master or transaction data Import

$
0
0

Hi,

 

Sometime we encounter a situation when description or other properties of master or transaction data have comma. In this case while saving data file as csv then that field will split into two different columns of csv file. So this document will help you  to "Creating a csv file in other format than comma for master or transaction data Import".

 

Steps for the same are as below:

 

  1. Open downloaded file in excel. Select column A and Click on “Text To Column” from Data -> Text to Column then check Delimated radiobutton.After this click on next as shown in below screenshot.

 

1.png

 

   2.       Select “Others” check box and specify pipe “|” sign.

 

2.png

 

   3.   Select “Text” in “Column data format”.

 

3.png

 

     4.       Go to “Control Panel -> Region and Language->”

 

4.png

     5. Click on “Additional Settings”.

5.png


     6. Specify “|” symbol  in “List separator”

 

6.png

     7. After apply above setting  Save excel data file as .CSV format.

 

     8. After saving file make List separator back to  “,” (comma) from Control Panel -> Region and Language.

 

 

Best Regards,

Deepak

Using VBA with BPC 10 NW

$
0
0


Hi

 

Since our bread and butter for the BPC is based on Excel, it seems safe to say that we should be taking advantage of the inherit excel functionality to improve BPC performance and user interaction.

 

I am writing this document to explain the some of the basic VBA code that can use used to assist us while building reports and forms.

 

 

To start off, so that we are all on the same page - to open the VBA code window - you have two ways (at least that is what I am aware off). The first way is using the Excel menu > Developer tab > view code and the other way (my favorite) is using hot-key "ALT+F11".

 

To add the developer tab to your excel menu, please follow the below steps.

 

 

Step 1:
Right click on the menu and click on "Customize the ribbon".

 

Adding Developer Tab.jpg

 

Step 2:

 

Check the box next to "Developer" and click on "Ok".

Adding Developer Tab 1.jpg

 

 

You can do a lot more in the developer tab then just going to the "View Code" window, but I am not going to into that in this document.

 

 

 

Now in the VBA code window, you will notice that there are several windows / panes open. The two panes that we are interested are (1) Project Explorer and (2) the code window. If you do not see these panes / windows open, you can add them by going to "VIEW > Project Explorer (shortcut is CTRL+R)" and "VIEW > Code (shortcut is F7)".

 

VBA Window.jpg

 

The left window is the "project explorer" and the right window is the "code window". The left drop-downs in the code window will be used to select the object and the right drop-down will be used to select the event / trigger for that object.

 

For our purposes, we are going to be adding a Module to the our workbook. You can do that by right clicking on the "VBAProject (Book1)" and navigating through Insert > Module.

 

VBA Window 1.jpg

 

The various functions that I have used over the past years have been listed below with their explanations

 

Public Function AFTER_WORKBOOK_OPEN()

End Function

 

This is the first code that will be called after the workbook has been opened. You can insert any code that you need to be executed just after the workbook is opened. Please note that if you had set the "Refresh Data in the whole file when opening it" in the sheet options, that will take happen before this code can be executed.

 

Public Function BEFORE_SAVE() As Boolean

    If variable then

          BEFORE_SAVE = True

    else

          Msgbox "Please use button to save"

          BEFORE_SAVE = False

    End if

End Function


This code will be called every time, EPM attends to send data back to BPC for saving. You can insert code here if you need to perform any validation before the data is sent or you can restrict the user from clicking on the "Save Data" in the EPM tab - similar to the example. I will also show the functions that I used to call the save and refresh at the bottom of this documentation.


Public Function BEFORE_REFRESH() as Boolean


    If variable then

          BEFORE_REFRESH = True

    Else

          Msgbox "Please use button"

          BEFORE_REFRESH = False

    End if


End Function


This code will be called every time, EPM attends to refresh the report or form. You can insert code here if you need to perform any action before EPM refreshes the sheet or you can restrict the user from clicking on the "Refresh" in the EPM tab - similar to the example. I will also show the functions that I used to call the save and refresh at the bottom of this documentation.

 

Public Function AFTER_REFRESH() as Boolean

    AFTER_REFRESH = True

End Function

 

This code is called after the refresh has occurred. You can insert the code to perform any action or call to another function within the function definition.

 

As promised, the two functions that I have created to save and refresh my workbook are as follows

 

Public Sub MySave()

    blnMySave = True

    EPM.SaveAndRefreshWorksheetData

      blnMySave = False

    'MsgBox "Saved"

End Sub



Public Sub MyRefresh()

    blnMyRef = True

    EPM.Refresh

    blnMyRef = False

    'MsgBox "Refreshed"

End Sub

 

 

Please note that I have defined 1 object (EPM) at the top of the module.

 

Dim EPM As New FPMXLClient.EPMAddInAutomation


I hope this document was helpful.


Thanks,


Ranjeet

Automated DM Execution Based on Dynamic Selections

$
0
0
Introduction

One of the biggest short coming when it comes to loading transaction data in BPC is lack of variable based selection. This document is an attempt to address this issue by automating the Data Manager execution using values as desired during run-time. There are certain discussions around the same but I thought of sharing a working solution that could be helpful for others as well.

 

Software Components

The scope of this document is restricted to executing a Data Manager package based on a simple business scenario.

 

Software Components

- SAP BPC 10.0 on SAP NW BW(7.31)

- EPM Addin - Version 10 SP21 .NET4

 

Business Case

You are required to automate the transaction data load from BW to BPC. The planning cycle is monthly. Data Manager package must execute for current period without any manual intervention every month.

 

Approach

There are various ways to execute a Data Manager Package. Some of them are:

 

However, none of these approaches can enable a variable based execution of a DMP. We are considering a case where we have to load data every month for the current period without manual intervention. In BW data loads, we can select variables or write selection routines in DTP/InfoPackages to do that. BPC does not provide variable based selections for data load out-of-the-box. BPC also lacks in terms of selection options like "not equal to" or wild card.

 

What we will be trying is to write a program with a selection screen and the program itself will generate the answer prompt which can then be passed along with other values are required in the program UJD_TEST_PACKAGE.

 

Here is how the selection screen would look like:

Selection Screen.jpg

For the purpose of explanation - Fiscal Year/Period has been included in the selection screen. It can be used behind the scenes as well. Just to make the program a little more flexible, an option for transformation file selection is also added. This will help to test different transformation files if required.

 

We will be loading data for current period in our planning model. Here is what the program is doing:

The following declaration will be required to generate answer prompt. This class contains horizontal tab separation as we have declared below.

CLASS cl_abap_char_utilities DEFINITION LOAD.

CONSTANTS: c_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.

Selection screen:

SELECTION-SCREEN BEGIN OF BLOCK blck1.

PARAMETERS: bpc_env TYPE uja_appl-appset_id OBLIGATORY LOWER CASE,

             bpc_mod TYPE uja_appl-application_id OBLIGATORY LOWER CASE,

             bw_iprov TYPE rsinfoprov OBLIGATORY LOWER CASE,

             bpc_pak TYPE uj_package_id OBLIGATORY LOWER CASE,

             bpc_trfl TYPE uj_string OBLIGATORY LOWER CASE,

             bpc_tid TYPE /bi0/oifiscper OBLIGATORY."Selection field

SELECTION-SCREEN END OF BLOCK blck1.

We are initializing the bpc_tid which is the variable for fiscal period with the current period.

INITIALIZATION.

CONCATENATE sy-datum+0(4) '0' sy-datum+4(2) INTO bpc_tid.

Generating answer prompt:

The answer prompt as per thread mentioned earlier has to look like below:

DM Log.jpg

We will define string variables for each of these lines and later concatenate them as a single answer prompt.

It would be better to ensure that only required fields are selected in the DMP so that it is easier to generate string.

 

Note - Low value for 0FISCPER - It is bpc_tid.

CONCATENATE '%InforProvide% ' c_tab bw_iprov cl_abap_char_utilities=>cr_lfINTO ip_sel .


CONCATENATE '%SELECTION%' c_tab '<?xml version="1.0" encoding="utf-16"?><Selections xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">' INTO bpc_sel.

CONCATENATE bpc_sel '<Selection Type="Selection"><Attribute><ID>0FISCPER</ID><Operator>1</Operator><LowValue>' bpc_tidINTO sel_fld.

CONCATENATE sel_fld '</LowValue><HighValue /></Attribute><Attribute><ID>0VERSION</ID><Operator>1</Operator><LowValue>001</LowValue><HighValue /></Attribute></Selection>' INTO sel_fld.

CONCATENATE sel_fld '<Selection Type="FieldList"><FieldID>0ACCT_TYPE</FieldID><FieldID>0CHRT_ACCTS</FieldID><FieldID>0COMP_CODE</FieldID><FieldID>0COSTCENTER</FieldID>' INTO sel_fld.

CONCATENATE sel_fld '<FieldID>0CO_AREA</FieldID><FieldID>0DOC_CURRCY</FieldID><FieldID>0FISCPER</FieldID><FieldID>0FISCVARNT</FieldID><FieldID>0GL_ACCOUNT</FieldID>' INTO sel_fld.

CONCATENATE sel_fld '<FieldID>0PCOMPANY</FieldID><FieldID>0PROFIT_CTR</FieldID><FieldID>0VERSION</FieldID></Selection></Selections>' cl_abap_char_utilities=>cr_lf  INTO sel_fld.

    CONCATENATE '%TRANSFORMATION%' c_tab  '\ROOT\WEBFOLDERS\ENVIRONMENT\MODEL\DATAMANAGER\TRANSFORMATIONFILES\' bpc_trfl'.XLS' cl_abap_char_utilities=>cr_lf INTO sel_trfl.

       CONCATENATE '%TARGETMODE%' c_tab '1' cl_abap_char_utilities=>cr_lf INTO sel_tm.

       CONCATENATE '%RUNLOGIC%' c_tab '0' cl_abap_char_utilities=>cr_lf INTO sel_rl.

       CONCATENATE '%CHECKLCK%' c_tab '0' INTO sel_cl.

 

CONCATENATE ip_sel sel_fld sel_trfl sel_tm sel_rl sel_cl INTO aprompt.

Notice that each variable is separated by c_tab as we have declared earlier. Also, at the end of each line of answer prompt, we have cl_abap_char_utilities=>cr_lf. This is required as this is how lines are separated by SAP program.

 

Now that the answer prompt is ready, we have to feed the selection screen of UJD_TEST_PACKAGE.

SUBMIT ujd_test_package

         WITH appl = bpc_mod

         WITH appset = bpc_env

         WITH group = bpc_group

         WITH if_file = uj00_cs_bool-no

         WITH if_msg = uj00_cs_bool-no

         WITH if_sync = uj00_cs_bool-yes

         WITH package = bpc_pak

         WITH prompt = aprompt

         WITH schedule = '<SCHEDULING><IMMEDIATE>Y</IMMEDIATE><STATE>0</STATE><PERIOD>N</PERIOD></SCHEDULING>'

         WITH team = bpc_team

         WITH user = sy-uname

         EXPORTING LIST TO MEMORY AND RETURN.

You can incorporate more flexibility and options based on your ABAP expertise and knowledge. When you execute this program, it will trigger the DM package and all the selections will be taken from the selection screen.

 

DMP Execution Log.jpg

I have attached the sample code. You will need to modify it based on your source InfoCube/DSO, selection parameters and anywhere else specific to your case.

 

Now you can schedule your DMP to load for the current period at the time of data load without any manual intervention.

Property values upload to Time Dimension

$
0
0

Hi Friends,

 

I want to maintain Geography property values in CostCentre Dimension. I have big list of CostCentres so its difficult to maintain one my one. Is there any option where I can upload the property values based on Cost Centre ID ?

 

Thank you,

Kumar

How to use BPC 10 comment functionality to collect text for the Annual Report

$
0
0
Summary
This document describes how BPC 10 can be used to automate and control the collection of text based data using the distribution, collection and comment functions. In a consolidation scenario this could be particularly useful for disclosure management and collecting information required to produce notes in the annual report.

Authors Biography

Peter Warren is a senior SAP BI-BPC Consultantwith a background in accounting. He has managed financial planning and reporting systems for multinational companies for 20 years and has worked with SAP since 2003.

Since leaving his last position managing the BI team of a major energy company in 2013 he has worked as an independent contractor in London.

https://uk.linkedin.com/in/peterwarrensapconsultant

Business Process

At the end of each financial year it is necessary to publish an annual report which includes a full set of financial statements and notes.

The majority of the financial statements and tables for the notes will be produced from reports run from the BPC consolidation system.

There are however a few notes to the accounts that require text based data from various sources to be collected, summarised and analysed in order to produce a paragraph in the annual report . Examples of this kind of note are

 

Lease payment commitments

Capital commitments

Provisions & contingent liabilities

Insurance claims

A manual process for collecting this data might be to create Excel sheets to capture the required information and email them out to multiple recipients to complete.

Each one of these sheets has to be opened when it is received back and the data from it is copied into a summary sheet.

Once all returns are completed – the data in the summary sheet is analysed and if a disclosure note is required the wording of that note is drafted based on the summarised results..

The process needs to be monitored and controlled to make sure that each entity has either sent in a nil return or a completed return by the due date. The person running the collection process therefore needs to create some monitoring spreadsheet to tick off those that have completed on time and those who they need to chase up.

 

This document describes how BPC can be used to automate and control this process using the distribution, collection and comments functionalities

 

 

 

 

 

 

Step by Step Guide

 

Step 1: Create dimensions for the model

 

Dimension – FORM_NAME

Dim Type - Category

ID

Description

FORM01

FORM02

FORM03

FORM04

Minimum lease payments

Capital Commitments

Provisions & Contingent Liabilities

Insurance Claims

 

Dimension – FORM_TIME

Dim Type - Time

ID

Description

YEAR2015

YEAR2016

Year to 31 March 2015

Year to 31 March 2016

 

 

Dimension – FORM_ENTITY

Dim Type - Entity

ID

Description

AFGHANISTAN

ALBANIA

ALGERIA

ARGENTINA

ARMENIA

AUSTRALIA

AUSTRIA

AZERBAIJAN

BAHRAIN

BANGLADESH

Afghanistan

Albania

Algeria

Argentina

Armenia

Australia

Austria

Azerbaijan

Bahrain

Bangladesh

 

Dimension – FORM_ACCOUNT

Dim Type - Account

ID

Description

Account type

STATUS

ADD_COMMENT

ITEM01

ITEM02

ITEM03

ITEM04

Line to capture the declaration statement

Line to store text entered in additional comment box

Line 1

Line 2

Line 3

Line 4

AST

AST

AST

AST

AST

AST

 

Step 2: Create a new model

 

I have created this as a financial model and linked it to the rates model in case there is a need to perform currency translation

on the data but it could also be created as a simple standard model using just Category, Account, Time and Entity dimensions.

Set security on dimensions as required, I have set entity and time in order to be able to lock down previous periods

image003.png

image005.pngimage007.png

Step 3: Create data collection forms

Create the basic form in Excel. Add any validation using standard Excel data validation formula.

image009.png

 

In this form there is a declaration statement at cell C10 to allow the recipient to submit a Nil return

image013.png

 

Data in the cell range B14:K18 will be saved as a single data string against the Account dimension using the EPMSaveComment() formula

In order to create the single data string add a formula to column L as shown here

I have chosen the pipe | character to delimit the fields, you can choose comma or other character as required

image015.png

 

 

In column A enter the Account dimension names against the rows that contain the data you wish to capture

 

Enter EPMSaveData() formulas in column M as shown. I have added an IF(NOT(ISBLANK  test around the data so that the comment

is only saved when some data has been entered in the first cell on each line. If you don’t do this you will get a lot of entries with |||||| on the

ITEM01 to ITEM04 lines if there is no data on the line

image018.jpg

 

Now add a simple input form to the sheet so that the worksheet can be used to save the comment data

image020.jpg

 

Now set the context options so that the form name currency and measures dimensions are fixed and the other dimensions are hidden

image023.png

 

The input form is now ready for distribution, repeat the process to create additional forms and either save each one as separate workbook

or put them in the same workbook as multiple tabs.

 

 

Step 4: Create summarised data reports

The data report will look similar to the input form but will contain the data from all of the returned input forms.

image025.png

Add another tab to the report to retrieve the data and prepare it for presentation in the front sheet. On the Data Sheet tab create a list of all the

entities with all of the accounts. Tip – use the EPMDimensionPropertyValues formula to get the values list.

image028.jpg

Enter the formula into column C that will retrieve the data back from the BPC comments table

image029.png

 

Step 5: Test the input form and the report

Fill in some of the fields in the input form

Save the data

image032.jpg

Change the Entity on the context options and enter some data for that entity too

 

Open the Report and refresh the data in the data sheet

image036.jpg

You should see the data saved into the return form

 

Step 5: Create process status report

Create an Excel sheet as shown with the Entity values down and the Category values across.

 

image038.jpg

I have then used an excel formula to interpret the values recorded from the Status declaration in the input form so that they present as either

Return Completed, Nil return or No Reply. I have then used Excel conditional formatting to show the No Reply as red and the others green

 

Step 6: Create a distribution template

The returns form will be distributed via email using the BPC distribution and collection process so it is necessary to create a distribution template.

In the Report Workbook section – select the data collection form created in step 3

The template will need to have a section for each of the Entity dimension values and an email address

image039.png

 

 

Step 7: Configure Email access

In the EPM User options – add in the server address , usually something like outlook.yourorganisation.com.

image041.png


 

You can probably get the server address by looking at Account Settings in the File tab in Outlook but you may need to ask the administrators

of your corporate email system

image044.jpg

The log in details will be the same as your Windows AD login and you will need to manually re-enter the password into this User Options screen

whenever your password changes

 

Running the Distribution Process

 

1 Open the distribution template to ensure that the correct email addresses are set for each of the entities

image045.png

2 Check the email addresses

image047.png

 

3 Run the distribution process to send an email including the Excel returns workbook to each of the recipients in the template.

image049.png

4 Select when to run the distribution

image052.jpg

5 Select email as the method

image053.png

6 Create a subject and text for the body of the email

image056.jpg

 

7 Select the template and section of the template

image057.png

8 Check the summary

image059.png

9 Process Log

image062.jpg

 

10 Email result

Since in this example I had selected my own email address for each of the 3 countries I have received a mail with 3 separate forms attached. Each Excel workbook has a different context setting for the Entity dimension and the time period set according to the value entered in the template

Ticking the copy to my inbox resulted in receiving 2 emails as I was the sender and also the recipient

image063.png

The email will be sent from the email address specified in figure 6 above returns.xxxxx.com

(as that’s not a real address the email is from me to me in this picture)

 

 

The recipients of the mail open the attachment and fill in the details. They do not need to be BPC users or have any connection

to BPC – they just type in the information then click Save and send as an attachment to send back the completed form

image069.png

 

For the purposes of demonstration I have filled in all 3 of the returns that I sent to myself and sent them back to myself

Now my inbox has the replies

image071.png

 

Create an outlook folder to store the replies outside of the Inbox. The reason for this is that the collection process will need

to scan all of the emails in the folder and therefore you want to limit the number it looks at to just those that are BPC replies

 

Running the Collection Process

1 Select Collection from the distribution menu item

image074.jpg

When you click the button to select the working folder it should open an Outlook dialog box but it doesn’t always appear in front

– you may see an outlook icon flashing on the task bar. If that happens – click on the icon to display the dialog

2 Select the folder containing the reply emails

image075.png

3 Click the boxes to process the attachments

image078.jpg

4 Dialog shows the progress of the process

image080.jpg

5 Run the report to show the data collected

image082.jpg

6 Alternatively you can use the web client to retrieve the comments data and download it to a file

image083.png

7 Run the status report

image086.jpg

Troubleshooting and maintenance

It is possible to clear comment data from the table using the standard data package /CPMB/CLEARCOMMENTS

image088.jpg

To see the data stored in the comments table – first find out the technical name of the table that stores the comments for your model

Use SE38 to run program UJ0_GET_GEN_TABNAME

image089.png

Now use SE16 to view the data in the table

image091.png

Conclusion

The comment function of BPC 10 combined with the distribution and collection process can be a powerful tool that saves time over

manual processes and provides control and status reporting. Even if this particular business scenario is not applicable for your organisation,

by reading this document you should have a good understanding of how to implement and manage these processes.

Top 10 viewed SAP KBAs for February 2015

$
0
0

“The content has been moved to SCN WIKI, the new link is:

Top 10 viewed SAP KBAs for February 2015 - Enterprise Performance Management - SCN Wiki

-- This Blog will be removed by Dec 31, 2015.”



Purpose

The purpose of this document is to provide a list of the top ten most viewed SAP Knowledge Base Articles for  SAP Planning and Consolidation version for SAP NetWeaver in the month of February 2015.

 

Overview

Below are the top 10 most viewed SAP KBAs for SAP Planning and Consolidation version for SAP NetWeaver.

 

Note NumberNote Title
2107965Issues in EPM Add-In after installing Microsoft updates
2010964BPC parameters list and how they impact system behavior- BPC
1966663BPC 10.1 Frequently Asked Questions
2081345BPCNW - Troubleshooting Tips for Transport Issues
1673094Error in EPM add-in when running reports:  UJO_READ_EXCEPTIO
2053377No active links in BPC 10.1 web client after upgrading SAP G
1667091BPC 10 Transport error:  Errors occurred during post-handlin
1817817How to configure RFCs used by BPC NW
1708660BPC10 Transport error UJT_TLOGO_AFTER_IMPORT
1664950Error in Excel add-in 10:  Error while communicating with th

 

Please note, in order to view the contents of the SAP KBAs, you will need to be logged into Service Marketplace.

 

Related Content

Top 10 viewed  SAP KBAs for January 2015

Top 10 viewed SAP KBAs for January 2015

$
0
0

“The content has been moved to SCN WIKI, the new link is:

Top 10 viewed SAP KBAs for January 2015 - Enterprise Performance Management - SCN Wiki

-- This Blog will be removed by Dec 31, 2015.”



Purpose

The purpose of this document is to provide a list of the top ten most viewed SAP Knowledge Base Articles for SAP Planning and Consolidation version for SAP NetWeaver in the month of January 2015.

 

Overview

Below are the top 10 most viewed SAP KBAs for SAP Planning and Consolidation version for SAP NetWeaver.

 

Note NumberNote Title
2107965Issues in EPM Add-In after installing Microsoft updates
2010964BPC parameters list and how they impact system behavior- BPC
2081345BPCNW - Troubleshooting Tips for Transport Issues
1966663BPC 10.1 Frequently Asked Questions
2053377No active links in BPC 10.1 web client after upgrading SAP G
1817817How to configure RFCs used by BPC NW
1673094Error in EPM add-in when running reports:  UJO_READ_EXCEPTIO
1708660BPC10 Transport error UJT_TLOGO_AFTER_IMPORT
1667091BPC 10 Transport error:  Errors occurred during post-handlin
1744310Get Error "500 - Server error" when login to BPC 10 Web Admi

 

Please note, in order to view the contents of the SAP KBAs, you will need to be logged into Service Marketplace.

 


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

$
0
0
  1. Problem Statement:
    BPC model has the data feed from various systems on hourly and as per the needs hourly multiple times. It is observed that the performance of the BPC model is reduced.
  2. Root Cause:
    In a basic analysis of admin activities carried out in the model. It is identified that the housekeeping activates and statistics monitory are not being put in place.

 

Current architecture

1.JPG

3. Solution:
For Business Planning and Consolidation SAP has given the performance tuning techniques which are very simple & easy to use. Here is a best practice to clear few system related tables and enable the Models run faster. To the application maintenance team it is advised to keep this process as a monthly/weekly activity (As per the need).

 

Target tables to clear:
   1.  UJ0_STAT_HDR
    2. UJ0_STAT_DTL

Observation:
Total records identified in the below 2 tables are 12+ Million. in the Production system.

 

Table-1: UJ0_STAT_HDR

2.JPG

 

Table-2: UJ0_STAT_DTL

3.JPG

 

4. Procedure to delete

Trx: SE38

SAP Standard Program name: UJ0_STATISTICS_DELETE

 

5.JPG

 

6_.JPG

 

 

5. Procedure to set model parameters

As a process we can also set the model to not to store the statistics data.  Use transaction code “UJ0_IMG_03” To set the model parameter “BPC_STATISTICS” to ON/OFF.

 

1_1.JPG

 

 

 

6. Achievements:
1.BPC data loading(Data Manager) is improved by 20%
2.Refresh time of the Reports on the BPC model is improved by 20%

 

Note: We are also doing Light optimization on weekly basis. We want to an extra mile in performance improvement so we have followed above detailed solution in multiple projects (ECC <-->BW<-->BPC<-->Legacy Systems)

Create Master Data on the Fly in SAP BusinessObjects Planning and Consolidation 10.1 NW, version for NetWeaver

$
0
0

This How-To-Guide presents and walks through steps to create Master Data on the fly using SAP BPC 10.x, NetWeaver Platform Data Manager package.

 

 

Traditionally BPC administrators create and maintain dimensions and their members in the BPC Administration web client to ensure governance and consistency of master data across all applications.

However under certain circumstances, it may be necessary to allow end users to create master data values themselves “on the fly” rather than having to wait for a central administrator to do it for them.

 

View Document

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

$
0
0

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:

1.JPG

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.

*WHEN DATA_SOURCE

*IS LOCAL_BUSINESS, IMPORT_ BUSINESS, REPACK_ BUSINESS

*ELSE

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

*ENDWHEN

*WHEN DATA_SOURCE

*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.

*ELSE

*REC(EXPRESSION = %VALUE%, PRODUCT_CODE = CC_BUSINESS_PRODUCT, DATA_SOURCE = LOAD_BUSINESS_PRODUCT_GAAP )

*ENDWHEN.

 

 

New Architecture

 

2.JPG

 

Achievements:

  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.

An easy process to find and transport SAP BPC 10 objects

$
0
0

Introduction:

I have been working on BPC projects (Implementation/ Enhancement/ Support). In all projects transports collection is a common activity. Many times we keep this activity as a last step. Due to which it takes lot of attention during the objects collection. At times we may miss details of few objects and we wander for details and leading to delay in the Transport collection. But with SAP given features we can over come the delay and try for a quicker collection process.

 

After working for 10 projects in BPC Planning and consolidation projects. I found this is one of the simple processes for collecting object for transportation.

 

 

Step-1. BPC Transports are needed to move changes from DEV to UAT and PROD. The respective system needed to bring offline during the movement of a transport.

  1. Log into BPC Web
  2. Under planning and consolidation
  3. Manage Environments

1.JPG

2.JPG

Step-2.

Go to the GUI logon and type transaction code RSA1

3.JPG

  1. Select the Environment  4.JPG
  2. All the objects in the BPC are collected here.
  3. Use the find option to find any object (BPC) of need ..

5.JPG

 

For Example:

6.JPG

Result: Will show up all the objects with name matching (Just like Google Search)

7.JPG

All files with “lgf” are displayed and can be selected and transported accordingly. (Above Image)

 

Hint: This process will enable us to drill down the objects W.R.T Models. Sometimes we may forget the “object name” but we always remember the model/environment.

 

This rule applies also across the models too.

8.JPG

Once identified the objects. For collecting the objects use the following steps (common process WRT BW)

  1. Navigate to Transport Connections
  2. Double click on Object Types
  3. Navigate to More Types
  4. Double click on ‘Select Objects’ 
  5. Place Curser over checkbox & right click
  6. Select ‘DO NOT TRANSPORT ANY BELOW’ 
  7. Select Objects to be transported
    1. Some objects are located under each component type. (As below)

9.JPG

 

10.JPG

 

Lesson Learned/Achievement: With the above process I could do 1) The objects collection and 2) Transport movement from DEV à UAT à PRODUCTION in 30 mins. I thought this a value addition to our day to day job.

Best Practices For Reporting Against SAP Business Planning and Consolidation (Powered by SAP HANA), utilizing the EPM Add-in for Excel

$
0
0

Welcome to this blog mentionning some key concepts/best practices to have in mind when designing a report/input schedule utilizing the EPM Add-in for Excel on the top of SAP Business Planning and Consolidation 10.0 (powered by SAP HANA). This document will be updated as soon as some new concepts are coming from implemention teams. But before jumping directly to best practices, here's first a quick introduction on this front-end tool.

 

EPM ADD-IN VERSIONS

 

EPM Add-in dotnet 3.5:

  • Supports only Office 32 bits
  • Not limited to certain function
  • Performance hit when querying via ODBO connection
  • Run with .NET 3.5 framework (has 1.2 GB RAM limitation)
  • Can be updated with *.msp file (no need to uninstall/re-install)
  • Master Data downloaded to client (No support of BIG VOLUME (BV) mode)

 

EPM Add-in dotnet 4.0:

  • Supports Office 32 bits or Office 64 bits
  • Possibility to enable the BIG VOLUME mode on BW data sources (ODBO / XMLA connections only). Standard mode or Big Volume mode are supported.
  • In Standard mode, it runs the same features as the 3.5 version.
  • Better performance via ODBO connection
  • Can be updated with *.msp file (have to uninstall/re-install)
  • Supports Office 2010 64 bits to get the most out of client-side performance (no RAM limitation)
  • Supports SAP BW (INA provider) connections (for BPC 10.1 embedded model).

 

Big Volume (ODBO connection)

With the Big Volume mode enabled, you cannot write data back to the database, you can only render data. Additionally, certain specific BPC functions are not available (EPMMemberProperty/EVPRO, etc…), as well as some EPM add-in functionalities (Freeze data refresh, Member Selector – dimension/member properties and Data Ranking/Sorting).

 

The Big Volume mode changes the interface for member selection so that dimension members are displayed in pages instead of the default tree view (SP 07). This improves performance for dimensions with large numbers of members.The BV mode only loads metadata asked for, or required, not all of it.

 

 

BPC 10.1 EMBEDDED MODEL (BW INA provider)

 

Latest Drill-Down performance test results showed interesting improvement when activating "Refresh only Expanded and Inserted Members" option in the EPM User Options. It's recommended to use it as a default setting for BPC embedded customers.

 

 

CONNECTIONS

 

The EPM Add-in is an add-in to Microsoft Office Excel, Microsoft Word, and Microsoft Office PowerPoint and is used to analyze data in the following applications:

 

  • SAP Business Financial Consolidation
  • SAP Business Planning and Consolidations, version for SAP NetWeaver **
  • SAP Business Planning and Consolidations, version for SAP Microsoft **
  • SAP Profitability and Cost Management
  • SAP NetWeaver BW InfoProviders (different ODBO connector for BPC MS and BPC NW version).

 

** Allows write back of data via BPC Web Service connection

 

Local
This connection type is for ODBO connections, (FC SSAS cubes,  FC BW cubes, SSAS standard cubes, BW standard cubes,  PCM ODBO provider, SSM ODBO provider, BPC MS ODBO  provider and SAP BW OLE DB provider. An ODBO connection doesn’t allow data input, and is only used for data retrieval. Data Manager features are also not reachable with an ODBO connection. However, the usage of custom members (to build some complex MDX calculated members) can only be performed with an ODBO connection.

 

Planning & Consolidation
This type is for Web Service connections, on the top of BPC 10 MS and BPC 10 NW.  A Web service connection allows data input, and  the use of the Data Manager ribbon, but does not  support the creation of custom members (only local members).

 

 

FUNCTIONS & FORMULAS

 

  • EPMInsertCellBeforeAfterBlock and EPMCopyRange – big impact on the writing time.
  • Use EPMDimensionOverride instead of manually changing the EPMOlapMemberO function for very large EPM reports.
  • Try to avoid mixing EPM Report, EPMRetrieveData, and EPMCommentFull/Partial since the EPM Add-in does a separate call to the database for each type of function (EPMOlapMemberO, EPMRetrieveData, EPMCommentFull/Partial). And all those queries are not parallelized.
  • Functions DimensionOverride and AxisOverride are costly on loading, especially when a report is huge and have lots of formulas to evaluate.
  • Enter the connection name in all EPM formulas (EPMModelCubeID or a static text cell can be used as reference somwhere in a hidden place of your report).
  • Avoid volatile Excel functions like Row(), Column(), and Offset(), as well as cascade references between cells.

 

REPORT OPTIONS

 

  • Create EPM Reports instead of using EPMRetrieveData function.
  • Parallelization is activated by default with the Axis Sharing feature, and on the same data source/connection. Caution: the Axis Sharing feature is a bit heavy in terms of performance.
  • Try not to use custom Measures such as MTD or WTD (process not optimized).
  • EPM reports will outperform EVDRE reports. EVDRE does have some performance optimization but EPM10 report have 2-3 times better performance for the same layout/behavior.
  • If different member ID’s have the same descriptions, ensure “Use EPMMemberID in EPM formulas” is checked in User Options. Caution: It also has an impact on performance as the EPMemberID formula is automatically inserted for each dimension member. A better option would be to manually create a local member mentionning the EPMMemberID function only where it is necessary (without checking the User Option).
  • In case of input, consider using Calculate Parents in Hierarchies (Sheet Options) for on-the-fly calculation on Parent Node members. But be aware that, even it's a very useful feature, the rendering time is bigger as the EPM Add-in has to insert the SUM function based on the hierarchy definition.
  • Multi selection in Page Axis: the SUM is performed on the client side. Cartesian product is returned from the server and summed up on the front-end.
  • Exclude functionality changes your report from symmetric mode to asymmetric mode. But depending the number of tuples you decide to exclude, performance could be worse.
  • Avoid using complex formulas mixing EPM and Microsoft Excel functions, such as functions that create a dependence (a formula references another formula; a formula creates a dependence between two reports), or functions that include a condition (IF).
  • By default, the EPM Add-in uses the "Insert Method" to write reports. To get around this, enable "Keep Formulas Static that Reference Report Cells" option in the Sheet Options to clear the entire report and re-write it entirely on a refresh.
  • In case of drill-down, check option to "Refresh only Expanded and Inserted Members" in the User Options instead of refreshing the entire report.
  • In case of using the "Collapse" feature, there is a new tag in the FPMClient config file in EPM add-in SP15: "Collapsewithoutqueryingserver". Its default  value is set to "FALSE", but it can be turned to "TRUE" for better performance.

 

 

FORMATTING

 

  • Limit the number of formatting rules and make sure those rules don’t overlap each other.
  • Avoid using Microsoft Excel conditional formatting within an EPM add-in dynamic formatting sheet due to the evaluation of each cell.
  • Avoid overriding rules because the Add-in is formatting the cell multiple times (Pattern for example).
  • Avoid using the CONTENT override because the EPM Add-in is retrieving data twice (writing + calculation).
  • Create several EPM add-in dynamic formatting sheets instead of only one, if possible. For example, Report 1 displays only properties A and B, and Report 2 displays only properties C and D, you should create two different dynamic formatting sheets for  better performance.

 

 

LOCAL vs CUSTOM MEMBERS

 

Local Members

  • Created for the purpose of containing a dynamic formula. An editor screen assists with the creation of the Excel-based formula
  • A local member is specific to a single report
  • Local Members can be made context-sensitive. This is in the options for Local Members

 

Custom Member

  • Custom members are created for the purpose of containing an MDX formula
  • An editor screen is presented to help create the formula
  • Customer members can be used throughout a worksheet
  • Only available for ODBO type connections

 

General note: When data is existing on the spread sheet, choose Local Members. Local Members is  native Excel functionality and will always perform better.

 

 

VBA

 

  • Look for existing API before creating custom code
  • Avoid Loop (Do, While...)
  • VBA Best practice “acceleration” function: the initial variables (“screen updating”, “calculations”, “events”…) must be deactivated and then reactivated to their initial status in the exit of the macro.

 

 

ANALYZING & DEBUGGING

 

Review the How to Debug the EPM Add-in document (https://scn.sap.com/docs/DOC-38755)

 

Determine the source of the issue (client vs. server)

  • Fiddler (3rd party software) measures the network traffic
  • EPM Add-in logs to measure the client traffic
  • ST12 (NetWeaver) – Single Transaction Trace to measure the server traffic. UJSTAT can also be used for analyzing queries on the server.

 

Not sure where an issue occurs?

The Development Team may ask for a trace from the customer. To obtain one, here is the recommended process using Fiddler:

  • In Excel, click ‘More’ ► ‘Clear Metadata Cache’ from the EPM toolbar.
  • Log off from the EPM Add-In.
  • Add the “TRACE” flag to the FPMXLClient.dll-ExcelLogConfig.xml file against the Trace logger.
  • Start the Fiddler tool running to capture web events (“Capture Events [F12]”).
  • Log into the EPM Add-In opening the necessary Connection and Model.
  • Recreate the issue or refresh the report.
  • Stop the capture and save the resulting trace log that it has produced (.SAZ file) and send it to development.

 

Doing this gives Development all of the data and metadata needed to reproduce an issue without the actual data and metadata files from the customer.

 

 

USEFUL LINKS

 

Videos and solutions of EPM Add-in functionality (Comments, Formatting, Macros, Local Members, Miscellaneous Reporting, etc.)

Viewing all 192 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>