工作笔记之 SELECT 语句在 SAP ABAP 中的用法总结(上)(2)

简介: 日常开发过程中,最常用的语句可能就是查询语句了。那么如果从数据库表中查询数据呢?

INTO 语句大有可能

INTO target 后面跟的语句也有几种可能:

  • INTO: target 为结构体,即选择字段值到对应结构体,参考 SELECT SINGLE 示例
  • INTO CORRESPONDING FIELD OF: 系统会帮助我们选择和匹配对应的数据元素到相应的字段,要求自定义的字段名和系统的数据元素名称一样
  • INTO [ obj1, obj2 ...]: 我们可以选择一个与给定变量有关的字段。例如,如果我们想选择 carridconnid 字段,我们可以选择这些字段直接给相关的变量,而不是一个结构体或内表
  • INTO TABLE: 这个功能与 INTO 相似,但是我们跟的是一个表而不是一个结构体,因此可以获取多条数据
  • INTO CORRESPONDING FIELDS OF TABLE: 这本条功能与 INTO CORRESPONDING FIELD OF 类似,区别也是在于可以获得不止一条数据,后面跟的是能够存储多条结果的内表
  • APPPENDING:当我们想追加新的记录,而不是用新的选择来替换它们时,可以使用 APPENDING ,使用 INTO 的结果就是替换

我们用代码来看一下 INTOINTO CORRESPONDING FIELDS OF

 SELECT carrid connid  FROM sflight INTO TABLE gt_out.

这条语句会将 mandt 字段跳过,然后将 carridconnid 替换成前两条的结果,导致想要的数据和字段并不匹配,客户端代码变成了 AA 数据,如图:


image.png


这个原因是 SELECT 只会尝试按照顺序将数据装入给定的字段。


为了解决这个问题,就需要用到 CORRESPONDING FILEDS OF,如下:

 SELECT carrid connid  FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_out.

此时,查询的结果就会匹配了,没有查询的字段的值则为空,如下图:


image.png


PS:然后,与 INTO 相比, corresponding fields 有一个问题:在执行 SELECT 和向对应字段添加数据时,字段的比较会花费更多的时间,尤其是在海量数据时比较明显。

APPENDING 语句

APPENDING 语句支持在不删除之前选择的行的情况下增加新的行。

 SELECT carrid connid  FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_out.
 SELECT mandt carrid connid fldate price FROM sflight APPENDING CORRESPONDING FIELDS OF TABLE gt_out.

INTO 部分我们只选择了查询 connidcarrid 字段,但是在接下来的 SELECT 中,我们使用 APPENDING 语句追加了同样的行,而且增加了 mandtfldateprice 字段。


image.png


总结

本文总结了 SAP ABAP 开发中最常用的查询语句: SELECT 语句,并从主体的三个部分进行语法拆解,SELECT result FROM source INTO target ,并分别介绍了它们的功能和可能会使用的语句。今后也会将这段时间以来的笔记总结并分享,希望对今后从事 SAP 开发的人有所帮助!


相关文章
|
3月前
|
存储 安全 数据库
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
|
3月前
|
安全 API 数据库
SAP ABAP OData 中 Function import 的概念介绍
SAP ABAP OData 中 Function import 的概念介绍
|
3月前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
|
3月前
|
SQL 应用服务中间件 数据库
关于 ABAP OPEN SQL SELECT 语句的一些额外说明
关于 ABAP OPEN SQL SELECT 语句的一些额外说明
|
3月前
|
SQL 监控 Oracle
SAP ABAP 系统错误 Return value of the database layer SQL dbsl rc 99
SAP ABAP 系统错误 Return value of the database layer SQL dbsl rc 99
|
3月前
|
存储 前端开发 Linux
在 SAP ABAP 系统里访问 FTP 服务器
在 SAP ABAP 系统里访问 FTP 服务器
|
3月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
3月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
|
3月前
|
Web App开发 数据采集 前端开发
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版
纯技术讨论:如何让 SAP UI5 应用无法被别人在浏览器里调试 - 这种做法不推荐试读版