在实际的开发中,经常需要把数字转成文本显示,以示适用户的显示格式需求。在SAP ABAP中,我们定义了一个数字型的小数位后,即使没有小数ABAP也会以0填充,所以就会出现5.000的情况,用户希望这种情况下只输出5就可以了,于是用递归的方法写了一个函数,代码如下:
DATA: v_string TYPE string VALUE '100.0'.
PERFORM dele_after_zero CHANGING v_string.
WRITE v_string.
*&---------------------------------------------------------------------*
*& Form dele_after_zero
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM dele_after_zero CHANGING p_string.
DATA: last_char TYPE c,
first_char TYPE c,
n_len TYPE i,
n_pos TYPE i.
n_len = STRLEN( p_string ).
n_pos = n_len - 1.
last_char = p_string+n_pos(1).
IF last_char EQ '0' OR last_char EQ '.'.
p_string = p_string+0(n_pos).
IF last_char NE '.'.
PERFORM dele_after_zero CHANGING p_string.
ENDIF.
ENDIF.
ENDFORM. " dele_after_zero