Hello!
Could you help me and maybe tell how filters with OData working? Unfortunately, table filters don't work...Should I this problem in ABAP Backend decide? Or maybe do you see some code mistake? In Metadata file it's no any significance that my data are not filterable...
Group by is working
But ascending und descending dont't work....
In softwaretools there are informatoin that this request works...
Code example...
return Controller.extend("Statusverwaltung3.controller.Table", { _oDialog: null, onInit: function() { var itemData = new Array(); itemData.push({ Key: "01", Text: "KS" }); itemData.push({ Key: "02", Text: "OR" }); itemData.push({ Key: "03", Text: "PC" }); itemData.push({ Key: "04", Text: "PR" }); var oData = { Status: [{ name: 'Offen', measure: '0', id: 1 }, { name: 'In Bearbeitung', measure: '19', id: 2 }, { name: 'Geplant', measure: '13', id: 3 }, { name: 'Abgeschlossen', measure: '0', id: 4 }, { name: 'Geprüft', measure: '0', id: 5 }, { name: 'Freigegeben', measure: '0', id: 6 }] }; var model1 = new sap.ui.model.json.JSONModel(); model1.setData(oData); var comboSelMdl = new sap.ui.model.json.JSONModel({ SelKey: "01", Items: itemData }); this.getView().setModel(comboSelMdl, "comboSelMdl"); this.mGroupFunctions = { Obart: function(oContext) { var obart = oContext.getProperty("Obart"); return { key: obart, text: obart }; }, Pjahr: function(oContext) { var pjahr = oContext.getProperty("Pjahr"); return { key: pjahr, text: pjahr }; }, Kokrs: function(oContext) { var Kokrs = oContext.getProperty("Kokrs"); if (Kokrs <= 1000) { var key = "LE100"; var text = "1000 " + " or less"; } else if (Kokrs <= 1000) { key = "BT100-1000"; text = "Between 100 and 1000 "; } else { key = "GT1000"; text = "More than 1000 "; } return { key: Kokrs, text: Kokrs }; } }; }, }, handleViewSettingsDialogButtonPressed: function(oEvent) { if (!this._oDialog) { this._oDialog = sap.ui.xmlfragment("Statusverwaltung3.view.Dialog", this); } // toggle compact style jQuery.sap.syncStyleClass("sapUiSizeCompact", this.getView(), this._oDialog); this._oDialog.open(); }, handleConfirm: function(oEvent) { var oView = this.getView(); var oTable = oView.byId("idStats"); var mParams = oEvent.getParameters(); var oBinding = oTable.getBinding("items"); // apply sorter to binding // (grouping comes before sorting) var aSorters = []; if (mParams.groupItem) { var sPath = mParams.groupItem.getKey(); var bDescending = mParams.groupDescending; var vGroup = this.mGroupFunctions[sPath]; aSorters.push(new sap.ui.model.Sorter(sPath, bDescending, vGroup)); } var sPath = mParams.sortItem.getKey(); var bDescending = mParams.sortDescending; aSorters.push(new sap.ui.model.Sorter(sPath, bDescending)); oBinding.sort(aSorters); } /** * Called when a controller is instantiated and its
onChange: function(oEvent) { // getting the value of Combobox var oTable = this.getView().byId("idStats"); oTable.setShowOverlay(true); }, onSearch: function(oEvent) { var oTable = this.getView().byId("idStats"); var comboBoxValue = this.byId("oComboBox").getValue(), oBinding = oTable.getBinding("items"), oFilter; if (comboBoxValue || comboBoxValue === "") { oTable.setShowOverlay(false); oFilter = new sap.ui.model.Filter("Obart", "EQ", comboBoxValue); oBinding.filter([oFilter]); // getting the value of Combobox } oTable.setShowOverlay(true); }, onReset: function(oEvent) { // resetting the value of Combobox and initial state of the table var oTable = this.getView().byId("idStats"); var oBinding = oTable.getBinding("items"); oBinding.filter([]); oTable.setShowOverlay(false); this.byId("oComboBox").setSelectedItem(null); },
So, there are some mistakes or I should make filteres firstly in SAP system?....I have no idea...Combobox doesn't work too...
Thank you in advance !
Regards,
Khristina