【SAP Abap】三种方法进行SAP ODATA数据服务发布(DDIC、RFC、CDS)

本文详细介绍了在SAP中通过DDIC、RFC和CDS三种方式发布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档案

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值