无法在UI5中调用Odata服务

时间:2016-11-19 06:16:24

标签: odata sapui5

我正在为我的UI5应用程序调用Odata服务。我正在使用下面提到的代码来创建模型。

var oModel = new sap.ui.model.json.JSONModel("https://<>/sap/opu/odata/SIE/MED_TEST_OSIRIS_SRV/SalesOrderSet?$format=json");
//Getting the Data and putting in list model
sap.ui.getCore().setModel(oModel,"table");

使用此代码,我可以调用Odata并在表格中显示结果。

但现在我正在应用这样的过滤器:

  

的https://&LT;&GT; / SAP / OPU /的OData / SIE / MED_TEST_OSIRIS_SRV / SalesOrderSet $滤波器= Country_SP   eq&#39; DE&#39;

我可以在浏览器的地址栏中获得结果,但不能在以下代码中获得结果:

var sUrl = "https://<>/sap/opu/odata/SIE/MED_TEST_OSIRIS_SRV/SalesOrderSet?$filter=Country_SP eq 'DE'";

var oModel = new sap.ui.model.json.JSONModel(sUrl);

我做错了什么?我可以使用相同的网址在浏览器中过滤结果:(

此致 Mayank

3 个答案:

答案 0 :(得分:0)

UI5 ODataModel仅支持OData服务的基地址。该模型将基于该基址构造过滤和排序的查询。例如,当您向聚合绑定提供过滤器或排序器时,它会执行此操作。

但是,您可以在案例中使用JSONModel。它与OData查询参数无关,只需调用给定的URL并存储结果即可。

答案 1 :(得分:0)

您需要将URI组件编码为过滤器,然后附加到基本URL

var filter = "Country_SP eq 'DE'";
var baseUrl = "https://<>/sap/opu/odata/SIE/MED_TEST_OSIRIS_SRV/SalesOrderSet";
var sUrl = baseUrl+encodeURIComponent(filter);
var oModel = new sap.ui.model.json.JSONModel(sUrl);

答案 2 :(得分:0)

尝试同步通话。

var oModelData = new sap.ui.model.json.JSONModel();

oModelData.loadData(sUrl,null,false);