ABAP 四舍五入函數


ABAP 四舍五入函數

ABAP 中處理數據的函數方法很多,其中涉及到四舍五入的有兩個(可能還有更多):ROUNDHR_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

 

查看示例:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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 : / '----------------------------------------------------' .

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM