SAP Abap三种方法进行SAP ODATA数据服务发布(DDICRFCCDS)
Posted X档案库
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAP Abap三种方法进行SAP ODATA数据服务发布(DDICRFCCDS)相关的知识,希望对你有一定的参考价值。
三种方法进行SAP ODATA数据服务发布(DDIC、RFC、CDS)
1、通过DDIC发布ODATA服务
1.1、SE11创建数据表
首先,要创建ODATA要发布的数据结构,可以是透明表,也可以是结构体。
这里我以一个自建表 ZTIFLIST 为例,发布其中的几个字段。
1.2、配置ODATA服务(定义)
(1)执行SEGW,新建 ODATA 项目
(2)创建 数据模型,选择导入 → DDIC结构
定义 Entity 名称,选择对应的 DDIC 表
勾选需要让外部访问的字段
勾选关键字
模型创建完成,如下图
(3)生成ODATA服务
生成如下 Runtime Artifacts 对象
说明:
DPC:data provider class 数据CRUD类,提供增上改查方法
MPC:modle provider class 数据提供类,提供查询方法
(4)服务实施:创建方法
其中:
GetEntity(Read)表示读取单条,需要配合关键字查询;
GetEntitySet(Query)表示读取集合。
选中对应要提供的方法,右键 → 重定义
编写数据查询代码,保存,激活,服务配置完成。
1.3、发布ODATA服务(激活)
(1)执行事务码:/n/IWFND/MAINT_SERVICE
添加成功如下:
1.4、测试ODATA服务
点击 SAP Gateway 客户端,进行服务测试 → 点击执行
获得响应,服务连接成功
修改URL参数,可以获取 json 数据集合
在返回结果中,有完整的ODATA服务访问地址,复制出来,可以在浏览器或第三方工具中访问,如Posman,需要输入SAP登录用户名和密码
查询单条记录时报错,可以通过事务码 /n/IWFND/ERROR_LOG 查看报错日志
因为我们还未实施单条记录查询的方法。
1.5、总结
此种方法,适用于快速发布基于某个表的数据服务。
2、通过RFC发布ODATA服务
2.1、SE37创建函数
基于上表 ZTIFLIST,创建一个RFC函数,来进行 ODATA服务发布演示。
2.2、配置ODATA服务(定义)
配置过程基本同上,这里仅截取部分不同的界面
创建完成后,生成运行对象。
服务实施:重定义方法
METHOD YZTIFLISTSET_GET_ENTITYSET.
DATA: LT_LIST TYPE TABLE OF ZTIFLIST.
DATA: LS_ENTITY LIKE LINE OF ET_ENTITYSET.
TRY.
CALL FUNCTION 'YFM_ODATA'
TABLES
T_LIST = LT_LIST.
MOVE-CORRESPONDING LT_LIST TO ET_ENTITYSET.
CATCH /IWBEP/CX_MGW_BUSI_EXCEPTION.
CATCH /IWBEP/CX_MGW_TECH_EXCEPTION.
ENDTRY.
ENDMETHOD.
2.3、服务激活测试(同上)
2.4、总结
此种方法,适用于发布基于某个已封装逻辑的函数服务。
3、通过CDS发布ODATA服务
3.1、创建CDS View
进入Eclipse ADT开发环境,新建CDS View
编写CDS,增加注解 @OData.publish: true
保存,激活CDS,忽略警告提示服务尚未激活
@AbapCatalog.sqlViewName: 'ZV_CDS_ODATA'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS View 发布ODATA服务'
@OData.publish: true --此注解表示发布odata服务
define view ZCDS_ODATA as select from ztiflist
key ifno, --指定key
key ifrow,
ifname,
project,
iftype,
devname
3.2、发布ODATA服务
执行事务码:/n/IWFND/MAINT_SERVICE,添加服务
添加成功,回到 Eclipse,刷新,查看提示,OData服务已创建。
3.3、服务测试
增加 EntitySet(默认实体为ZCDS_ODATA)和URI Option(format=json),可以获得JSON 格式结果。
3.4、总结
此种方法,可以直接基于CDS发布ODATA服务,省去了配置Sap Getway以及方法实现的步骤,更加快速便捷。
原创文章,转载请注明来源-X档案
SAP ABAP OData 服务如何支持创建(Create)操作试读版
正如本教程的开篇介绍文章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 服务的幕后技术实现细节和使用场合,均有着深入的研究。
基于 SEGW - Gateway Service Builder 的开发教程
- 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)操作
- 更多文章正在写作中,敬请期待
使用 Restful ABAP Programming 编程模型(简称 RAP) 开发 OData 服务
- 正在写作中,敬请期待
使用 SAP Cloud Application Programming 编程模型开发 OData 服务
- 正在写作中,敬请期待
序言
本文介绍 SAP ABAP OData 服务,如何实现创建(Create)操作。即通过 HTTP Post 的请求 Body,指定待创建的 OData 视图,部署了 OData Service 的服务器接收到这个请求后,成功处理完毕,返回 HTTP 201 Created 的状态码给 OData 消费者,表明 OData Entity 创建成功。
我们打开本教程之前的文章6. 使用 Postman 工具高效管理和测试 SAP ABAP OData 服务 提到的 Postman,创建一个新的 OData 创建
的 Collection,然后在这个 Collection 里创建一个新的 HTTP 请求,用来维护 OData 创建操作:
(1) 使用 OData 服务创建新图书的 url:https://host:port/sap/opu/odata/sap/ZBOOK_MANAGE_SRV/BookCollection
,
HTTP 请求类型选择为 POST. 这里的双重大括号
包裹的语法是使用 Postman Environment 里定义的变量,在本步骤之前的文章 6. 使用 Postman 工具高效管理和测试 SAP ABAP OData 服务 里有介绍。
(2) ~ (3) 我们需要把待创建的图书明细,通过 JSON 格式维护到 HTTP 请求的正文(body) 里。因此,点击 body 标签:
再次执行这个 HTTP POST 方法,就会收到 HTTP 201 Created 的响应。
并且从返回结果里,能看到成功创建的图书数据。
数据库表 ZBOOKS
里也能看到通过 OData 服务调用,成功写入的数据了。
这个操作的具体实现步骤,参考这篇文章。
以上是关于SAP Abap三种方法进行SAP ODATA数据服务发布(DDICRFCCDS)的主要内容,如果未能解决你的问题,请参考以下文章
SAP ABAP OData 服务如何支持 $orderby (排序)操作试读版
SAP ABAP OData 服务如何支持 $filter (过滤)操作试读版
如何修改 SAP ABAP OData 模型,使其支持 $expand 操作试读版
SAP ABAP OData 服务里 EntityType 和 EntitySet 的区别试读版