使用逗号作为小数分隔符格式化小数,并且没有千位分隔符

时间:2015-11-03 20:48:20

标签: sap abap

我要求使用逗号作为小数分隔符格式化十进制数字,并且没有任何千位分隔符(既不是点也不是空格)。

如果我不想将其作为一个班轮,我不会是我自己,但是我无法找到这样的解决方案。

我现在所拥有的解决方法是。

DATA: l_value TYPE p LENGTH 9 DECIMALS 2 VALUE '-3450354.25'.

DATA(l_formatted_value) = |{ l_value SIGN = LEFTSPACE COUNTRY = 'DE ' }|.
REPLACE ALL OCCURENCES OF '.' IN l_formatted_value WITH ''.
WRITE: l_formatted_value.

我尝试使用NUMBER = RAW选项,但后来我似乎找不到一个简单的方法来将小数点分隔符指定为逗号。

DATA(l_formatted_value) = |{ l_value SIGN = LEFTSPACE NUMBER = RAW }|.
REPLACE '.' IN l_formatted_value WITH ','.

如何将其作为一个班轮来实现?我也想避免使用WRITE

1 个答案:

答案 0 :(得分:4)

很好的挑战,这里是一个单行,我发现它适用于您的数据定义。我试图让它对任意数量的小数都是通用的,但事实证明这很难。请注意,它不会总是在十进制字符后显示两位数,例如12.50将显示为12,5。

|{ trunc( l_value ) },{  trunc( frac( l_value ) * 100  ) }|

我很好奇其他人的发现。