2015-03-09 3 views
0

У меня есть этот 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, но я не могу сделать это каким-либо образом:/мне нужно это сделать, показать NEGATIIVNE значения в моем Макет ALV.

Сейчас код работает нормально, но как только я пытаюсь сделать что-то вроде этого -

NEGATIIVNE = gv_negativenumericvalue_txt Я дамп говорить, что система не может распознать символ как число.

+0

Что вы ожидаете? Это базовые навыки программирования. Вам нужно выполнить правильную настройку или попытаться использовать move gv_negativenumericvalue_txt для NEGATIIVNE. – icbytes

+0

Вы уверены, что число, содержащееся в 'gv_negativenumericvalue_txt', имеет допустимое числовое представление? Также я не понимаю, почему вам нужно конвертировать, когда у вас уже есть значение, доступное в контексте кода. – Jagger

+0

@Jagger, я думаю, что перед ним разваливается знак – tomdemuyt

ответ

0

Похоже, что требуемое вами требование заключается в том, что сетевое значение документов фактуры должно отображаться в 1 формате, несоблюдение настроек пользователя, которые управляют десятичной нотацией.

Единственный способ сделать это - использовать поле 21 char (вам не нужно 40) вместо NEGATIIVNE в вашем ALV.

На стороне записки, потому что NEGATIIVNE = NEGATIIVNE. ничего не делать, я бы написать

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

в

IF DEBIT_CREDIT = 'CRED'. 
    NEGATIIVNE = NEGATIIVNE * -1. 
ENDIF. 
Смежные вопросы