Kontakt & Service
Jetzt Beratung vereinbaren

In wenigen Schritten einen Beratungs­termin mit unseren Experten buchen.

Anwender Helpdesk

Hilfestellung bei Problemen in Ihren SAP-Systemen.

Schulungen

Unser Schulungsangebot. Jetzt informieren!

Webinare

Unser Webinarangebot. Jetzt informieren!

Entwicklung Android-App Virtual Reality

News & Wissen Virtual Reality: Entwicklung einer Android-App mit der SAP HANA Cloud und Unity (Teil 1/3)

Marius Bossen (Junior Developer)
Autor:

Marius Bossen (Junior Developer)

In dieser dreiteiligen Reihe (Teil 2: 01.08.2020; Teil 3: 08.08.2020) wird die Entwicklung einer Virtual Reality-App für Android-Smartphones vorgestellt, die Daten aus einer SAP HANA Cloud-Datenbank bezieht.

Dafür kommt die Spieleentwicklungsplattform Unity zum Einsatz sowie eine Trial Version der SAP HANA Cloud Platform. Es wird dabei ausschließlich auf frei verfügbare Software zurückgegriffen; wer im Besitz eines Android-Smartphones ist, kann die Entwicklung also selbst mitgestalten. Um die Anwendung optional auch in VR betrachten zu können, ist eine (kostengünstige) Google Cardboard VR-Brille notwendig, mehr dazu später.

Im ersten Teil richten wir die HANA Cloud Platform ein und lernen, wie wir mit Hilfe des SAP Cloud Application Programming Models sehr einfach OData-Services erstellen können, die unsere Daten über das http-Protokoll abrufbar machen. Im zweiten und dritten Teil beschäftigen wir uns mit den Grundlagen von Unity und vollziehen die Entwicklung der Anwendung Schritt für Schritt nach.

Virtual Reality meets SAP

Virtual Reality und SAP sind zwei Themen, die man auf den ersten Blick kaum in einen Zusammenhang bringen würde. Dabei hat in den letzten Jahren eine gewisse Annäherung stattgefunden: Während sich SAP für externe Software und Endgeräte öffnet, wendet sich die Virtual Reality den Geschäftsanwendungen zu.

Ursprünglich war die SAP-Welt hauptsächlich an Desktop PCs gebunden: Über RFC und später OData konnten die Systeme zumindest mit der Außenwelt kommunizieren. Dreh- und Angelpunkt war aber die SAP GUI. Der Release und die Weiterentwicklung von SAP HANA bedeuteten nicht nur die Einführung einer neuen und wesentlich effizienteren Datenbankarchitektur, sondern auch die Transformation hin zu einer Plattform, die zunehmend unabhängig vom genutzten Endgerät ist. Von der HANA Cloud ist der Weg in die virtuelle Realität nicht mehr weit.

Worum geht es bei Virtual Reality?

Virtual Reality beschäftigt sich mit der Aufgabe, eine möglichst umfassende Simulation der Wirklichkeit zu generieren. Der Gradmesser für die Qualität von VR ist die Immersion, also das Gefühl des Nutzers, sich in der anderen Wirklichkeit zu befinden. Dabei muss die erzeugte Wirklichkeit nicht zwangsläufig den Gesetzmäßigkeiten der echten folgen. Entscheidend ist es, die Sinneseindrücke überzeugend nachzubilden – in aktuellen VR-Systemen primär optisch und haptisch.

Um eine überzeugende Darstellung zu erreichen, ist dabei ein hoher Rechenaufwand notwendig. Erst in den letzten zehn Jahren wurde die Hardware leistungsfähig und kompakt genug, um VR für den Massenmarkt zu ermöglichen. 2016 veröffentlichten die Firmen Oculus und HTC ihre VR-Brillen, die an einen leistungsfähigen Heim-PC angeschlossen werden konnten – und damit auch für einen breiteren Kreis von Endnutzern erschwinglich waren. Die Technik bot mit Kopf- und Positionstracking sowie Handcontrollern bereits eine sehr gute Immersion.

Virtual Reality: Mehr als nur Unterhaltung

Während der Haupttreiber der VR-Entwicklung auch aktuell noch die Unterhaltung ist, werden zunehmend Unternehmen auf die Möglichkeiten von VR aufmerksam. Schwerpunkte sind dabei virtuelle Trainings, Kollaboration über Entfernungen hinweg sowie Nutzer-Erlebnisse bei Kunden und Mitarbeitern. Während dieser Beitrag geschrieben wurde, war der persönliche Kontakt aufgrund der Corona-Pandemie nur eingeschränkt möglich. VR schafft im Vergleich zu Videotelefonie eine größere „Nähe“ zwischen Personen und bietet vielfältigere Möglichkeiten für Präsentationen oder auch Zusammenarbeit.

