on ‎2016 May 20 1:42 AM
Hello Experts,
I would like to use logic script to copy data for some months from one year to another.
what I did is to input year(Version 2) or year.month(Version 3) from Time dimesion property YEAR(Version 2) or ID(Version 3) to get the Year code and then loop for the months which hardcoded as below.
However, only version 1 is working, but version 2 and version 3 got the same error when I ran from the package RUN_LOGIC:Invalid "select" statement.
I am sure that the statement like *SELECT(%TARGET_YR%, "[YEAR]", TIME, "[ID] = '$TARGET_YEAR$'") will not pass the validation in Logic Script, but it does work when you run the package.
Could someone help on it? Thank you very much for your kindly help in Advance
Wei
Logic Script Code:
//This LG is to copy data from A YEAR to ANOTHER
//Version 1 working well
//*SELECT(%SOURCE_YR%, "[YEAR]", TIME, "[ID] = 2006.01")
//*SELECT(%TARGET_YR%, "[YEAR]", TIME, "[ID] = 2009.01")
//Version 2 Not working, Error: RUN_LOGIC:Invalid "select" statement
//*SELECT(%SOURCE_YR%, "[YEAR]", TIME, "[YEAR] = '$SOURCE_YEAR$'")
//*SELECT(%TARGET_YR%, "[YEAR]", TIME, "[YEAR] = '$TARGET_YEAR$'")
//Version 3 Not Working, Error: RUN_LOGIC:Invalid "select" statement
*SELECT(%SOURCE_YR%, "[YEAR]", TIME, "[ID] = '$SOURCE_YEAR$'")
*SELECT(%TARGET_YR%, "[YEAR]", TIME, "[ID] = '$TARGET_YEAR$'")
*XDIM_MEMBERSET PRODUCT = ProductA
*XDIM_MEMBERSET ENTITY = CSO
*WHEN ACCOUNT
*IS *
*FOR %MONTHNUM% = .01, .02, .03
*REC(EXPRESSION = ([TIME].[TMVL(0,%SOURCE_YR%%MONTHNUM%)]),TIME = TMVL(0, %TARGET_YR%%MONTHNUM%),PRODUCT = %PRODUCT_SET%)
*NEXT
*ENDWHEN
*COMMIT
Data Manager Code:
PROMPT(SELECTINPUT,%SELECTION%,,"Select Target Product","PRODUCT")
PROMPT(TEXT, %SOURCE_YEAR%, "Enter the Source Year, e.g. 2006" , ,) //For Version 2
PROMPT(TEXT, %TARGET_YEAR%, "Enter the Target Year, e.g. 2007" , ,) //For Version 2
PROMPT(TEXT, %SOURCE_YEAR%, "Enter the Source Year.month, e.g. 2006.01" , ,) //For Version 3
PROMPT(TEXT, %TARGET_YEAR%, "Enter the Target Year.month, e.g. 2007.01" , ,) //For Version 3
INFO(%EQU%,=)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SUSER,%USER%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPPSET,%APPSET%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPP,%APP%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SELECTION,%SELECTION%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,LOGICFILENAME,DATA_REPLICATION.LGF)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,REPLACEPARAM, SOURCE_YEAR%EQU%%SOURCE_YEAR%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,REPLACEPARAM, TARGET_YEAR%EQU%%TARGET_YEAR%)
Request clarification before answering.
Not:
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,REPLACEPARAM, SOURCE_YEAR%EQU%%SOURCE_YEAR%)
But
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,MEMBERSELECTION, SOURCE_YEAR%EQU%%SOURCE_YEAR%)
SELECTINPUT Prompt() Command - SAP BusinessObjects Planning and Consolidation - SAP Library
Vadim
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Vadim,
Thank you very much for your kindly help.
However, it is still not working.
PROMPT(SELECTINPUT,%SELECTION%,,"Select Target Product","PRODUCT")
PROMPT(TEXT, %SOURCE_YEAR%, "Enter the Source Year, e.g. 2006.01" , ,)
PROMPT(TEXT, %TARGET_YEAR%, "Enter the Target Year, e.g. 2007.01" , ,)
INFO(%EQU%,=)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SUSER,%USER%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPPSET,%APPSET%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPP,%APP%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SELECTION,%SELECTION%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,LOGICFILENAME,DATA_REPLICATION.LGF)
'TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,REPLACEPARAM, SOURCE_YEAR%EQU%%SOURCE_YEAR%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,MEMBERSELECTION, SOURCE_YEAR%EQU%%SOURCE_YEAR%)
'TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,REPLACEPARAM, TARGET_YEAR%EQU%%TARGET_YEAR%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,MEMBERSELECTION, TARGET_YEAR%EQU%%TARGET_YEAR%)
Please see the error below. The error is the same as before.
In the arcticle you sent to me earlier, it uses REPLACEPARAM and MEMBERSELECTION both, so I am still a bit confused here.
TASK(/CPMB/ALLOCATION_LOGIC,REPLACEPARAM,ASARENT%EQU%%ASARENT%%TAB%SOURCE%EQU%%SOURCEENTITY%%TAB
%TARGET%EQU%%TARGETENTITY%)
TASK(/CPMB/ALLOCATION_LOGIC,MEMBERSELECTION,SOURCE%EQU%%SOURCEENTITY%%TAB %TARGET%EQU%%TARGETENTITY%)
by the way, the logic in the WHEN and ENDWHEN is just to use copy data from a year for only Jan, Feb an Mar to another Year, it is just a practice.
Please kindly help again.
Thank you very much.
Regards,
Wei
Hi Vadim,
Thank you very much again.
Per my understanding, the difference between MEMEBERSELECTION and REPLACEPARAM is:
if you want to parse a string to a Dimension ID, then you use Selectinput with MEMEBERSELECTION, such as 2006.01 to Time Dim Year Month ID
if you want to parese a string to a Dimension Property, then you use TEXT with REPLACEPARAM, such as 2006 to Time Dime Year Property
is that right?
So I changed the code to as below in Red:
***********************************************************************************************************
PROMPT(SELECTINPUT,%SELECTION%,,"Select Target Product","PRODUCT")
'PROMPT(TEXT, %SOURCE_YEAR%, "Enter the Source Year, e.g. 2006.01" , ,)
'PROMPT(TEXT, %TARGET_YEAR%, "Enter the Target Year, e.g. 2007.01" , ,)
PROMPT(SELECTINPUT, %SOURCE_YM%, , "Select the Source Year Month, e.g. 2006.01" , "TIME")
PROMPT(SELECTINPUT, %TARGET_YM%, , "Select the Target Year Month, e.g. 2007.01" , "TIME")
INFO(%EQU%,=)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SUSER,%USER%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPPSET,%APPSET%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPP,%APP%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SELECTION,%SELECTION%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,LOGICFILENAME,DATA_REPLICATION.LGF)
'TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,REPLACEPARAM, SOURCE_YEAR%EQU%%SOURCE_YEAR%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,MEMBERSELECTION, SOURCE_YM%EQU%%SOURCE_YM%)
'TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,REPLACEPARAM, TARGET_YEAR%EQU%%TARGET_YEAR%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,MEMBERSELECTION, TARGET_YM%EQU%%TARGET_YM%)
***********************************************************************************************************
In LGF:
***********************************************************************************************************
*SELECT(%SOURCE_YRS%, "[YEAR]", TIME, "[ID] = '$SOURCE_YM$'")
*SELECT(%TARGET_YRS%, "[YEAR]", TIME, "[ID] = '$TARGET_YM$'")
*XDIM_MEMBERSET PRODUCT = ProductA
*XDIM_MEMBERSET ENTITY = CSO
*WHEN ACCOUNT
*IS *
*FOR %SOURCE_YR% = %SOURCE_YRS%
*FOR %TARGET_YR% = %TARGET_YRS%
*FOR %MONTHNUM% = .01, .02, .03
*REC(EXPRESSION = ([TIME].[TMVL(0,%SOURCE_YR%%MONTHNUM%)]),TIME = TMVL(0, %TARGET_YR%%MONTHNUM%),PRODUCT = %PRODUCT_SET%)
*NEXT
*NEXT
*NEXT
*ENDWHEN
*COMMIT
***********************************************************************************************************
However, the error is still the same as below, Please help again. Thank you very much again!
Regards,
Wei
Some lines are missing in the DM advanced script! The correct will be:
PROMPT(SELECTINPUT,%SELECTION%,,"Select Target Product","PRODUCT")
PROMPT(SELECTINPUT, %SOURCE_YM%, , "Select the Source Year Month, e.g. 2006.01" , "TIME")
PROMPT(SELECTINPUT, %TARGET_YM%, , "Select the Target Year Month, e.g. 2007.01" , "TIME")
INFO(%EQU%,=)
INFO(%TAB%,;)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,EQU,%EQU%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,TAB,%TAB%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SUSER,%USER%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPPSET,%APPSET%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPP,%APP%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SELECTION,%SELECTION%)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,LOGICFILENAME,DATA_REPLICATION.LGF)
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,MEMBERSELECTION, SOURCE_YM%EQU%%SOURCE_YM%%TAB%TARGET_YM%EQU%%TARGET_YM%)
Vadim
| User | Count |
|---|---|
| 17 | |
| 8 | |
| 7 | |
| 6 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 1 | |
| 1 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.