如何使用OData进行过滤?

2020-08-18 02:07发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好!

您能帮我一下,也许告诉我OData过滤器如何工作? 不幸的是,表过滤器不起作用... ABAP后端中的这个问题应该由我决定吗? 还是您看到一些代码错误? 在元数据文件中,我的数据不可过滤没有任何意义...

分组依据正在工作

但是上升和下降都行不通....

在软件工具中,有消息告知此请求有效...

代码示例...

 return Controller.extend(" Statusverwaltung3.controller.Table",{
 _oDialog:null,
 onInit:function(){


 var itemData = new Array();


 itemData.push({


 键:" 01",


 文字:" KS"


 });


 itemData.push({


 键:" 02",


 文字:" OR"


 });


 itemData.push({


 键:" 03",


 文字:" PC"


 });


 itemData.push({


 键:" 04",


 文字:" PR"


 });
 var oData = {
 状态: [{


 名称:"优惠",
 度量:" 0",
 编号:1
 },{
 名称:"在Bearbeitung",
 度量:" 19",
 id:2
 },{
 名称:'Geplant',
 度量:" 13",
 id:3
 },{
 名称:" Abgeschlossen",
 度量:" 0",
 id:4
 },{
 名称:"Geprüft",
 度量:" 0",
 编号:5
 },{
 名称:" Freigegeben",
 度量:" 0",
 编号: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");
 返回{
 关键:欧巴特,
 文字:obart
 };
 },


 Pjahr:function(oContext){
 var pjahr = oContext.getProperty(" Pjahr");


 返回{
 关键:pjahr,
 文字:pjahr
 };


 },
 角:function(oContext){
 var Kokrs = oContext.getProperty(" Kokrs");


 如果(Kokrs <= 1000){
 var key =" LE100";
 var text =" 1000" +"或更少";
 } else if(Kokrs <= 1000){
 键=" BT100-1000";
 text =" 100到1000之间";
 }其他{
 键=" GT1000";
 text ="大于1000";
 }


 返回{
 关键:Kokrs,
 文字:Kokrs
 };


 }
 };
 },





 },


 handleViewSettingsDialogBu​​ttonPressed:function(oEvent){
 如果(!this._oDialog){
 this._oDialog = sap.ui.xmlfragment(" Statusverwaltung3.view.Dialog",this);
 }
//切换紧凑样式
 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");


//将排序器应用于绑定
//(分组先于排序)
 var aSorters = [];


 如果(mParams.groupItem){
 var sPath = mParams.groupItem.getKey();
 var bDescending = mParams.groupDescending;
 var vGroup = this.mGroupFunctions [sPath];
 aSorters.push(新sap.ui.model.Sorter(sPath,bDescending,vGroup));
 }
 var sPath = mParams.sortItem.getKey();
 var bDescending = mParams.sortDescending;
 aSorters.push(新sap.ui.model.Sorter(sPath,bDescending));
 oBinding.sort(aSorters);
 }
/**
 *在实例化控制器及其控制器时调用
 
 onChange:function(oEvent){
//获取组合框的值
 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;
 如果(comboBoxValue || comboBoxValue ===""){
 oTable.setShowOverlay(false);
 oFilter = new sap.ui.model.Filter(" Obart"," EQ",comboBoxValue);
 oBinding.filter([oFilter]);


//获取组合框的值


 }
 oTable.setShowOverlay(true);


 },
 onReset:function(oEvent){
//重置组合框的值和表的初始状态
 var oTable = this.getView()。byId(" idStats");
 var oBinding = oTable.getBinding(" items");
 oBinding.filter([]);
 oTable.setShowOverlay(false);
 this.byId(" oComboBox")。setSelectedItem(null);
 },


 

那么,有一些错误,或者我应该首先在SAP系统中进行过滤吗?...。我不知道...组合框也不起作用...

提前谢谢!

此致

克里斯蒂娜

(51.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好!

您能帮我一下,也许告诉我OData过滤器如何工作? 不幸的是,表过滤器不起作用... ABAP后端中的这个问题应该由我决定吗? 还是您看到一些代码错误? 在元数据文件中,我的数据不可过滤没有任何意义...

分组依据正在工作

但是上升和下降都行不通....

在软件工具中,有消息告知此请求有效...

代码示例...

 return Controller.extend(" Statusverwaltung3.controller.Table",{
 _oDialog:null,
 onInit:function(){


 var itemData = new Array();


 itemData.push({


 键:" 01",


 文字:" KS"


 });


 itemData.push({


 键:" 02",


 文字:" OR"


 });


 itemData.push({


 键:" 03",


 文字:" PC"


 });


 itemData.push({


 键:" 04",


 文字:" PR"


 });
 var oData = {
 状态: [{


 名称:"优惠",
 度量:" 0",
 编号:1
 },{
 名称:"在Bearbeitung",
 度量:" 19",
 id:2
 },{
 名称:'Geplant',
 度量:" 13",
 id:3
 },{
 名称:" Abgeschlossen",
 度量:" 0",
 id:4
 },{
 名称:"Geprüft",
 度量:" 0",
 编号:5
 },{
 名称:" Freigegeben",
 度量:" 0",
 编号: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");
 返回{
 关键:欧巴特,
 文字:obart
 };
 },


 Pjahr:function(oContext){
 var pjahr = oContext.getProperty(" Pjahr");


 返回{
 关键:pjahr,
 文字:pjahr
 };


 },
 角:function(oContext){
 var Kokrs = oContext.getProperty(" Kokrs");


 如果(Kokrs <= 1000){
 var key =" LE100";
 var text =" 1000" +"或更少";
 } else if(Kokrs <= 1000){
 键=" BT100-1000";
 text =" 100到1000之间";
 }其他{
 键=" GT1000";
 text ="大于1000";
 }


 返回{
 关键:Kokrs,
 文字:Kokrs
 };


 }
 };
 },





 },


 handleViewSettingsDialogBu​​ttonPressed:function(oEvent){
 如果(!this._oDialog){
 this._oDialog = sap.ui.xmlfragment(" Statusverwaltung3.view.Dialog",this);
 }
//切换紧凑样式
 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");


//将排序器应用于绑定
//(分组先于排序)
 var aSorters = [];


 如果(mParams.groupItem){
 var sPath = mParams.groupItem.getKey();
 var bDescending = mParams.groupDescending;
 var vGroup = this.mGroupFunctions [sPath];
 aSorters.push(新sap.ui.model.Sorter(sPath,bDescending,vGroup));
 }
 var sPath = mParams.sortItem.getKey();
 var bDescending = mParams.sortDescending;
 aSorters.push(新sap.ui.model.Sorter(sPath,bDescending));
 oBinding.sort(aSorters);
 }
/**
 *在实例化控制器及其控制器时调用
 
 onChange:function(oEvent){
//获取组合框的值
 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;
 如果(comboBoxValue || comboBoxValue ===""){
 oTable.setShowOverlay(false);
 oFilter = new sap.ui.model.Filter(" Obart"," EQ",comboBoxValue);
 oBinding.filter([oFilter]);


//获取组合框的值


 }
 oTable.setShowOverlay(true);


 },
 onReset:function(oEvent){
//重置组合框的值和表的初始状态
 var oTable = this.getView()。byId(" idStats");
 var oBinding = oTable.getBinding(" items");
 oBinding.filter([]);
 oTable.setShowOverlay(false);
 this.byId(" oComboBox")。setSelectedItem(null);
 },


 

那么,有一些错误,或者我应该首先在SAP系统中进行过滤吗?...。我不知道...组合框也不起作用...

提前谢谢!

此致

克里斯蒂娜

(51.6 kB)
付费偷看设置
发送
1条回答
CJones
1楼-- · 2020-08-18 02:44

你好克里斯蒂娜,

过滤器在后端完成。 如果您使用的是Gateway,请按照下面的链接获取更多信息。

https://blogs.sap.com/2013/06/20/how-to-develop-query-options-for-an-odata-service-using-code-based-implementation

您是否为过滤器实现了后端?

致谢

西蒙(Simon)

一周热门 更多>