三种方法进行SAP ODATA数据服务发布(DDIC、RFC、CDS)
- 1、通过DDIC发布ODATA服务
- 1.1、SE11创建数据表
- 1.2、配置ODATA服务(定义)
- 1.3、发布ODATA服务(激活)
- 1.4、测试ODATA服务
- 1.5、总结
- 2、通过RFC发布ODATA服务
- 2.1、SE37创建函数
- 2.2、配置ODATA服务(定义)
- 2.3、服务激活测试(同上)
- 2.4、总结
- 3、通过CDS发布ODATA服务
- 3.1、创建CDS View
- 3.2、发布ODATA服务
- 3.3、服务测试
- 3.4、总结
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'TABLEST_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,--指定keykey 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档案