📜  删除abap中的前导零 (1)

📅  最后修改于: 2023-12-03 15:36:54.802000             🧑  作者: Mango

删除 ABAP 中的前导零

在 ABAP 中,我们经常会遇到需要删除一个数字或字符串的前导零的情况。比如,从一个内部表或数据库表中读取数据,并把这些数据输出到屏幕或者文件中。这时,如果数字或字符串有前导零,就会影响输出的格式。

以下是几种常见的方法,可以用来删除 ABAP 中的前导零。

STRING 型函数

ABAP 提供了一些字符串函数,可以用来操作字符串。其中,CONCATENATE 函数可以将多个字符串合并起来,并去除前导零。

DATA: lv_num TYPE i VALUE '00123',
      lv_str TYPE string.

CONCATENATE lv_num INTO lv_str.
WRITE lv_str. " 输出 123

注:CONCATENATE 函数也可以把数字和字符串合并到一起。

NUMC 类型转换

在 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 中的前导零。根据具体的业务场景选择合适的方法。