(SAP/ABAP)数字分组并在值前删除0(零)

yuk*_*kou 5 abap grouping padding zero digit

我仍然是ABAP的新手,我想知道如何做1.数字分组2.在值前删除0

  1. 当我有物有所值时的数字分组,例如3000000(300万)我想在屏幕上打印3.000.000(最后一个字符每三个字符有一个点)

  2. 当我从表中选择一个值并在屏幕上打印时,在值前面删除0(零),左边的值得到0例子数据库值:129当我把它放在内部表中并打印它时,它变成0000129

谢了哥们

Ren*_*ené 5

WRITE语句允许您指定货币.例:

DATA price TYPE p DECIMALS 2.
price = '3000000'.
WRITE: / price CURRENCY 'USD'.
Run Code Online (Sandbox Code Playgroud)

请注意,这不会解释数字本身,而只是在某些位置添加逗号和点,具体取决于您指定的货币.因此,如果您有一个值为的整数,3000000并且您使用货币USD将其写为结果30.000,00.

我建议你阅读WRITE声明中的F1帮助信息,因为除了这个之外还有很多选项.

-

通过使用转换例程来移除前导零.该CONVERSION_EXIT_ALPHA_INPUT会添加前导零,并CONVERSION_EXIT_ALPHA_OUTPUT会将其删除.可以将这些例程添加到字典中的域中,因此转换将自动完成.例如MATNR类型:

DATA matnr TYPE matnr.
matnr = '0000129'.
WRITE: / matnr.
Run Code Online (Sandbox Code Playgroud)

这将输出,129因为域MATNR具有指定的转换例程.

在没有这种类型的情况下,例如:

DATA value(7) TYPE n.
value = '0000129'.
WRITE: / value.
Run Code Online (Sandbox Code Playgroud)

输出将是0000129.您可以调用CONVERSION_EXIT_ALPHA_OUTPUT例程来实现输出而不带前导零:

DATA value(7) TYPE n.
value = '0000129'.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  EXPORTING
    input  = value
  IMPORTING
    output = value.
WRITE: / value.
Run Code Online (Sandbox Code Playgroud)