Please enable JavaScript.
Coggle requires JavaScript to display documents.
OData mit Sascha (12-13.11.18) (Grundlagen (GW100) (Englisch (Navigation…
OData mit Sascha
(12-13.11.18)
Grundlagen (GW100)
SAP Gateway
Middleware Lösung zur Verbindung SAP mit Java, HTML5 etc.
Vorher wurde das mit Point-to-Point (RFC mehrfach aufgerufen) Lösungen gemacht
Eine Schnittstelle, die offen ist (es wird nicht jedes Mal eine Verbindung aufgebaut)
Software Komponente (Teil des SAP's oder ein separates System)
Arbeitet mit dem HTTP Protokoll
OData
(Open Data)
Protokoll
Wenn man mit Fioris arbeiten will, muss man mit OData arbeiten!
Liegen im Backend-System (bei einer 2-System Landschaft)
Client hat den Konnektor ODATA-SDK
OData-Services ist gleich zu der Web-Infrastruktur bei REST
Server ist das SAP Backend System
Syntax - odata reference Befehl in Google eingeben!
Fiori
Liegen auf dem SAP Gateway / Fiori Frontend Server (bei uns z.B. HF3), wenn wir eine 2 System Landschaft haben
Aus ital. heißt es Blume
Frontend / Backend
Man mach Frontend, weil der Server Zugriff auf die Welt hat (Internet) und kann angegriffen werden (daher machen wir dort keine Business-Daten)
Leithart macht das jetzt nicht mit 2 Systemen, sondern alles wird im Backend abgelegt
Leider eine schlechte Performance mit 2 Systemen
SAP Cloud Connector
Wird bei SAP Cloud Platform benutzt
Anstatt des SAP Gateways
Kein Einfluss auf die Verbindung (da alles bei der SAP liegt)
REST
(Representational State Transfer)
Server hat eine Business-Logik und einen Konnektor
Über eine Web-Infrastruktur (HTTP-Protokoll) wird es mit einem Client verbunden (der hat auch einen Konnektor)
Was brauchen wir
Client-Server
Zustandslosigkeit (bei jeder Abfrage muss das gleiche rauskommen, in der OLL muss dann stehen was der Server wissen muss, z.B. Materialnummer); alle Informationen müssen übertragen werden in der Fiori
Caching - damit wir schneller arbeiten
Mehr Schichten im System
Einheitliche Schnittstelle
Code auf Abruf - jede Einstellung ist im Quelltext gespeichert (nicht so wie Dynpros und Eigenschaften die man nicht finden kann)
ATOM
Protokoll von der Microsoft gebaut für Publishing
Wird in den OData verwendet
XML
Extensive Markup Language
Kann von Menschen und Maschinen gelesen werden
Englisch
Navigation Property - Verknöpfung
Entity - Datenset, z.B. SalesOrder, Business Partner
Assosiation - Verbindung / Beziehung
Multiplicity - Kardinalität
Complex type - struktur, z.B. für Typ einer Property
VH* - Value Help
Referential Constraint - Fremdschlüsselprüfung (welche Felder zwischen 2 Entities werden verbunden)
Entity Container - Entities die wir abfragen können
json - javascript object notation
Escaping - Kodierung von Zeichen im Code (z.B. %27)
CRUD
D
ELETE - Löschen
PUT -
U
pdate der Datenbank, Ändern
GET - Lesen (
R
ead)
POST - Erstellen (
C
reate)
Fragen
Was ist eigentlich ein Server?
Entitiy?
Abfragen OData (Browser)
Optionen
(im Browser hinter Adresse eingeben)
?$format=json - anderes Format (XML, JSON)
$metadata
- mehrere Informationen über den OData Service
?sap-ds-debug=true - debugging, mehrere Reiter
/$metadata/?sap-ds-debug=true
$batch - meherere Sachen auf einmal z.B. lesen, erstellen
?$format=json&sap-ds-debug=true
?sap-client=333 -> defienieren von einem Mandanten
Beispiele
Zugriff auf Entities / Navigation Properties
https://val-hf3.movento.mannheim:44301/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/?$format=json
https://val-hf3.movento.mannheim:44301/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet/?$format=json&sap-ds-debug=true
https://val-hf3.movento.mannheim:44301/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet('HT-1000')/?$format=json&sap-ds-debug=true
https://val-hf3.movento.mannheim:44301/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/$metadata
https://val-hf3.movento.mannheim:44301/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet('HT-1000')/ToSupplier/?$format=json&sap-ds-debug=true
https://val-hf3.movento.mannheim:44301/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/BusinessPartnerSet(BusinessPartnerID='0100000000')/?sap-ds-debug=true
Select-Optionen
/BusinessPartners?$select=BusinessPartnerID,CompanyName
/BusinessPartners?$skip=12&top=6
ProductSet?$filter=Category eq 'Notebooks' (alle Produkte der Kategorie Notebooks)
https://val-hf3.movento.mannheim:44301/sap/opu/odata/IWBEP/GWSAMPLE_BASIC/ProductSet?$filter=Category
eq 'Notebooks'&?$format=json&sap-ds-debug=true
ProductSet?$select=Name,Category&$filter=ProductID eq 'HT-1000'&?$format=json&sap-ds-debug=true
ProductSet?$skip=2&$top=3&?$format=json&sap-ds-debug=true
ProductSet?$filter=ProductID eq 'HT-1000'&$expand=ToSupplier&?$format=json&sap-ds-debug=true
Zugriff auf Entities /
Navigation Properties
odata/entity - z.B. /BusinessPartnerSet
odata/entity/navigation profile - z.B. /BusinessPartnerSet/ToProducts
odata/entity (einzeln) - z.B. /ProductSet('HT-1000')
Abfragen /
Befehle
Filtering - welche Einträge wir haben möchten
$filter
Projecting - welche Felder von der Entity ausgegeben werden
$select
Sorting - Sortierung von Feldern
$orderby
Paging - wieviele Einträge auf einmal gelesen werden (z.B. auf dem Handy werden nur 10 eingezeigt)
$top
and
$skip
Inlining - ein bisschen wie ein join, hier können wir z.B. vom BusinessPartner auch die Supplier Daten bekommen
$expand
, $expand=ToSupplier (Navigationseigenschaft)
Count - Anzahl Zeilen
$count
Value - gib mit den Wert von 1 Feld zurück /ProductSet('HT-1000')/Name/
$value
Fragezeichen ? machen wir wenn wir mit unserer Navigation fertig sind und mit den Befehlen starten
Erstellen von OData
(Backend System)
Entitäten
Entitätstypen
Darauf kann man keine Selects machen
Namenskonvention Großbuchstaben + Rest
z.B. BusinessPartner
Hier kann man eine ABAP-Struktur hinterlegen (Doppelklick im Tree auf einen Entitästypen)
Wenn man eine ABAP-Struktur hinterlegt, kann man die Eigenschaften importieren (Rechts-Click und Importieren)
Rechts-Click auf Ordner Data Model und man kann hier z.B. eine Struktur importieren (z.B. AFKO)
Entitätsmenge
Muss vom Typ Entitätstyp sein
Da drauf macht man Selects
z.B. BusinessPartnerSet
Eigenschaften (Properties)
EDM Typ (z.B. String, Double)
Genaugkeit, Skalierung
Maximale Länge
Flags: Anlegen, Aktualisieren, Sortieren, Nullwerte erlaubt, Filter
Filter und Sortierung soll man nicht überall kennzeichnen, denn dann muss man das auch Implementieren!
ABAP-Feldnamen -> aus den Properties wird eine Struktur angelegt (automatisch) die diese Felder hat
Navigationseigenschaften
Beziehungen
Product_To_BP
Die kann man direkt anlegen (aus Assotiationen)
Ablauf
Datenmodell definieren
Service registrieren und generieren von Objekten
Projekt anlegen (Transaktion
SEGW
)
Service aktivieren (
Frontend
)
Serviceimplementierung
Hier definieren wir die Funktionen zum Lesen, Erstellen (CRUD)
Rechts-Klick auf z.B. *GET_ENTITYSET und Absprung in die ABAP Workbench
Das wird also auch der Backend-Entwickler machen
Das machen wir in der Data-Provider Klasse mit *EXT
Die normale DPC Klasse darf nicht geändert werden! Die wird immer überschrieben beim generieren
Testen und aktivieren
(Frontend System)
Aktivieren von OData Services
(Frontend System)
Test im SAP Gateway-Client (Transaktion /IWFND/GW_CLIENT, oder Absprung aus Servicebearbeitung), hier kann man die Ergebnisse wie im Browser sehen
ICF-Knoten - Registrierung vom Service in einem Katalog
Transaktion /IWFND/MAINT_SERVICE, Aktivierung vom Service, ICF Knoten etc.
Testen von OData
Absprung aus Service (Aktivierung) + ICF Knoten
Direkt in die Transaktion /iwfnd/gw_client
CREATE
HTPP-Methode POST
Man kann sich einen Eintrag lesen
Und das als Testbeispiel verwenden (Bereich HTTP-Response Knopf Als Anf. verwenden)
Im Bereich HTTP-Request wird dann das gesendete BODY bearbeitet