2010-01-21 2 views
1

здесь, в Швейцарии, наша валюта - франки, а самая маленькая монета - 5 сантимов, что составляет 0,05 франка. Каков наилучший способ округления суммы, подлежащей выплате нашими деньгами, используя язык программирования ABAP в системе SAP R/3?Как объединить сумму за швейцарскую валюту (франки) в ABAP

примеры:

 
" 4.48 should round to 4.50 
" 2746.24 should round to 2746.25 
+0

Вы должны отправить этот стандарт FM в качестве ответа. – BenV

ответ

1

это выглядит как есть стандартный модуль:

DATA: result TYPE dec11_4. 

CALL FUNCTION 'FIMA_NUMERICAL_VALUE_ROUND'  
    EXPORTING 
    i_rtype  = space 
    i_runit  = '0.05' 
    i_value  = '4.48' 
    IMPORTING 
    e_value_rnd = result. 

управления i_rtype ли оно округляется до (+), вниз (-) или коммерческий (пробел).

+0

привет flurin, есть функция от HR-модуля? Я только нахожу функции округления для SD и FIMA, как вы пишете. Или какая-то общая функция округления? Я не хочу использовать функцию из другого модуля (и не хочу его кодировать) :-) Спасибо – zyrex

+0

извините, не знаю модуль HR –

1
REPORT zwvtest. 

PARAMETERS: p_in TYPE dec11_4, 
      p_out TYPE dec11_4. 

DATA: l_fraction TYPE dec11_4, 
     l_upper  TYPE dec11_4, 
     l_delta_upper TYPE dec11_4, 
     l_lower  TYPE dec11_4, 
     l_delta_lower TYPE dec11_4. 

AT SELECTION-SCREEN. 
    l_fraction = FRAC(p_in * 10)/10. 
    l_upper = CEIL(l_fraction * 20)/20. 
    l_delta_upper = l_upper - l_fraction. 
    l_lower = FLOOR(l_fraction * 20)/20. 
    l_delta_lower = l_fraction - l_lower. 
    IF l_delta_lower < l_delta_upper. 
    p_out = p_in - l_delta_lower. 
    ELSE. 
    p_out = p_in + l_delta_upper. 
    ENDIF. 

... если вы хотите округляется вверх или вниз в зависимости от того, что самое близкое значение.

+0

спасибо, но это единственный способ? Я думал, что такая проблема будет распространенной проблемой в мире SAP и должна быть менее ручным способом ... Я нашел функциональный модуль ROUND, но это не сработало. –

+0

Если он есть, я его тоже не нашел. :-) – vwegert

+0

ОК, тогда я пойду с вашим решением. ;) –

 Смежные вопросы

  • Нет связанных вопросов^_^