SAP ABAP7.40新语法简介第二篇
2017-02-08 10:41
489 查看
从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 id
FROM scarr
WHERE carrid = @id
INTO @DATA(result).
cl_demo_output=>display( result ).
看到语法不同了吗,如果没看到,请回到你现有的系统中对比
上面语法是INTO DATA里面的写法,下面说一下INTO TABLE里的写法
举例说明:
SELECT carrname AS name, carrid AS id
FROM scarr
INTO 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_l
WHEN col1 >= 50 AND col2 >= 50 THEN @both_gt
ELSE @others
END AS group
FROM demo_expressions
ORDER BY group
INTO TABLE @DATA(results).
在SELECT列表中,可以使用语法data_source〜*从7.40,SP08开始指定数据源的所有列。 这在使用连接时很方便。
举例说明:
SELECT scarr~carrname, spfli~*, scarr~url
FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
INTO 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概念。
下面举例说明比较清晰:
DATA id TYPE scarr-carrid.
cl_demo_input=>request( CHANGING field = id ).
SELECT SINGLE carrname AS name, carrid AS id
FROM scarr
WHERE carrid = @id
INTO @DATA(result).
cl_demo_output=>display( result ).
看到语法不同了吗,如果没看到,请回到你现有的系统中对比
上面语法是INTO DATA里面的写法,下面说一下INTO TABLE里的写法
举例说明:
SELECT carrname AS name, carrid AS id
FROM scarr
INTO 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_l
WHEN col1 >= 50 AND col2 >= 50 THEN @both_gt
ELSE @others
END AS group
FROM demo_expressions
ORDER BY group
INTO TABLE @DATA(results).
在SELECT列表中,可以使用语法data_source〜*从7.40,SP08开始指定数据源的所有列。 这在使用连接时很方便。
举例说明:
SELECT scarr~carrname, spfli~*, scarr~url
FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
INTO 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 --- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
- sap --- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
- sap中用abap语法将excel数据导入到内表
- SAP ABAP内表OCCURS,WORK AREA等 语法对比!
- sap --- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
- SAP ABAP SEARCH语法
- SAP ABAP入门学习-基本语法
- SAP-ABAP系列 第一篇SAP简介
- SAP-ABAP系列 第二篇SAP ABAP开发基础
- SAP Abap Syntax Collection (语法集合)
- ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介 - [SAP]
- 用新语法写更简洁的ABAP代码
- Sending email in SAP ABAP using Cl_BCS class
- abap学习笔记-SAP字段与表的对应关系
- ABAP写数据到SAP服务器文件并读取
- SAP ABAP 点滴记录
- SAP ABAP编程 比较所有的字段类型
- ABAP 7.4 新语法-内嵌生命和内表操作
- abap 中的语法 div / mod 的用法区别