Data structures ABAP oDATA服务:如何在一次调用中提供嵌套数据?

Data structures ABAP oDATA服务:如何在一次调用中提供嵌套数据?,data-structures,odata,sapui5,abap,sap-gateway,Data Structures,Odata,Sapui5,Abap,Sap Gateway,我想编写一个定制的Fiori,使用oData服务从SAP系统中调用数据 使用SEGW事务,我已经设置了一个基于VBAK表返回平面结构的服务。利用这些知识,我可以为每种对象类型开发一个EntitySet,并在需要时调用它们。但是,我希望将数据库调用减少到一条语句。应立即提供所有相关数据 现在,我问自己:如何在一次调用中提供嵌套数据?比方说,对于VBAK中的每个条目,我希望有一个相关VBAP条目的嵌套数组 我的问题是: 如何在DDIC中定义所描述的数据模型? 如何在SEGW中设置所描述的数据模型?

我想编写一个定制的Fiori,使用oData服务从SAP系统中调用数据

使用SEGW事务,我已经设置了一个基于VBAK表返回平面结构的服务。利用这些知识,我可以为每种对象类型开发一个EntitySet,并在需要时调用它们。但是,我希望将数据库调用减少到一条语句。应立即提供所有相关数据

现在,我问自己:如何在一次调用中提供嵌套数据?比方说,对于VBAK中的每个条目,我希望有一个相关VBAP条目的嵌套数组

我的问题是:

如何在DDIC中定义所描述的数据模型? 如何在SEGW中设置所描述的数据模型? 如何在我的服务实现类中重新实现该方法? 如果我在ABAP中对结构进行编码,它可能会如下所示:

TYPES: BEGIN OF vbakvbap,
  vbap TYPE vbap OCCURS 0.
  INCLUDE TYPE vbak.
TYPES: END OF vbakvbap.

DATA: lt_vbakvbap TYPE TABLE OF vbakvbap.

我只对ABAP有一点了解,对SEGW的了解更少,所以每一个提示都是受欢迎的。

SAP NetWeaver网关充当Odata请求和底层数据之间的接口。从概念上讲,减少DB请求是有意义的,但是您需要优化使用网关项目创建的数据提供程序ClassDPC。虽然您可以提高ABAP和相关的DB性能,但DPC中的请求将受到总体Odata设计范例的约束

在SAP NW网关项目中,无法将复杂类型定义为实体集本身-请参阅 您应该查看是否存在一些可以满足您需要的SAP DDIC视图—以WB2_V_VBAK_VBAP2为例,并围绕这些视图对实体集进行逻辑建模,即平展您的数据需求

如何建立数据模型 请注意,SEGW中的数据模型是一个逻辑模型,它不必实际存在于数据库中,DPC类是ABAP,它负责填充实体集

如何重新实现该方法 从技术上讲,您可以重新定义DPC类的方法,这可以直接从SEGW项目访问,方法是展开runtime artifacts文件夹并扩展*\u DPC\u EXT类,右键单击并说go to Workbench。您需要具备一些合理的ABAP知识,并实现可能需要的任何Odata过滤

其他评论 为了最小化数据库访问,您可能还想考虑在DPC类中实现一些缓存,但这将取决于调用的频率。p>