ABAP添加删除前导零的相关方法

447 阅读1分钟

方法一:调用函数

*去前导零

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
    EXPORTING
      input  = lv_order
    IMPORTING
      output = lv_order.
*增加前导零

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = lv_order
    IMPORTING
      output = lv_order.

例子:

DATA(lv_order_number) = CONV aufnr( 12345 ).

WRITE |{ lv_order_number }|. "Output: 12345

"Add leading zeros
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
 EXPORTING
     input = lv_order_number
 IMPORTING
     output = lv_order_number.
 
WRITE |{ lv_order_number }|. "Output: 000000012345

"Remove leading zeros
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
 EXPORTING
     input = lv_order_number
 IMPORTING
     output = lv_order_number.

WRITE |{ lv_order_number }|. "Output: 12345

方法二:使用字符串模板的短格式

在最近的 ABAP 版本中,对字符串处理的重大改进使得零处理代码不再那么冗长。例如,自从 ABAP 7.4 中的字符串模板和 ABAP 7.2 中的嵌入式 ALPHA 表达式出现后,就可以在单行中实现 ALPHA 转换的结果。

*删除前置零

lv_order = |{ lv_order ALPHA = OUT }|.

*增加前置零

lv_order = |{ lv_order ALPHA = IN }|.

例如:

DATA(lv_order_number) = CONV aufnr( 12345 ).

WRITE |{ lv_order_number }|. "Output: 12345

lv_order_number = |{ lv_order_number ALPHA = IN }|.

WRITE |{ lv_order_number }|. "Output: 000000012345

lv_order_number = |{ lv_order_number ALPHA = OUT }|.

WRITE |{ lv_order_number }|. "Output: 12345

方法三: 使用 SHIFT LEFT DELETING LEADING

* 删除前导零
SHIFT <yourField> LEFT DELETING LEADING '0'.

例子:

DATA(lv_order_number) = CONV aufnr( |{ '12345' ALPHA = IN }| ).
WRITE |{ lv_order_number }|. "Output: 000000012345

SHIFT lv_order_number LEFT DELETING LEADING '0'.
WRITE |{ lv_order_number }|. "Output: 12345
REPLACE '0' WITH SPACE INTO L_VAR.
CONDENSE L_VAR.

其他:增加尾部的零

OVERLAY 语句可用于填充字符串尾部的零。

DATA(lv_order_number) = CONV aufnr( 12345 ).
WRITE |{ lv_order_number }|.    "Output: 12345

"Helper variable of type string, without any leading or trailing zeros
DATA(lv_order_number_string) =  |{ lv_order_number ALPHA = OUT }|.
OVERLAY lv_order_number_string WITH '000000000000'.
WRITE |{ lv_order_number_string }|.    "Output: 123450000000