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

ALLOCATION WITH DINAMIC VARIABLE

Former Member
0 Kudos
759

Hello:

I have to allocate from different Cost Center ( CECO DIM) to another CostCenter using variable drivers and account.

Each cost center has is master data the following property:

Property CUENTA_DIST = Value of the account to allocate (WHERE)

Property DRIVER_DIST= Value of the driver to allocate (USING)

My script Logic is:

*XDIM_MEMBERSET CECO AS %var1% = 1201603,1300014,1201102
*FOR %y%= %var1%
*SELECT(%var2%,DRIVER_DIST,CECO,ID=%y%) - Here is not working
*SELECT(%var3%,CUENTA_DIST,CECO,ID=%y%) - Here is not working


*RUNALLOCATION
*FACTOR = USING/TOTAL
*DIM CECO WHAT =%y%; WHERE = BAS(016); USING = <<<; TOTAL = <<<
*DIM CUENTA WHAT = BAS(SFCuentas); WHERE = %var3%; USING = %var2%; TOTAL = <<<
*DIM FUENTE What = Input; WHERE = Input; USING = <<<; TOTAL = <<<
*ENDALLOCATION

I got blank component in the select. Is my script correct?

Thanks in advance.

Luciana

Accepted Solutions (0)

Answers (10)

Answers (10)

Former Member
0 Kudos

Vadim:

Here is my BPC information.

I think is my BPC SP issue. I Will update BPC SP15.

Thanks in advance.

Luciana

former_member186338
Active Contributor
0 Kudos

Can you also post UJKT for:

*SELECT(%CC%,ID,CECO,ID=1201603,1300014,1201102) //to ensure correct sort order
*XDIM_MEMBERSET CECO=%CC%
*SELECT(%CDRIV%,DRIVER_DIST,CECO,ID=%CC%) //list of DRIVER_DIST property
*XDIM_MEMBERSET CUENTA=%CDRIV%
*SELECT(%CWHERE%,CUENTA_DIST,CECO,ID=%CC%) //list of CUENTA_DIST property
*XDIM_MEMBERSET CUENTA=%CWHERE%

to see the order in variables...

former_member186338
Active Contributor
0 Kudos

My test case:

Script:

*SELECT(%CC%,ID,COST_CENTER,ID=CC_AU001002,CC_AU002000,CC_AU005000) //for correct sort order
*XDIM_MEMBERSET COST_CENTER=%CC%
*SELECT(%CDRIV%,BPC_FUNCTIONAL_AREA,COST_CENTER,ID=%CC%)
*XDIM_MEMBERSET FUNCTIONAL_AREA=%CDRIV%
*SELECT(%CWHERE%,BPC_PROFIT_CENTER,COST_CENTER,ID=%CC%)
*XDIM_MEMBERSET PROFIT_CENTER=%CWHERE%

*FOR %C%=%CC% AND %D%=%CDRIV% AND %W%=%CWHERE%
*XDIM_MEMBERSET COST_CENTER=%C%
*XDIM_MEMBERSET FUNCTIONAL_AREA=%D%
*XDIM_MEMBERSET PROFIT_CENTER=%W%
*NEXT

UJKT log:

LGX:

*XDIM_MEMBERSET COST_CENTER=CC_AU001002,CC_AU002000,CC_AU005000
*XDIM_MEMBERSET FUNCTIONAL_AREA=FA_610001,FA_610002,FA_610300
*XDIM_MEMBERSET PROFIT_CENTER=PC_AU00-00010,PC_AU00-00003,PC_AU00-00002
*XDIM_MEMBERSET COST_CENTER=CC_AU001002
*XDIM_MEMBERSET FUNCTIONAL_AREA=FA_610001
*XDIM_MEMBERSET PROFIT_CENTER=PC_AU00-00010
*XDIM_MEMBERSET COST_CENTER=CC_AU002000
*XDIM_MEMBERSET FUNCTIONAL_AREA=FA_610002
*XDIM_MEMBERSET PROFIT_CENTER=PC_AU00-00003
*XDIM_MEMBERSET COST_CENTER=CC_AU005000
*XDIM_MEMBERSET FUNCTIONAL_AREA=FA_610300
*XDIM_MEMBERSET PROFIT_CENTER=PC_AU00-00002

You can see that order is absolutely correct!

May be you have BPC SP issue!

Upgrade to the latest: SAP Business Planning and Consolidation 10.1 Support Package 15, version for SAP NetWeaver 7.40

Note: https://launchpad.support.sap.com/#/notes/2552555

P.S. Look on dimension order of PROFIT_CENTER dimension:

You can see that the order is different compared to correct result in my script!

Former Member
0 Kudos

Hi Vadim:

UJKT Result

former_member186338
Active Contributor
0 Kudos

Please provide your BPC and BW version and SP! Something is wrong with your BPC system!

On my system: BPC on BW750 SP12 I have correct order of members and properties!

former_member186338
Active Contributor
0 Kudos

Logic explanation based on your script - is it correct?

This is the way how to ask question about allocation logic!

Former Member
0 Kudos

