SAP ABAP 四舍五入函数

ABAP 中处理数据的函数方法很多,其中涉及到四舍五入的有两个(可能还有更多):ROUND 和 HR_NZ_ROUNDING_DECIMALS

前者位于Basis功能开发包 SZME 里面,在标准中用于计量单位的计算;

后者主要用于HR模块,位于 PB43 开发包,处理HR模块中的主数据。

 

HR_NZ_ROUNDING_DECIMALS 函数可以直接输入数值,然后在 CONV_DEC 参数中输入需要保留的小数点即可输出。

ROUND 函数则有点灵活,可以通过 SIGN 参数( ‘+’,’-’ )控制向上取舍,或者向下取舍。

例如:

输入 88.54350 ,如果SIGN = ‘+’ ,保留2位小数,会得到: 88.55000;如果 SIGN = ‘-’,会得到:88.54000

输入 -88.54350,如果SIGN = ‘+’ ,保留2位小数,会得到: -88.54000;如果 SIGN = ‘-’,会得到:-88.55000

DATA : dat  TYPE p DECIMALS 9 VALUE '12.5445' , 
       dat1 TYPE p DECIMALS 9 . 
  
DATA   dat2 TYPE p DECIMALS 9 VALUE '12.540'.
  
* 方法一 
CALL FUNCTION 'HR_NZ_ROUNDING_DECIMALS'
  EXPORTING
    value_in                 = dat 
    conv_dec                 = 2      " 设置保留几位小数 
  IMPORTING
    value_out                = dat1 
  EXCEPTIONS
    no_rounding_required     = 1 
    decimals_greater_than_10 = 2 
    rounding_error           = 3 
    OTHERS                   = 4. 
  
WRITE: /'方法一(保留2位小数):'. 
WRITE: / dat, ' => ' ,dat1. 
WRITE: / '----------------------------------------------------'.
  
* 方法二 
CALL FUNCTION 'ROUND'
  EXPORTING
    decimals      = 0       " 保留多少位小数 
    input         = dat2 
    sign          = '+'     " + 向上取舍 - 向下取舍 (负数也一样) 
  IMPORTING
    output        = dat1    " 输出返回结果 
  EXCEPTIONS
    input_invalid = 1 
    overflow      = 2 
    type_invalid  = 3 
    OTHERS        = 4. 
  
WRITE: /'方法二(保留0位小数):'. 
WRITE: / dat2, ' => ' ,dat1. 
WRITE: / '----------------------------------------------------'.

 

你可能感兴趣的:(ABAP,SAP,ALV)