Die richtige Brille für ein vollwertiges VR-Erlebnis

Während ein vollwertiges VR-Erlebnis nur mit einer speziellen Brille und den dazugehörigen Steuergeräten erreichbar ist, kann ein kurzer Ausblick schon mit einem nicht allzu alten Android-Smartphone ermöglicht werden (ab Android Version 4.4). Unter dem Namen „Google Cardboard“ hat Google eine Schnittstelle veröffentlicht, um einfache VR-Anwendungen zu entwickeln, die vorhandene Bewegungssensoren der Smartphones nutzen. Entsprechende Brillen sind preisgünstig zu bekommen. Wer sich für das Nachbauen der Anwendung eine solche zulegen möchte, kann auf den einschlägigen Handelsplattformen nach „Google Cardboard“ suchen. Unter den unzähligen Varianten aus Pappe oder Plastik wäre z.B. das Durovis Dive Cardboard zu empfehlen. Für die Auswahl muss aber die Displaygröße des verwendeten Smartphones berücksichtigt werden.

Wer noch keine Berührungspunkte mit VR hatte, kann hier einmal reinschnuppern und ist vielleicht neugierig auf eine „richtige“ VR-Brille, die dank Gestensteuerung oder Raumtracking noch eine wesentlich bessere Erfahrung bietet.

Die Rolle von Unity bei der Entwicklung der Virtual Reality-App

Bindeglied zwischen SAP und der VR-Welt ist die Entwicklungsumgebung Unity. War Unity bei der Veröffentlichung 2014 noch komplett auf die Entwicklung von Spielen ausgerichtet, kann inzwischen ein Trend hin zu einer Software auch für Business-Lösungen beobachtet werden. Schwerpunkte sind die Bereiche VR, Animation und Automatisierung. Im Bereich VR (und Augmented Reality) ist Unity die Standard-Entwicklungsumgebung. Und für jede neue VR/AR-Plattform wird ein SDK für Unity mitgeliefert.

Vorbereitung: Einrichtung des Backends

Wir beginnen unsere Vorbereitung mit der Einrichtung des Backends. Wir nutzen einen HANA Cloud Trial Account und richten darauf einen Core Data Service (CDS) für die Kommunikation mit unserer VR-Anwendung ein.

Zunächst benötigt man einen HANA Trial Account, den man unter folgender Adresse anlegen kann:

https://account.hanatrial.ondemand.com/

Der Test-Account läuft nach 30 Tagen automatisch aus, kann aber für weitere 30 Tage reaktiviert werden. Angelegte Projekte bleiben dabei erhalten, laufende Anwendungen müssen allerdings neu gestartet werden.

Die nachfolgenden Schritte zur Einrichtung können sich gelegentlich ändern, alleine deshalb kann dieser Blogbeitrag den Prozess nicht detailliert wiedergeben. Weiter unten sind daher Links zu Tutorials angegeben, die näher ins Detail gehen und auch mögliche Problemfälle aufgreifen. Grundsätzlich ist die Einrichtung eines HANA Trial Accounts aber inzwischen recht benutzerfreundlich.

Nachdem der Account angelegt ist und man sich das erste Mal eingeloggt hat, kommt automatisch ein Subaccount mit dem Namen „trial“ zur Auswahl. In diesen loggt man sich ein und erstellt einen Dev Space.

Im HANA Cloud Cockpit steuert man darauf die SAP Web IDE an. Diese sollte gleich auf der Startseite unter „Quick Tools Access“ zu sehen sein. Gegebenenfalls muss sie auch aktiviert werden, einen entsprechenden Link dazu finden Sie unten.

Entwicklung Virtual Reality-App_1

In der SAP Web IDE überprüft man zunächst unter Tools > Workspace Preferences, ob die SAP Cloud Platform Business Application Development Tools aktiviert sind:

Entwicklung Virtual Reality-App_2

Jetzt kann das Projekt angelegt werden: In der Web IDE wählt man aus dem Menu File> New> Project from Template und in dem erscheinenden Wizard das Template SAP Cloud Platform Business Application.

Entwicklung Virtual Reality-App_3

