三种方法进行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档案