在瑞士,我们的货币是法郎,最小的硬币是 5 生丁,也就是 0.05 法郎。在 SAP R/3 系统中使用编程语言 ABAP 以我们的钱对应付金额进行四舍五入的最佳方法是什么?
例子:
" 4.48 应该四舍五入到 4.50 " 2746.24 应该四舍五入到 2746.25
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.
...如果您希望根据最接近的值向上或向下取整。
看起来有一个标准模块:
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 控制它是向上取整 (+)、向下 (-) 还是商业(空格)。