Unter Basic Information wählen wir als Projektbeschreibung „Webshop“, bei Template Customization muss nichts verändert werden. Unter Project Details sollte man statt JAVA in dem entsprechenden Dropdown Node.JS auswählen. Die Auswahl ist für dieses Projekt nicht entscheidend. Wählt man JAVA, muss aber der Name des JAVA Packages angegeben werden und mit dem Namespace der Anwendung übereinstimmen.

Nach Anlage des Projekts sieht man, dass das Template bereits einige Dateien angelegt hat. Wir öffnen in dem Ordner „db“ die Datei „data-model.cds“.

Wir löschen den Beispielinhalt und ersetzen ihn wie folgt:

namespace my.webshop;
entity Categories {
key ID : Integer;
title : String;
imageUrl : String;
}

entity Products {
key ID : Integer;
category : Integer;
shortname : String;
manufacturer : String;
price : Decimal;
stock : Decimal;
}

Wir definieren damit die zwei Entitäten „Categories“ und „Products“ und deren Eigenschaften. Diese Arbeit hätten wir in einem älteren SAP-System mit Gateway Client in der Transaktion SEGW vorgenommen.

Die Einträge der Entität „Category“ bestehen aus einer ID als Schlüssel, dem Titel der Kategorie und einer URL, die auf ein Bild zeigt. Dieses Bild soll später in der Anwendung das Auswahlfeld der jeweiligen Kategorie schmücken. Möglich wäre es auch, das Bild selbst als Dateityp „LargeBinary“ zu hinterlegen. Aber der Upload von Binärdateien ist nicht mit dem später verwendeten Database Explorer möglich und die Implementierung einer Upload-Funktion ist noch ein weiteres Thema, das hier zu weit führt.

Die Entität „Products“ besteht ebenfalls aus einer ID als Schlüssel, einem Feld „category“, das der ID der Entität „Category“ entspricht (um später alle Produkte einer Kategorie filtern zu können), einem Produktnamen, dem Hersteller, dem Preis und der Lagermenge, die wir später aus der Anwendung ändern wollen.

Beim Speichern der Dateien wird automatisch ein Build-Prozess gestartet, der an dieser Stelle noch auf eine Fehlermeldung läuft. Diese können wir zunächst ignorieren. Nachdem wir die Entitäten angelegt und gespeichert haben, öffnen wir im Order „srv“ die Datei „cat-service.cds“ und ändern den Inhalt wie folgt:

using { my.webshop} from '../db/data-model';
service CatalogService {
entity Categories as projection on webshop.Categories;
entity Products  as projection on webshop.Products;
}

Wir definieren somit die Services „Categories“ und „Products“, welche die oben angelegten gleichnamigen Entitäten als Grundlage haben. Mit diesen Service-Definitionen wurde bereits ein OData-Service erzeugt, auf den sich CRUD Operationen ausführen lassen. An dieser Stelle wird deutlich, wie stark die SAP HANA Cloud Platform und das Cloud Application Programming Model die Erzeugung von OData-Services vereinfacht. Die Implementierung der Services hätte in der alten SAP-Welt für jede Entität und jede CRUD-Operation einzeln und „per Hand“ erfolgen müssen.

Anschließend öffnen wir per Rechtsklick das Kontextmenu des Ordners „db“ und mit Build>Build werden die Datenbank-Artefakte erzeugt.

Ein Rechtsklick auf den Ordner „srv“ und im Kontextmenu Run>Runs as Node.js Application startet der Service. Ab jetzt ist der Service aktiv und über eine URL erreichbar. Noch sind keine Daten vorhanden, aber man kann schon einen Blick auf die Metadaten werfen und prüfen ob alles soweit funktioniert. Dafür begibt man sich in das HANA Cloud Cockpit, wählt den entsprechenden Space und findet dort die Anwendung sowie die Datenbank. Sie sollten jetzt beide den Status „Started“ haben.

Entwicklung Virtual Reality-App_4

Mit einem Klick auf die Serviceapplikation öffnet eine Übersicht, in der sich oben der Link befindet, mit dem der Service per https angesprochen werden kann. Diese URL wird später für die Unity-Anwendung benötigt.

Entwicklung Virtual Reality-App_5

Wenn man diesen Link öffnet, erhält man Sicht auf den Service-Katalog und kann durch diesen navigieren. Da wir keinerlei Zugriffsbeschränkungen gegeben haben (etwa eine Annotation „@readonly“ für die Entitäten) ist es jetzt möglich, per REST Client direkt CRUD-Operationen auf den Service und damit die dahinterliegende Datenbank auszuführen. Natürlich würde in einem produktiven Szenario eine Authentifizierung dafür vorgesehen werden, die sich mit dem CAP ebenfalls recht komfortabel umsetzen lässt. Um aber in diesem Beispielprojekt den Umfang vor allem bei der Unity-Anwendung gering zu halten, sichern wir unsere Testdatenbank an dieser Stelle nicht weiter.

