6

我们的客户已将其系统更改为 SAP,并希望应用程序通过 SAP 界面显示数据。我们决定使用 SAPUI5 框架 + WebIDE 来开发应用程序,因为它提供了非常好的控制种类和可靠的 MVC 设计以及用于 SAP 接口的易于使用的云连接器。

我们已经配置了一个这样的连接器:

新应用程序.json

{
  "welcomeFile": "/webapp/index.html",
  "routes": [
    {
      "path": "/resources",
      "target": {
        "type": "service",
        "name": "sapui5",
        "entryPath": "/resources"
      },
      "description": "SAPUI5 Resources"
    },
    {
      "path": "/test-resources",
      "target": {
        "type": "service",
        "name": "sapui5",
        "entryPath": "/test-resources"
      },
      "description": "SAPUI5 Test Resources"
    },
    {
      "path": "/mynews",
      "target": {
        "type": "destination",
        "name": "MyNews_CMS",
        "preferLocal": true
      }
    }
  ],
  "sendWelcomeFileRedirect": true
}

这是我们在component.js中的测试调用:

try {                                                                               
  $.get("/mynews/?json=2", function(data, status) {                                                                                 
    alert("success: " + JSON.stringify(data));                                                                              
  }).fail(function(arg1) {                                                                                 
    alert("error: " + JSON.stringify(arg1));                                                                               
  });                                                                           
} catch (err) { 
  alert("global error: " + err);
}

在我们的 WebIDE 中,我们从 SAP 连接器 API 获得包含所有所需数据的完整 JSON,但是,一旦我们构建应用程序并将其发布到使用 HAT(Android、iOS 甚至签名)的任何设备上,请求就会失败。

首先,它发出警报{}(空对象),然后发出警报error: {"readyState":0,"status":0,"statusText":"error"}

我们如何解决这个问题?

4

1 回答 1

0

与您的neo-app.jsonUI5 应用程序无关。甚至不需要让应用程序运行,因为只有 SAP WebIDE 解释并使用此文件进行配置。

你真正想做的是在你的内部定义你的目的地manifest.json

...
"dataSources": {
   "ODataEndpoint": {
        "uri": "https://yourappname.hana.ondemand.com/your/odata/path/",
        "type": "OData",
        "settings": {
           "odataVersion": "2.0",
           "localUri": "/your/odata/path/"
        }
    }
}
...
"models": {
    "": {
        "dataSource": "ODataEndpoint"
    }
}
...

如果这不起作用,您应该调试您的设备网络活动以查看调用了哪个 URL。

如何在 iOS 应用程序中调试网络调用:https ://cordova.apache.org/docs/en/latest/guide/next/#ios-debugging

如何在 Android 应用程序中调试网络调用: https ://cordova.apache.org/docs/en/latest/guide/next/#chrome-remote-debugging

于 2018-02-17T12:50:11.960 回答