正如本教程的开篇介绍文章SAP OData 开发教程 - 从入门到提高(包含 SEGW, RAP 和 CDP)所提到的,SAP OData 服务开发,从实现技术上来说,可以分为三大类。因此本教程也分为三大部分,分别进行介绍。本文是本教程的文章目录。
Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。Jerry 是 SAP 社区导师,SAP 中国技术大使。在长达 15 年的 SAP 标准产品开发生涯里,Jerry 曾经先后参与 SAP Business ByDesign, SAP CRM, SAP Cloud for Customer, SAP S/4HANA, SAP Commerce Cloud(电商云)等标准产品的研发工作。
Jerry 对 SAP OData 服务的开发,测试,发布,部署,测试,及基于各种不同 SAP 技术实现的 OData 服务的幕后技术实现细节和使用场合,均有着深入的研究。
1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目
2. 在 SAP ABAP 系统对事物码 SEGW 创建的 OData 服务进行配置并测试
3. SAP ABAP OData 服务诊断工具 /IWFND/ERROR_LOG 的使用方法
4. SAP ABAP OData 服务 Data Provider Class 的 GET_ENTITYSET 方法实现指南
5. SAP ABAP OData 服务如何支持 $filter (过滤)操作
6. 使用 Postman 工具高效管理和测试 SAP ABAP OData 服务
7. SAP ABAP OData 服务如何支持 $orderby (排序)操作
8. SAP ABAP OData 服务如何支持创建(Create)操作
9. SAP ABAP OData 服务如何支持删除(Delete)操作
10. SAP ABAP OData 服务如何支持修改(Update)操作
11. 使用 HTTP PUT, PATCH 以及 MERGE 请求消费 SAP ABAP OData 服务修改操作的实现及其区别
12. SAP ABAP OData 服务如何支持 $select 有选择性地仅读取部分模型字段值
更多文章正在写作中,敬请期待
SAP ABAP 开发人员,想必对 ABAP OPEN SQL 语句的 SELECT X Y Z FROM CORRESPONDING FIELDS OF TABLE 这个用法不陌生。
以我们本教程一直在使用的数据库表 ZBOOKS
为例,其内容如下:
我们如果用 ABAP OPEN SQL 语句的 SELECT *
, 读取每行数据库表记录的全部字段到 ABAP 内表里,则内容如下:
如果我们只读取 BOOK_GUID, BOOK_NAME 和 AUTHOR_NAME 三个字段,OPEN SQL 语句可以这样写:
SELECT BOOK_GUID BOOK_NAME AUTHOR_NAME INTO CORRESPONDING FIELDS OF TABLE lt_book FROM ZBOOKS
其中待读取的字段名称,定义在 SELECT 操作后,字段之间通过空格作为分隔符。
最后读取的结果:
其实,OData 读取操作也支持类似 ABAP OPEN SQL 的 SELECT 选项。
下面是正常读取一本图书所有字段的 OData 请求 url:
https://{{host}}:{{port}}/sap/opu/odata/sap/ZBOOK_MANAGE_SRV/BookCollection(guid'42010aee-2a94-1edd-8494-c9d14e91555e')
下面是读取一本图书的 author_name
和 book_name
这两个字段的 OData 请求 url:
https://{{host}}:{{port}}/sap/opu/odata/sap/ZBOOK_MANAGE_SRV/BookCollection(guid'42010aee-2a94-1edd-8494-c9d14e91555e')?$select=book_name,author_name
我们能看到,通过 $select=
后面指定的 book_name
和 author_name
两个字段,中间用 ,
分隔。
最后 OData 请求返回的结果,可以看到只有图书名称和作者名称两个字段被返回了。
下面介绍 $select
在服务器端的实现步骤。