CDS中最基本的数据数据是字符与数值类型,
1.字符
- 用单引号引起来的一系列字符
- 如果仅包含数字,则为NUMC
- 否则为CHAR
2.数字文字
- 无引号的数字系列
- 可以包含小数点,但不能在第一位数字之前
- 如果包含小数点,则为FLTP
- 否则,请键入INT1,INT2或INT4,具体取决于大小
3.文字的前缀
在某些操作数位置,文字可以具有域前缀。域前缀由DOMAIN类型的存储库对象的名称组成,以字符“#”或“:”引入,并用句点(..)分隔。
对于大多数文本文字,引号带有域前缀时可以省略。
如果文字带域前缀,则语法检查将发出警告,以防文字与域的固定值不匹配或不在域指定的值范围内
1 2 3 4 5 6 7 8 9 10 11 12 |
//character literals 'Hello' as col_char, '231432' as col_numc, //numeric Literals 32768 as col_int4, 4711 as col_int2, 255 as col_int1, 1.5 as col_fltp, // Literals with Domain Prefix #belnr.'Y' as col_eco1, #S_CLASS.Y as col_eco2, :S_CLASS.Y as col_eco3 |
4.算术表达式
- 在ABAP CDS中,算术表达式可以用作字段列表的元素。
- ABAP CDS支持四个运算符,方括号和三个不同的算术(整数,十进制和浮点数)。中间结果的值范围和精度在很大程度上取决于所使用的算法。
注意:
不带小数的数字文字具有整数类型。带小数的数字文字的类型为FLTP!
5.使用CAST进行类型转换
使用CAST表达式进行类型转换
- 与ABAP不同,ABAP CDS不知道隐式类型转换。相反,CDS检查非常严格的类型兼容性规则。
- CDS的CAST表达式使您可以实现显式类型转换。
- 在NW 740中,只能将目标类型指定为技术类型,即指定为预定义的字典类型,例如INT4,CHAR或DEC。
- 从NW 7.50开始,来自Dictionary的任何数据元素都可以成为使用CAST进行类型转换的目标类型。
- 类型转换的操作数不能仅是文字源或数据源(例如数据库表)的字段。各种其他表达式都是可能的,例如算术表达式,CASE区分,预定义函数等。
注意:
关于源类型和目标类型的组合存在限制。完全不支持某些组合。其他人只能有局限性。例如,当前不可能使用FLTP类型的操作数作为CAST表达式的源。可以在ABAP语言文档中找到详细的矩阵。