如何在OData读取方法中传递filter参数

时间:2017-04-20 12:49:32

标签: odata sapui5 gateway

我需要在我的OData中传递一个参数。

网址必须如下:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/Users/christopherfrancis/anaconda/lib/python2.7/lib-tk/Tkinter.py",     line 1542, in __call__
    return self.func(*args)
  File "<ipython-input-1-75a48478dca7>", line 27, in stress_b
    img = tk.PhotoImage(file= "MaxShearStress.PNG")
  File "/Users/christopherfrancis/anaconda/lib/python2.7/lib-tk/Tkinter.py",     line 3372, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/Users/christopherfrancis/anaconda/lib/python2.7/lib-tk/Tkinter.py",    line 3326, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
TclError: couldn't open "MaxShearStress.PNG": no such file or directory

以下是我的代码:

http://my_gateway_system:port/sap/opu/odata/sap/ZGW_TRANSF_APPROVAL_SRV_02/ztest_nameset('RUBENS')

当我通过网址时

var sServiceUrl = "http://<my_gateway_system>:<port>/sap/opu/odata/sap/ZGW_TRANSF";
var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl, true, "username", "password");

var oJsonModel = new sap.ui.model.json.JSONModel();     
oModel.read("/ztest_nameset('RUBENS')", null, null, true, function(oData, response) {
    oJsonModel.setData(oData);
});
sap.ui.getCore().setModel(oJsonModel);

在我的浏览器中,它有效。但是当我运行我的代码时,它无效。

1 个答案:

答案 0 :(得分:0)

您正在使用ODataModel #read的遗留方法调用(参数展开)。此方法的当前签名为read(sPath, mParameters)。请查看方法的文档:https://openui5.hana.ondemand.com/#docs/api/symbols/sap.ui.model.odata.ODataModel.html#read

在具体案例中,您应该执行以下操作:

oModel.read("/ztest_nameset('RUBENS')", {
   filters: [/* your filters here */],
   success: function(oData) {
      oJsonModel.setData(oData);
   }
});

然而,目前尚不清楚要传递的过滤器参数。在您的示例中,您没有过滤器。 /ztest_nameset('RUBENS') URI只是一个普通的实体集+密钥。还不清楚你得到了什么错误。我猜它可以是CORS issue。您似乎正在向其他主机发出OData调用,而不是您为UI5应用程序提供的主机。