云网站服务器_国内数据云存储_移动云数据库服务器主机-搜集站云

谷歌云_云服务器试用_代金券

小七 141 0

在本博客中,我们将了解如何在一个oData服务调用中获得多个表输出。此博客是父博客的商业案例示例:SAP(Fiori)OData服务示例

通过Fiori应用程序创建采购订单。在这个fiori应用程序中,云购全球,我们需要F4帮助在不同的下拉框中输入特定类型的数据(如文档类型、供应商列表、采购组),用户从中选择采购订单创建过程的输入。同样,在后端系统中,我们有一个RFC,它可以返回多个表记录,如文档类型、供应商列表、采购组等。我们在oData服务中使用这个RFC的方式是这样的,因此在通过一个EntitySet的单个调用中,oData服务应该返回多个EntitySet输出(它是从RFC的多个表输出映射而来的)在这里,下面解释的步骤是上述业务场景的同义词。上述类型的oData服务将使用支持"$expand"查询的"关联和导航"技术来实现,

$expand查询选项非常强大,允许我们在一个服务调用中提供多个实体和/或实体集,而不是随后执行多个调用要使$expand query正常工作,应创建关联或导航属性。我们实现了get\u expanded\u entityset方法。

这是SAP Netweaver Gateway中用于关联多个实体类型的两个重要属性。如果我们想要一个odata服务,它在一次调用中,通过一个主实体集,可以在单独的其他实体集中运行多个输出表记录,那么我们就使用这个关联和导航属性。这里,在我们的例子中,在一个调用中,通过EntitySet'InputHelpSet',我们希望在以下separte EntitySet中接收三种类型的输出表记录:文档列表的"DocTypSet"供应商列表的"VendorListSet""PurchGrpSet"对于采购组列表

在后端系统(SAP-ECC)中,有一个RFC,在单独的表中提供多种类型的"F4帮助数据"。此RFC需要在没有任何输入的情况下调用,作为回报,它提供了以下输出表:文件类型列表采购组列表供应商列表

在这里,返利购,我们将看到创建oData服务的详细步骤,该服务具有四个实体集结构第一个是我们调用服务的主实体集,下面三个实体集将被导航以引用它们的结构二是存储文档类型记录三是存储采购组记录第四是商店供应商名单记录三大联想我们创建关联,将其余三个实体集链接到主实体集,因此,在调用main EntitySet时,我们可以用各自的RFC表输出填充rest EntitySet结构重新定义"get\u expanded\u entityset"方法,将在应用程序的服务调用时调用它将依次调用backed RFC,接收RFC的输出表并将输出映射到三种不同的结构(EntitySet)同样,我们可以按照以下步骤:

[1]创建主EntitySet来调用服务

首先创建一个EntitySet,触发oDataService。为同一对象创建实体名"InputHelp"为同一实体创建EntitySet(简单地说,这里的实体类似于数据类型,物联网的应用有哪些,EntitySet类似于变量)实体名为"InputHelp",大数据概念,实体集名为"InputHelpSet"我们在这个实体中创建一个单独的属性(即列或字段),名为"field1"

[2]创建EntitySet来接收/存储文档-类型

这个EntitySet的结构与包含所有相应列/字段的文档类型RFC表的结构相似对于相同的,创建实体名为"DocType",实体名为"DocTypeSet"具有以下两个属性:文件类型代码bis说明

[3]创建实体集以接收/存储采购组

此实体集的结构与采购组RFC表的结构相似,该表具有所有相应的列/字段为此,创建实体名为"PurchGrp"、实体集名为"PurchGrpSet"的实体此实体将具有以下两个属性:EKGRP采购组EKNAM description

[4]Create EntitySet to receive/store VendorList

此EntitySet的结构与VendorList RFC表的结构类似,该表具有所有相应的列/字段为此,创建实体名为"VendorList"且实体集名称为"VendorListSet"的实体此实体将具有以下两个属性:LIFNR供应商代码名称供应商名称实体创建完成后,允许保存并重新生成运行时对象,为此,选择项目文件夹,单击"生成运行时对象"的图标(红/白圈)成功生成时,将显示以下消息。因此,我们创建了四个具有各自EntitySet结构的实体:帮助文档类型采购组供应商接下来,按照计划,我们需要将rest 3实体与主实体"InputHelp"链接起来,这可以通过关联和导航来实现。

[5]创建关联和导航

借助oData服务的"关联和导航"技术,这里我们将关联三个实体(DocType、PurchGrp、,供应商列表)和主实体(InputHelp)通过这种方法,通过主实体集的单个调用,oDataService也可以引用/访问其他三个实体集,我们可以使用这三个实体将各自的RFctables输出返回给这三个实体集。要创建关联,请转到t代码"SEGW"中的oData服务项目->选择"关联"->右键单击->"创建"在这里,我们创建三个与各自导航的关联,以:实体"InputHelp"和实体"DocType"之间的关联将实体"DocType"与实体"InputHelp"关联设置从实体"InputHelp"到实体"DocType"的导航实体"InputHelp"和实体"PurchGrp"之间的关联将实体"PurchGrp"与实体"InputHelp"关联设置从实体"InputHelp"到实体"PurchGrp"的导航实体"InputHelp"和实体"VendorList"之间的关联将实体"VendorList"与实体"InputHelp"关联要设置从实体"InputHelp"到实体"VendorList"的导航

[A]实体"InputHelp"和实体"DocType"之间的关联和导航