on 2021 May 22 2:20 PM
Hi everyone,
I'am trying to do a script logic in SAP BPC 10.1 Standard with next parameters:
The target is for example, when the user select the month ABR.2021, I should have a package for the next;
EBITDA_MOVIL= VALUE EBITDA(DIC Previous year - VALUE EBITDA(ABR Previous year - VALUE EBITDA current year)
I made the next script, but i have a problem with the lookup;
//**********Calculo Ebitda Movil***********//
*SELECT(%ANIO%,YEAR, TIEMPO, ID = %TIEMPO_SET%)
*SELECT(%MESES%,ID, TIEMPO, ID <= %TIEMPO_SET% AND ID >= %ANIO%.01)
*XDIM_MEMBERSET FLUJO=F99
*XDIM_MEMBERSET AUDITORIA=BAS(ALL_AUDIT)
*XDIM_MEMBERSET INTERCOMPANY=BAS(TOTAL)
*XDIM_MEMBERSET GRUPO=BAS(TOT_GRUPOS)
*XDIM_MEMBERSET MONEDA=USD
*XDIM_MEMBERSET VERSIONES=%VERSIONES_SET%
*XDIM_MEMBERSET TIEMPO=%MESES%
*XDIM_MEMBERSET SOCIEDAD=%SOCIEDAD_SET%
*XDIM_MEMBERSET CUENTA=EBITDA
*LOOKUP CONSOLIDACION
*DIM T0:TIEMPO =TMVL(0,%TIEMPO_SET%)
*DIM T1:TIEMPO =TMVL(-1,%TIEMPO_SET%)
*DIM T2:TIEMPO =TMVL(-2,%TIEMPO_SET%)
*DIM T3:TIEMPO =TMVL(-3,%TIEMPO_SET%)
*DIM T4:TIEMPO =TMVL(-4,%TIEMPO_SET%)
*DIM T5:TIEMPO =TMVL(-5,%TIEMPO_SET%)
*DIM T6:TIEMPO =TMVL(-6,%TIEMPO_SET%)
*DIM T7:TIEMPO =TMVL(-7,%TIEMPO_SET%)
*DIM T8:TIEMPO =TMVL(-8,%TIEMPO_SET%)
*DIM T9:TIEMPO =TMVL(-9,%TIEMPO_SET%)
*DIM T10:TIEMPO =TMVL(-10,%TIEMPO_SET%)
*DIM T11:TIEMPO =TMVL(-11,%TIEMPO_SET%)
*DIM T12:TIEMPO =TMVL(-12,%TIEMPO_SET%)
*DIM MEASURES=PERIODIC
*DIM T0M:TIEMPO =TMVL(0,%TIEMPO_SET%)
*ENDLOOKUP
*WHEN CUENTA
*IS EBITDA
*WHEN TIEMPO.MONTHNUM
*IS 1
*REC(EXPRESSION=LOOKUP(T1)+(LOOKUP(T12)*-1)+LOOKUP(T0M),CUENTA=EBITDA_MOVIL)
*ENDWHEN
*ENDWHEN
*COMMIT
*WHEN CUENTA
*IS EBITDA
*WHEN TIEMPO.MONTHNUM
*IS 2
*REC(EXPRESSION=LOOKUP(T2)+(LOOKUP(T12)*-1)+LOOKUP(T0M),CUENTA=EBITDA_MOVIL)
*ENDWHEN
*ENDWHEN
*COMMIT
I did it just to test the first two months. Since this should work for twelve months, but depending on the month of selection. How can I make it dynamic and work?
I hope I have been clear with what I need. Thanks for your time and help
Request clarification before answering.
In general, you need to get the same month value in prior year and DECEMBER in prior year!
//%TIEMPO_SET%=2021.05
*SELECT(%Y%,[YEAR],TIEMPO,ID=%TIEMPO_SET%) //%Y%=2021
*SELECT(%M%,[MOTHNUM],TIEMPO,ID=%TIEMPO_SET%) //%M%=5
*SELECT(%TIDJAN%,[TIMEID],TIEMPO,YEAR=%Y% AND MONTHNUM=1 AND CALC=N) //%TIDJAN%=20210100
*SELECT(%TIDL%,[TIMEID],TIEMPO,TIMEID<%TIDJAN%) //%TIDL%=...20201100,20201200
*SELECT(%PREVYEAR%,[YEAR],TIEMPO,TIMEID<%TIDJAN% AND TIMEID>=%TIDL%) //2020
*SELECT(%PREVYEARDEC%,[ID],TIEMPO,YEAR=%PREVYEAR% AND MONTHNUM=12) //2020.12
*SELECT(%PREVYEARMONTH%,[ID],TIEMPO,YEAR=%PREVYEAR% AND MONTHNUM=%M%) //2020.05
//...
*XDIM_MEMBERSET CUENTA=EBITDA
*XDIM_MEMBERSET TIEMPO=%TIEMPO_SET%
*WHEN CUENTA
*IS *
*REC(EXPRESSION=[TIEMPO].[%PREVYEARDEC%]-[TIEMPO].[%PREVYEARMONTH%]+%VALUE%,CUENTA=EBITDA_MOVIL)
*ENDWHEN
P.S. Please read:
https://blogs.sap.com/2018/11/04/how-to-calculate-next-or-previous-time-member-in-bpc-script-logic/
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Please use corrected script (with CALC=N added)
//%TIEMPO_SET%=2021.01
*SELECT(%Y%,[YEAR],TIEMPO,ID=%TIEMPO_SET%) //%Y%=2021
*SELECT(%M%,[MONTHNUM],TIEMPO,ID=%TIEMPO_SET%) //%M%=1
*SELECT(%TIDJAN%,[TIEMPOID],TIEMPO,YEAR=%Y% AND MONTHNUM=1 AND CALC=N) //%TIDJAN%=20210100
*SELECT(%TIDL%,[TIEMPOID],TIEMPO,TIEMPOID<%TIDJAN% AND CALC=N) //%TIDL%=...20201100,20201200
*SELECT(%PREVYEAR%,[YEAR],TIEMPO,TIEMPOID<%TIDJAN% AND TIEMPOID>=%TIDL%) //2020
*SELECT(%PREVYEARDEC%,[ID],TIEMPO,YEAR=%PREVYEAR% AND MONTHNUM=12 AND CALC=N) //2020.12
*SELECT(%PREVYEARMONTH%,[ID],TIEMPO,YEAR=%PREVYEAR% AND MONTHNUM=%M% AND CALC=N) //2020.01
*XDIM_MEMBERSET CUENTA=EBITDA
*XDIM_MEMBERSET TIEMPO=%TIEMPO_SET%
*XDIM_MEMBERSET VERSIONES=%VERSIONES_SET%
*XDIM_MEMBERSET SOCIEDAD=%SOCIEDAD_SET%
*WHEN CUENTA
*IS * //already defined in scope!
*REC(EXPRESSION=[TIEMPO].[%PREVYEARDEC%]-[TIEMPO].[%PREVYEARMONTH%]+%VALUE%,CUENTA=EBITDA_MOVIL)
*ENDWHEN
Good day... Mr. Vadim, I appreciate it and thank you very much. I tested the script and ran it successfully.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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 | |
11 | |
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.