我正在使用 SAP UI5 开发一个主细节 Fiori 应用程序。由于详细信息包含 40 多个列,因此我为主表和详细信息制作了单独的 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
and 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 服务中的全部详细信息,然后在绑定到表期间应用过滤器。