cancel
Showing results for 
Search instead for 
Did you mean: 

Failed to Save Data

Former Member
0 Kudos

Recieving this error message when trying to enter data using an input schedule.

Framework message:

Error in Logic

SPRunConversion Version 10.0.8.0

Warning: Model without INTCO dimension

Warning: Model without Flow dimension

*Error*-FX180 No Datasrc to be converted

It looks like it's trying to run currency conversion stored procedure, however i do not want it to as I'm enterring the data in USD.

Further the data is saving despite the error message, but I'd like to get rid of it as it will confuse the larger user group. Please advise.

Thanks!

Kevin

Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi Hanlo,

when you are sending USD data, are you sending it to a datasource with IS_CONVERTED = Y or IS_CONVERTED = G?

If you are sending to a datasource with IS_CONVERTED = G and you have a separate datasource for LC data with IS_CONVERTED = Y then you could add a few lines to your script to write a value of 1 to a dummy account on the IS_CONVERTED = Y datasource. In that case the conversion would have a value to convert and should not fail.

BR,
Arnold

former_member186498
Active Contributor
0 Kudos

Hi Hanlo,

yes it execute the sprunconversion.

Check your default logic and comment the sprunconversion statement if you don't want currency conversion, but remember that it will affect all your send data.

Regards

     Roberto

Former Member
0 Kudos

Roberto, is there any way to modify the default logic file to say "if the data being sent is USD, do not run FXTRANS.LGF, else run FXTRANS.LGF".

Thanks,

Kevin

Former Member
0 Kudos

Roberto, also - what data is failing to save? Is it saying the SPRUNCONVERSION is failing, because as noted in the original post the data I'm sending via the input schedule does appear to save.

Thanks,

Kevin

former_member186498
Active Contributor
0 Kudos

Hi Hanlo,

you cannot use *WHEN\*ENDWHEN  instructions but you can use *XDIM_FILTER or *XDIM_GETMEMBERSET. Remember to add a *COMMIT after the instruction to "close" the filter.

Regards

     Roberto

former_member186498
Active Contributor
0 Kudos

Hi Hanlo,

not sure I've understand what you ask. Data are saved but the conversion from LC to the other currency fails, so you have the data only in LC.

Regards

     Roberto

Former Member
0 Kudos

Roberto, can you please specify how I should modify the code, if I only want it to run when enterring LC?

Below is what I'm thinking:

*XDIM_FILTER RptCurrency = LC

*RUN_STORED_PROCEDURE = SPRUNCONVERSION([%MODEL%], [%VERSION_SET%], [USD],[GLOBAL], [%SCOPETABLE%],[%LOGTABLE%])

*COMMIT

Thanks,

Kevin

former_member210696
Active Contributor
0 Kudos

Hi Hanlo,

Please be informed that if you put any logic in Default, the logic will be executed every time you send any data to database through input form.

So, assume you go ahead and put the curr conversion logic in default

1. what data is failing to save? Is it saying the SPRUNCONVERSION is failing, because as noted in the original post the data I'm sending via the input schedule does appear to save. -->

Whenever you save data through input form - it will get saved. That's not where it fails. But, after that, it will execute the default file which contains your curr conversion logic. The curr conversion logic is failing as it doesn't have any data to convert.

2. Assuming you only want to convert LC values to USD. If users enter data in LC and save it, system will have certain LC values to be converted, so curr conversion will run successfully post data submission via excel.

But, if users enter any other values apart from LC, let's say in USD and assuming there are no existing values in LC in the system, the USD values will be saved through input form but curr conversion will fail as system doesn't have any data to convert. To overcome this situation, read Arnold's reply below to have in system certain LC values, so that curr conversion runs successfully.

Hope it made sense and it helps!!

Former Member
0 Kudos

Hi Ashish, thank you for this response it does make sense. However users need the ability to send data through input schedules directly in USD. And in response to Arnold, all datasources are "IS_CONVERTED" = Y, so that option will not work. I need a way of modifying the default logic so that it will only run when sending data in LC, and not USD. Otherwise the error message will confuse end users when using the input schedules.

Former Member
0 Kudos

Hi Hanlo,

adding a few lines that always write a value of 1 to some dummy account in LC as the first line of your default logic should still work. Your users do not need to see that data or be aware of it happening. Something like

