cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Allocation of data from one to many profit centers

former_member212236
Active Participant
0 Kudos
1,246

Hello All,

Could you please provide some insights on the below issue.

BPC Version - 10.1

BPC Cons Model - MGMT IFRS

Requirement:

To Allocate Fixed expenses account (MPLFE) from one common Profit Center (Z1999) to several other individual profit centers. The percentage allocation need to be calculated based on the Net Sales account (MPL9400) value of the individual profit centers and their totals.

Formula:

Allocation = Net Sales value of a individual Profit Center / TOTAL (Net Sales) of all Profit Centers * Fixed Expense of Common Profit Center

Code:

*XDIM_MEMBERSET ACCOUNT = MPL9400,MPLFE

*XDIM_MEMBERSET TIME = %TIME_SET%

*XDIM_MEMBERSET CATEGORY = %CATEGORY%

*XDIM_MEMBERSET PROFITCENTER = BAS(SALONTOT_REGION)

//ZALLOC is dummy dimension member create to hold the total value of Net Sales

*WHEN ACCOUNT

*IS BAS(MPL9400)

*REC(FACTOR = 1, ACCOUNT = ZALLOC)

*ENDWHEN

*RUNALLOCATION

*FACTOR = USING/TOTAL

*DIM ACCOUNT WHAT = BAS(MPLFE); WHERE = <<<; USING = ZALLOC; TOTAL = <<<

*DIM PROFITCENTER WHAT = Z1999; WHERE = BAS(SALONTOT_REGION); USING = <<<; TOTAL = <<<

*ENDALLOCATION

//Clear the value stored in ZALLOC to avoid data duplication

*WHEN ACCOUNT

*IS ZALLOC

*REC(FACTOR=0)

*ENDWHEN

Questions:

1. How will the data reside into ZALLOC? Will it get Overwritten or Aggregated?

2. How to avoid the probable error as we have different number of members in USING as in WHERE: which might not let the system with information on where to allocate.

Referred Links:

https://help.sap.com/viewer/a2049170bfeb4178ace32222842c3ec1/10.1/en-US/59f145f708724b9c86d8a65dd57d...

https://answers.sap.com/questions/8768336/allocation-from-a-parent-account.html

Regards,

Vinoth

Accepted Solutions (1)

Accepted Solutions (1)

former_member186338
Active Contributor
0 Kudos

"How will the data reside into ZALLOC? Will it get Overwritten or Aggregated?"

Data will be aggregated for BAS(MPL9400). Each script run will overwrite previous aggregated result

But the scope in the script is incorrect!

*XDIM_MEMBERSET ACCOUNT = MPL9400,MPLFE // incorrect!
*XDIM_MEMBERSET ACCOUNT = BAS(MPL9400) //correct
...
*WHEN ACCOUNT 
*IS BAS(MPL9400) //IS BAS() - not required
*IS * //BAS members already scoped

"How to avoid the probable error as we have different number of members in USING as in WHERE: which might not let the system with information on where to allocate." - not clear, what do you mean!

former_member212236
Active Participant
0 Kudos

I am unable to add points under comments hence placed under Answer.

Answers (3)

Answers (3)

former_member212236
Active Participant
0 Kudos

Hello Vadim,

Thank You. The keyword helped and I am able to get the records as expected.

Here is the final code where I have introduced another block of Allocation logic to process the data for another common Profit Center (10999) as well just like Z1999.

Code:

*XDIM_MEMBERSET ACCOUNT = BAS(MPL9400)

*XDIM_MEMBERSET TIME = 2012.P01

*XDIM_MEMBERSET CATEGORY = BUDGET

*XDIM_MEMBERSET PROFITCENTER = BAS(SALONTOT_REGION)

*WHEN ACCOUNT

*IS *

*REC(FACTOR = 1, ACCOUNT = ZALLOC)

*ENDWHEN

*XDIM_MEMBERSET ACCOUNT as %ACC% = BAS(MPL8000, MPLFE, MPL979A, MPL9150, MPL9250, MPL9800, MPL9850, MPL9900)

*RUNALLOCATION

*FACTOR = USING/TOTAL

*DIM_NONAGGR ACCOUNT WHAT = %ACC%; WHERE = <<<; USING = ZALLOC; TOTAL = <<<

*DIM PROFITCENTER WHAT = Z1999; WHERE = BAS(SALONTOT_REGION); USING = <<<; TOTAL = <<<

*ENDALLOCATION

// Block 2

*RUNALLOCATION

*FACTOR = USING/TOTAL

*DIM_NONAGGR ACCOUNT WHAT = %ACC%; WHERE = <<<; USING = ZALLOC; TOTAL = <<<

*DIM PROFITCENTER WHAT = 10999; WHERE = BAS(MASSTOT_SECTOR); USING = <<<; TOTAL = <<<

*ENDALLOCATION

*WHEN ACCOUNT

*IS ZALLOC

*REC(FACTOR=0)

*ENDWHEN

Regards,

Vinoth V

former_member186338
Active Contributor
0 Kudos
former_member212236
Active Participant
0 Kudos

Hello Vadim,

Thank You for your response.

I had tried the corrections and the logic is working fine and populates the values in ZALLOC.

I want to allocate the values of BAS(MPLFE) from Z1999 profit center to the other profit centers under SALONTOT_REGION but only for the accounts with values.

This is not happening. Instead, the value is being allocated to all the base level members of MPLFE using the Total value of MPLFE in Z1999 Profit Center.

I have tried to use FOR and WHEN statements but ended with no luck.

Could you please suggest.

Below are the screen captures.

Code:

*XDIM_MEMBERSET ACCOUNT = BAS(MPL9400)

*XDIM_MEMBERSET TIME = 2012.P01

*XDIM_MEMBERSET CATEGORY = BUDGET

*XDIM_MEMBERSET PROFITCENTER = BAS(SALONTOT_REGION)

*WHEN ACCOUNT

*IS *

*REC(FACTOR = 1, ACCOUNT = ZALLOC)

*ENDWHEN

*XDIM_MEMBERSET ACCOUNT = BAS(MPLFE)

*RUNALLOCATION

*FACTOR = USING/TOTAL

*DIM ACCOUNT WHAT = BAS(MPLFE); WHERE = <<<; USING = ZALLOC; TOTAL = <<<

*DIM PROFITCENTER WHAT = Z1999; WHERE = BAS(SALONTOT_REGION); USING = <<<; TOTAL = <<<

*ENDALLOCATION