yes Vadim. It is Correct.

former_member186338
Active Contributor
0 Kudos

To test the logic simply execute in UJKT the following script:

*SELECT(%CC%,ID,CECO,ID=1201603,1300014,1201102) //to ensure correct sort order
*SELECT(%CDRIV%,DRIVER_DIST,CECO,ID=%CC%) //list of DRIVER_DIST property
*SELECT(%CWHERE%,CUENTA_DIST,CECO,ID=%CC%) //list of CUENTA_DIST property

*FOR %C%=%CC% AND %D%=%CDRIV% AND %W%=%CWHERE%
*XDIM_MEMBERSET CECO=%C%
*XDIM_MEMBERSET CUENTA=%D%
*XDIM_MEMBERSET CUENTA=%W%
*NEXT

Post resulting LGX - you will see the correct sequence!

Former Member
0 Kudos

Please, consider this master data:

former_member186338
Active Contributor
0 Kudos

OK, corrected! Look on my test script to execute in UJKT

Former Member
0 Kudos

Hi Vadim, thanks in advance.

Here is the sample data:

And here is the result, with your script:

The drivers and account are getting mix.

Master Data is correct:

Script Logic;

*SELECT(%CC%,ID,CECO,ID=1201603,1300014,1201102)
*SELECT(%CDRIV%,DRIVER_DIST,CECO,ID=%CC%)
*SELECT(%CWHERE%,CUENTA_DIST,CECO,ID=%CC%)

*FOR %C%=%CC% AND %D%=%CDRIV% AND %W%=%CWHERE%
*RUNALLOCATION
*FACTOR = USING/TOTAL
*DIM CECO WHAT =%C%; WHERE = BAS(016); USING = <<<; TOTAL = <<<
*DIM CUENTA WHAT = BAS(SFCuentas); WHERE = %W%; USING = %D%; TOTAL = <<<
*DIM FUENTE What = Input; WHERE = Input; USING = <<<; TOTAL = <<<
*ENDALLOCATION

*NEXT

Thanks

Former Member
0 Kudos

Hi Vadim, thanks in advance.

Here is the sample data:

sample-data.jpg

And here is the result, with your script:

result.jpg

The drivers and account are getting mix.

Master Data is correct:

master.jpg

Script Logic;

*SELECT(%CC%,ID,CECO,ID=1201603,1300014,1201102)
*SELECT(%CDRIV%,DRIVER_DIST,CECO,ID=%CC%)
*SELECT(%CWHERE%,CUENTA_DIST,CECO,ID=%CC%)

*FOR %C%=%CC% AND %D%=%CDRIV% AND %W%=%CWHERE%
*RUNALLOCATION
*FACTOR = USING/TOTAL
*DIM CECO WHAT =%C%; WHERE = BAS(016); USING = <<<; TOTAL = <<<
*DIM CUENTA WHAT = BAS(SFCuentas); WHERE = %W%; USING = %D%; TOTAL = <<<
*DIM FUENTE What = Input; WHERE = Input; USING = <<<; TOTAL = <<<
*ENDALLOCATION

*NEXT

former_member186338
Active Contributor
0 Kudos

Sorry, but instead of incorrect "Insert File" use correct "Insert Image" - if you want my answers!

former_member186338
Active Contributor
0 Kudos

P.S. And your pictures don't match each other! DRIVER_DIST and CUENTA_DIST are different on sample-data.jpg and on master.jpg

former_member186338
Active Contributor
0 Kudos

The correct script will be (using AND in FOR):

*SELECT(%CC%,ID,CECO,ID=1201603,1300014,1201102) //to ensure correct sort order
*SELECT(%CDRIV%,DRIVER_DIST,CECO,ID=%CC%) //list of DRIVER_DIST property
*SELECT(%CWHERE%,CUENTA_DIST,CECO,ID=%CC%) //list of CUENTA_DIST property

*FOR %C%=%CC% AND %D%=%CDRIV% AND %W%=%CWHERE%
//Variables will be assigned with correct order:
//First CECO member, DRIVER_DIST of first CECO member, CUENTA_DIST of first CECO member,
//Second CECO member, DRIVER_DIST of second CECO member,...

*RUNALLOCATION
*FACTOR = USING/TOTAL
*DIM CECO WHAT =%C%; WHERE = BAS(016); USING = <<<; TOTAL = <<<
*DIM CUENTA WHAT = BAS(SFCuentas); WHERE = %W%; USING = %D%; TOTAL = <<<
*DIM FUENTE What = Input; WHERE = Input; USING = <<<; TOTAL = <<<
*ENDALLOCATION

*NEXT
former_member186338
Active Contributor
0 Kudos

Sorry, but if you read help for SELECT: https://help.sap.com/viewer/a2049170bfeb4178ace32222842c3ec1/10.1/en-US/77b5be0a7ff947ab9e98b5e60e17...

you will see that SELECT can't be used inside FOR/NEXT - SELECT is processed before FOR/NEXT

Instead of RUNALLOCATION try to use WHEN/ENDWHEN or use some temporary members... Please provide clear data sample!