Skip to Content
0
Sep 25, 2015 at 07:36 PM

Script validation error when using *DIM_NONAGGR in *RUNALLOCATION

242 Views

I have a *RUNALLOCATION code within a set of two *FOR/*NEXT loops that works just fine:

*FOR %EACH_PARENT% = %COSTCENTER_SET%

*FOR %EACH_ACCT% = %CAPOPS_ACCT_SET%

*RUNALLOCATION

*ACCELERATOR = OFF

*FACTOR = USING/TOTAL

*DIM CAPOPS_ACCT WHAT = %EACH_ACCT%; WHERE = <<<; USING = BAS(TOTAL_REV); TOTAL = <<<

*DIM COSTCENTER WHAT = %EACH_PARENT%.INP; WHERE = BAS(%EACH_PARENT%); USING = <<<; TOTAL = <<<

*DIM RPTCURRENCY WHAT = USD; WHERE = <<<; USING = BOE; TOTAL = <<<

*DIM AUDITTRAIL WHAT = INPUT_BASE; WHERE = <<<; USING = ARIES_CALC; TOTAL = <<<

*DIM PROGRM WHAT = NO_PROGRAM; WHERE = BAS(PROGRAMS_PLUS_SALES); USING = <<<; TOTAL = <<<

*DIM COMPANY WHAT = 100; WHERE = BAS(G43100); USING = <<<; TOTAL = <<<

*DIM TIME WHAT = 2016.INP; WHERE = %TIME_SET%; USING = <<<; TOTAL = <<<

*ENDALLOCATION

*NEXT

*NEXT

I learned of the *DIM_NONAGGR keyword and was hoping to take advantage of it for the CAPOPS_ACCT dimension. However, when I replace the code above with this:

*FOR %EACH_PARENT% = %COSTCENTER_SET%

*RUNALLOCATION

*ACCELERATOR = OFF

*FACTOR = USING/TOTAL

*DIM_NONAGGR CAPOPS_ACCT WHAT = %CAPOPS_ACCT_SET%; WHERE = <<<; USING = BAS(TOTAL_REV); TOTAL = <<<

*DIM COSTCENTER WHAT = %EACH_PARENT%.INP; WHERE = BAS(%EACH_PARENT%); USING = <<<; TOTAL = <<<

*DIM RPTCURRENCY WHAT = USD; WHERE = <<<; USING = BOE; TOTAL = <<<

*DIM AUDITTRAIL WHAT = INPUT_BASE; WHERE = <<<; USING = ARIES_CALC; TOTAL = <<<

*DIM PROGRM WHAT = NO_PROGRAM; WHERE = BAS(PROGRAMS_PLUS_SALES); USING = <<<; TOTAL = <<<

*DIM COMPANY WHAT = 100; WHERE = BAS(G43100); USING = <<<; TOTAL = <<<

*DIM TIME WHAT = 2016.INP; WHERE = %TIME_SET%; USING = <<<; TOTAL = <<<

*ENDALLOCATION

*NEXT

... and attempt to validate the Script Logic, I receive the error message "For 'NONAGGR' Dimension CAPOPS_ACCT, member count of WHERE,USING must be same". I was aware of the potentially false error message about the member count of WHAT,WHERE, and have implemented the SAP Note (2003100) to fix that. However, through my searching, I can find nothing that helps with this error of member count of WHERE,USING. Is it just not possible to have USING defined like this with *DIM_NONAGGR?

The basic scenario at play here is to allocate planned Opex (which is on special dummy ".INP" Cost Center members in various Opex accounts %CAPOPS_ACCT_SET%) to base level Cost Centers under the parent with the same name as the ".INP" (but without the ".INP" suffix), based on the amount of Production Volume (BOE) already sitting on those base level members. Production Volume accounts are the ones in BAS(TOTAL_REV).

I'm OK with going back to *FOR/*NEXT because it works, just thought I could perhaps speed up the run-time. BTW, having *ACCELERATOR=OFF vastly decreased the run-time, in part because I think it spends too much time forming the necessary HANA DB procedures with each pass of the *FOR/*NEXT loop.

System version is BPC NW 10.0, CPMBPC 800 SP13, HANABPC 800 SP7.

Many thanks,

- John