Hi Vadim,
Thanks for looking into this.
I will try to explain better what I need to calculate.
We have a COSTS model where users plan their costs by:
NATURE : all accounts under node PANXSFNA
ORGANISATION : Cost centers
In parallel net sales are planned in SALES model by
ORGANISATION : Profit Centers
CUSTOMER
PRODUCT
NATURE: VV010 (gross sales), ...
Dimension ORGANISATION regroups Costs Centers and Profit Centers:
PANXN1B = Node
1B = Profit Center (PC)
BA11E001 = Cost center1 (CC) - property PROFIT_CENTER=1B
BA13E001 = Cost center2 (CC) - property PROFIT_CENTER=1B
In MARGIN will be analyzed a commercial margin by customers/products/other dimensions
Net Sales are pushed from SALES model to MARGIN model by PC/Nature/customers/products/Source IMPORT_CA
Costs of some CC (Marketing CC, ...) are pushed to the MARGIN model by CC/NATURE (same)/CUSTOMER=CUSTOMER_NA / PRODUCT=PRODUCT_NA/Source IMPORT_COSTS
Now I need to reallocate the costs of these CC to their PC by product/customer, based on Gross sales (NATURE=VV010=Gross sales).
Depending on the CC, costs will go to a particular Nature: VV410 (marketing), VV420 (Structure),...
The allocation to Customers is done on particular criteria : Company Code (COMP_CODE), Distribution channel (DISTRI_CHANNEL), ACTIVITY, ...
The dimension REPART_COPA is a technical dimension, which contains the allocation parameters. This dimension will be filled by the users.
We use a separate dimension as we do not want the users to update the "ORGANISATION" dimension which contains the "real" cost centers.
ID | Description | CC | COMPCODE | CHANNEL | CUSTOMER | COMPOSANT | PRODUCT |
---|
R_BA11E001 | | BA11E001 | 2551 | | [COMPCODE]="2551" | VV430 | BAS(G_10) |
R_BA13E001 | | BA13E001 | 2521 | | [COMPCODE]="2521" | VV430 | BAS(TOTAL_PRODUCT) |
R_BA15E001 | | BA15E001 | 2551 | 30 | [COMPCODE]="2551" AND [CHANNEL]="30" | VV440 | BAS(G_30) |
| | | | | | | |
| | | | | | | |
In this example, CC BA11E001 needs to reallocate its costs to all customers for which property COMPCODE is 2551 and to all products under node G_10. Value should be posted to account VV430.
CC BA15E001 needs to reallocate its costs to all customers for which COMPCODE is 2551 and CHANNEL is 30, and to all products under node G_30. Value should be posted to account VV440.
Extract of the CUSTOMER dimension:
ID | CHANNEL | COMP_CODE |
01302521-0010020353 | 30 | 2521 |
01302521-0010020357 | 30 | 2521 |
01352521-0010020363 | 25 | 2521 |
01302551-0010022342 | 30 | 2551 |
01302551-0010000404 | 30 | 2551 |
01302551-0010022291 | 30 | 2551 |
01302551-0010024230 | 30 | 2551 |
I'm first struggling with the allocation to customers.
I tried:
*SELECT(%CC_TO_REPART%,"CC","REPART_COPA","[ID]<>'REPART_COPA_NA') // get BA11E001, BA13E001,BA15E001
*SELECT(%COMP%,[COMPCODE],REPART_COPA,"CC = %CC_TO_REPART%")
*SELECT(%CHANNEL%,[CHANNEL],REPART_COPA,"CC = %CC_TO_REPART%")
*XDIM_MEMBERSET CATEGORIE=BUDGETV0
*XDIM_MEMBERSET DEVISE_RPT=LC
*XDIM_MEMBERSET DIVISION=DIVISION_NA
*XDIM_MEMBERSET HCLIENT=CLIENT_NA
*XDIM_MEMBERSET HPRODUIT=PRODUIT_NA
*XDIM_MEMBERSET NATURE=BAS(PANXTNAT)
*XDIM_MEMBERSET ORGANISATION=BA15E001
*XDIM_MEMBERSET REPART_COPA=REPART_COPA_NA
*XDIM_MEMBERSET SITE_EXPEDITION=SITE_EXPEDITION_NA
*XDIM_MEMBERSET SOURCE_DONNEES=IMPORT_COUTS
*XDIM_MEMBERSET TEMPS=2016.01
*FOR %CC%=%CC_TO_REPART%
*RUNALLOCATION
*FACTOR=USING/TOTAL
| WHAT | WHERE | USING | TOTAL |
*DIM_NONAGGR NATURE | WHAT=BAS(SFNA); | WHERE=VV430; | USING=VV010; | TOTAL=<<< |
*DIM ORGANISATION | WHAT=%CC%; | WHERE=<<<; | USING=1B; | TOTAL=<<< |
*DIM DIVISION | WHAT=DIVISION_NA; | WHERE=<<<; | USING=<<<; | TOTAL=<<< |
*DIM HCLIENT | WHAT=CLIENT_NA; | WHERE=>>>; | USING=[COMPCODE]="%COMP%"; | TOTAL=<<< |
*DIM HPRODUIT | WHAT=PRODUIT_NA; | WHERE=>>>; | USING=BAS(TOTAL_PRODUCT); | TOTAL=<<< |
*DIM SITE_EXPEDITION | WHAT=SITE_EXPEDITION_NA; | WHERE=>>>; | USING=BAS(TOTAL_SITE_EXPEDITION); | TOTAL=<<< |
*DIM SOURCE_DONNEES | WHAT=IMPORT_COUTS; | WHERE=COPA; | USING=IMPORT_CA; | TOTAL=<<< |
*ENDALLOCATION | | | | |
*NEXT | | | | |
This will work only if 1 CC in REPART_COPA
USING=[COMPCODE]="%COMP%" AND [CHANNEL]="%CHANNEL% won't work
I tried:
*SELECT(%CC_TO_REPART%,"CC","REPART_COPA","[ID]<>'REPART_COPA_NA') // get BA11E001, BA13E001,BA15E001
*SELECT(%CUSTOMER%,[CUSTOMER],REPART_COPA,"CC = %CC_TO_REPART%")
*FOR %CC%=%CC_TO_REPART%
*RUNALLOCATION
*FACTOR=USING/TOTAL
| WHAT | WHERE | USING | TOTAL |
*DIM_NONAGGR NATURE | WHAT=BAS(SFNA); | WHERE=VV430; | USING=VV010; | TOTAL=<<< |
*DIM ORGANISATION | WHAT=%CC%; | WHERE=<<<; | USING=1B; | TOTAL=<<< |
*DIM DIVISION | WHAT=DIVISION_NA; | WHERE=<<<; | USING=<<<; | TOTAL=<<< |
*DIM HCLIENT | WHAT=CLIENT_NA; | WHERE=>>>; | USING=%CUSTOMER% | TOTAL=<<< |
*DIM HPRODUIT | WHAT=PRODUIT_NA; | WHERE=>>>; | USING=BAS(TOTAL_PRODUCT); | TOTAL=<<< |
*DIM SITE_EXPEDITION | WHAT=SITE_EXPEDITION_NA; | WHERE=>>>; | USING=BAS(TOTAL_SITE_EXPEDITION); | TOTAL=<<< |
*DIM SOURCE_DONNEES | WHAT=IMPORT_COUTS; | WHERE=COPA; | USING=IMPORT_CA; | TOTAL=<<< |
*ENDALLOCATION | | | | |
*NEXT | | | | |
Works with only 1 CC in REPART_COPA
With multiple: Error in UJKT: UJP_RULE_EXCEPTION:'AND' manquant dans l'expression [COMPCODE]="2521" AND [CHANNEL]="30",[COMPCODE]="2521"
Thanks again,
Camille