背景
ABAP 7.58对应的ABAP平台版本和S4HANA版本是2023,如果大家确定自己的系统版本,也可以通过SM51 release notes查看SAP Kernel参数值,与下图对应。
前言
ABAP 7.58更新了很多内容啊,对于CDS和ABAP restful programming model等主题康师傅不是很熟悉,所以重点讲以红框中关于函数&表达式&SQL的东西,也是我们ABAP开发中常用的对象。
更新内容
- 新增了很多系统类和新方法
类名 | 变化 | 功能 |
---|---|---|
CL_ABAP_BIGINT | 新增类 | 处理任何大小的integer |
CL_ABAP_RATIONAL | 新增类 | 处理有理数无精度损失 |
CL_ABAP_DIFF | 新增类 | 比较两个内表并返回差异 |
CL_ABAP_TSTMP | 新增方法, | 优化长时间戳的处理 |
CL_ABAP_BEHV_AUX | 新增方法 | 获取当前RAP事务的阶段 |
- RETURN关键字可以用来直接终止method执行,返回returning参数值
*旧语法
r = expr.
RETURN.
*新语法
RETURN expr.
METHOD main.
TRY.
RETURN VALUE #( FOR i = 1 UNTIL i > limit
( num = i square = ipow( base = i exp = 2 ) ) ).
CATCH cx_sy_arithmetic_error.
RETURN VALUE #( ).
ENDTRY.
ENDMETHOD.
- corresponding 关键字增加DEFAULT设置
struc2 = CORRESPONDING #(
struc1 MAPPING id2 = id1
b = DEFAULT `ha` && `llo`
c = DEFAULT 1 + 5
d = DEFAULT VALUE #( itab1[ 1 ]-d DEFAULT `hi` )
z = DEFAULT cl_abap_random_int=>create(
seed = cl_abap_random=>seed( )
min = 1
max = 100 )->get_next( ) ).
struc2 = CORRESPONDING #(
struc1 MAPPING id2 = id1
b = b DEFAULT `ha` && `llo`
c = c DEFAULT 1 + 5
d = d DEFAULT VALUE #( itab1[ 1 ]-d DEFAULT `hi` )
z = e DEFAULT cl_abap_random_int=>create(
seed = cl_abap_random=>seed( )
min = 1
max = 100 )->get_next( ) ).
- ABAP SQL表达式可以在操作符的右侧定义
- 新的SQL join基数设置 {MANY | ONE | {EXACT ONE}} TO {MANY | ONE | {EXACT ONE}},这个我自己很少用呀,需要研究一下
- 支持一次select多个内表,但是不能有DB table的参与