前言
7.54对应的版本系统版本是1909,Kernel版本为7.77,详情参考下图。本文仅列出本人熟悉的ABAP常规开发内容(如SQL),对于CDS和AMDP不太懂,完全版参考关键字文档。
更新内容
- 新的数据字典类型
DECFLOAT16,DECFLOAT34,DATN,TIMN,UTCLONG,GEOM_EWKB
参考我做的测试 - 检查表支持过时数据标记,使用固定列名标记条目状态,详情参考示例程序DEMO_DYNPRO_DEPRECATION
- 四则运算操作符
+=,-+,*=,/=,
字符串操作&=
ADD, SUBTRACT, MULTIPLY, DIVIDE成为过时语句 - SQL into语法增强
NEW关键字隐式申明引用变量
SELECT *
FROM (dbtab)
INTO NEW @DATA(row)
UP TO @rows ROWS.
ASSIGN row->* TO FIELD-SYMBOL(<fs>).
INDICATORS用于标识字段,目前可以判断是否为初始值
DELETE FROM demo_expressions.
INSERT demo_expressions FROM @( VALUE #( ID = 'X' num1 = 1 ) ).
SELECT SINGLE
FROM demo_expressions
FIELDS
num1 AS X,
CASE WHEN num1 = 0 THEN 0 ELSE 2 END AS y,
CASE WHEN num1 = 0 THEN 0 END AS Z
INTO @DATA(wa) INDICATORS NULL STRUCTURE null_ind.
最终结构
- 新的CTE association定义支持关键字JOIN TO ONE|MANY,参考示例程序DEMO_WITH_ASSOCIATIONS_JOIN
- 新的聚合函数STRING_AGG,可以将一列的内容按照顺序拼接成字符串,参考示例程序DEMO_STRING_AGG。
- 聚合函数count可以省略distinct关键字单独使用,统计所有非null行的条目
- SQL查询支持window function, 实现按多个字段聚合的效果,如下图的SQL通过关键字OVER和PARTITION的配合,实现按字段CHAR1,CHAR2聚合。
SELECT char1 && '_' && char2 AS group,
num1,
COUNT(*) OVER( PARTITION BY char1, char2 ) AS cnt,
ROW_NUMBER( ) OVER( PARTITION BY char1, char2 ) AS rnum,
MIN( num1 ) OVER( PARTITION BY char1, char2 ) AS min,
MAX( num1 ) OVER( PARTITION BY char1, char2 ) AS max,
SUM( num1 ) OVER( PARTITION BY char1, char2 ) AS sum,
division( 100 * num1,
SUM( num1 ) OVER( PARTITION BY char1, char2 ),
2 ) AS perc
FROM demo_expressions
ORDER BY group
INTO TABLE @DATA(windowed).
- SQL表达式开始支持聚合函数