on 12-30-2014 5:24 PM
Hi All,
I think this is very basic.
This is what I need to do
For example I need to select records based on the data source, time period and entity and then change few dimension values like assign the assign the dimension from a different dimension property. For example FS line item assign it from a somedimension.FS_LINE property.
* I don't want to create a new record.
* Read a existing record and modify the values of GL Account and Billing Type.
The code should be for one dimension
WHEN FS_LINEITEM
REC(EXPRESSION=%VALUE%FLD(SOME_DIMENSION.FS_LINEITEM)).
*ENDWHEN
Is this correct code ? I need to do the WHEN/ENDWHEN for all the 3 dimension values I need to change right ?
The FLD(DIM.PROPRTY) instruction in *REC is supported only in MS and not in BPC NW version. I am using EPM 10.How to assign the dimension.property value in BPC NW EPM 10 version.
Sorry I know it is too basic. Thanks in advance for all your help.
Senthil
Hi Senthil,
"I don't want to create a new record." - new record WILL be created!!! You COPY data! After copy you can clear original record...
If you want to copy data to some dimension member that is defined in the property of some current dimension member then use:
*REC(EXPRESSION=%VALUE%, FSLINE=SOME_DIMENSION.FS_LINEITEM)
Hope it's clear!
Vadim
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
P.S. But in BPC NW script logic there is no simple way to store the value (SIGNEDDATA) that is stored in the dimension member property! Slow and ineffective FOR/NEXT is required as a workaround for FLD(). It's recommended to store values as a SIGNEDDATA with some dummy members. Then it can be used in REC with tuple expression:
*REC)EXPRESSION=%VALUE%*([DIM1].[D1DUMMY],[D2].[D2DUMMY],[D3].[D3DUMMY]),...)
Vadim
Thanks Vadim.I really appreciate it .It helps a lot.
Just a quick clarification.
For example I need to change 3 dimensions values and the 3 dimension are FSLINE1,FSLINE2 and FSLINE3.
so it has to be
WHEN FSLINE1
*REC(EXPRESSION=%VALUE%, FSLINE1=SOME_DIMENSION.FS_LINEITEM1)
ENDWHEN
WHEN FSLINE2
*REC(EXPRESSION=%VALUE%, FSLINE2=SOME_DIMENSION.FS_LINEITEM2)
ENDWHEN
WHEN FSLINE3
*REC(EXPRESSION=%VALUE%, FSLINE3=SOME_DIMENSION.FS_LINEITEM3)
ENDWHEN
COMMIT.
After the above I will clear the old values. I will do that.
Is there any way I can do all the 3 dimension assignments in one loop statement.
For example in FOX code you can do
FOR Loop statement on 3 dimensions and do the processing in one FOR/ENDFOR statement. Is it possible to do all the 3 dimension assignment in one WHEN/ENDWHEN statement ?
Thanks again for all the help and really appreciate it.
*WHEN requires *IS! At least *IS *
*REC will be single:
*REC(EXPRESSION=%VALUE%, FSLINE1=SOME_DIMENSION.FS_LINEITEM1, FSLINE2=SOME_DIMENSION.FS_LINEITEM2, FSLINE3=SOME_DIMENSION.FS_LINEITEM3)
To clear original values use:
*REC(EXPRESSION=0)
with the original scope
And NEVER use *COMMIT with *WHEN/*ENDWHEN - autocommit happens automatically at the end of *WHEN/*ENDWHEN. *COMMIT will simply reset the scope...
Vadim
If "It helps a lot" - mark it helpful
Thanks Vadim again.
So your suugestion is assign the some other dimension FLD property value is not available in NW and to do that use the FOR/NEXT which has performance impact. The other solution is to store values as a SIGNEDDATA with some dummy members.
Can you please explain how to achieve the SIGNEDDATA with some dummy members. I will maintain it instead of the property and use the tuple expression.
*REC)EXPRESSION=%VALUE%*([DIM1].[D1DUMMY],[D2].[D2DUMMY],[D3].[D3DUMMY]),...)
Thanks again.
So one more clarification.
if I use
*REC(EXPRESSION=%VALUE%, FSLINE1=SOME_DIMENSION.FS_LINEITEM1,
FSLINE2=SOME_DIMENSION.FS_LINEITEM2,
FSLINE3=SOME_DIMENSION.FS_LINEITEM3)
it will loop all the records selected in the scope statement or just one record like the first record in FOX or ABAP.if just one record then I need to use the WHEN/ENDWHEN to loop all the records right ?
WHEN DIM1DIM2 DIM3
IS '*'
*REC(EXPRESSION=%VALUE%, FSLINE1=SOME_DIMENSION.FS_LINEITEM1,
FSLINE2=SOME_DIMENSION.FS_LINEITEM2,
FSLINE3=SOME_DIMENSION.FS_LINEITEM3)
ENDWHEN
Sorry if it is too basic. Thanks again. I will mark it ask helpful soon.
For example you want to store some value for each member of the dimension DIMX
For BPC MS you will use the property approach and FLD function.
For BPC NW you will store the values:
DIMX: SOMESPECIFICMEMBER
Other dimensions:
DIM1: D1DUMMY
DIM2: D2DUMMY
DIM3: D3DUMMY
...
Then use tuple expression in REC from my previous post.
Vadim
User | Count |
---|---|
6 | |
5 | |
2 | |
1 | |
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.