我们已经看过几篇博客,讨论如何将计算视图的结果轻松地公开为XSOData服务。
我们甚至可以在实体之间的XSOData中定义导航属性。通过定义导航–我们可以利用WebIDE中现有的智能模板来开发主细节类型的UI。
这里是一个解释OData中导航和关联的博客截图:
这里有一些关于计算视图的博客和教程,展示了使用XSOData的视图以及OData之间的关联和导航实体:
我们可以找到许多这样的博客,如上图所示,但是在复杂的计算视图中,需要输入参数来定义关联和导航是一个挑战。
不幸的是,SAP帮助文档和其他博客没有详细解释这个场景。
在这个博客中,我将解释计算视图是如何需要输入参数可以链接到其他实体以及如何在XSOData中定义导航属性。
我们将把这个博客分为两个步骤:
我们将举一个非常简单的例子,包括实体Customer、Sales Order Header和Sales Order Items。在第一步中,我们将为实体创建计算视图并公开它们。因此,专家们可以直接跳到第二步,我们将为我们的实体添加关联和导航。
从上图中我们可以看到,我们的实体具有以下属性:
客户
ID客户名称客户位置计数
销售订单头
ID销售订单日期客户编号客户名称客户位置NetAmount
销售订单项目
IDSalesOrderItemHeader项目名称项目价格ItemQuantity
我将在下面分享计算视图和XSOData代码的截图,有关更多信息,请参阅SAP HANA开发者指南
客户计算视图
上述计算视图CustomerView在XSOData中显示为Customer,如下所示:
访问客户实体,我的OData实体客户的URL如下:
https://blogdemoi347902sapdev.int.sap.hana.ondemand.com/demo/blog1/api.xsodata/Customer
https://blogdemoi347902sapdev.int.sap.hana.ondemand.com/demo/blog1/api.xsodata/Customer(1)
销售订单表头计算视图
注:我们已经定义了输入参数开始和结束END\TS可输出SalesOrderHeaders,其SalesOrderDate介于START\TS和END\TS之间。
由于我们有输入参数,因此我们将定义XSOData,店铺淘客怎么做,以便将参数值与键一起传递到实体的URL中。因此计算视图SalesOrderHeaderView在XSOData中显示为SalesOrderHeader,如下所示:
注意:如果激活上述服务时遇到参数不支持等错误,可参考此讨论
访问SalesOrderHeader实体,我的OData实体SalesOrderHeader的URL如下:
https://blogdemoi347902sapdev.int.sap.hana.ondemand.com/demo/blog1/api.xsodata/SalesOrderHeaderParameters(开始时间=日期时间'2015-07-24T00:00:00.0000000',结束时间=日期时间'2018-12-22T23:59:59.0000000')/结果
https://blogdemoi347902sapdev.int.sap.hana.ondemand.com/demo/blog1/api.xsodata/SalesOrderHeader(开始时间=datetime'2015-07-24T00:00:00.0000000′,结束时间=datetime'2018-10-22T23:59:59.0000000′,ID=1)
销售订单项目计算视图
上述计算视图SalesOrderItemView在XSOData中作为SalesOrderItem公开如下:
访问SalesOrderItem实体,我的OData实体SalesOrderItem的URL如下:
https://blogdemoi347902sapdev.int.sap.hana.ondemand.com/demo/blog1/api.xsodata/SalesOrderItem
https://blogdemoi347902sapdev.int.sap.hana.ondemand.com/demo/blog1/api.xsodata/SalesOrderItem(1)
以上服务合并为一个XSOData文件。下面是合并XSOData的代码片段:
在上一步中,我们创建了Customer、Sales Order Header和Sales Order Item计算视图,淘客如何推广,并使用XSOData公开了它们。现在我们将添加实体之间的关联,并定义实体之间的导航。
如果您遵循步骤1,您会注意到计算视图Customer没有输入参数,Sales Order Header有两个输入参数START和END。
为了在XSOData中从Customer导航到salesforderheader实体,需要将START和END输入参数从Customer传递到salesforderheader实体。因此,我们将向Customer calculation视图中添加一个伪开始和结束输入参数,该参数只有一个目的,即在导航时将数据从Customer传递到SalesOrderHeader实体。
这是我们的实体在添加关联和导航后的处理方式:
Customer calculation视图中所需的更改在中用红色标记下图:
要添加关联和导航,我们将对XSOData文件进行更改。使用不同颜色的矩形突出显示所做的更改,私有云市场,下面给出了突出显示更改的解释:
这是我们如何使用XSOData定义OData实体之间的关联和导航。以下是添加关联和导航后XSOData文件的代码片段:
现在让我们看看如何通过URL访问OData实体及其导航属性。
要在不需要导航的情况下访问客户,我们可以传递一些伪时间戳作为开始和结束,因为这些参数不会影响客户计算视图和仅用于传递到销售订单表头计算视图。
这里有一些示例:
https://blogdemoi347902sapdev.int.sap.hana.ondemand.com/demo/blog1/api.xsodata/CustomerParameters(开始时间=日期时间",结束(TS=日期时间")/结果
https://blogdemoi347902sapdev.int.sap.hana.ondemand.com/demo/blog1/api.xsodata/Customer(START\u TS=datetime",云服务器买哪个好,END\u TS=datetime",ID=1)
如果我们需要从客户导航到SalesOrderHeader,我们将传递有效的时间戳作为START\u TS和END\u TS输入参数,以获取客户之间的销售订单给定的时间范围。
以下是一些示例:
1.要获取ID=1的客户,URL如下: