如何将odata服务绑定到SAP ui5表?

时间:2016-06-23 11:23:36

标签: javascript odata sap sapui5

我使用下面的代码将odata服务绑定到sapui5表

//Creating the instance of oData model
var oModel = new sap.ui.model.odata.v2.ODataModel("http://admin-think:88/sap/...",{useBatch : true});
sap.ui.getCore().setModel(oModel,"model1");
console.log(oModel);

// Create instance of table 
var oTable = new sap.ui.table.Table({
    visibleRowCount : 6,
        selectionMode: sap.ui.table.SelectionMode.Single, 
        navigationMode: sap.ui.table.NavigationMode.scrollbar, 
        selectionBehavior: sap.ui.table.SelectionBehavior.RowOnly
    });

  // First column "Application"
    oTable.addColumn(new sap.ui.table.Column({
           label : new sap.ui.commons.Label({
                 text : "APPLICATION",
                 textAlign : "Center",

           }),
           template : new sap.ui.commons.TextView({
                textAlign:"Center"}).bindProperty("text","model1>Applno"),              
    }));

    // Bind model to table control
    oTable.bindRows("model1>/");
  • 我无法将数据从oData服务获取到SAPui5表,odata存储在单独的vpn客户端中。我正在使用反向代理服务器来检索数据

  • 控制台中的错误显示在以下链接

    output

1 个答案:

答案 0 :(得分:1)

此行中的服务端点可能不正确:var oModel = new sap.ui.model.odata.v2.ODataModel("http://admin- think:88/sap/...",{useBatch : true});

在您发送的错误输出中,您可以看到应用程序正在尝试访问网址http://.../ZTEST1_SRV/CoreOpenAppSet()/$metadata。这会导致404状态,这意味着该服务在该URL上不可用。应用程序从中下载元数据的正确URL可能应为http://.../ZTEST1_SRV/$metadata

要解决此问题,您应该删除传递给ODataModel构造函数的变量的CoreOpenAppSet()部分。相反,你应该使用你的ODataModel的callFunction来调用这个'Function Import',即:oModel.callFunction()

当函数导入的调用完成并且已解决返回的promise时,您可以使用setBindingContext将调用的结果绑定到UI:

var oPromise = oModel.callFunction("/CoreOpenAppSet");
oPromise.contextCreated().then(function(oContext) {
      oView.setBindingContext(oContext);
});

此外,最好在清单中指定模型和端点,以便它们与代码分离。您可以在此处详细了解:https://sapui5.netweaver.ondemand.com/docs/guide/8f93bf2b2b13402e9f035128ce8b495f.html