2017-10-23 3 views
0

Ich habe 2 Wochen nach einem Beispiel suchen, um zu verstehen, wie das OData funktioniert. Ich habe in der manifest.json meine url mit dem OData-Dienst definiertLaden von OData ohne Tabelle oder List-Objekt in SAPUI5

{ 
"_version" : "1.7.0", 
"sap.app" : { 
    "id"   : "test", 
    "type"   : "application", 
    "i18n"   : "i18n/i18n.properties", 
    "applicationVersion": { 
     "version"  : "1.0.0" 
    }, 
    "title"   : "{{appTitle}}", 
    "description" : "{{appDescription}}", 
    "sourceTemplate": { 
     "id"   : "servicecatalog.connectivityComponent", 
     "version"  : "0.0.0" 
    }, 
    "dataSources" : { 
     "Test" : { 
      "uri"   : "/sap/opu/odata/sap/ZMY_SERVICE_SRV/", 
      "type"   : "OData", 
      "settings"  : { 
       "odataVersion" : "2.0", 
       "localUri"  : "localService/metadata.xml" 
      } 
     } 
    } 
}.. 
    "models": { 
     "i18n": { 
      "type": "sap.ui.model.resource.ResourceModel", 
      "settings": { 
       "bundleName": "test.i18n.i18n" 
      } 
     }, 
     "Test": { 
      "type": "sap.ui.model.odata.v2.ODataModel", 
      "settings": { 
       "defaultOperationMode": "Server", 
       "defaultBindingMode": "TwoWay", 
       "defaultCountMode": "None" 
      }, 
      "dataSource": "Test" 
     }, 

und in meinem Component.js in der Init-Methode:

init: function() { 
     // call the base component's init function 
     UIComponent.prototype.init.apply(this, arguments); 
     // create the views based on the url/hash 
     this.getRouter().initialize(); 
     // set the device model 
     this.setModel(models.createDeviceModel(), "device"); 


     var sServiceUrl = this.getMetadata().getManifestEntry("sap.app").dataSources["Test"].uri; 
     var oModel = new sap.ui.model.odata.v2.ODataModel(sServiceUrl); 
     this.setModel(sabModel, "/Test"); 
     sabModel.read(sServiceUrl, "Test"); 
    } 

ich nicht möchte eine Tabelle oder eine Liste verwenden, um die OData vom Backend zu laden. Ich möchte die Informationen "manuell" laden und basierend auf dem, was ich vom Backend bekommen habe, möchte ich zu der einen oder anderen Ansicht navigieren.

Debuggen das Ergebnis im Navigator ich folgende Fehlermeldung angezeigt: Console

die Fehlerüberprüfung Log ich sehen kann: Error Log

Wenn ich testen, der Service im Backend funktioniert: OData Service

I bekam:

<?xml version="1.0"?><feed xml:base="http://Myserver:8000/sap/opu/odata/sap/ZMY_SERVICE_SRV/" 
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom"> 
<id>http://Myserver:8000/sap/opu/odata/sap/ZMY_SERVICE_SRV/TestSet</id> 
<title type="text">TestSet</title> 
<updated>2017-10-23T20:37:55Z</updated> 
-<author> 
    <name/> 
</author> 
<link title="TestSet" rel="self" href="TestSet"/> 
-<entry> 
    <id>http://Myserver:8000/sap/opu/odata/sap/ZMY_SERVICE_SRV/TestSet('1')</id> 
    <title type="text">TestSet('1')</title> 
    <updated>2017-10-23T20:37:55Z</updated> 
    <category scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" term="ZMY_SERVICE_SRV.Test"/> 
    <link title="Test" rel="self" href="TestSet('1')"/> 
    -<content type="application/xml"> 
     -<m:properties xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
      xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
      <d:Pernr>1</d:Pernr> 
      <d:Nachn>TestUser</d:Nachn> 
      <d:Vorna>UserTest</d:Vorna> 
      <d:SavingDate m:null="true"/> 
      <d:Option/> 
      <d:MsgType/> 
      <d:MsgNumb/> 
     </m:properties> 
    </content> 
</entry> 

Vielen Dank für Ihre Hilfe !!! Jede Eingabe ist mehr als willkommen !!

Antwort

0

die API-Dokumentation über „lesen“ Methode lesen: https://sapui5.netweaver.ondemand.com/#/api/sap.ui.model.odata.v2.ODataModel

Sie sollen nicht die Dienst-URL in Lesemethode angeben, weil es mit „sPath“ automatisch verkettet wird, die Sie als erstes Argument übergeben. Sie sollten den Namen von entityset verwenden (ist in $ metadata definiert), den Sie lesen wollen, beginnend mit dem Schrägstrich "/".

+0

Dank Andrii Ihre Erklärung viele Zweifel löst die ich hatte. –

0

versuchen diese

var oModel = this.getModel("Test");//get the model 
oModel.read("/TestSet", { 
    method: "GET", 
    success: function(data) { 
     alert(JSON.stringify(data)); 
    }, 
    error: function() { 

    } 
}); 
Verwandte Themen