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

Setting a forecast period in SAP BPC LogicScript

Former Member
0 Likes
946

Dear experts,

I need to make a selection for a forecast period. The first month of the forecast is next to the last actual month and the last month is December in 4 years.

The selection schould be dynamic.

*SELECT (%FIRST_PLAN_PERIOD%,[PLANNING_PERIOD],VERSION,[ID] = %VE_201803090101)

*SELECT (%L_A_M%,[PREVMONTH],TIME,[ID] = %FIRST_PLAN_PERIOD%) //2018.03

*SELECT (%LAST_ACTUAL_MONTH%,[PREVMONTH],TIME,[ID] = %FIRST_PLAN_PERIOD%) //2018.03

*SELECT (%MY_YEAR%,[YEAR],TIME,[ID] = %FIRST_PLAN_PERIOD%) //2018

*SELECT (%NEXT_YEAR%,[YEAR],TIME,[PRIV_YEAR] = %MY_YEAR%)

*SELECT (%NEXT_2YEAR%,[YEAR],TIME,[PRIV_YEAR] = %NEXT_YEAR%)

*SELECT (%NEXT_3YEAR%,[YEAR],TIME,[PRIV_YEAR] = %NEXT_2YEAR%)

*SELECT (%NEXT_4YEAR%,[YEAR],TIME,[PRIV_YEAR] = %NEXT_3YEAR%)

*SELECT (%NEXT_5YEAR%,[YEAR],TIME,[PRIV_YEAR] = %NEXT_4YEAR%)

*SELECT (%LAST_PLAN_PERIOD%,[ID],TIME,[YEAR] = %NEXT_4YEAR% AND MONTHNUM = 12)

*SELECT (%FIRST_PERIOD_TIMEID%,[TIMEID],TIME,ID = %L_A_M%) //2018.03

*SELECT (%LAST_PLAN_PERIOD_TIMEID%,[TIMEID],TIME,[YEAR] = %NEXT_5YEAR% AND MONTHNUM = 12)

//*SELECT (%HOR%,[ID],TIME,ID> = %FIRST_PLAN_PERIOD% AND LEVEL = MONTH)

*SELECT (%FIRST_PLAN_PERIOD_TIMEID%,[ID],TIME,[TIMEID] = %FIRST_PLAN_PERIOD%)

//*SELECT (%HOR%,[ID],TIME,TIMEID > = %FIRST_PLAN_PERIOD_TIMEID% AND LEVEL = MONTH)

*SELECT (%HOR%,[ID],TIME,TIMEID>%FIRST_PERIOD_TIMEID% AND CALC = N)

*XDIM_MEMBERSET VERSION = VE_201803090101

*XDIM_MEMBERSET COMPANY = CO_0530006

*XDIM_MEMBERSET TIME = %LAST_ACTUAL_MONTH%

*XDIM_MEMBERSET ACCOUNT_PL = AC_ZRT005315

*XDIM_MEMBERSET TERM = TE_1,TE_2,TE_3,TE_4,TE_5,TE_6

//DATASOURCE All

//FOCUS ALL

//Partner All

//Vendor All

*FOR %T% = %HOR%

*WHEN ACCOUNT_PL

*IS *

*REC(EXPRESSION = %VALUE%*([ACCOUNT_PL].[AC_ZRT005233],[TIME].[%T%],[FOCUS].[FO_NA],[PARTNER].[PA_NA],[TERM].[TE_NA],[VENDOR].[VN_NA],[DATASOURCE].[DS_MANUAL],[RPTCURRENCY].[EUR_EUR]),ACCOUNT_PL = AC_ZRT005315,TIME = %T%)

*ENDWHEN

*NEXT

UJK_VALIDATION_EXCEPTION:No Value assigned to Dimension "TIME"

ComponentReleaseSP-LevelSupport packageSAP_BW7400020SAPKW74020CPMBPC8000021SAPK-80021INCPMBPCWe use SAP BusinessObjects EPM, Add-in for Microsoft Office
Version 10.0 SP 25 Patch2 .NET4

Calculation engine used: JAVASCRIPT

List of dimensions

ACCOUNT_PL (Accounts)

TIME

VERSION (Actual / Plan / Forecast)

COMPANY

DATASOURCE

FOCUS (Competence center / Business line)

MEASURE

RPTCURRENCY

TERM (Lifetime of the contract)

PARTNER (Client Segment)

Elements of VERSION are as follows:

IDVE_201803090101DECRIPTIONFORECAST 3+9CATEGORY_GROUPFORECASTNO_PLANNING_YEARS5PLANNING_PERIOD2018.04STRUCTURE_PERIOD2018.04UPDATE_RULEUPDATE_RULE_FORECASTYEARPARENTH1PARENTH2VE_H2PLANNINGNO_PREV_MON

Elemens of TIME are set as follows:

ID2018.01BASE_PERIOD1LEVELMONTHMONTHNUM1PERIODJANPRIV_YEAR2017TIMEID20180100YEAR2018PARENTH12018.Q1PREVMONTH

2017.12

Accepted Solutions (1)

Accepted Solutions (1)

former_member186338
Active Contributor
0 Likes

First error: instead of:

*SELECT (%FIRST_PLAN_PERIOD%,[PLANNING_PERIOD],VERSION,[ID] = %VE_201803090101)

Has to be:

*SELECT (%FIRST_PLAN_PERIOD%,[PLANNING_PERIOD],VERSION,[ID] = VE_201803090101)

"%" has to be removed!

Answers (2)

Answers (2)

former_member186338
Active Contributor
0 Likes

And in general, it's possible to create the script like this without using additional properties like PREVMONTH and PRIV_YEAR!

Former Member
0 Likes

The idea of the script was to take a value for account AC_ZRT005315 from the %LAST_ACTUAL_MONTHS% and to multiply it with a factor AC_ZRT005233 and to write new data to the forecast periods.

The script schould be launched by DM package .

Now the script is working. Thank you very much!

Could you plase advise how can I set a forecast horizon without additional properties?

It would be great to have a lighter script

former_member186338
Active Contributor
0 Likes

a.tkachova

Please accept the correct answer.

I will try to give you an idea how to avoid properties...

former_member186338
Active Contributor

a.tkachova

Please read my blog: https://blogs.sap.com/2018/11/04/how-to-calculate-next-or-previous-time-member-in-bpc-script-logic/

You will see how to calculate prev/next without properties. For multiple years - just repeat the code!

former_member186338
Active Contributor
0 Likes

Strange idea to use 2 variables with equal result:

*SELECT (%L_A_M%,[PREVMONTH],TIME,[ID] = %FIRST_PLAN_PERIOD%) //2018.03
*SELECT (%LAST_ACTUAL_MONTH%,[PREVMONTH],TIME,[ID] = %FIRST_PLAN_PERIOD%) //2018.03

?

Former Member
0 Likes

I had troubles with forecast period definition. I was not sure which part is working correctly