📅  最后修改于: 2023-12-03 15:36:54.802000             🧑  作者: Mango
在 ABAP 中,我们经常会遇到需要删除一个数字或字符串的前导零的情况。比如,从一个内部表或数据库表中读取数据,并把这些数据输出到屏幕或者文件中。这时,如果数字或字符串有前导零,就会影响输出的格式。
以下是几种常见的方法,可以用来删除 ABAP 中的前导零。
ABAP 提供了一些字符串函数,可以用来操作字符串。其中,CONCATENATE
函数可以将多个字符串合并起来,并去除前导零。
DATA: lv_num TYPE i VALUE '00123',
lv_str TYPE string.
CONCATENATE lv_num INTO lv_str.
WRITE lv_str. " 输出 123
注:CONCATENATE
函数也可以把数字和字符串合并到一起。
在 ABAP 中,当我们定义一个字符串变量为 NUMC 类型时,其中的前导零是不能被删除的。但如果我们把 NUMC 类型的字符串转换为 CHAR 类型的字符串,就可以去除其中的前导零。
DATA: lv_num TYPE numc4 VALUE '0012',
lv_str TYPE char4.
lv_str = lv_num.
WRITE lv_str. " 输出 12
除了上述方法以外,我们还可以自定义一个函数,来去除 ABAP 中的前导零。以下是一个例子:
FUNCTION z_remove_leading_zeros.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(iv_input) TYPE string
*" EXPORTING
*" VALUE(ev_output) TYPE string
*"----------------------------------------------------------------------
ev_output = iv_input.
WHILE ev_output CP '0*'.
ev_output = ev_output+1.
ENDWHILE.
ENDFUNCTION.
在 ABAP 中使用自定义函数:
DATA: lv_num TYPE i VALUE '00123',
lv_str TYPE string,
lv_new_str TYPE string.
CONCATENATE lv_num INTO lv_str.
CALL FUNCTION 'z_remove_leading_zeros'
EXPORTING
iv_input = lv_str
IMPORTING
ev_output = lv_new_str.
WRITE lv_new_str. " 输出 123
以上是一些常见的方法,用来删除 ABAP 中的前导零。根据具体的业务场景选择合适的方法。