我有一个要求,用逗号作为十进制分隔符,不带任何千位分隔符(既不是点也不是空格)来格式化十进制数字。
如果我不想把它作为一句话来做,我就不会是我自己,但我一直没能找到这样的解决方案。
我现在的变通办法是。
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
。
很好的挑战,这是我发现的一个适用于您的数据定义的一行代码。我试着让它通用于任何数量的小数,但结果证明这很困难。请注意,它并不总是显示小数字符后的两位数字,例如12.50将显示为12,5。
|{ trunc( l_value ) },{ trunc( frac( l_value ) * 100 ) }|
我很好奇别人发现了什么。