04-20-2009 4:51 PM
I need to know the use of the table TCURX it has only two fields Currency and No of Decimals . Can any one please tell me why it is used .
And also why is the FM 'CURRENCY_AMOUNT_DISPLAY_TO_SAP is used ?
Thanks
Ramakanth
04-20-2009 4:56 PM
Hello,
I think this is self-explanatory:
TCURX --> No of decimal places in the currency (e.g., INR --> 2, KWD --> 3, JPY --> 0)
CURRENCY_AMOUNT_DISPLAY_TO_SAP --> Depending on the currency key & the decimals in the currency, the FM formats the amount.
BR,
Suhas
PS: You can have a look into the source code of CURRENCY_AMOUNT_DISPLAY_TO_SAP to get a better idea.
Edited by: Suhas Saha on Apr 20, 2009 5:59 PM
04-20-2009 5:07 PM
The automatic multiplication and division takes place with amounts associated with currencies maintained in the TCURX table. This maintenance is to allow exceptional currencies that have different number of decimal places from the 2 that is common in most cases.
For example, if the currency entry is present in TCURX table, it divides the amount value by 10 raised to the power of (2- (CURRDEC entry in TCURX table)).
06-11-2010 11:52 AM
Below is an SAP message when you call tcode OY04 (config. for TCURX)
It explains your doubt.
In the R/3 System tables currency fields are
stored as decimal figures with a variable number
of decimal places. The decimal point is not
stored in the field in the database. Instead,
each currency field refers to a currency key
field. In this transaction you assign the number
of decimal places to this currency key uniquely.
Example: If you have set currency USD to have
two decimal places and you post an amount of 100
USD, an amount of 10000 USD is stored in the
currency field in the database. Not until this
amount is processed further or is output does
the system use the currency key from the
reference field to determine the number of
decimal places via this table. In this way the
table content can be interpreted correctly for
further processing or formatted for output with
the correct punctuation.
If after posting you changed the number of
decimal places for USD, for example, to 3, the
existing field content of 10000 would be
interpreted for futher processing or output as
10 USD (10.000). This would mean that the
contents of tables across the system would, for
all currency fields containing an amount in USD,
be interpreted incorrectly by 10 per cent. To
change the number of decimal places for a
currency already in use, you must convert all
the tables in the R/3 System that contain
currency fields, so that the data integrity
remains. This cannot, however, for both
organizational reasons and under the runtime
aspect be carried out in a productive system.
The following changes to the TCURX table can
thus lead to the loss of data integrity if you
make the changes in a productive system or
transport them into a productive system:
o Change to the number of decimal places of an
existing currency
o Deletion of an entry from the TCURX table
(corresponds to changing the decimal places to
the standard value of two decimal places)
o Insertion of an entry in the TCURX
(corresponds to changing the standard value of
2 decimal places to a different value), if
this is a currency code that already exists
Uncritical changes are any made to this table
during the Customizing of a new installation or
the insertion of TCURX even during operations,
if the currency codes have just been entered in
the TCURC table using transaction OY03,
signifying that no postings to these currency
codes can have been carried out yet.