2017-08-15 1 views
6

Unser Kunde hat sein System in SAP geändert und möchte, dass eine App Daten über die SAP-Schnittstelle anzeigt. Wir haben uns dazu entschlossen, das SAPUI5-Framework + WebIDE zur Entwicklung der App zu verwenden, da es eine sehr gute Steuerungsvielfalt mit einem soliden MVC-Design sowie einfach zu bedienende Cloud-Konnektoren für die SAP-Schnittstelle bietet.Cloud-Connector lädt keine JSON-Daten auf Gerät

Wir haben einen Anschluss wie folgt konfiguriert:

neo-app.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 
} 

Dieser unsere Testanruf in den component.js ist:

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); 
} 

In unserem WebIDE erhalten wir jedoch sofort einen vollständigen JSON mit allen gewünschten Daten aus der SAP Connector API wir erstellen die App und veröffentlichen sie auf jedem Gerät mit HAT (Android, iOS, sogar signiert), die Anfrage schlägt fehl.

zuerst, es alarmiert {} (leeres Objekt), dann alarmiert es error: {"readyState":0,"status":0,"statusText":"error"}

Wie können wir dieses Problem lösen?

+0

mit SAP Stuck so schlecht für Sie;). Haben Sie versucht, einen Debugging-Proxy (charles/fiddler/burp) zu verwenden, um die von Ihrem Gerät gesendete Abfrage zu überprüfen? Vielleicht sehen Sie einen Unterschied zum Browser. Haben Sie versucht, die vollständige URL (mit https: //xxxx.yyy) von "/ mynews ..." zu setzen – wargre

+0

@wargre Die vollständige URL funktioniert. Es ist nur das Ziel, das nicht funktioniert. In meinem letzten iOS-Projekt finde ich keinen Hinweis auf das Ziel. Es fühlt sich an, als ob in meinem iOS-Projekt die Neo-App-Datei oder etwas anderes fehlt. –

+1

Ich bin kein HAT-Guru, aber ich befürchte neo-app.json-Datei wird nur innerhalb von WebIDE oder innerhalb einer bereitgestellten App in der SAP Cloud verwendet (zum Beispiel im Portal-Dienst). Können Sie bestätigen, dass diese Datei beim Bereitstellen der App exportiert wird? – fabiopagoti

Antwort

0

Die hat nichts mit Ihrer UI5-Anwendung zu tun. Es ist nicht einmal erforderlich, dass die Anwendung funktioniert, da nur SAP WebIDE diese Datei für Konfigurationszwecke interpretiert und verwendet.

Was Sie wirklich tun möchten, ist Ihre Ziele in Ihrem manifest.json definieren:

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

Wenn dies nicht funktioniert, sollten Sie Ihre Geräte Netzwerkaktivität debuggen, um zu sehen, welche URL aufgerufen wird.

Wie Netzwerk Anrufe innerhalb eines iOS-App debuggen: https://cordova.apache.org/docs/en/latest/guide/next/#ios-debugging

Wie Netzwerk Anrufe innerhalb eines Android-App debuggen: https://cordova.apache.org/docs/en/latest/guide/next/#chrome-remote-debugging