If you look at the generated program, you can see there's a function module call that adjusts the value according to the currency. If you have a currency like JPY (Japanese Yen) and define with zero decimal places, then an input value of, e.g. 123 will be stored in the database as 1.23. I.e. this FM will divide the value entered by 100. If you don't do this, then in reports, the JPY values will be 100 to high.
The same would apply to units. If you have a unit with 3dp, then an input value of 1.234 will actually be stored in the database at 12.34