我想为2个不同的值运行2次过滤器。下面的过滤器运行正常,并搜索工厂A中是否存在物料M。我要搜索的是工厂A和工厂B中存在物料M。因此,如果物料是否存在,我想对工厂A运行以下过滤器两次如果存在,则为工厂B运行。如果两个地方都存在,则调用成功函数。最好的方法是什么? (植物就像钥匙一样)
Controller.js
var sServiceURL = self.getOwnerComponent().getMetadata().getManifestEntry("sap.app").dataSources["ABC"].uri;
var OdataModel = new sap.ui.model.odata.v2.ODataModel(sServiceURL);
var sPath = "/materialSet";
var filters = [];
filters.push(new sap.ui.model.Filter([
new sap.ui.model.Filter("plant", sap.ui.model.FilterOperator.EQ, self.plantA),
new sap.ui.model.Filter("plant", sap.ui.model.FilterOperator.EQ, self.plantB)
], true));
filters.push(new sap.ui.model.Filter("Material", sap.ui.model.FilterOperator.EQ, materialNo));
filters.push(new sap.ui.model.Filter("type", sap.ui.model.FilterOperator.EQ, orderType));
OdataModel.read(sPath, {
filters: filters,
success: self.sucess.bind(self),
error: function(oError) {
self.error(oError);
}
});
答案 0 :(得分:3)
您可以通过以下方式在同一字段上添加多个过滤器:
new Filter([
new sap.ui.model.Filter("plant", sap.ui.model.FilterOperator.EQ, self.plantA),
new sap.ui.model.Filter("plant", sap.ui.model.FilterOperator.EQ, self.plantB)
], false);
这会导致像这样的呼叫
和(植物= 1或植物= 2)
如果要检查零件在两个工厂中是否都可用,请将其最后一个参数设为true
或留空:
new Filter([
new sap.ui.model.Filter("plant", sap.ui.model.FilterOperator.EQ, self.plantA),
new sap.ui.model.Filter("plant", sap.ui.model.FilterOperator.EQ, self.plantB)
], true);
和(植物= 1和植物= 2)
因此,将其合并为filters.push(new sap.ui.model.Filter("plant", sap.ui.model.FilterOperator.EQ, self.plant));
的替代品。