【发布时间】:2020-07-17 07:36:24
【问题描述】:
我正在使用 SAP UI5 开发一个主细节 Fiori 应用程序。由于 details 包含 40 多列,我为 master 和 detail 制作了单独的 OData 服务。
在母版页中,数据正确。现在我的任务是在任何表格行上,当用户点击详细信息时,将打开下一页,其中包含基于主表的两个关键值的详细信息。
我在详细页面中获得了两个变量键,如下所示,它工作正常:
var spayid = jQuery.sap.getUriParameters().get("payid");
var spaydt = jQuery.sap.getUriParameters().get("paydt");
接下来,我创建了两个过滤器,如下所示,它们也可以正常工作。
var filter1 = new Filter({
path: "Laufi",
operator: FilterOperator.EQ,
value1: spayid
});
var filter2 = new Filter({
path: "Laufd",
operator: FilterOperator.EQ,
value1: spaydt
});
现在我正在调用 OData 服务,它也可以正常工作:
var oODataModel = new ODataModel("proxy/http/FIORI-DEV.abc.com:8000/sap/opu/odata/sap/ZASA_FI_pay_D_SRV?sap-client=100", {
json: true,
useBatch: false
});
this.getView().setModel(oODataModel);
我现在不知道如何过滤数据。上面应该包含什么,以便它根据我的过滤器filer1 和filter2 过滤数据?我已经尝试过,但它不起作用。
filters : [ filter1, filter2 ],
json: true,
useBatch: false
我非常擅长 ABAP,但不是 SAPUI5 专家。我正处于学习阶段。
首先,我想在 OData 服务上传递参数,以便只获取所需的数据。意味着我的 OData 调用应该是这样的:
new ODataModel("proxy/http/FIORI-DEV.abc.com:8000/sap/opu/odata/sap/ZASA_FI_PAYMENT_D_SRV/PdetailSet(Laufi= spayid, Laufd = spaydt)?sap-client=100");
但这似乎不可能。
第二个选项是我将在 OData 服务中获取全部详细信息,然后在绑定到表期间应用过滤器。
【问题讨论】:
-
见stackoverflow.com/a/48870579/5846045。我还在那里添加了一个示例演示。您无需为此使用或实现
$filter查询。