on 2010 Oct 25 9:33 PM
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
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?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
Thanks for the explaination.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
11 | |
3 | |
2 | |
2 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.