ODATA:GetEntity和GetEntitySet方法基本实现

一、为后续demo搭建简单的基础信息:一个Odata服务ZDEMO_PO,三个数据库表及模型ZPOHEADER、ZPOITEM、ZVENDOR,相应的Association,后续文章基本使用ZDEMO_PO项目

创建项目

ODATA:GetEntity和GetEntitySet方法基本实现

创建相应的entityODATA:GetEntity和GetEntitySet方法基本实现

创建entity的属性,我这里手工创建,实际可以通过导入数据库表的方式来创建

ODATA:GetEntity和GetEntitySet方法基本实现

同理创建POTIEM和VENDOR 

ODATA:GetEntity和GetEntitySet方法基本实现

ODATA:GetEntity和GetEntitySet方法基本实现

创建抬头和明细的association

 ODATA:GetEntity和GetEntitySet方法基本实现

 ODATA:GetEntity和GetEntitySet方法基本实现

 ODATA:GetEntity和GetEntitySet方法基本实现

ODATA:GetEntity和GetEntitySet方法基本实现 生产运行对象:

ODATA:GetEntity和GetEntitySet方法基本实现

参考上篇文章ODATA:基于搜索帮助创建一个ODATA服务生成相应的服务

ODATA:GetEntity和GetEntitySet方法基本实现

 自此还不能获取相关数据,需要实现相关方法,否则报如下错误

ODATA:GetEntity和GetEntitySet方法基本实现

二、实现POHEADER的GetEntitySet方法

 ODATA:GetEntity和GetEntitySet方法基本实现

 会发现会跳转到类ZCL_ZDEMO_PO_DPC_EXT

ODATA:GetEntity和GetEntitySet方法基本实现

 编写代码:

ODATA:GetEntity和GetEntitySet方法基本实现

重新执行查看结果

 ODATA:GetEntity和GetEntitySet方法基本实现

 发现lifnr没有取过来debug发现实现类中返回的结果内表不是lifnr,所以更改下abap field name即可(注意重新generate代码会被还原覆盖)

ODATA:GetEntity和GetEntitySet方法基本实现

修改后重新编写代码:

ODATA:GetEntity和GetEntitySet方法基本实现

三、实现GetEntity方法

 查询指定key值的单条记录可以用uri:/sap/opu/odata/sap/ZDEMO_PO_SRV/ZPOHEADERSet('4500000001')来查询,我们发现提示状态501,未实现。要实现单条记录需要实现GetEntity方法。

ODATA:GetEntity和GetEntitySet方法基本实现

 实现GetEntity方法

ODATA:GetEntity和GetEntitySet方法基本实现

重新测试,成功取到相应的记录

ODATA:GetEntity和GetEntitySet方法基本实现