将字符转换为整数

时间:2015-03-09 13:52:02

标签: sap abap

我有这个ABAP代码:

CLEAR NEGATIIVNE.
DATA gv_negativenumericvalue_txt TYPE CHAR40.
SELECT SINGLE NETWR INTO NEGATIIVNE
  FROM VBRK
  WHERE VBELN = VBRK-VBELN.
IF DEBIT_CREDIT = 'CRED'.
  NEGATIIVNE = NEGATIIVNE * -1.
ELSE.
  NEGATIIVNE = NEGATIIVNE.
  ENDIF.
WRITE NEGATIIVNE TO gv_negativenumericvalue_txt.
REPLACE ALL OCCURRENCES OF '.' in gv_negativenumericvalue_txt with ''.
CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'
 CHANGING
  value = gv_negativenumericvalue_txt.
CALL FUNCTION 'MOVE_CHAR_TO_NUM '
  EXPORTING
    CHR = gv_negativenumericvalue_txt
  IMPORTING
    NUM = NEGATIIVNE
  EXCEPTIONS
    CONVT_NO_NUMBER = 1
    CONVT_OVERFLOW  = 2
    OTHERS          = 3.
write:/ gv_negativenumericvalue_txt.

我需要做的是编写变量gv_negativenumericvalue_txt into variable NEGATIIVNE,但我不能这样做:/我需要它在我的ALV布局中显示值NEGATIIVNE。

现在代码工作正常,但一旦我尝试做这样的事情 -

NEGATIIVNE = gv_negativenumericvalue_txt我得到转储说系统无法将该字符识别为数字。

1 个答案:

答案 0 :(得分:0)

您的要求似乎是开票凭证的净值应该以1格式显示,而不是考虑控制小数表示法的用户的设置。

唯一的方法是在你的ALV中使用21个字符(你不需要40个)字段而不是NEGATIIVNE。

旁注,因为NEGATIIVNE = NEGATIIVNE.没有做任何事我会写

IF DEBIT_CREDIT = 'CRED'.
  NEGATIIVNE = NEGATIIVNE * -1.
ELSE.
  NEGATIIVNE = NEGATIIVNE.
ENDIF.

as

IF DEBIT_CREDIT = 'CRED'.
  NEGATIIVNE = NEGATIIVNE * -1.
ENDIF.