我想知道该怎么做
- 数字分组
当我物有所值时,例如 3000000(300 万)我想在屏幕上打印 3.000.000(从最后一个字符开始每三个字符有一个点)
- 删除 value 前面的零
当我从表中选择一个值并将其打印在屏幕上时,该值会自动填充零:例如129
变为0000129
该WRITE
语句允许您指定货币。例子:
DATA price TYPE p DECIMALS 2.
price = '3000000'.
WRITE: / price CURRENCY 'USD'.
请注意,这不会解释数字本身,而只是根据您指定的货币在某些位置添加逗号和点。因此,如果您有一个值为 的整数3000000
并且您用货币写它,USD
结果将是30.000,00
。
我建议您阅读该WRITE
声明的 F1 帮助信息,因为除此之外还有很多选择。
--
删除前导零是通过使用转换例程来完成的。将CONVERSION_EXIT_ALPHA_INPUT
添加前导零CONVERSION_EXIT_ALPHA_OUTPUT
并将其删除。可以将这些例程添加到字典中的域中,因此转换将自动完成。例如MATNR
类型:
DATA matnr TYPE matnr.
matnr = '0000129'.
WRITE: / matnr.
这将输出129
,因为域MATNR
已指定转换例程。
在没有这个的类型的情况下,例如:
DATA value(7) TYPE n.
value = '0000129'.
WRITE: / value.
输出将是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.
另请注意,由WRITE
语句触发的数字类型的输出转换由用户主数据中的属性控制。应在此处配置小数分隔符和数字分组。
您可以在用户主事务中检查这一点,例如 SU01 或 SU01D。
要删除零填充,请使用 NO-ZERO 语句。对于千位分隔符,我没有看到任何问题,因为它是 ABAP 打印 P 类型值的标准方式。这是一个示例代码。
REPORT ZZZ.
DATA:
g_n TYPE n LENGTH 10 VALUE '129',
g_p TYPE p LENGTH 12 DECIMALS 2 VALUE '3000000'.
START-OF-SELECTION.
WRITE /: g_n, g_p.
WRITE /: g_n NO-ZERO, g_p.
这会产生输出。
000000129
3.000.000,00
129
3.000.000,00
要删除前导零,您可以执行以下操作:
data: lv_n type n length 10 value '129'.
shift lv_n left deleting leading '0'.