*WHEN *

*IS *

*REC(EXPRESSION=1,ACCOUNT=DUMMY,CURRENCY=LC,... [add all other dimensions here]

*ENDWHEN

should do the trick. This will always write a value in LC so the conversion will have something to convert and by using a dummy account (and possibly dummy elements in other dimensions) the users wouldn't ever get to see it.


Regards,

Arnold

former_member210696
Active Contributor
0 Kudos

Hanlo,

I need a way of modifying the default logic so that it will only run when sending data in LC, and not USD.  -> Not possible. This is by design, the default logic will always run on every data send. You can't filter it

Otherwise the error message will confuse end users when using the input schedules. -> This is something which you can avoid by writing the code properly..see Arnlod's reply. If users submit data in LC, SPrunconversion will run fine, if they enter in USD, add the code in default as suggested by Arnold, so that it has one record to convert and users don't get the error messages.

Hope it helps!!

former_member186498
Active Contributor
0 Kudos

Hi Kevin,

yes, it seems correct, just one thing, as I remember well *XDIM_FILTER works only with properties, in this case you have to create a property that copies the ID, say ID_PROP, and use this in

*XDIM_FILTER RptCurrency = [account].properties("ID_PROP")="LC"

Regards

     Roberto

Former Member
0 Kudos

Roberto, the validation (see bold below) is failing, please advise.

*XDIM_FILTER RptCurrency = [RptCurrency].properties("ID_PROP")="LC"

*INCLUDE FXTrans.LGF

*COMMIT

Former Member
0 Kudos

Hi Arnold,

Can you please elaborate on your proposed coding:

*WHEN *

*IS *

*REC(EXPRESSION=1,ACCOUNT=DUMMY,CURRENCY=LC,... [add all other dimensions here]

*ENDWHEN

Do I have to say

WHEN* RptCurrency

IS * USD

*REC(EXPRESSION=1,ACCOUNT=DUMMY,CURRENCY=LC,... [add all other dimensions here]

*ELSE

*INCLUDE FXTrans.LGF

*ENDWHEN

Please advise.

former_member210696
Active Contributor
0 Kudos

Hi Hanlo,

Your code should look something like below -

*WHEN RptCurrency

*IS *

*REC(EXPRESSION=1,ACCOUNT=DUMMY,CURRENCY=LC,... [add all other dimensions here]

*ENDWHEN

*COMMIT

*INCLUDE FXTRANS.LGF

Reiterating the point ->

WHEN* RptCurrency

IS * USD

*REC(EXPRESSION=1,ACCOUNT=DUMMY,CURRENCY=LC,... [add all other dimensions here]

*ELSE

*INCLUDE FXTrans.LGF

*ENDWHEN

Your When and Else statement will be executed based on the scope you defined in the script not based on whether users submitted the data in USD or LC.

*WHEN RptCurrency

*IS USD  --> This particular statement checks the scope defined above and then executes accordingly. For this code, it's immaterial whether data was loaded to USD or LC through input form.

Regards,

Ashish

Former Member
0 Kudos

Hi Hanlo,

Keep the FXTRANS outside the *WHEN / *ENDWHEN. I actually use

*WHEN *

*IS *

*REC(EXPRESSION=1,ACCOUNT=DUMMY,CURRENCY=LC,... [add all other dimensions here]

*ENDWHEN

*COMMIT

*INCLUDE FXTRANS.LGF

So the value of 1 is written to the dummy account whenever any kind of data is saved to the DB. The * acts as a wildcard for any dimension and any member.

BR,

Arnold

former_member186498
Active Contributor
0 Kudos

Hi Kevin,

*XDIM_FILTER RptCurrency = [RptCurrency].properties("ID_PROP")="LC" the syntax is right, have you create, and filled with ID values, the property ID_PROP?

A doubt, not sure it works with include, eventually copy it inside FXTrans.LGF, remember also that after *COMMIT the filter is cleared.

Regards

     Roberto

Former Member
0 Kudos

Roberto, are you sure XDIM_FILTER works with BPC? Instead of using the ID_PROP I'm using an existing property, CURRENCY_TYPE, and the logic is still validating to save. Also I've tried it with and without the *INCLUDE statement.

thanks,

Kevin

RptCurrency = [RptCurrency].properties("CURRENCY_TYPE")="L"

Former Member
0 Kudos

Arnold, do you mean to say

*WHEN * RptCurrency

*IS * USD

*REC(EXPRESSION=1,ACCOUNT=DUMMY,CURRENCY=LC,... [add all other dimensions here]

*ENDWHEN

*COMMIT

*INCLUDE FXTRANS.LGF

Thanks,

Kevin

Former Member
0 Kudos

No, I meant what I wrote

*WHEN *

*IS *

*REC(EXPRESSION=1,ACCOUNT=DUMMY,CURRENCY=LC,... [add all other dimensions here]

*ENDWHEN

*COMMIT

*INCLUDE FXTRANS.LGF

So whenever you enter any data in any currency, the system will write a value of 1 onto the dummy account in LC and therefore will be able to perform a currency conversion.

If you use

*WHEN RPTCURRENCY

*IS USD

it will work if you enter data in USD but not if you enter data in CAD. With my version it will work whatever currency you enter data in.

BR,
Arnold

former_member186498
Active Contributor
0 Kudos

Hi Kevin,

I've used in my default logic and it works perferct, the function is still present in 10 version,

RptCurrency = [RptCurrency].properties("CURRENCY_TYPE")="L" the syntax is correct, can you please try instead of currency_type, creating a ID_PROP with "LC" and this instruction

RptCurrency = [RptCurrency].properties("ID_PROP")="LC" ?

It works so?

Can you please share all the script?

Thanks

     Roberto

Former Member
0 Kudos

Arnold, does it have to be all dimensions in the expression stmt, what about time dimension? either way, when sending the data in the input schedule I am receiving the error message "Error in WHEN/ENDWHEN structure"

*WHEN

*IS *

*REC(EXPRESSION=1,ACCOUNT=10040064,RPTCURRENCY=LC, etc...)

*ENDWHEN

*COMMIT

*INCLUDE FXTRANS.LGF

Thanks

Kevin

Former Member
0 Kudos

Hi Kevin,

from your script it looks like you are missing a * after then *WHEN, it should be

*WHEN *

When the default is executed by sending data, the system has a current period, entity, category etc for sending the data. The same elements will be used for the value of 1. So it would be enough to to have

*REC(EXPRESSION=1,ACCOUNT=10040064,RPTCURRENCY=LC)

if all other dimensions can be taken from the current view/context. You only need to add more if you want to send that value of 1 to specific elements of some of the dimensions. I would always leave time out so the system will use the current period, but if you use additional dimensions (user defined type) you might want to specify them.

BR,

Arnold

former_member186498
Active Contributor
0 Kudos

Hi Hanlo,

the first line should be

*WHEN *
not

*WHEN

Please note that EXPRESSION=1 add 1 to the value of the dimension member of your REC instruction, maybe you want to add the input value, in this case you should write

FACTOR=1 or EXPRESSION=%VALUE%, ...

If not ok please write the complete script.

Regards

     Roberto

Former Member
0 Kudos

Thanks Arnold - the record is now being accepted when enterring USD amount via the input schedule (no error message), however after I refresh the data it shows zero where it should show the amount I just enterred.

Former Member
0 Kudos

Hi,

when you send data the system executes the default logic which in your case includes the FX conversion. My guess is that this overwrites the USD amount you entered by taking the LC amount (NULL) and converting it to USD (still NULL).

If you have data auditing enabled you should be able to see this.

If you do not want this to happen then you need to

  • remove the FX trans from your default logic
  • change the FX rules so that this specific account or company do not get converted

Keep in mind that if you simply remove the FX trans from your default logic, the same would happen when you manually run it at a later stage. So your best bet is to change the FX rules.

BR,

Arnold

Former Member
0 Kudos

ok...even though the account I am writing to has RATETYPE property "NO_TRANS"? What if I also use a datasource that has IS_CONVERTED property = blank?

Basically I just want to be able to enter to USD via input schedule without anything being converted.

Former Member
0 Kudos

Hi,

you either need to enter data onto a datasource with IS_CONVERTED = G or you need to have a RATETYPE that uses [AS_IS] as the formula.

Former Member
0 Kudos

Hi Kevin,

could you please share your default.lgf logic.

BR,
Arnold