在CDS中,可以使用一些计算函数来进行计算,同时还能使用CASE来进行分类处理,ABAP CDS提供了以下这些内置函数来进行处理。
1.div(arg1,arg2)
取除法的模值。
- 仅输入整数值
- (INT1,INT2,INT4,INT8或DEC,CURR,QUAN,小数= 0)
- 结果类型:arg1类型
- 结果总是四舍五入为整数值
2.mod(arg1,arg2)
取ARG1除以ARG2的余数。
- 输入:仅整数类型(INT1,INT2,INT4,INT8)
- 结果类型:arg1类型
- 结果可能为负。
3.division(arg1,arg2,dec)
取arg1除以arg2的值,并保留DEC位的小数位数
- 输入:整数值,带固定小数的值
- (类型INT1,INT2,INT4,INTS和DEC,CURR,QUAN,带任意小数位数)
- 结果类型:带小数点后十进制的DEC,长度取决于arg1的类型
- 结果总是四舍五入到小数
函数div()和division()之间的主要区别如下:输入:
Div()仅允许输入整数值。Division()仅排除浮点数(二进制或十进制)。
结果:
Div()始终返回整数值作为结果。Division()可让您指定结果的精度。
注意:
关于符号,函数div()和mod()与ABAP运算符DIV和MOD的行为不同。在SQL函数div()中,对参数的数量进行除法然后分配符号(如果参数具有相同的符号,如果符号不同则为负)。因此,MOD的结果可能为负。另一方面,ABAP运算符MOD仅产生正面结果。
4.abs(arg)
- 返回arg的绝对值,
- 即总是四舍五入
5.floor(arg)
- 舍入到下一个较低的整数
- 即,如果arg> 0,则趋于零;如果arg <0,则远离零
例:
楼层(1.5)= 1
地板(-1.5)=-2
6.ceil(arg)
- 舍入到下一个更高的整数
- 即,如果arg> 0,则远离零;如果arg <0,则远离零
例:
ceil(1.5)= 2
ceil(-1.5)=-1
6.1.1.round(arg,pos)
- pos> 0:将arg舍入到pos小数位
- pos <0:将arg舍入到位置
例:
回合(3.154,2)= 3.15
回合(273.15,-1)= 270
7.CASE 选择判断处理
8.例子
1 2 3 4 5 |
div(10,3) as ZDIV, mod(10,3) as Zmod, division(10,3,3) as zdivision, abs(1.5) as zabs1, abs(-1.5) as zabs2 |