Hallo alle, Ich möchte einen oData Get-Service mit Filter von SAPUI5 ausführen. Die OData url würde wie folgt aussehen:?Aufrufen von oData mit Mehrfachfilter von SAPUI5
/sap/opu/OData/MAT_SRV/Get_MATSet $ filter = (Plant eq 'A1HG') und (Materialtyp eq 'PS01') und ((Materialnummer eq ‚61345280 ‚) oder (Materialnummer eq '61.345.280'))
Hier habe ich für ODATA Service (oDataFilter im Beispiel unterhalb des Filterarray angelegt), wie folgt:
var oPlant = new sap.ui.model.Filter("Plant", sap.ui.model.FilterOperator.EQ, 'A1HG');
var oPlantFilter = new sap.ui.model.Filter({
filters: [oPlant],
and: true
});
var oMatType = new sap.ui.model.Filter("MaterialType", sap.ui.model.FilterOperator.EQ, 'PS01');
var oMatTypeFilter = new sap.ui.model.Filter({
filters: [oMatType],
and: true
});
var oMaterialNumberFilter = this._getMatNumbers();//GET ALL MATERIAL NUMBER FILTERS SEPERATED By OR
var oDataFilter = new sap.ui.model.Filter({
filters: [oPlantFilter, oMatTypeFilter, oMaterialNumberFilter],
and: true });//ADDING AND TO ALL FILTERS
BackEndModel.read("/Get_MATSet", {
filters: oDataFilter,
success: jQuery.proxy(this.fSuccess, this),
error: jQuery.proxy(this.fError, this) });
_getMatNumbers: function() {
var aTokens = this.byId("Mat_MultiInput").getTokens();//ITERATE THROUGH EACH VALUES ENTERED BY USER
var aMatFilter = [];
for (var i in aTokens) {
aMatFilter.push(new sap.ui.model.Filter("MaterialNumber", sap.ui.model.FilterOperator.EQ, aTokens[i].getKey()));
}
var oFilter = new sap.ui.model.Filter({ filters: aMatFilter, and: false });
return oFilter;
}
Allerdings habe ich die Folgefehler während der Ausführung: "Kann Eigenschaft sPath von undefi nicht lesen ned ".
Kann mir bitte jemand sagen, was ich hier falsch mache? Oder führen Sie mit dem Filterausdruck, der an den oData-Service übergeben werden soll, der den in der oData-URL genannten Filterwerten entspricht?
Grüße,
Faddy
Wo ist ** oOrderNumbers ** Filterobjekt? .Es ist nicht Ihr Code und in der Anfrage. aber vorhanden im ** oDataFilter ** Filter. –
Sorry, das war ein Tippfehler. Ich habe es jetzt geändert. Bitte überprüfen Sie –
Kann mir bitte jemand hier helfen? Ich habe versucht, es mit Chrome zu debuggen. Was ich sehen kann ist: der folgende Filter verursacht den Fehler var oDataFilter = neu sap.ui.model.Filter ({filters: [oPlantFilter, oMatTypeFilter, oMaterialNumberFilter] und: true}); // HINZUFÜGEN UND ZU ALLEN FILTER Hier habe ich keinen sPath definiert, daher beschwert er sich darüber. Allerdings habe ich diesen Filter verwendet, um alle anderen Filterbedingungen mit "und" Operator zu kombinieren, also habe ich keinen sPath oder ich weiß nicht, welcher sPath hier erwähnt werden soll. Grüße, Faddy –