cancel
Showing results for 
Search instead for 
Did you mean: 

How to run the runallocation function with following scenario

Former Member
0 Kudos
194

the cost center 123 has the following property and value

property name CC_PER CC1 CC1_PER CC2 CC2_PER

value 80 456 60 789 40

CC_per contains the percentage of value to be allocated out.

CC1 contains the id of target CC to be allocated to

CC1_PER contains the percentage of value to be allocated to CC1

CC2 contains the id of target CC to be allocated to

CC2_PER contains the percentage of value to be allocated to CC2.

So here what we need to achieve is to allocate 80% of CC123 out.

60% of which go to 456 40% of which go to 789..

How to use runallocation standard function to achieve this? although I can write a customized script for the same.

Edited by: Jianbai on Oct 25, 2010 10:35 PM

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

I still have two question with regarding to the driver of runallocation function.

There are couple of post says that the driver can only be transaction data, is this right?

while in BPC online document we have the following:

[property]=u201Dproperty valueu201D

A filter to select dimension members based on a specified property and a given value for that property.

*DIM Product_Group = [Fruit] = "apples"

My understand is that we can use the property value as the filter to select the base member.

how about the following statement in the runallocation function:

DIM ACCOUNT WHAT=SOURCE_AC;WHERE=TARGET_AC; USING=CC.PERCC2_PER;TOTAL=CC_PER

Here both CC.PER and CC2_PER are the property of cost center dimension. the value for CC>PER is 0.80 and the value for CC2_PER is 0.60 , so the value for using will be 0.48.

Is it ok to use the property value to do the calculation in runallocation?

former_member200327
Active Contributor
0 Kudos

What you see in those posts is correct - drivers (as well as senders and receivers) can be Transaction Data only.

What you confused is how to select those records that hold those drivers. For this you can use Properties of Dimensions. So, basically it will be same as if you populate a variable via *SELECT (from Dimension) and than use that variable in allocation (WHAT or WHERE or USING or TOTAL).

For example,


 *DIM Product_Group... USING= [Fruit] = "apples"... 

doesn't mean that driver will be taken from Product_Group Dimension where Property FRUIT has value "apples". It means that it will take those members from Dimension Product_Group that have "apples" in FRUIT Property and than select SIGNDATA from those records that have those selected members in the Application.

Yes, it is perfectly fine to use property values in allocations, but you have to keep in mind that

1. It will get that data (key figure) from the Application, not from Dimension;

2. It is possible that there are not records in the Application that comply with that selection. Than no allocation will be executed (depending on SP and OSS Notes applied).

Hope this clarifies things.

Gersh

Answers (4)

Answers (4)

Former Member
0 Kudos

Thanks for the explaination.

Former Member
0 Kudos

thanks for the reply, currently we did use the REC statment, but he client is asking if this can been achieve by using runallocation.

Gersh, could you explain in more detail how can we move those driver to transaction data?

I am thinking we can use the runallocation the following way

*XDIM_MEMBERSET ACCOUNT = SOURCE_AC.TARGET_AC

*WHEN CC.CC1_PER

*IS<> " "

*RUNALLOCATION

*FACTOR=USING/TOTAL

DIM ACCOUNT WHAT=SOURCE_AC;WHERE=TARGET_AC; USING=CC.PERCC1_PER;TOTAL=CC_PER

*DIM COST_CENTER WHAT=CC;WHERE=CC1;USING=<<<;TOTAL=<<<

*DIM CATEGORY WHAT=PLAN;WHERE=ALLOCATION USING<<<;TOTAL=<<<

*ENDALLOCATION

*ENDWHEN

*WHEN CC.CC2_PER

*IS<> " "

*RUNALLOCATION

*FACTOR=USING/TOTAL

DIM ACCOUNT WHAT=SOURCE_AC;WHERE=TARGET_AC; USING=CC.PERCC2_PER;TOTAL=CC_PER

*DIM COST_CENTER WHAT=CC;WHERE=CC2;USING=<<<;TOTAL=<<<

*DIM CATEGORY WHAT=PLAN;WHERE=ALLOCATION USING<<<;TOTAL=<<<

*ENDALLOCATION

*ENDWHEN

Edited by: Jianbai on Oct 26, 2010 4:23 PM

Edited by: Jianbai on Oct 26, 2010 5:57 PM

Edited by: Jianbai on Oct 26, 2010 5:59 PM

Edited by: Jianbai on Oct 26, 2010 6:01 PM

former_member200327
Active Contributor
0 Kudos

Ok, this is much better.

From what you suggested you can already see that those percentages should be assigned to some Account member, Cost centers and Category in the Application. You can do it either by direct Input schedule or write some script logic in DEFAULT.LGF that will move data from Dimension to Application.

So, now if you have that data in your Application, percentages for each Cost center will work fine; the only issue left is what percentage of the amount to be allocated. One way to handle it is to bring those values to USING/TOTAL, like USING/TOTAL*0.8. It could be a number of ways to do this, but I think that the easiest one would be to take them into account when you write those percentages in Transaction data; i.e. instead of (or in addition to) storing 0.4 and 0.6 you store 0.32 and 0.48. And this can be done in same DEFAULT script I mentioned above.

Please let me know if you need more details.

Regards,

Gersh

former_member200327
Active Contributor
0 Kudos

Hi,

What Nilajan is saying is having allocation drivers (percentages in your case) in Master Data doesn't work well for *RUNALLOCATION; it works much better with WHEN/REC/*NEXT statement.

If you still want to use *RUNALLOCATION consider changing your data model by moving those drivers to Transaction Data (Application).

Regards,

Gersh

Former Member
0 Kudos

Hi,

Instead of using standard runallocation logic, you can try using rec statement.

For each CC, you know the target cost centers to which the values should be allocated. So, just use the REC statement for posting the values. For example,

*REC(FACTOR = 0.8 * 0.6, Costcenter = costcenter.CC1)

Hope this helps.