我有这个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
我得到转储说系统无法将该字符识别为数字。
答案 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.