ODATA概念
OData (开放数据协议) 是一种基于RESTful架构的Web协议,用于通过HTTP轻松地查询和更新数据。在SAP领域,它基于SAP NetWeaver Gateway技术实现,是连接SAP业务数据与外部应用的标准桥梁。
-
标准与生态系统:遵从OData国际标准,被广泛的主流开发工具和平台支持。
-
开发集成 :基于HTTP 、JSON/XML等现代Web技术,原生支持RESTful风格,轻量化、无状态,便于前端(如SAPUI5)和云原生应用集成。
-
灵活查询 :提供强大的URI查询语言 ,支持过滤(
$filter)、排序($orderby)、分页($top/$skip)等操作,可按需精准获取数据子集,减少网络负载。 -
同步处理 :查询和更新操作均为实时同步处理,能立即获取处理结果,适合对实时性要求高的交互场景。
SAP目前同时支持OData V2和V4两个主要版本。
OData V2 与 V4 的简要对比
| 对比维度 | OData V2 | OData V4 |
|---|---|---|
| 发布时间 | 2010 年 | 2014 年 |
| 设计目标 | 解决基础数据交换需求 | 支持现代 API 设计(RESTful、JSON 友好) |
| 默认数据格式 | JSON / XML | JSON(完全重构,减少约 60% 传输负载) |
| 聚合查询 | 需后端自定义 | 原生支持($apply=aggregate) |
| 响应结构 | { "d": { "results": [...] } } |
{ "@odata.context": "...", "value": [...] } |
| 批处理 | 支持但格式复杂 | 简化格式(JSON Batch) |
| SAP 支持 | 传统 ABAP 系统(ECC、S/4HANA 基础) | S/4HANA 1909+(Fiori Elements 推荐) |
| 查询语言 | 基础筛选 | 增强型,支持分析查询和多级过滤 |
| 导航属性 | 简单导航 | 深度嵌套导航 |
本文主要讲V2版本
OData V2 发布于 2010 年,设计目标是解决基础的数据交换需求。作为 OData 协议的第二个主要版本,它在 SAP 系统中得到广泛应用,支持于传统 ABAP 系统(包括 SAP ECC 和 S/4HANA 基础版本),是 SAP 早期 Fiori 应用的主要数据交互方式;
OData V2 服务架构与通信协议 概括了三个层次:消费层 、网关层 、数据层。它们的协作关系可以如下图理解:

各层讲解
| 层级 | 典型组件 | 做什么 | 不做什么 |
|---|---|---|---|
| 消费层 | UI5应用、Fiori、Postman、Excel Power Query | 构造URL、添加Header、解析响应、展示数据 | 不关心数据从哪个表来,不处理RFC调用 |
| 网关层 | ICF Handler、OData解析器、服务调度器 | 将HTTP请求转为ABAP方法调用,再将结果序列化 | 不实现具体的数据查询逻辑(那是数据层的活) |
| 数据层 | DPC_EXT 类、BAPI、RFC、数据库表、CDS View |
真正执行SELECT、调用BAPI、做业务校验 | 不关心HTTP细节,只返回ABAP结构或内表 |
发布ODATA Service
使用事务码 SEGW (Gateway Service Builder) 在 SAP GUI 中创建 OData 服务
SAP GUI输入事务码SEGW

创建步骤

创建成功如下图所示

各组件详细解析
Data Model (数据模型层):定义服务暴露的数据结构、关系和可调用的函数。
|------------------|--------------------------|
| Entity Types | 描述业务对象的结构,包含字段及类型。 |
| Entity Sets | 实体类型的集合,是API中可访问的资源。 |
| Associations | 定义实体间的导航关系(1:N, N:1) |
Service Implementation (服务实现层): 将模型中的操作(CRUD+Q)与具体的数据源 (RFC、BAPI、表、CDS)或自定义代码绑定。
Runtime Artifacts (运行时工件 -- 生成的 ABAP 对象): 当点击 "Generate Runtime Objects" 时,系统自动生成的全部 ABAP 对象
Service Maintenance (服务维护入口): 双击该节点直接进入事务码 /IWFND/MAINT_SERVICE
创建实体:

next弹出一下界面选择组件

next弹出界面选择主键

Finsh:完成实体的创建

激活

激活成功如下图所示

注册ODATA Service
