使用SAP UI5调用具有多个过滤器的oData

2020-08-24 05:38发布

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

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


专家们,

我正在尝试在具有多个过滤器的sap ui5中使用odata服务。 我想和桌子绑在一起。 我收到错误消息"无法读取未定义的属性'sPath'"

url:/sap/opu/odata/sap/ZTEST_SRV/ExampleSet?$ filter =(para1 eq'INC001')和(para2 eq'MM')和(date1 ge'20200113'和date2 le'20200123') 和(flag eq'X')

 var that = this;
   //that.getView()。byId(" tabletcode4")。setVisible(false);
    var url ="/img/sap/opu/odata/sap/ZTEST_SRV/";
 第一种方法:
   //var allfilters = [new sap.ui.model.Filter({
   //路径:" para1",
   //运算子:sap.ui.model.FilterOperator.EQ,
   //value1:" INC001"
   //}),
   //新的sap.ui.model.Filter({
   //路径:" para2",
   //运算子:sap.ui.model.FilterOperator.EQ,
   //value1:" MM"
   //}),
   //新的sap.ui.model.Filter({
   //路径:" date1",
   //运算子:sap.ui.model.FilterOperator.GE,
   //value1:" 20200113"
   //}),
   //新的sap.ui.model.Filter({
   //路径:" date2",
   //运算子:sap.ui.model.FilterOperator.LE,
   //value1:" 20200123"
   //}),
   //新的sap.ui.model.Filter({
   //路径:"标志",
   //运算子:sap.ui.model.FilterOperator.EQ,
   //value1:" X"
   //})
   //];
 第二种方法:

 var opara1 =新的sap.ui.model.Filter(" para1",sap.ui.model.FilterOperator.EQ,'INC001');
 var opara2 = new sap.ui.model.Filter(" para2",sap.ui.model.FilterOperator.EQ,'MM');
 var odate1 = new sap.ui.model.Filter(" date1",sap.ui.model.FilterOperator.GE,'20200113');
 var odate2 = new sap.ui.model.Filter(" date2",sap.ui.model.FilterOperator.LE,'20200123');
 var oflag = new sap.ui.model.Filter(" flag",sap.ui.model.FilterOperator.EQ,'X');
 var orFilter = new sap.ui.model.Filter({filters:[odate1,odata2] and:true});
 var oFilter = new Array(sap.ui.model.Filter({filters:[orFilter,opara1,opara2,oflag]和:true}));
    var oModel = new sap.ui.model.odata.v2.ODataModel(url,{
     json:是的,
     loadMetadataAsync:true
    });
    sap.ui.getCore()。setModel(oModel);
    var oModel1 = new sap.ui.model.json.JSONModel();
    oModel.read("/img/ExampleSet",{
     过滤器:oFilter,
     成功:函数(oData){
     //lv_BusyDialog.close();
      var data = oData;
      oModel1.setData(data);
      that.getView()。setModel(oModel1," key");
     },
     错误:函数(oError){
     //alert(" error");
     }
    });
 
 <表项目=" {路径:'键>/结果'}" id =" __ table0">
       <项目>
        
         <单元格>
          
          
          
          
          
                   
        
       
       <列>
               
         <标题>
          
        
         <标题>
          
        
         <标题>
          
        
         <标题>
          
        
         <标题>
          
        
         <标题>
          
              
       

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

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


专家们,

我正在尝试在具有多个过滤器的sap ui5中使用odata服务。 我想和桌子绑在一起。 我收到错误消息"无法读取未定义的属性'sPath'"

url:/sap/opu/odata/sap/ZTEST_SRV/ExampleSet?$ filter =(para1 eq'INC001')和(para2 eq'MM')和(date1 ge'20200113'和date2 le'20200123') 和(flag eq'X')

 var that = this;
   //that.getView()。byId(" tabletcode4")。setVisible(false);
    var url ="/img/sap/opu/odata/sap/ZTEST_SRV/";
 第一种方法:
   //var allfilters = [new sap.ui.model.Filter({
   //路径:" para1",
   //运算子:sap.ui.model.FilterOperator.EQ,
   //value1:" INC001"
   //}),
   //新的sap.ui.model.Filter({
   //路径:" para2",
   //运算子:sap.ui.model.FilterOperator.EQ,
   //value1:" MM"
   //}),
   //新的sap.ui.model.Filter({
   //路径:" date1",
   //运算子:sap.ui.model.FilterOperator.GE,
   //value1:" 20200113"
   //}),
   //新的sap.ui.model.Filter({
   //路径:" date2",
   //运算子:sap.ui.model.FilterOperator.LE,
   //value1:" 20200123"
   //}),
   //新的sap.ui.model.Filter({
   //路径:"标志",
   //运算子:sap.ui.model.FilterOperator.EQ,
   //value1:" X"
   //})
   //];
 第二种方法:

 var opara1 =新的sap.ui.model.Filter(" para1",sap.ui.model.FilterOperator.EQ,'INC001');
 var opara2 = new sap.ui.model.Filter(" para2",sap.ui.model.FilterOperator.EQ,'MM');
 var odate1 = new sap.ui.model.Filter(" date1",sap.ui.model.FilterOperator.GE,'20200113');
 var odate2 = new sap.ui.model.Filter(" date2",sap.ui.model.FilterOperator.LE,'20200123');
 var oflag = new sap.ui.model.Filter(" flag",sap.ui.model.FilterOperator.EQ,'X');
 var orFilter = new sap.ui.model.Filter({filters:[odate1,odata2] and:true});
 var oFilter = new Array(sap.ui.model.Filter({filters:[orFilter,opara1,opara2,oflag]和:true}));
    var oModel = new sap.ui.model.odata.v2.ODataModel(url,{
     json:是的,
     loadMetadataAsync:true
    });
    sap.ui.getCore()。setModel(oModel);
    var oModel1 = new sap.ui.model.json.JSONModel();
    oModel.read("/img/ExampleSet",{
     过滤器:oFilter,
     成功:函数(oData){
     //lv_BusyDialog.close();
      var data = oData;
      oModel1.setData(data);
      that.getView()。setModel(oModel1," key");
     },
     错误:函数(oError){
     //alert(" error");
     }
    });
 
 <表项目=" {路径:'键>/结果'}" id =" __ table0">
       <项目>
        
         <单元格>
          
          
          
          
          
                   
        
       
       <列>
               
         <标题>
          
        
         <标题>
          
        
         <标题>
          
        
         <标题>
          
        
         <标题>
          
        
         <标题>
          
              
       
付费偷看设置
发送
3条回答
路亽曱_Ryan
1楼-- · 2020-08-24 06:07

粘贴完整的控制台日志(屏幕快照),并告诉我们该错误的出处。

我猜测的一个问题是,在odata调用的那一刻未加载元数据,请使用 下面的

 oModel.metadataLoaded()。then(function(
  //在此处编写读取的代码。

   oModel.read ........
 ).bind(this)); 

谢谢

马哈什语

haha101010
2楼-- · 2020-08-24 05:51

您好Raju Rajan ,检查调试器中的odata网址是如何生成的,并与后端一起检查为什么不来数据。 您可以按照上面的说明轻松检查数据是否出现问题。

樱桃小丸子0093
3楼-- · 2020-08-24 06:03

您好,

您的日期有误,您应该在过滤器中使用Date对象。

致谢

约瑟夫

一周热门 更多>