关于 SAP ABAP OData 服务响应里的 d,results 和 __metadata 这几个字段的作用

简介: 关于 SAP ABAP OData 服务响应里的 d,results 和 __metadata 这几个字段的作用

我的知识星球里有朋友提问:

想把SAP的一个UI5 demo APP和后台的ODATA连起来。在测试过程中发现两者使用的json格式不一样,在ODATA返回的json格式中多了一些内容,具体可以看附件。对这个不是很明白,想知道这个怎么转换,或者怎么配置实现?

a3539bb56809ea8c1e097fd03ffcca1c_6f7db9271be853ab982c413819e6f7cd.png

从截图中我们能看到真实 OData 返回的数据里多了 __metadata 节点,里面包含了 id, uri 和 type 这几个字段。

在使用 ABAP 实现 SAP OData 服务时,返回的 JSON 数据中包含 __metadata 节点,这个节点的作用是提供实体的元数据信息,方便客户端应用程序使用和处理返回的数据。

__metadata 节点包含以下几个字段:

  • id:实体的唯一标识符,可以通过该标识符唯一定位实体。
  • uri:实体的 URI 地址,客户端应用程序可以通过该地址获取实体的详细信息。
  • type:实体的类型名称,表示该实体所属的类型,例如 Customer、Order 等。


通过 __metadata 节点提供的元数据信息,客户端应用程序可以了解到每个实体的具体信息,包括实体的唯一标识符、类型、URI 地址等,方便客户端应用程序对数据进行处理和使用。


另外,__metadata 节点还可以包含实体的 ETAG 值,该值用于在客户端应用程序和服务端之间进行数据同步时,判断数据是否发生变化。客户端应用程序可以使用该值与服务端进行比对,避免数据冲突和重复更新。


以上解答了截图中黄色的 __metadata 部分,回到这位朋友的问题,真实场景下的 OData 还有另一部分较之 mockdata 多出来的 JSON 数据节点,即下图绿色的 d 和 results 节点。


在使用 ABAP 实现 SAP OData 服务时,返回的 JSON 数据中包含字段 d 和字段 results,这两个字段分别用于表示 OData 服务返回的数据。

字段 d 表示数据的根节点,它是一个 JSON 对象,包含以下两个属性:

  • results:表示实体集合,它是一个 JSON 数组,包含 OData 服务返回的多个实体数据。
  • __count:表示实体集合的数量,它是一个整数,表示实体集合中包含的实体数量。


通过字段 d 和其包含的 results 属性,客户端应用程序可以获取到 OData 服务返回的实体集合数据,进而进行数据处理和使用。

需要注意的是,如果 OData 服务返回的是单个实体数据而不是实体集合数据,则字段 d 可以省略,直接返回该实体数据。

换言之,results 是基于 ABAP 实现的 SAP OData 服务返回响应的一个标准字段:


在笔者这篇教程里也有详细介绍。

因此如果想自己的 SAP UI5 应用在 mock 数据和真实的 OData 响应之间无缝切换而不需要修改代码,只需要在 mock 数据里也增添上 d 和 results 字段,让其层级结构和 ABAP OData 服务响应完全一致即可。


相关文章
|
24天前
|
SQL 数据库 索引
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
19 1
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
|
1月前
|
安全 开发者
什么是 SAP ABAP 调试器里的 TRFC Block Sending 设置
什么是 SAP ABAP 调试器里的 TRFC Block Sending 设置
22 0
|
21天前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
20 0
|
21天前
|
人工智能
Suno AI 生成 SAP ABAP 顾问之歌
Suno AI 生成 SAP ABAP 顾问之歌
15 1
|
21天前
|
存储 安全 数据库
SAP ABAP 中数据类型 xstring 的使用介绍
SAP ABAP 中数据类型 xstring 的使用介绍
20 0
|
24天前
|
数据库
SAP CRM产品主数据无法根据产品描述字段进行搜索的原因
SAP CRM产品主数据无法根据产品描述字段进行搜索的原因
17 5
|
24天前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
16 1
什么是 SAP ABAP 里的 Subscreen
|
24天前
|
数据库 存储 BI
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
12 0
SAP ABAP CDS View 源代码存储的数据库表揭秘和其他相关数据库表介绍试读版
|
24天前
|
数据库
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
10 0
迈入 SAP CDS View 世界的前置知识 - SAP ABAP 数据库视图介绍试读版
|
24天前
|
数据库 SQL 应用服务中间件
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析
22 0
SAP ABAP CDS View 和 HANA CDS View 相同点和不同点辨析