当前位置: 代码迷 >> 综合 >> SAP ABAP7.40新语法简介第二篇
  详细解决方案

SAP ABAP7.40新语法简介第二篇

热度:94   发布时间:2023-12-21 22:54:17.0

正文部分

从7.40开始,SP08可以使用在INTO之后用7.40,SP02引入的声明运算符DATA(...)来放置内联声明。

下面举例说明比较清晰:

?
DATA id TYPE scarr-carrid.
cl_demo_input=>request( CHANGING field = id ).SELECT SINGLE carrname AS name, carrid AS idFROM   scarrWHERE  carrid = @idINTO @DATA(result).cl_demo_output=>display( result ).?

看到语法不同了吗,如果没看到,请回到你现有的系统中对比

 

上面语法是INTO DATA里面的写法,下面说一下INTO TABLE里的写法

举例说明:

?
SELECT carrname AS name, carrid AS idFROM   scarrINTO TABLE @DATA(result).cl_demo_output=>display( result ).?

看到语法不同了吗

 

根据SELECT列表中定义的结果集,声明基本数据对象,结构或内部表。 有关类型构造的详细信息,请参阅官方文档。

将7.40,SP05引入SELECT列表中的SQL表达式使用7.40,SP08进行了增强,如下所示:

1、可以在GROUP BY之后使用SQL表达式

2、可以与聚合一起使用SQL表达式

3、可以使用SQL表达式作为聚合的参数

4、可以使用除简单CASE之外的已搜索CASE表达式

对上述的描述,下面举例说明更清楚一点

?
SELECT num1, num2,CASE WHEN col1 <  50 AND col2 <  50 THEN @both_lWHEN col1 >= 50 AND col2 >= 50 THEN @both_gtELSE @othersEND AS groupFROM demo_expressionsORDER BY groupINTO TABLE @DATA(results).?

在SELECT列表中,可以使用语法data_source?*从7.40,SP08开始指定数据源的所有列。 这在使用连接时很方便。

举例说明:

?
SELECT scarr~carrname, spfli~*, scarr~urlFROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carridINTO TABLE @DATA(result).?

1、从7.40,SP08开始,INTO子句可以和应该(haha)在SELECT语句的其他子句之后使用。 那些不被视为子句的添加UP TO n ROWS,BYPASSING BUFFER和CONNECTION必须放在INTO子句之后。

 

2、此更改背后的原理是,INTO子句不是标准SQL的一部分,而是定义SQL和ABAP之间的数据接口。 为了实现Open SQL的SQL部分中的未来增强, UNION,必须从SQL部分中删除INTO子句。

一些限制已删除。 例如。 从7.40开始,SP08可以在SELECT列表中的算术表达式的运算符前面放一个减号,可以对聚合执行一个简单的CASE,在ON之后可以在连接条件中使用LIKE和IN(...) 您可以动态地在WHERE之后指定子查询。

但是,如果您使用此处列出的任何新功能(如SP05已有的),则将以严格模式执行Open SQL的语法检查,其中应用更严格的语法规则。 例如。 您必须在主机变量前使用逗号分隔的列表和转义符号@。 通过这种方式,至少在Open SQL ABAP中以向下兼容的方式实施一个依赖于发布的deprecation概念。

点击进入:SAP ABAP7.40新语法简介第二篇

我在公众号里写了很多SAP的文章

有兴趣可以关注一下