Entwicklung Virtual Reality-App_6

Nun verfügen die Entitäten noch über keine Testdaten. Um diese hinzuzufügen, nutzen wir den Database Explorer in der SAP Web IDE. Es muss wie auch zuvor SAP Cloud Platform Business Application Development Tools unter Tools > Workspace Preferences aktiviert werden. Entweder wird jetzt direkt ein Pop-up angezeigt mit der Aufforderung zur Verbindung oder der Explorer muss einmal in der Web IDE über Tools>Database Explorer bzw. den Eintrag in der Symbolleiste links gestartet werden.

Es folgt ein weiteres Pop-up mit dem Hinweis, dass jetzt eine Datenbank angelegt werden kann. Hier klickt man auf „Yes“. Nach Auswahl der Datenbank im Database Explorer geht man auf die „Tables“. Mit einem Rechtsklick und der Wahl von „Show Tables“ im Kontextmenu werden die verfügbaren Tabellen angezeigt – für jede Entität jeweils eine. Im Kontextmenu einer Tabelle wählt man anschließend „Open Data“ und kann die Tabelle bearbeiten.

Entwicklung Virtual Reality-App_7

In die Tabelle „Categories“ tragen wir folgende Werte ein:

ID: 1
title: Smartphones
imageurl:
https://www.dropbox.com/s/w7v4nc1shrjsnow/CategorySmartphone.png?dl=1

ID: 2
title: TV
imageurl:
https://www.dropbox.com/s/0q3tvtovjoodjjk/CategoryTV.png?dl=1

ID: 3
title: Gadgets
imageurl:
https://www.dropbox.com/s/peclmlsuv9o4l68/CategoryGadgets.png?dl=1

Die Fotos für die Kategorien sind der freien Bilderbibliothek www.pixabay.de entnommen. Die dortige Lizenz erlaubt uns eine recht freie Nutzung. Die Anwendung generiert aus diesen Daten später dynamisch die Auswahlfelder für die Produktkategorien, so dass sich Produkte und Kategorien jederzeit nachträglich einfügen lassen. Die Tabelle für die Produkte sollte für mindestens zwei Kategorien mehrere Produkte enthalten; wer möchte kann nach Belieben Produkte ergänzen:

ID shortcut

Nach dem Speichern der Daten sind diese über den Service verfügbar. Über unsere Service-URL ist eine Überprüfung mit einem Browser möglich. Wir fügen der URL „/catalog/Categories“ hinzu, um eine Auflistung aller Einträge der Entität zu erhalten.

Entwicklung Virtual Reality-App_8

In der alten SAP-Welt wäre schon für diesen Aufruf die Redefinition der getEntitySet-Methode nötig. Hier wurde alles automatisch implementiert. Analog finden wir über „/catalog/Categories(1)“ den Eintrag mit dem Schlüsselwert 1 (getEntity Methode).

Auch Filter funktionieren bereits, was wir in der Anwendung auch nutzen werden:

Entwicklung Virtual Reality-App_9

Wir haben jetzt also eine SAP HANA Cloud-Datenbank, die wir über eine URL per http Request auslesen können. Unter dieser Voraussetzung machen wir uns in den nächsten Teilen an die Entwicklung der Anwendung mit Unity.

Tutorials/Quellen zur Einrichtung der SAP HANA Cloud und der WEB IDE:

  • Subaccount anlegen:

https://help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/05280a123d3044ae97457a25b3013918.html

  • Cloud Foundry Space anlegen:

https://help.sap.com/viewer/825270ffffe74d9f988a0f0066ad59f0/CF/en-US/98f49286ac05492f88428c603d146fc3.html

  • OData-Service in der WEB IDE anlegen:

https://developers.sap.com/group.scp-8-odata-service.html

  • Database Explorer:

https://developers.sap.com/tutorials/odata-06-add-data-odata-service.html

Newsletter Setzen Sie auf fundiertes Wissen aus allen Bereichen unserer Branche. Regelmäßig und stets aktuell.
2 Personen beraten am Computer
Kontakt Haben Sie Fragen oder wünschen weitere Informationen? Unsere Experten beraten Sie gerne.