背景
ABAP 7.57看起来是2022年更新的,对应的ABAP平台版本和S4HANA版本是2022,如果大家确定自己的系统版本,也可以通过SM51 release notes查看SAP Kernel参数值,与下图对应。
前言
ABAP 7.57更新了很多内容啊,对于CDS和ABAP restful programming model等主题康师傅不是很熟悉,所以重点讲以红框中关于函数&表达式&SQL的东西,也是我们ABAP开发中常用的对象。
更新内容
- 动态的组件Assign,用于替代旧有的assign compnent ‘XX’ of structure YY
*旧语法
assign component 'COMP1'of structure struct1 to FIELD-SYMBOL(<fs1>).
*新语法
ASSIGN struct1-(comp1) TO FIELD-SYMBOL(<fs1>).
ASSIGN NEW cls( )->attr-(comp2) TO FIELD-SYMBOL(<fs2>).
- UNASSIGN关键字,取消分配
ASSIGN ('field') TO FIELD-SYMBOL(<fs>) ELSE UNASSIGN.
- FINAL关键字,用于定义不可变的“变量”,该关键字支持inline declaration
FINAL(yesterday) = CONV d( sy-zonlo - 1 ).
"yesterday -= 1. <-- Syntax error
SELECT carrid, connid, seatsocc
FROM sflight
WHERE fldate = @yesterday
INTO TABLE @final(result).
LOOP AT result INTO FINAL(wa).
...
"wa-seatsocc = 0. <-- Syntax error
...
ENDLOOP.
"APPEND wa TO result. <-- Syntax error
- STEP 关键字, 用于定义内表处理步骤幅度(下一行的索引差,默认是1)和处理顺序(默认从头到尾),对于LOOP和FOR关键字,两个功能都支持,对于APPEND/DELETE/INSERT/VALUE/NEW, STEP只能用于定义步骤幅度。
LOOP AT itab ASSIGNING FIELD-SYMBOL(<fs>)
FROM 3 TO 1 STEP -1.
cl_demo_output=>write( <fs> ).
ENDLOOP.
APPEND LINES OF jtab FROM 1 TO 5 STEP 2 TO itab.
DELETE itab FROM 1 TO 8 STEP 2.
INSERT LINES OF itab FROM 1 TO 5 STEP 2.
DATA(itab) = VALUE t_itab( ( ) ( 20 ) ( 40 )
( LINES OF jtab FROM 6 STEP 2 ) ).
DATA(itab) = NEW t_itab( ( LINES OF jtab FROM 3 STEP 2 )
( LINES OF jtab FROM 2 STEP 3 ) ).
- ABAP关键字文档包含了ABAP Cheat Sheets,提供更友好的ABAP编程指南。