Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten...

34
Leseprobe Diese Leseprobe führt Sie Schritt für Schritt in die Programmierung einer nativen SAP-HANA-Anwendung ein. An einem einfachen Bei- spiel erläutern die Autoren den Aufbau und die Verwendung der SAP HANA Extended Applications Services (XS) sowie die Struktur einer nativen SAP-HANA-Anwendung. Am Ende der Leseprobe finden Sie das Inhaltsverzeichnis, die Einleitung und das gesamte Stichwort- verzeichnis des Buchs. Stefan Kühnlein, Holger Seubert Native Anwendungsentwicklung mit SAP HANA 504 Seiten, gebunden, Mai 2016 69,90 Euro, ISBN 978-3-8362-3867-0 www.sap-press.de/3916 »Struktur einer nativen SAP-HANA- Anwendung« »Einleitung« Inhaltsverzeichnis Index Die Autoren Leseprobe weiterempfehlen SAP-Wissen aus erster Hand.

Transcript of Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten...

Page 1: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

LeseprobeDiese Leseprobe führt Sie Schritt für Schritt in die Programmierung einer nativen SAP-HANA-Anwendung ein. An einem einfachen Bei-spiel erläutern die Autoren den Aufbau und die Verwendung der SAP HANA Extended Applications Services (XS) sowie die Struktur einer nativen SAP-HANA-Anwendung. Am Ende der Leseprobe finden Sie das Inhaltsverzeichnis, die Einleitung und das gesamte Stichwort- verzeichnis des Buchs.

Stefan Kühnlein, Holger Seubert

Native Anwendungsentwicklung mit SAP HANA504 Seiten, gebunden, Mai 2016 69,90 Euro, ISBN 978-3-8362-3867-0

www.sap-press.de/3916

»Struktur einer nativen SAP-HANA- Anwendung« »Einleitung«

Inhaltsverzeichnis

Index

Die Autoren

Leseprobe weiterempfehlen

SAP-Wissen aus erster Hand.

Page 2: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

61

Kapitel 2

In diesem Kapitel lernen Sie Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native Anwendungen erstellen und auf der SAP-HANA-Plattform ausführen lassen können.

2 Struktur einer nativen SAP-HANA-Anwendung

In SAP HANA ist neben der eigentlichen Datenbank unter anderemauch ein Applikationsserver integriert, aus diesem Grund wird SAPHANA nicht als Datenbank, sondern als Plattform bezeichnet. In die-sem Kapitel erlernen Sie die wichtigsten Kenntnisse, die Sie für dieErstellung nativer Anwendungen mit der SAP-HANA-Plattform be-nötigen. Dazu zeigen wir Ihnen, wie Sie eine einfache native An-wendung mithilfe des SAP HANA Studios erstellen. Am Ende diesesKapitels erklären wir Ihnen noch einige Besonderheiten, die bei Ent-wicklung nativer Anwendungen mit dem Trial-Account der SAPHANA Cloud Platform (SAP HCP) zu berücksichtigen sind. Sollten SieZugriff auf ein On-Premise-System bzw. über einen kostenpflichti-gen Account der SAP HCP haben, können Sie natürlich auch diesenZugang benutzen.

Checkliste

Um die Beispiele aus diesem Kapitel ausprobieren zu können, benötigen Sie:

� Zugang zu einer SAP-HANA-Plattform

� SAP HANA Studio

In Abschnitt 1.5.2, »Benutzerkonto für die SAP HANA Cloud Plat-form anlegen«, haben wir Ihnen gezeigt, wie Sie sich für die SAP-HANA-Trial-Instanz registrieren, um einen entsprechenden Accountfür die Entwicklung nativer Anwendungen zu erhalten. Sowohl fürdas erste einfache Beispiel als auch für die meisten Beispiele in denfolgenden Kapiteln ist dieser Entwickler-Account völlig ausreichend.

3867.book Seite 61 Dienstag, 3. Mai 2016 2:51 14

Page 3: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

62

Des Weiteren haben wir in Abschnitt 1.6, »SAP HANA Studio«, be-schrieben, wie die Entwicklungsumgebung für die SAP-HANA-Platt-form aufgesetzt wird. Sollten Sie noch nicht über eine funktionie-rende Entwicklungsumgebung verfügen, sollten Sie diese Schrittenun nachholen.

2.1 Architektur und Programmiermodell der SAP-HANA-Plattform

Die SAP HANA Extended Application Services Engine (XS Engine)bildet die Grundlage für die Entwicklung nativer Anwendungen undbesteht aus mehreren Kernkomponenten. Die wichtigsten sind einvoll funktionsfähiger Applikationsserver und ein integrierter Web-server. Neben der SAP HANA XS Engine sind in der SAP-HANA-Platt-form noch weitere Komponenten für die Entwicklung von Anwen-dungen integriert, wie die SAP HANA Web-based DevelopmentWorkbench und die Werkzeuge zur Administration der XS Engine.

XS Engine Die Komponenten der XS Engine werden bei der Installation mit in-stalliert, d.h., es wird keine zusätzliche Hardware benötigt. SAP hatsich bewusst dafür entschieden, diese Komponenten in die SAP-HANA-Plattform zu integrieren. Aufgrund dieser Entscheidung kannmit der XS Engine wesentlich performanter auf die Daten innerhalbder SAP-HANA-Datenbank zugegriffen werden, da hierzu keine zu-sätzlichen Protokolle wie Java Database Connectivity (JDBC) oderOpen Database Connectivity (ODBC) benötigt werden.

Mit der XS Engine werden im Wesentlichen zwei Grundprinzipienverfolgt:

� einfache Entwicklung SAP-HANA-basierter Anwendungen sowiederen Einsatz bei gleichzeitiger Minimierung von Architektur-schichten

� Entwicklung performanter Anwendungen, die eng mit der SAP-HANA-Datenbank verknüpft sind und somit die Leistungsfähigkeitder SAP-HANA-Datenbank vollständig ausschöpfen

Mit der XS Engine haben Sie die Möglichkeit, webbasierte Anwen-dungen direkt auf der SAP-HANA-Plattform laufen zu lassen, ohne

3867.book Seite 62 Dienstag, 3. Mai 2016 2:51 14

Architektur und Programmiermodell der SAP-HANA-Plattform 2.1

63

einen zusätzlichen Server zu benötigen. Hierdurch kann die Komple-xität die Systemlandschaften deutlich reduziert werden.

Programmier-modell

Das Programmiermodell nativer Anwendungen, die mithilfe der XSEngine innerhalb der SAP-HANA-Datenbank ausgeführt werden,lässt sich in die drei folgenden Bereiche unterteilen:

� Technologien für das grafische User InterfaceDas grafische User Interface (GUI) wird für native Anwendungenin der Regel an einen Browser oder ein mobiles Endgerät delegiert.Die Erstellung des GUI und die damit verbundene clientseitigePräsentationslogik erfolgt auf Basis von HTML5 und clientseitigemJavaScript. Mit SAPUI5 wird durch die SAP-HANA-Plattform eineHTML5-basierte Frontend-Technologie bereitgestellt. Selbstver-ständlich können auch andere Clients verwendet werden; jedochsollte dann die Anbindung an SAP HANA über REST-Schnittstellenbzw. über OData erfolgen.

� Technologien für die DatenverarbeitungDie wesentlichen Anteile der Applikationslogik, die Geschäftslogik,Berechnungen oder datenintensive Operationen sollten mithilfevon SQL, SQLScript oder der Calculation Engine (CE) implemen-tiert werden. Auf diese Weise wird die vollständige Anwendungs-verarbeitung innerhalb der SAP-HANA-Datenbank ausgeführt.Somit wird die Leistungsfähigkeit der SAP-HANA-Plattform voll-ständig ausgenutzt.

� Technologie für den KontrollflussDer größte Teil einer Anwendung ist mit diesem Programmiermo-dell bereits erledigt. Es bleiben nur noch Aufgaben im Bereich derAblauflogik übrig. Diese Aufgaben werden vom Applikationsser-ver und vom Webserver der XS Engine übernommen. Sie bildensomit das Bindeglied zwischen der Benutzerschnittstelle und derVerarbeitung innerhalb der Datenbank. Zu diesem Zweck stehendie folgenden Technologien zur Verfügung:

– serverseitiges JavaScript

– OData (Open Data Protocol)

– XMLA (eXtensible Markup Language for Analysis)

Abbildung 2.1 zeigt die grundlegende Architektur einer nativen SAP-HANA-Anwendung.

3867.book Seite 63 Dienstag, 3. Mai 2016 2:51 14

Page 4: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

64

Abbildung 2.1 Architektur einer nativen SAP-HANA-Anwendung

Repository Zusätzlich beinhaltet die SAP-HANA-Plattform ein eigenes Reposi-tory für das Content Lifecycle Management. In diesem Repositorywerden alle Arten von Entwicklungsobjekten gespeichert. Der Um-fang von Anwendungen, die mithilfe der XS Engine erstellt werdenkönnen, erstreckt sich von kleinen, leichtgewichtigen Webanwen-dungen bis hin zu komplexen Unternehmensanwendungen.

2.2 Ihre erste Anwendung erstellen

Nachdem Sie die wichtigsten Grundlagen der XS Engine kennenge-lernt haben, zeigen wir Ihnen nun, wie Sie eine erste einfache An-wendung erstellen und ausführen. Im Rahmen dieses ersten kleinenEntwicklungsbeispiels erstellen wir mithilfe von serverseitigem Java-Script eine native Anwendung, die den Text »Hello World!« im Web-browser anzeigt.

SAP HANA Studio In den folgenden Kapiteln werden wir Ihnen dann zeigen, wie Sieumfangreichere Anwendungen auf Basis der XS Engine erstellenkönnen. Die Entwicklung des ersten Beispiels erläutern wir Ihnenanhand des SAP HANA Studios. Das SAP HANA Studio ist besonders

Präsentationslogik

SAP HANA

BerechnungslogikDaten

Extended Application Services

Client: Browser oder Mobile

Kontrollflusslogik

3867.book Seite 64 Dienstag, 3. Mai 2016 2:51 14

Ihre erste Anwendung erstellen 2.2

65

für den ersten Einstieg in die Programmierung von nativen Anwen-dungen geeignet, da Wizards und Templates für alle benötigten Ob-jekte bereitgestellt werden.

Web-based Development Workbench

Alternativ können Sie Ihre erste native Anwendung natürlich auchmit der SAP HANA Web-based Development Workbench erstellen.Diese Entwicklungsumgebung steht Ihnen sowohl in einer On-Premise- als auch einer Cloud-Umgebung zur Verfügung. In einerOn-Premise-Umgebung kann die SAP HANA Web-based Develop-ment Workbench über die URL http://<host:port>/sap/hana/ide ge-startet werden. Um die Web-based Development Workbench in einerCloud-Umgebung zu starten, finden Sie im SAP HCP Cockpit einenentsprechenden Link unter dem Navigationseintrag HANA XS Appli-

cations (siehe Abbildung 2.2).

Abbildung 2.2 Start der SAP HANA Web-based Development Workbench

Schritte zur Anwendungs-entwicklung

Für die Erstellung unserer ersten Anwendung mit dem SAP HANAStudio müssen Sie die folgenden vier Schritte durchführen:

1. Repository Workspace erstellen

2. ein neues Projekt anlegen und teilen

3. den serverseitigen Code mit JavaScript erstellen

4. Daten darstellen

3867.book Seite 65 Dienstag, 3. Mai 2016 2:51 14

Page 5: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

66

2.2.1 Repository Workspace erstellen

Bei der Entwicklung einer nativen Anwendung mit dem SAP HANAStudio werden alle erstellten Entwicklungsobjekte im sogenanntenRepository Workspace abgelegt. Dieser Workspace stellt das Binde-glied zwischen dem lokalen Dateisystem und dem zentralen SAPHANA Repository dar. Mithilfe dieses Repositorys können weitereEntwickler bereits erstellte Entwicklungsobjekte in ihr lokales Datei-system laden. Auf diese Art und Weise können mehrere Entwicklergemeinsam eine native SAP-HANA-Anwendung programmieren.

Sie erstellen einen neuen Repository Workspace im SAP HANA Stu-dio in der Perspektive SAP HANA Development. Voraussetzung isthier, dass Sie bereits eine Verbindung zu einem SAP-HANA-Systemeingerichtet haben.

View»Repositories«

In der Perspektive SAP HANA Development wird der View Reposi-

tories bereitgestellt. Wählen Sie dort im Menü File � New � Reposi-

tory Workspace aus, und geben Sie folgende Informationen ein,um einen neuen Repository Workspace zu erstellen (siehe Abbil-dung 2.3):

� SAP HANA Systems

In dieser Auswahlbox wählen Sie das SAP-HANA-System aus, mitdem die Synchronisation des Workspace erfolgen soll.

� Workspace Name

Der Workspace-Name ist beliebig. Wir haben für unsere erste na-tive SAP-HANA-Anwendung den Namen »DevWS« gewählt. Dervon Ihnen gewählte Name des Workspace wird durch den Wizardauch in das Feld Workspace Location integriert.

� Workspace Root

Der Workspace Root entspricht dem Verzeichnis, in dem die loka-len Objekte des Repositorys gespeichert werden. Dieses Verzeich-nis kann an einer beliebigen Stelle auf der Festplatte liegen. Inunserem Beispiel verwenden wir anstelle des Standardverzeichnis-ses das Verzeichnis C:\SAPHana\DevWS.

Nachdem Sie alle Informationen eingegeben haben, beenden Sie denDialog. In der Ansicht Repositories sehen Sie den neu angelegtenWorkspace (siehe Abbildung 2.4).

3867.book Seite 66 Dienstag, 3. Mai 2016 2:51 14

Ihre erste Anwendung erstellen 2.2

67

Abbildung 2.3 Neuen Repository Workspace erstellen

Abbildung 2.4 Neues Repository

2.2.2 Neues XS-Projekt anlegen

Neues XS-ProjektÄhnlich wie bei Java-Projekten muss für die Entwicklung einer nati-ven SAP-HANA-Anwendung ein entsprechendes XS-Projekt erstelltwerden. Dieses XS-Projekt enthält alle notwendigen Bibliotheken,Ordner und Dateien, die für die weitere Entwicklung notwendigsind.

Um ein neues XS-Projekt anzulegen, wählen Sie im Menü File � New �Projekt. Daraufhin öffnet das SAP HANA Studio den Dialog zur Aus-wahl des Projekttyps (siehe Abbildung 2.5). Der Wizard für die An-lage eines XS-Projekts befindet sich unter SAP HANA � Application

Development. Alternativ können Sie diesen Wizard auch über das

3867.book Seite 67 Dienstag, 3. Mai 2016 2:51 14

Page 6: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

68

Kontextmenü New des Views Project Explorer in der PerspektiveSAP HANA Development öffnen.

Abbildung 2.5 Auswahl des Projekttyps »XS Project«

Wizard zurErstellung einesneuen Projekts

Im Wizard zur Anlage eines neuen Projekts erfassen Sie nun fol-gende Informationen (siehe Abbildung 2.6):

� Project name

In diesem Feld spezifizieren Sie den Namen des Projekts. Da alleProjektnamen im Arbeitsbereich des SAP HANA Studios eindeutigsein müssen, empfehlen wir, bei der Vergabe des Projektnamensden vollständigen Paketnamen zu verwenden.

� location

In diesem Feld definieren Sie das lokale Verzeichnis, in dem dieProjektdateien gespeichert werden. Hierzu schlägt das SAP HANAStudio bereits ein Verzeichnis vor. Wenn Sie dieses Verzeichnisnicht übernehmen wollen, können Sie es überschreiben. Zu die-sem Zweck müssen Sie das Häkchen in der Checkbox Share Pro-

ject in SAP repository entfernen und das Projekt zu einemspäteren Zeitpunkt dem Repository hinzufügen.

� Working sets

Mit dieser Option können Sie das Projekt optional einem beste-henden oder neuen Working Set hinzufügen. Mit einem WorkingSet können Sie ähnliche Projekte zur Anzeige oder zur Durchfüh-rung von Operationen gruppieren. Eine solche Aktion kann z.B.

3867.book Seite 68 Dienstag, 3. Mai 2016 2:51 14

Ihre erste Anwendung erstellen 2.2

69

die Suche nach bestimmten Inhalten von Dateien aus einem Work-ing Set sein.

Für unser erstes Projekt sollten Sie wie in Abbildung 2.6 »xs.exam-ple.hello« als Projektnamen eingeben.

Abbildung 2.6 Neues XS-Projekt anlegen

Nachdem Sie den Wizard mit finish geschlossen haben, sollte dasneue Projekt, wie in Abbildung 2.7 zu sehen, im View Project Ex-

plorer sichtbar sein.

Abbildung 2.7 Darstellung des neuen Projekts

Anwendungs-projekt teilen

Durch das Teilen des Projekts werden alle Inhalte des neuen Projektsfür weitere Mitglieder des Entwicklungsteams sichtbar, sofern dieseebenfalls eine Verbindung zu demselben Repository eingerichtet ha-ben. Auf diese Art und Weise lassen sich verschiedene Versionen derEntwicklungsobjekte verwalten und zwischen den Mitgliedern desEntwicklungsteams synchronisieren.

3867.book Seite 69 Dienstag, 3. Mai 2016 2:51 14

Page 7: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

70

Wenn Sie bei der Anlage des Projekts das Häkchen bei der OptionShare project in SAP repository gesetzt haben, wird das Projekt beider initialen Erstellung automatisch dem SAP HANA Repository hin-zugefügt. Andernfalls müssen Sie das Projekt manuell hinzufügen.

Teilen einesProjekts

Um das Projekt manuell dem Repository hinzuzufügen, wechseln Sieauf den View Project und wählen das zu teilende Projekt aus. ImKontextmenü wählen Sie Team � Share Projekt, um den Wizard zumTeilen des Projekts zu starten. Als Repository-Typ wählen Sie SAP

HANA Respository aus (siehe Abbildung 2.8).

Abbildung 2.8 Auswahl des SAP HANA Repositorys

Auswahl desRepositoryWorkspace

Über den Butten Next gelangen Sie zur nächsten Seite des Wizards.Auf dieser Seite müssen Sie nun den Repository Workspace aus-wählen, in dem das Projekt gespeichert werden soll. Wenn Sie nureinen Repository Workspace erstellt haben, wird dieser im Wizardautomatisch vorausgewählt. Sollten Sie jedoch mehrere RepositoryWorkspaces erstellt haben, müssen Sie einen bestehenden Reposi-tory Workspace auswählen, in dem das Projekt hinzugefügt wer-den soll.

Über die Option Add Project Folder as Subpackage können Siedefinieren, dass der Name des Projekts als Name für das Paket imRepository angelegt wird. Möchten Sie den Namen des Pakets imRepository ändern, entfernen Sie das Häkchen in dieser Checkboxund geben den Namen für das Paket in das Textfeld Repository

Package ein (siehe Abbildung 2.9).

3867.book Seite 70 Dienstag, 3. Mai 2016 2:51 14

Ihre erste Anwendung erstellen 2.2

71

Abbildung 2.9 Projekt teilen

Ablage des Projekts mit dem SAP-HANA-Trial-Account

Wenn Sie – wie vorgeschlagen – für Ihr neues Projekt den SAP-HANA-Trial-Account verwenden, müssen Sie darauf achten, dass das neue Pro-jekt unter Ihrem Account im Repository <Account>.<SAP-HANA-Instanz>angelegt wird. In unserem Fall lautet der Name des Accountsp1941740427trial. Der Name der SAP-HANA-Instanz lautet in unseremFall native.

Commit der Projektdateien

Nachdem das Projekt dem Workspace Repository hinzugefügt wurde,müssen Sie nun die einzelnen Dateien dem Repository hinzufügen.Das Hinzufügen der Dateien verläuft ähnlich wie der Check-in vonDateien in ein CSV-, SVN- oder Git-Repository. Um die Dateien demWorkspace Repository hinzuzufügen, wählen Sie die entsprechendeDatei aus und öffnen das Kontextmenü über die rechte Maustaste. ImBereich Team wählen Sie die Operation Commit aus, um die Dateidem Repository hinzuzufügen.

2.2.3 Serverseitiges JavaScript

Wir haben nun ein Projekt aufgesetzt und können mit der Program-mierung einer ersten kleinen Anwendung beginnen. Wie Sie es aus

3867.book Seite 71 Dienstag, 3. Mai 2016 2:51 14

Page 8: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

72

anderen Programmierhandbüchern kennen, verwenden wir auchhier das beliebte Beispiel »Hello World!«.

Konzept der erstenAnwendung

Diese erste Beispielanwendung programmieren wir mithilfe der XSEngine und serverseitigem JavaScript. Unsere JavaScript-Datei wirdinnerhalb der XS Engine ausgeführt und soll eine HTML-Seite erzeu-gen, auf der der Text »Hello World!« ausgegeben wird.

Hierfür müssen wir die folgenden Dateien erstellen:

� MyFirstSapHanaApp.xsjsDiese Datei enthält den serverseitigen JavaScript-Code.

� .xsappDiese Datei markiert den Startpunkt der Pakethierarchie für dieAnwendung, auf deren Inhalt über das HTTP-Protokoll zugegriffenwerden kann.

� .xsaccessMithilfe dieser Datei können Sie die Zugriffsrechte auf die jeweili-gen Anwendungspakete für jede XS-Anwendung festlegen, dievon Ihnen entwickelt und bereitgestellt wird.

Datei MyFirstSapHanaApp.xsjs anlegen

Neue Dateianlegen

Um eine neue Datei anzulegen, wählen Sie im Menü File � New. Da-raufhin öffnet das SAP HANA Studio den Dialog zur Auswahl desentsprechenden Wizards. Für die Erstellung einer XS-JavaScript-Datei stellt das SAP HANA Studio einen Wizard bereit, der unterdem Gliederungspunkt SAP HANA � Application Development zufinden ist. In Abbildung 2.10 sind die verfügbaren Wizards zur Er-stellung von nativen Anwendungen dargestellt.

Datei automatisch dem Repository hinzufügen

Wenn Sie das SAP HANA Studio verwenden, um neue Dateien zu erstel-len, wird die neue Datei durch den Wizard automatisch dem SAP HANARepository hinzugefügt und automatisch zum Bearbeiten geöffnet.

XS-JavaScript-Datei erstellen

Im nächsten Schritt müssen Sie die Namen der zu erstellenden XS-JavaScript-Datei und das Hauptverzeichnis angeben, in dem die neueDatei erstellt werden soll. In unserem Beispiel ist das richtige Haupt-verzeichnis bereits ausgewählt, und Sie müssen nur noch den Namender XS-JavaScript-Datei festlegen.

3867.book Seite 72 Dienstag, 3. Mai 2016 2:51 14

Ihre erste Anwendung erstellen 2.2

73

Wie bereits erwähnt, soll der Name für unsere XS-JavaScript-DateiMyFirstSapHanaApp.xsjs lauten. Geben Sie ihn in das Feld File name

ein, wie in Abbildung 2.11 zu sehen.

Abbildung 2.10 Auswahl des Wizards zur Erstellung einer neuen XS-JavaScript-Datei

Abbildung 2.11 XS-JavaScript-Datei erstellen

3867.book Seite 73 Dienstag, 3. Mai 2016 2:51 14

Page 9: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

74

Templateauswählen

Bei der Erstellung einer XS-JavaScript-Datei können Sie bereits einTemplate auswählen, um ein entsprechendes Grundgerüst für dieDatei zu erzeugen. Für unser Beispiel ist dies nicht notwendig.

Template »Basic« verwenden

Für ein initiale Skriptstruktur stellt das SAP HANA Studio das TemplateBasic bereit. Mithilfe dieses Templates kann die Struktur für eine einfacheRequest-Response-Behandlung erstellt werden.

Der erste nativeSAP-HANA-Code

Nachdem der Wizard die Datei erzeugt hat, öffnet das SAP HANAStudio die Datei MyFirstSapHanaApp.xsjs im Editor. In dieser Dateigeben Sie nun die folgenden zwei Zeilen ein:

$.response.contentType = "text/html";$.response.setBody( "Hello World!");

Dies ist der vollständige Inhalt Ihrer ersten nativen XS-Anwendung.Um die HTML-Seite zu erstellen, verwenden wir die JavaScript-APIresponse. Um diese JavaScript-API verwenden zu können, muss das$-Zeichen vorangestellt werden.

Speichern der Datei

Beim Speichern der Datei werden die Änderungen automatisch ins SAPHANA Repository übertragen.

XS-JavaScript-Datei aktivieren

Um unsere erste native SAP-HANA-Anwendung ausführen zu kön-nen, müssen Sie die Datei im Repository der SAP-HANA-Plattformaktivieren. Durch die Aktivierung kennzeichnen Sie, dass der Inhaltfertig bearbeitet ist und die Datei für die Ausführung verwendet wer-den kann.

Automatisches Aktivieren beim Speichern

Wenn Sie mit der SAP HANA Web-based Development Workbencharbeiten, wird die Datei beim Speichern automatisch im Repository derSAP-HANA-Datenbank aktiviert, sofern die Datei keinerlei Compile-Feh-ler enthält.

Zum Aktivieren der Datei wählen Sie sie aus, öffnen das Kontext-menü mit der rechten Maustaste und wählen den Eintrag Team �

Activate. Alternativ können Sie auch die Tastenkombination (Strg)+ (F3) verwenden.

3867.book Seite 74 Dienstag, 3. Mai 2016 2:51 14

Ihre erste Anwendung erstellen 2.2

75

Nach dem erfolgreichen Aktivieren der Datei wechselt das Symbolvor dem Namen der Datei im Project Explorer. Anstelle der grauenRaute wird nun ein gelbes Datenbanksymbol angezeigt (siehe Abbil-dung 2.12).

Abbildung 2.12 Darstellung aktivierter Dateien

Application Descriptors erstellen

Application Descriptors

Jede native SAP-HANA-Anwendung, die mithilfe der XS Engine aus-geführt werden soll, benötigt zwei Application Descriptors. DieseApplication Descriptors müssen im Root-Paket der Anwendung vor-handen sein. Die Dateinamen der beiden Application Descriptorslauten:

� .xsapp

� .xsaccess

Die .xsapp-Datei ist eine leere Datei und liegt im Root-Verzeichnisder Anwendung. Diese Datei markiert den Startpunkt der Anwen-dung, von dem aus die Inhalte an den Client übertragen werden.

Die .xsaccess-Datei ist für die Sicherheit der nativen SAP-HANA-An-wendung notwendig. In dieser Datei wird geregelt, wer mit welchenRechten auf die native SAP-HANA-Anwendung zugreifen darf.

Application Descriptors automatisch anlegen

Wenn Sie im Wizard zum Anlegen eines neuen Projekts schon das zustän-dige Repository auswählen, können Sie auf der dritten Seite des Wizardsauswählen, ob diese beiden Application Descriptors gleich mit angelegtwerden sollen.

Sollten diese beiden Datei noch nicht in Ihrem Workspace vorhan-den sein, müssen Sie diese vor dem ersten Ausführen der nativenAnwendung erstellen und aktivieren. Bei der Erstellung der Applica-

3867.book Seite 75 Dienstag, 3. Mai 2016 2:51 14

Page 10: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

76

tion Descriptors unterstützt Sie das SAP HANA Studio durch dieWizards XS Application Access File und XS Application Descriptor

File.

Fehlender Application Descriptor

Fehlen ein oder beide Application Descriptors, wird beim Ausführen derAnwendung im Browser der Fehler 404 angezeigt.

.xsapp-Dateianlegen

Markieren Sie im SAP HANA Studio Ihr Projekt. Über New � Other

im Kontextmenü oder mit der Tastenkombination (Strg) + (N) öffnenSie den Dialog zur Auswahl des Wizards. Um die .xsapp-Datei zuerstellen, müssen Sie den Wizard XS Application Descriptor File

auswählen. Im zweiten Schritt müssen Sie lediglich das Root-Ver-zeichnis auswählen, in dem der Application Descriptor gespeichertwerden soll (siehe Abbildung 2.13). Da diese Datei keinen weiterenInhalt enthält, müssen Sie sie nach der Erstellung nicht weiter bear-beiten.

Abbildung 2.13 Wizard zum Erzeugen der .xsapp-Datei

.xsaccess-Dateianlegen

Um die .xsaccess-Datei zu erstellen, verfahren Sie ähnlich. Hierbeiwerden Sie durch den Wizard XS Application Access File unter-stützt. Wählen Sie hier ebenfalls das Root-Verzeichnis aus, in demdiese Datei gespeichert werden soll. Das SAP HANA Studio stellt das

3867.book Seite 76 Dienstag, 3. Mai 2016 2:51 14

Ihre erste Anwendung erstellen 2.2

77

Template Basic bereit, über das Sie die Datei initial füllen können(siehe Abbildung 2.14).

Abbildung 2.14 Wizard zum Erzeugen der .xsaccess-Datei

Für unser erstes kleines Beispiel müssen Sie an dieser Datei keineÄnderungen vornehmen. In Listing 2.1 ist der initiale Inhalt desApplication Descriptors dargestellt, der auf Basis des TemplatesBasic erstellt wird.

{"exposed" : true,"authentication" :

{"method": "Form"

},"cache_control" : "must-revalidate","cors" :

{"enabled" : false},

"enable_etags" : false,"force_ssl" : false,"prevent_xsrf" : true

}

Listing 2.1 XS-Application-Access-Datei auf Basis des Templates

3867.book Seite 77 Dienstag, 3. Mai 2016 2:51 14

Page 11: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

78

Wie auch die XS-JavaScript-Datei müssen die beiden Application De-scriptors im Repository aktiviert werden.

SAP-HANA-Anwendung ausführen

Start derAnwendung

Nach dem Aktivieren der Dateien sind alle Voraussetzungen erfüllt,um unsere erste native SAP-HANA-Anwendung zu starten. WählenSie dazu im Project Explorer die Datei MyFirstSapHanaApp.xsjs. ImKontextmenü finden Sie unter Run As den Eintrag XS Engine. Kli-cken Sie darauf, um die Anwendung zu starten. Es öffnet sich einBrowser, und der Text »Hello World!« erscheint innerhalb einerHTML-Seite (siehe Abbildung 2.15).

Abbildung 2.15 Ergebnis der Ausführung der ersten nativen Anwendung

2.3 Anwendungssicherheit

Im Rahmen der Entwicklung einer Anwendung müssen Sie sich Ge-danken über die Berechtigungen der Anwender machen. Mit demBerechtigungskonzept der XS Engine haben Sie die Möglichkeit, denZugriff auf die jeweiligen Anwendungspakete, die von Ihnen ent-wickelt und bereitgestellt werden, zu definieren. Die von Ihnen fest-gelegten Berechtigungen werden in der .xsaccess-Datei definiert.

Berechtigungenauf Paketebene

Diese Datei hat keinen Dateinamen, sondern besteht nur aus derDateiendung .xsaccess. Der Inhalt dieser Datei wird im JSON-Formatdefiniert. Die Berechtigungen, die Sie innerhalb dieser Datei festle-gen, wirken sich auf das aktuelle Paket sowie auf alle untergeordne-ten Pakete in der Pakethierarchie aus. Wollen Sie innerhalb IhrerAnwendung unterschiedliche Berechtigungskonzepte realisieren,müssen Sie für die entsprechenden Unterpakete jeweils eine eigene.xsaccess-Datei erstellen.

3867.book Seite 78 Dienstag, 3. Mai 2016 2:51 14

Anwendungssicherheit 2.3

79

Mehrere .xsaccess-Dateien

Die Definitionen der Berechtigungen in einem Unterverzeichnis über-schreiben die Einstellung der Berechtigungen der übergeordneten.xsaccess-Datei. Diese Definitionen werden dann an die Unterpakete inder Pakethierarchie vererbt. Alle Definitionen, die nicht von eineruntergeordneten .xsaccess-Datei überschrieben werden, werden vonder übergeordneten .xsaccess-Datei übernommen.

Innerhalb dieser Datei können Sie festlegen, wer über die entspre-chenden Berechtigungen für die Komponenten verfügt, um auf denInhalt der Pakete zuzugreifen, die durch die XS Engine bereitgestelltwerden. Des Weiteren können Sie über diese Datei festlegen, wie aufden Inhalt zugegriffen werden kann. So können Sie z.B. festlegen, obsich ein Benutzer der nativen Anwendung authentifizieren muss,welche Daten gelesen oder welche Daten verändert werden können.

Konfiguration der .xsaccess-Datei

Im Rahmen des Berechtigungskonzepts können folgende Konfigura-tionen vorgenommen werden:

� ZugriffsberechtigungenFür die Spezifikation der Authentifizierungsverfahren verwendenSie in der Datei .xsaccess das Schlüsselwort authentication. Vonder XS Engine ist sowohl eine formularbasierte als auch eine ein-fache Authentifizierung möglich.

� Anonyme SQL-VerbindungenMithilfe des Schlüsselwortes anonymous_connection wird eine Da-tei mit der Endung .xssqlcc referenziert, die für den Zugriff auf dieDatenbank notwendig ist, sofern der angemeldete Benutzer nichtdie Berechtigung zum Zugriff auf die Datenbank besitzt.

� Voreingestellte SQL-VerbindungenMit dem Schlüsselwort default_connection wird ebenfalls eineDatei mit der Endung .xssqlcc referenziert. Ist dieses Schlüssel-wort gesetzt, werden alle Zugriffe auf die Datenbank mit den inder .xssqlcc-Datei spezifizierten Datenbankbenutzern durchge-führt.

� BerechtigungenDurch die Verwendung des Schlüsselwortes authorization kannder Zugriff eines Benutzers auf bestimmte Pakete der nativen SAP-HANA-Anwendung begrenzt werden.

3867.book Seite 79 Dienstag, 3. Mai 2016 2:51 14

Page 12: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

80

� Cache ControlMit dem Schlüsselwort cache_control ist es möglich, den Cache-Control-Header für statische Webinhalte, die durch den XS-Webserver bereitgestellt werden, zu überschreiben. Mit densogenannten Cache-Control-Richtlinien (z.B. public, private, no-store) können Sie das Verhalten der Browser und den Proxy-Cache steuern.

� VerbindungssicherheitWird der Parameter force_ssl im Application Descriptor der na-tiven Anwendung auf true gesetzt, erzwingen Sie damit, dass derZugriff auf die native Anwendung nur mittels SSL/HTTPS erfolgenkann. Wird ein Request nicht über SSL/HTTPS durchgeführt, wirddieser mit dem HTTP-Fehlercode 403 zurückgewiesen.

� Cross-Origin RequestsUm HTTP-Requests auf Webseiten einer anderen Domäne zu er-lauben, wird der Konfigurationsparameter cors verwendet. Mit{"enabled":true} wird das Cross-Origin Resource Sharing (CORS)aktiviert, so dass HTTP-Requests an eine weitere Domäne er-laubt sind. Innerhalb des Konfigurationsparameters cors kön-nen noch weitere Einstellungen vorgenommen werden. Sokönnen Sie die Aufrufe externer Webseiten durch weitere Para-meter einschränken.

� Cross-Site Request Forgery (CSRF/XSRF)Um die native Anwendung vor Cross-Site Request Forgery zuschützen, können Sie in der Datei das Schlüsselwort prevent_xsrfverwenden. Bei Cross-Site Request Forgery (meist mit CSRF oderXSRF abgekürzt) versucht ein Angreifer den Request so zu mani-pulieren, dass im Hintergrund die gewünschte Aktion ausgeführtwird. Weitere Informationen zur Sicherheit in nativen SAP-HANA-Anwendungen finden Sie in Abschnitt 5.10, »Sicherheitvon nativen Anwendungen«.

� Standard-Index-DateiWird auf das Paket einer nativen Anwendung ohne Angabe einerDatei in der URI zugegriffen, versucht die XS Engine immer, dieDatei index.html zu laden. Soll statt dieser Datei eine andereHTML-Datei geladen werden, definieren Sie die zu verwendendeHTML-Datei über das Schlüsselwort default_file.

3867.book Seite 80 Dienstag, 3. Mai 2016 2:51 14

Anwendungssicherheit 2.3

81

� DatenfreigabeMit dem Schlüsselwort exposed wird definiert, welche Inhalte ei-ner nativen Anwendung freigegeben werden. Um die Anwendungoptimal zu schützen, sollten Sie nur Inhalte freigeben, die für dieAnwendung zwingend benötigt werden.

� Entity TagsMit dem Schlüsselwort enabled_etags können Sie die Bildung vonsogenannten Entity Tags (ETags) für statische Webinhalte gestattenoder verhindern. Mithilfe von Entity Tags kann die Performanceverbessert werden, da gleiche Daten vom Server nicht erneut ge-sendet werden müssen, sofern diese nicht verändert wurden.

� MIME-MappingFür das Mapping verschiedener Dateiendungen auf einen MIME-Typ kann das Schlüsselwort mime_mapping verwendet werden. Sowerden z.B. mit der folgenden Anweisung alle Dateien mit der En-dung .jpg auf den MIME-Typ image/jpeg gemappt.

"mime_mapping": [ {"extension":"jpg","mimetype":"image/jpeg"} ]

� URL-Rewrite-RegelnMit der Konfiguration von URL-Überschreibungsregeln (Rewrite-Regeln) können Details über interne URLs vor externen Benutzern,Clients und Suchmaschinen verborgen werden. Hierzu ist in derDatei .xsaccess eine entsprechende Konfiguration notwendig, diemit dem Schlüsselwort rewrite_rules eingeleitet wird.

� X Frame Options

Mit dem Konfigurationsparameter headers in der Datei .xsaccesskann die Unterstützung für X-Frame-Options aktiviert werden.Mit dieser Option kann der Server im Header-Response mitteilen,ob der übermittelte Inhalt innerhalb eines Frames dargestellt wer-den darf.

Weitere Informationen zur der Anwendungssicherheit können Siedem »SAP HANA Developer Guide« und dem »SAP HANA SecurityGuide« entnehmen, den Sie unter der URL http://help.sap.com/hana/sap_hana_developer_guide_en.pdf bzw. http://help.sap.com/hana/SAP_HANA_Security_Guide_en.pdf finden.

3867.book Seite 81 Dienstag, 3. Mai 2016 2:51 14

Page 13: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

82

2.4 Verwaltung von Anwendungsobjekten

Alle Bausteine, die zu einer nativen SAP-HANA-Anwendung gehö-ren, werden als Entwicklungsobjekte bezeichnet und haben jeweilseine eigene Dateierweiterung. So steht z.B. die Dateierweiterung.hdbtable für Designtime Table Definition, die Erweiterung .hdbviewfür Designtime SQL-View Definition und die Erweiterung .hdbrole fürDesigntime Role Definition.

Entwicklungs-objekte einer

nativen Anwendung

Wenn Sie eine neue native SAP-HANA-Anwendung erstellen, wer-den Sie die unterschiedlichsten Entwicklungsobjekte verwenden.Für die Strukturierung einer Anwendung bietet sich die Aufteilungin verschiedene Projekte und Pakete an. Weitere Entwicklungsob-jekte wie Schemata, die Definitionen von Tabellen, Views oder Ana-lytical bzw. Calculation Views helfen Ihnen als Entwickler, die Datenzu strukturieren.

Prozeduren und serverseitiges JavaScript bilden die wesentlichenEntwicklungsobjekte einer nativen SAP-HANA-Anwendung zur Ent-wicklungszeit (Designtime). Diese beiden Entwicklungsobjekte ha-ben jeweils eine fest definierte Dateierweiterung: .hdbprocedure bzw..xsjs.

Dateierweiterung Die Verwendung der richtigen Dateierweiterung für die Entwick-lungsobjekte spielt bei der Entwicklung einer nativen SAP-HANA-Anwendung eine bedeutende Rolle. Wie wir bereits erläutert haben,müssen die Entwicklungsobjekte im Repository aktiviert werden.Anhand der Dateierweiterung wird entschieden, welches internePlug-in für die Aktivierung einer Datei im Repository aufgerufenwerden soll. Im Rahmen der Aktivierung eines Entwicklungsobjektswird dessen Inhalt vom entsprechenden Plug-in gelesen, interpre-tiert und die entsprechenden Laufzeitobjekte werden erzeugt.

Die Dateierweiterungen werden aber auch noch in weiteren Kontex-ten benutzt. So wird z.B. im SAP HANA Studio anhand der Dateier-weiterung ein kontextsensitives Menü für jedes Objekt eingeblendetbzw. die entsprechenden Icons angezeigt. In Tabelle 2.1 sind alle Ob-jekte aufgelistet, die im Rahmen der Entwicklung einer nativen SAP-HANA-Anwendung verwendet werden können.

3867.book Seite 82 Dienstag, 3. Mai 2016 2:51 14

Verwaltung von Anwendungsobjekten 2.4

83

Dateierweiterung Entwicklungs-objekt

Beschreibung

.aflpmml Prozedur Dieser Dateityp wird vom Applica-tion Function Modeler verwendet, um Details zu Funktionen zu spei-chern, die Funktionen aus der Pre-dictive Analysis Library (PAL) oder Business Function Library (BFL) ver-wenden.

.analyticview Analytic View Dieser Dateityp enthält die Defini-tion eines Analytic Views und kann in einer OData-Service-Definition referenziert werden.

.attributeview Attribute View Dieser Dateityp enthält die Defini-tion eines Attribute Views und kann in einer OData-Service-Defi-nition referenziert werden.

.calculationview Calucation View Dieser Dateityp enthält die Defini-tion eines Calculation Views und kann in einer OData-Service-Defi-nition referenziert werden.

.hdbdd CDS-Dokument Dieser Dateityp enthält die Defini-tion eines CDS-konformen Data-Persistence-Objekts, das mithilfe von DDL angelegt wird.

.hdbprocedure Prozedur Dieser Dateityp ersetzt den Datei-typ .procedure und enthält die Defi-nition einer Datenbankfunktion zur Ausführung von komplexen und datenintensiven Operationen, die nicht mit Standard-SQL ausgeführt werden können.

.hdbrole Rolle Mithilfe dieses Dateityps können die Rollen eines SAP-HANA-Benut-zers definiert werden.

.hdbscalarfunction benutzerdefi-nierte, skalare Funktion

Dateien von diesem Typ speichern die Designtime-Definition von skalaren, benutzerdefinierten Funktionen (UDF). Diese skalaren Funktionen können innerhalb von SELECT- und WHERE-Klauseln ver-wendet werden.

Tabelle 2.1 Übersicht der Entwicklungsobjekte einer nativen Anwendung

3867.book Seite 83 Dienstag, 3. Mai 2016 2:51 14

Page 14: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

84

.hdbschema Schema Dieser Dateityp definiert das Schema, nach dem die Datenbank-objekte einer nativen Anwendung zugeordnet werden.

.hdbsequence Sequenzen Dieser Dateityp enthält die Defini-tion einer Sequenz.

.hdbstructure Tabellentypen Dieser Dateityp enthält die Defini-tion von Tabellentypen unter Ver-wendung der HDBTable-Syntax (siehe Abschnitt 3.5, »Datenmo-dell mit HDBTable definieren«).

.hdbtable Tabelle Dieser Dateityp enthält die Defini-tion einer Tabelle unter Verwen-dung der HDBTable-Syntax.

.hdbtablefunction benutzerdefi-nierte Tabellen-funktionen

In Dateien dieses Typs können benutzerdefinierte Funktionen (UDF) für eine Tabelle definiert werden. Diese Funktionen können in der FROM-Klausel einer SQL-Anweisung verwendet werden.

.hdbtextbundle Ressource Bundle

Dieser Dateityp beinhaltet Über-setzungen von UI-Texten, die in SAPUI5-Anwendungen verwendet werden.

.hdbti Import-definition von Tabellen

Dieser Dateityp beinhaltet die Kon-figuration zum Importieren exter-ner Dateien aus CSV-Dateien.

.hdbview SQL-View Dieser Dateityp beinhaltet die Defi-nition von Views unter Verwen-dung der HDBTable-Syntax.

.proceduretemplate Template für eine Prozedur

In Dateien dieses Typs können Designtime-Objekte vordefiniert werden. Diese Dateien beinhalten ein Skript mit vordefinierten Platz-haltern für Objekte wie Tabellen, Views und Columns.

Dateierweiterung Entwicklungs-objekt

Beschreibung

Tabelle 2.1 Übersicht der Entwicklungsobjekte einer nativen Anwendung (Forts.)

3867.book Seite 84 Dienstag, 3. Mai 2016 2:51 14

Verwaltung von Anwendungsobjekten 2.4

85

.project Projekt Projektdatei einer nativen SAP-HANA-Anwendung, die mit dem SAP HANA Studio entwickelt wird. Diese Datei wird ebenfalls im Repository von SAP HANA gespei-chert.

.searchruleset Search Rule Set In dieser Datei wird ein Satz von Regeln definiert, der im Rahmen einer Fuzzy-Suche verwendet wird.

.xsaccess Application-Access-Datei

In dieser Datei werden die Zugriffs-berechtigungen für eine native SAP-HANA-Anwendung konfi-guriert.

.xsapp Application Descriptor

Der Application Descriptor mar-kiert das Root-Verzeichnis einer nativen SAP-HANA-Anwendung.

.xsappsite Application Site In dieser Datei wird die Definition einer SAP Fiori Launchpad Site gespeichert.

.xshttpdest HTTP-Destina-tion

In dieser Datei werden die Details für die Verbindung zu einem exter-nen HTTP-Ziel über HTTP (oder HTTPS) definiert.

.xsjob Scheduled XS Job

Diese Datei beinhaltet die JSON-konforme Definition von Aufgaben, die in regelmäßigen Zeitintervallen ausgeführt werden sollen.

.xsjs serverseitiger JavaScript-Code

Dateien von diesem Typ beinhalten den JavaScript-Code, der durch die XS Engine ausgeführt werden kann. Dieser JavaScript-Code kann über eine URL aufgerufen werden.

.xsjslib serverseitige JavaScript-Bibliothek

Serverseitige JavaScript-Biblio-theken enthalten wiederverwend-bare Funktionen, die in serversei-tigen JavaScript-Dateien (.xsjs) verwendet werden können. Server-seitige JavaScript-Bibliotheken kön-nen nicht über eine URL ausgeführt werden.

Dateierweiterung Entwicklungs-objekt

Beschreibung

Tabelle 2.1 Übersicht der Entwicklungsobjekte einer nativen Anwendung (Forts.)

3867.book Seite 85 Dienstag, 3. Mai 2016 2:51 14

Page 15: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

86

.xsoauthappconfig OAuth-Appli-kation-Konfigu-rationsdatei

Diese Datei beinhaltet die High-Level-Definition einer Anwendung, die einen Service verwendet, der durch das OAuth-Protokoll abge-sichert ist.

.xsoauthclientflavor OAuth-Client-Konfigurations-datei

Diese Datei beinhaltet detailliertere Informationen über eine Anwen-dung, die OAuth zur Authentifizie-rung verwendet, um sich mit einer externen HTTP-Anwendung zu ver-binden.

.xsodata OData Descriptor

Dateien dieses Typs beinhalten die Definition eines OData-Services zur Designtime.

.xsprivileges Application Privilege

Diese Datei definiert die Privileges, die einer XS-Anwendung zugewie-sen werden.

.xssecurestore Application Secure Store

Diese Designtime-Datei erstellt einen anwendungsspezifischen Sicherheitsspeicher. Dieser Spei-cher wird von Anwendungen ver-wendet, um Daten als Key-Value-Paar sicher zu speichern.

.xssqlcc SQL-Verbin-dungskonfigu-ration

In dieser Datei wird die Verbindung einer nativen SAP-HANA-Anwen-dung zur SAP-HANA-Datenbank konfiguriert.

.xswidget Widget Diese Datei definiert eine eigen-ständige SAP-HANA-Anwendung, um diese in eine Anwendungsseite zu integrieren.

.xsxmla XMLA Descriptor

In Dateien dieses Typs werden XMLA-Services zur Designtime definiert, um analytische Daten aus SAP HANA externen Anwendungen zur Verfügung zu stellen.

Dateierweiterung Entwicklungs-objekt

Beschreibung

Tabelle 2.1 Übersicht der Entwicklungsobjekte einer nativen Anwendung (Forts.)

3867.book Seite 86 Dienstag, 3. Mai 2016 2:51 14

Spezielle Objekte der SAP HANA Cloud Platform 2.5

87

2.5 Spezielle Objekte der SAP HANA Cloud Platform

In Abschnitt 2.2, »Ihre erste Anwendung erstellen«, haben wir denTrial-Account der SAP HCP zur Erstellung unserer ersten nativenSAP-HANA-Anwendung verwendet. Diese Plattform können Sieauch für die Erstellung weiterer nativer Anwendungen verwenden.Auch in den weiteren Abschnitten dieses Buches werden wir versu-chen, alle wesentlichen Beispiele mit dem Entwickler-Account der-SAP HCP zu erstellen. In bestimmten Situationen müssen wir jedochauf eine On-Premise-Installation ausweichen, da es aufgrund voneingeschränkten Berechtigungen mit dem Entwickler-Account derSAP HCP gewisse Einschränkungen gibt.

Datenbank-schemata

Beim Anlegen einer SAP-HANA-Instanz in der SAP HCP werden zweineue Datenbankschemata angelegt und Ihrem Account zugewiesen.Ein Datenbankschema beginnt mit dem Präfix DEV_, das andere mitdem Präfix NEO_:

� Das Datenbankschema mit dem Präfix NEO_ ist das Datenbank-schema für die Entwicklung. In diesem Schema sollten Sie alle Da-tenbankobjekte wie Tabellen, Views, Prozeduren usw. anlegen,die für eine Anwendung benötigt werden. Dieses Schema bezeich-nen wir im Folgenden als Anwendungsschema.

� Das Datenbankschema mit dem Präfix DEV_ ist Ihr Schema. Diesesbezeichnen wir im Folgenden als Entwicklungsschema. In dem DEV_-Schema sollten Sie keine Datenbankobjekte anlegen, die für eineAnwendung benötigt werden.

BerechtigungenDie Benutzerkennung des Datenbankbenutzers beginnt ebenfalls mitdem Präfix DEV_. Damit mehrere Benutzer auf der SAP HCP gleichzei-tig und unabhängig voneinander Anwendungen entwickeln können,ist es notwendig, die Rechte zu begrenzen.

SystemschemataNeben diesen beiden neu angelegten Datenbankschemata haben Sieunter anderem noch Zugriff auf die folgenden Systemschemata:

� _SYS_BIC

Dieses Schema enthält alle Column Views der aktivierten Daten-bankobjekte wie Tabellen, Views, Sequenzen, Prozeduren etc. ImRahmen der Aktivierung von Datenbankobjekten werden dieLaufzeitobjekte im Schema _SYS_BIC erstellt. Column Views wer-

3867.book Seite 87 Dienstag, 3. Mai 2016 2:51 14

Page 16: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

2 Struktur einer nativen SAP-HANA-Anwendung

88

den unter anderem erstellt, wenn mit dem Modeler neue Viewserstellt werden.

� _SYS_REPO

Dieses Schema wird im SAP HANA Studio während der Aktivie-rung der Entwicklungsobjekte verwendet. Alle Objekte, die Sie imSAP HANA Studio erstellen, werden dem Datenbankbenutzer_SYS_REPO zugewiesen.

� _SYS_BI

In diesem Schema werden die Metainformationen der erzeugtenColumn-Views gespeichert. Dieses Schema beinhaltet unter ande-rem die Tabellen für erzeugte Variablen, Daten für Zeitangaben(Geschäftsjahr, Gregorianischer Kalender) sowie Schema- undContent-Mapping-Tabellen.

Bei der initialen Erstellung Ihres Accounts und des technischen Da-tenbankbenutzers werden diesem nur die notwendigen Rechte zu-gewiesen. Für bestimmte Aufgaben – wie z.B. das Debuggen einernativen Anwendung – müssen Sie jedoch Ihre Rechte erweitern.Hierzu gibt es im HCP-Datenbankschema eine Reihe von Prozedu-ren. Mit diesen Prozeduren können Sie folgende Berechtigungen er-weitern:

� Berechtigungen für Views

� Berechtigungen für Rollen

� Privileges des Accounts

� Berechtigungen von Rollen für Endbenutzer

� Zugriff auf die Metadaten des Accounts

Prozeduren zurBerechtigungs-

erweiterung

Die wichtigsten Prozeduren stellen wir Ihnen hier kurz vor:

� Metadaten Ihres AccountsFür die Abfrage Ihrer Metadaten können Sie folgende Views ver-wenden:

– HCP_DEV_METADATA

Mit diesem View erhalten Sie das Ihnen zugewiesene Anwen-dungsschema sowie das entsprechende Paket und die Rollen.

SELECT * FROM "HCP"."HCP_DEV_METADATA"

– HCP_ACTIVATED_ROLES

Mit diesem View erhalten Sie alle aktiven HDB-Rollen, dieIhrem Datenbankbenutzer zugewiesen wurden. Die Erstellung

3867.book Seite 88 Dienstag, 3. Mai 2016 2:51 14

Spezielle Objekte der SAP HANA Cloud Platform 2.5

89

und Aktivierung von HDB-Rollen stellen wir Ihnen in Kapitel 3,»Definition des Datenmodells«, noch detaillierter vor.

SELECT * FROM "HCP"."HCP_ACTIVATED_ROLES"

� Zuweisung der Rechte für modellierte ViewsUm auf die aktivierten Views, die im SAP HANA Studio modelliertwurden, auf HDB-Views oder Prozeduren zugreifen zu können,müssen Sie eine der folgenden SQL-Prozeduren aufrufen:

– HCP_GRANT_SELECT_ON_ACTIVATED_OBJECT

Mit dieser Prozedur können Sie der Rolle des Anwendungssche-mas den Zugriff auf einen bestimmten View, HDB-View odereine SQL-Prozedur erlauben. Diese SQL-Prozedur benötigt zweiParameter:

– Name des Pakets, in dem das entsprechend Objekt gespei-chert ist

– Name des Objekts, für das der Zugriff erteilt werden soll

CALL "HCP"."HCP_GRANT_SELECT_ON_ACTIVATED_OBJECT"(.hana.xs', 'CURRENT_WEATHER')

– HCP_GRANT_SELECT_ON_ACTIVATED_OBJECTS

Mit dieser Prozedur können Sie die Berechtigung für denZugriff auf alle aktivierten Views aus dem Entwicklerpaket anden Benutzer des Anwendungsschemas vergeben:

CALL "HCP"."HCP_GRANT_SELECT_ON_ACTIVATED_OBJECTS"

3867.book Seite 89 Dienstag, 3. Mai 2016 2:51 14

Page 17: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

13

0

Einleitung

Werfen Sie einen ersten Blick auf SAP HANA, sehen Sie zunächsteine hardwareoptimierte, relationale In-Memory-Datenbank fürSAP-Anwendungen, wie z.B. die SAP Business Suite für EnterpriseResource Planning (ERP). Schon bei einem zweiten Blick fällt jedochauf, dass SAP HANA mehr als eine Datenbank ist. Insbesondere fürAnwendungsentwickler, die bisher noch überhaupt keine Berüh-rungspunkte mit SAP-Anwendungen haben, bietet SAP HANA einigeinteressante Möglichkeiten zur Implementierung innovativer An-wendungen. Genau um diesen zweiten Blick geht es in diesem Buch.Es richtet sich an alle, die mehr darüber erfahren wollen, welcheMöglichkeiten SAP HANA bei der Programmierung eigener Anwen-dungen bietet.

Warum native Anwendungen für SAP HANA programmieren?

In einem datengetriebenen Wirtschaftsumfeld geht es darum, mög-lichst effizient und einfach Informationen aus Daten zu gewinnen.Diese Anforderung der Einfachheit bezieht sich dabei zum einen aufdie notwendige Infrastruktur, die für die Informationsgewinnungbenötigt wird. Zum anderen bezieht sie sich auf die Art, wie Sie dieSoftware zur Informationsgewinnung implementieren und wie in-tuitiv Ihre Kunden die Anwendung nutzen können.

In allen drei Bereichen – Infrastruktur, Implementierung und Nut-zung – bietet SAP HANA Vorteile. Dieses Buch stellt Ihnen diese Vor-teile bei der Implementierung von Anwendungen vor. Sie ergebensich insbesondere aus der Kombination einer leistungsfähigen In-Memory-Datenbank mit zahlreichen weiteren Funktionen, die Siebei der Anwendungsentwicklung benötigen. Angefangen bei einemintegrierten Applikationsserver, auf dem Sie Ihre native SAP-HANA-Anwendung installieren, stehen Ihnen viele weitere Möglichkeitenzur Verfügung, um Informationen aus Ihren Daten zu gewinnen. Sohaben Sie z.B. die Möglichkeit, transaktionale und analytische Anfra-gen auf Basis desselben Datenbestands zu realisieren.

3867.book Seite 13 Dienstag, 3. Mai 2016 2:51 14

Page 18: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Einleitung

14

OperativesReporting

Durch das operative Reporting können Sie mit SAP HANA Anwendun-gen entwickeln, die Massendaten kontinuierlich verarbeiten, in vol-ler Detailschärfe auswerten und die Ergebnisse in Echtzeit darstellenkönnen. Dies vereinfacht nicht nur die Ihrer Anwendung zugrundeliegende Lösungsarchitektur, sondern erlaubt auch die Umsetzungneuartiger Anwendungen, die im Bereich der Echtzeitauswertungliegen.

Predictive Analysis Um die Auswertung der Daten nicht nur auf reine Kennzahlen zu be-schränken, bietet SAP HANA über 90 Data-Mining- bzw. Predictive-Analysis-Algorithmen, die Sie bei der Anwendungsprogrammierungverwenden können. So gruppieren Sie z.B. Kundendaten mit Clus-ter-Algorithmen direkt in SAP HANA und müssen dafür keine Kopieder Daten für eine andere Softwarekomponente zur Analyse undDatenaufbereitung herstellen. Dadurch, dass diese Algorithmen inte-graler Bestandteil von SAP HANA sind, werden sie schnell und effi-zient auch auf Basis großer Datenmengen ausgeführt. Dies erlaubtIhnen Flexibilität bei der Nutzung der Algorithmen innerhalb IhrerAnwendung.

UnstrukturierteDaten

Zur Verarbeitung unstrukturierter Daten, wie z.B. Kommentaren insozialen Medien, nutzt SAP HANA neben linguistischen Analysenauch Extraktionsverfahren zur Klassifikation von Inhalten, wie z.B.Orten, Organisationen, Unternehmen oder positiven und negativenÄußerungen. Auch Anwendungsfälle im Umfeld von Big Data kön-nen Sie erschließen, da SAP HANA Daten aus externen, relationalenDatenbanksystemen und Hadoop transparent einbindet.

Wie ist dieses Buch aufgebaut?

In Kapitel 1, »SAP HANA als Entwicklungsplattform«, lernen Sie dieGrundlagen der SAP-HANA-Plattform kennen. Neben den wichtigs-ten Komponenten der Plattform stellen wir Ihnen in diesem Kapitelauch einige Anwendungsszenarien für den Einsatz von SAP HANAvor. Des Weiteren lernen Sie den Unterschied zwischen einer nati-ven und einer nicht nativen SAP-HANA-Anwendung kennen. DamitSie die Beispiele, die wir in dieses Buch aufgenommen haben, auchausprobieren können, zeigen wir Ihnen, wie Sie einen Account fürdie Trial-Instanz der SAP HANA Cloud Platform erstellen, um kosten-los auf SAP HANA zugreifen zu können, und wie Sie Ihre Entwick-lungsumgebung einrichten.

3867.book Seite 14 Dienstag, 3. Mai 2016 2:51 14

Einleitung

15

SAP HANA Extended Application Services

Kapitel 2, »Struktur einer nativen SAP-HANA-Anwendung«, erläu-tert den Aufbau und die Verwendung der SAP HANA ExtendedApplication Services (XS) sowie die Struktur einer nativen SAP-HANA-Anwendung. Mit einem ersten einfachen Beispiel führen wirSie Schritt für Schritt in die Programmierung einer nativen Anwen-dung ein.

DatenmodellIn Kapitel 3, »Definition des Datenmodells«, lernen Sie die verschie-denen Möglichkeiten zur Definition von Datenmodellen kennen.Dazu stehen Ihnen Core Data Services (CDS) oder HDBTables zur Ver-fügung. Deren Verwendung und die Unterschiede zwischen den bei-den Modellen erklären wir in diesem Kapitel. Des Weiteren erhaltenSie einen Einblick in die verschiedenen Möglichkeiten zur Befüllungvon Datenbanktabellen.

Analytische Modelle

Kapitel 4, »Echtzeitauswertung mit Information Views«, zeigt die Er-stellung eines analytischen Modells zur direkten Auswertung vontransaktionalen Daten. Damit lernen Sie in diesem Kapitel die Mög-lichkeiten des operativen Reportings kennen. Hierzu stellt SAPHANA verschiedene Arten von Views bereit. Außerdem lernen Sie indiesem Kapitel die Analytic Privileges kennen, ein Berechtigungs-konzept für den Zugriff auf diese Views.

Anwendungs-entwicklung

In Kapitel 5, »Anwendungsentwicklung mit der SAP HANA XSEngine«, zeigen wir Ihnen die Erstellung von nativen SAP-HANA-Anwendungen. Nach einer kurzen Einführung in die serverseitigeProgrammierung mit JavaScript zeigen wir Ihnen, wie Sie XS-Java-Script-Bibliotheken erstellen und diese in native Anwendungen inte-grieren. Ein weiterer wesentlicher Bestandteil dieses Kapitels ist dieEinführung und Verwendung der von der XS Engine bereitgestelltenAPIs. Als Beispiel zeigen wir Ihnen, wie Sie online Wetterdaten er-mitteln und diese in der SAP-HANA-Datenbank speichern.

XS Data ServicesKapitel 6, »Erweitertes Programmiermodell mit den SAP HANA XSData Services«, behandelt die XS Data Services (XSDS), die mit SAPHANA SP09 eingeführt wurden. Sie erweitern das Programmiermo-dell durch wiederverwendbare XS-JavaScript-Bibliotheken.

SAPUI5In Kapitel 7, »Entwicklung von Benutzeroberflächen«, zeigen wir Ih-nen, wie Sie mit SAPUI5 grafische Benutzeroberflächen erstellen, diesowohl in einem Browser als auch auf einem mobilen Endgerät aus-geführt werden können. Neben den wichtigsten Konzepten bringenwir Ihnen nahe, wie Sie schrittweise eine SAPUI5-Anwendung erstel-

3867.book Seite 15 Dienstag, 3. Mai 2016 2:51 14

Page 19: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Einleitung

16

len. Diese Anwendung wird die Wetterstationen einer ausgewähltenStadt in einer Master-Detail-Ansicht anzeigen. Dieses Beispiel lässtIhnen Spielraum, diese Anwendung entsprechend Ihren Vorstellun-gen weiterzuentwickeln.

Datenanalyse-szenarien

In Kapitel 8, »Verarbeitung räumlicher und unstrukturierter Daten«,lernen Sie weitere Möglichkeiten zur Datenanalyse mit SAP HANAkennen. Mit der Textanalysefunktion können Sie z.B. unstruktu-rierte Daten wie Dokumente und Tweets nach bestimmten Schlag-wörtern durchsuchen. Auch können Sie raumbezogene Daten oderzahlreiche Algorithmen zur prädiktiven Analyse verarbeiten.

SQLScript Kapitel 9, »SQLScript«, erläutert, wie datenintensive Berechnungenmithilfe von SQLScript in die Datenbank ausgelagert, optimiert undperformant verarbeitet werden können. Auch das Debugging vonSQLScript-Prozeduren wird hier beschrieben. Diese Berechnungenkönnen dann in native SAP-HANA-Anwendungen integriert werden.

OData-Services In Kapitel 10, »Webbasierter Datenzugriff«, lernen Sie, wie Sie mit-hilfe des HTTP-Protokolls auf die in der SAP-HANA-Datenbank ge-speicherten Daten zugreifen und diese veröffentlichen können. Indiesem Kapitel legen wir den Fokus auf die Erstellung und Verwen-dung von OData-Services. Darüber hinaus stellen wir Ihnen XML forAnalytics (XMLA) für die Abfrage von Data Cubes vor.

Testen undDebugging

In Kapitel 11, »Native SAP-HANA-Anwendungen debuggen und tes-ten«, zeigen wir Ihnen, wie Sie Ihre nativen Anwendungen mit demSAP HANA Studio oder mit der SAP HANA Web-based DevelopmentWorkbench debuggen können. Außerdem stellen wir Ihnen das mitSAP HANA SPS 09 eingeführte Framework XSUnit vor und zeigen Ih-nen, wie Sie Tabellen und Views simulieren können.

ApplicationLifecycle

Management

In Kapitel 12, »Lebenszyklus einer nativen SAP-HANA-Anwendungverwalten«, erklären wir, wie Sie die entwickelten Objekte zu einemProdukt zusammenstellen und mit den sogenannten Delivery Unitsverteilen. Hierbei werden Sie von der Anwendung SAP HANA App-lication Lifecycle Management unterstützt.

XS EngineAdvanced

Kapitel 13, »SAP HANA Extended Application Services Advancedund weitere neue Konzepte«, beschreibt Neuerungen aus SAP HANASPS 11. Mit diesem Release wurde die XS Engine Advanced einge-führt, mit der native Anwendungen in weiteren Programmierspra-chen entwickelt werden können. Auch im Bereich der Core Data Ser-

3867.book Seite 16 Dienstag, 3. Mai 2016 2:51 14

Einleitung

17

vices und des Deployments gibt es einige Neuigkeiten, die wir Ihnenhier vorstellen.

Bei der Zusammenstellung der Kapitel haben wir darauf geachtet,alle Aspekte der nativen Anwendungsentwicklung mit der SAP-HANA-Plattform zu berücksichtigen. Dabei haben wir versucht, unsauf das Wesentliche zu beschränken. Nach dem Lesen dieses Buchessollten Sie über alle notwendigen Informationen für die Erstellungvon nativen Anwendungen verfügen. Wir hoffen, dass wir bei Ihnendas Interesse für die Erstellung nativer Anwendungen geweckt ha-ben und Sie viel Spaß daran finden werden.

So arbeiten Sie mit dem Buch

Sie können dieses Buch sowohl als Einführung als auch als Nach-schlagewerk verwenden. Die Inhalte der einzelnen Kapitel veran-schaulichen wir mit praktischen Beispielen. Die Beispiele können Sieentweder auf Ihrem fest installierten SAP-HANA-System oder z.B. inder kostenfreien Developer Edition der SAP HANA Cloud Platform(HCP) umsetzen.

Arbeiten Sie das Buch Kapitel für Kapitel durch, werden Sie nach undnach eine vollständige native SAP-HANA-Anwendung aufbauen.Liegt Ihr Schwerpunkt mehr im Bereich der Datenmodellierung oderDatenanalyse, können Sie die praktischen Beispiele in den Kapiteln2, 3, 4, 8 und 9 in dieser Reihenfolge durcharbeiten. Liegt IhrSchwerpunkt in der Anwendungsprogrammierung, können Sie dieKapitel 2, 5, 6, 7, 10 und 11 der Reihenfolge nach durcharbeiten.

Informations-kästen

In hervorgehobenen Informationskästen befinden sich in diesem BuchInhalte, die wissenswert und hilfreich sind, aber etwas außerhalb dereigentlichen Erläuterung stehen. Damit Sie die Informationen in denKästen sofort einordnen können, haben wir sie mit Symbolen ge-kennzeichnet:

� ChecklisteKästen mit diesem Icon zeigen Ihnen, welche notwendigen Vor-aussetzungen (z.B. Tools) Sie in den Kapiteln benötigen.

� HinweiseIn Kästen, die mit diesem Symbol gekennzeichnet sind, finden SieInformationen zu weiterführenden Themen oder wichtigen Inhal-ten, die Sie sich merken sollten.

3867.book Seite 17 Dienstag, 3. Mai 2016 2:51 14

Page 20: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Einleitung

18

� TippKästen mit diesem Icon geben Ihnen Empfehlungen zu Einstellun-gen oder Tipps aus der Berufspraxis.

� AchtungKästen mit diesem Icon geben Ihnen besonders wichtige Hinweisezur besprochenen Thematik. Außerdem warnen wir Sie hier vormöglichen Fehlerquellen.

Codebeispiele Dieses Buch enthält eine Vielzahl an Codebeispielen, um Syntax,Funktionen etc. zu veranschaulichen. Um diese Abschnitte zu kenn-zeichnen, verwenden wir eine Schriftart, die mit der in vielen inte-grierten Entwicklungsumgebungen eingesetzten Schriftart vergleich-bar ist, um die Lesbarkeit von Code zu verbessern (siehe Listing 1).Wenn neue Syntaxkonzepte eingeführt werden, werden diese An-weisungen durch fett formatierte Listingschrift gekennzeichnet.

function getCurrentUser() {var body;try {var conn =

$.db.getConnection("sap.hana.sqlcon::AdminConn");var pStmt = conn.prepareStatement("SELECT CURRENT_

USER FROM dummy");var rs = pStmt.executeQuery();if (rs.next()) {body = rs.getNString(1);

}…

}$.response.status = $.net.http.OK;$.response.setBody( body );

}

Listing 1 Formatierungsbeispiel für Codesyntax

Download desBeispielcodes

Im Verlauf dieses Buches werden wir eine Beispielanwendung ent-wickeln, die die wichtigsten Konzepte veranschaulicht. Um es so ein-fach wie möglich zu machen, diese Arbeitsbeispiele herunterzula-den, haben wir ein öffentliches Repository für den gesamten Codeim Buch auf GitHub erstellt. Die URL des Repositorys lautet https://github.com/nativeDevelopment/XSGeoWeatherApp. Diese Informatio-nen stehen auch unter www.sap-press.de/3916 zum Download zurVerfügung, zu finden unter den Materialien zum Buch.

3867.book Seite 18 Dienstag, 3. Mai 2016 2:51 14

Einleitung

19

Falls nötig, haben wir auch Readme-Dateien zu den verschiedenenBeispielen zur Verfügung gestellt, um Ihnen zu zeigen, wie Sie sie zurBereitstellung in Ihrem eigenen Trial-Account der SAP HANA CloudPlatform konfigurieren müssen.

Wir freuen uns auf Ihr persönliches Feedback zum Buch [email protected] und [email protected].

Danksagung von Stefan Kühnlein

Es ist schon ein etwas merkwürdiges Gefühl, wenn man am Ende desSchreibens eines Buches das vergangene Jahr im Geiste an sich vor-beiziehen lässt. Zum einen breitet sich das Gefühl der Zufriedenheitaus, da dieses Buch nun fertig geschrieben ist und wieder Neues inden Mittelpunkt rücken kann. Aber auch das Gefühl der Dankbarkeitsteigt in mir auf: Dankbarkeit für eine gutes Gelingen und die vieleUnterstützung, die ich in dieser Zeit erfahren habe.

Ein ganz besonderer Dank geht zuerst an meine Frau Diana und anmeine beiden Söhne Raphael und Yannick. Da ich dieses Buch inmeiner Freizeit geschrieben habe, blieben mir hierzu nur dieAbende, das Wochenende und der Urlaub. In dieser Zeit brachte mirmeine Familie sehr viel Verständnis und Geduld entgegen. Immer,wenn ich im Büro verschwand, wussten meine Jungs, dass ich wie-der am Buch schreibe. An den Abenden, wenn ich sie ins Bettbrachte, fragten sie immer nach, wie viele Seiten ich denn schon ge-schrieben habe und wie viele Seiten ich noch schreiben muss. Vor al-lem meine Frau Diana hielt mir den Rücken frei, so dass ich mich aufdas Schreiben dieses Buches konzentrieren konnte. Diese Unterstüt-zung von meiner Familie hat mich stets angetrieben, dieses Buch zurVollendung zu bringen.

Danken möchte ich dieser Stelle auch Jochen Wilms und AndreasBecht. In Ihrer Funktion als Manager Business Development bzw.Leiter der Competence Unit Software Development haben Sie dasThema der Entwicklung von Anwendungen mit der SAP-HANA-Plattform bei der OPITZ CONSULTING Deutschland GmbH positio-niert. Nach einer anfänglichen Evaluationsphase wurde mir die Lei-tung des Competence Centers SAP HANA Development übertragen.Dadurch konnte ich mich sehr intensiv mit der Erstellung von An-wendungen beschäftigen, die die SAP-HANA-Plattform nutzen. Nicht

3867.book Seite 19 Dienstag, 3. Mai 2016 2:51 14

Page 21: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Einleitung

20

zuletzt gehört ihnen beiden der Dank, denn ohne den nötigen Mutzur Gründung des Competence Centers und dem damit verbun-denen Know-how-Aufbau hätte ich dieses Buch nicht schreibenkönnen.

Ein weiterer Dank geht an unsere Lektorin Janina Schweitzer, die dieIdee hatte, ein Buch über die native Anwendungsentwicklung mitder SAP-HANA-Plattform zu schreiben. An dieser Stelle möchte ichmich für das entgegengebrachte Vertrauen, die Geduld und für dietatkräftige Unterstützung bei der Erstellung dieses Buches bedanken.

Danksagung von Holger Seubert

Ein Fachbuch über SAP HANA ist nicht einfach zu schreiben, insbe-sondere, weil sich das Produkt, um das es geht, mit rasanter Ge-schwindigkeit entwickelt. Beim Schreiben dieses Buches hat micheine Reihe von Personen unterstützt. Bedanken möchte ich mich andieser Stelle insbesondere bei meiner Frau Nina und meinen SöhnenFelix und Philipp für ihre Unterstützung, bei Frau Janina Schweitzer,Lektorin bei SAP PRESS, für die unendliche Geduld und bei meinemCo-Autor Stefan für die gute Zusammenarbeit.

3867.book Seite 20 Dienstag, 3. Mai 2016 2:51 14

Page 22: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Auf einen Blick

1 SAP HANA als Entwicklungsplattform ..................... 21

2 Struktur einer nativen SAP-HANA-Anwendung ....... 61

3 Definition des Datenmodells .................................... 91

4 Echtzeitauswertung mit Information Views ............. 129

5 Anwendungsentwicklung mit der SAP HANA XS Engine ............................................... 171

6 Erweitertes Programmiermodell mit den SAP HANA XS Data Services ..................................... 249

7 Entwicklung von Benutzeroberflächen ..................... 265

8 Verarbeitung räumlicher und unstrukturierter Daten ............................................. 321

9 SQLScript .................................................................. 347

10 Webbasierter Datenzugriff ....................................... 383

11 Native SAP-HANA-Anwendungen debuggen und testen ................................................................. 421

12 Lebenszyklus einer nativen SAP-HANA-Anwendung verwalten .............................................. 449

13 SAP HANA Extended Application Services Advanced und weitere neue Konzepte ..................... 471

3867.book Seite 5 Dienstag, 3. Mai 2016 2:51 14

Page 23: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

7

Inhalt

Einleitung .................................................................................. 13

1 SAP HANA als Entwicklungsplattform ................... 21

1.1 Die Revolution der In-Memory-Technologie ........... 211.2 Komponenten der SAP-HANA-Plattform ................. 25

1.2.1 SAP HANA als vollständige Datenbank ...... 261.2.2 SQL-Schnittstelle ....................................... 261.2.3 Business Function Library und Predictive

Analysis Library ......................................... 271.2.4 Multiple In-Memory-Speicher ................... 281.2.5 Effiziente Datenspeicherung ...................... 291.2.6 Parallele Verarbeitung ............................... 351.2.7 SAP HANA Extended Application

Services ..................................................... 361.3 Anwendungsgebiete für native SAP-HANA-

Anwendungen ........................................................ 381.4 Programmiermodelle für SAP HANA ....................... 40

1.4.1 Native Anwendungsentwicklung ................ 401.4.2 Nicht native Anwendungsentwicklung ....... 41

1.5 SAP HANA Cloud Platform ..................................... 421.5.1 Architektur, Entwicklungsmodelle und

Werkzeuge ................................................ 421.5.2 Benutzerkonto für die SAP HANA Cloud

Platform anlegen ....................................... 461.5.3 SAP-HANA-Instanz anlegen ....................... 49

1.6 SAP HANA Studio ................................................... 511.7 Webbasierte Entwicklung ....................................... 53

1.7.1 SAP Web IDE ............................................ 531.7.2 SAP HANA Web-based Development

Workbench ............................................... 57

2 Struktur einer nativen SAP-HANA-Anwendung ..... 61

2.1 Architektur und Programmiermodell der SAP-HANA-Plattform .............................................. 62

2.2 Ihre erste Anwendung erstellen .............................. 642.2.1 Repository Workspace erstellen ................. 66

3867.book Seite 7 Dienstag, 3. Mai 2016 2:51 14

Page 24: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Inhalt

8

2.2.2 Neues XS-Projekt anlegen .......................... 672.2.3 Serverseitiges JavaScript ............................. 71

2.3 Anwendungssicherheit ............................................ 782.4 Verwaltung von Anwendungsobjekten .................... 822.5 Spezielle Objekte der SAP HANA Cloud Platform .... 87

3 Definition des Datenmodells .................................. 91

3.1 Beispielmodell zur Sensordatenspeicherung ............. 973.2 Datenmodell mit Core Data Services definieren ....... 98

3.2.1 CDS-Dokument anlegen ............................. 993.2.2 Datentypen definieren ............................... 1023.2.3 Entitäten und Assoziationen definieren ...... 1053.2.4 Views definieren ........................................ 1113.2.5 CDS-Annotationen definieren .................... 112

3.3 Daten mit CDS-Tabellenimport importieren ............. 1153.4 CDS-Objekte ändern ............................................... 1183.5 Datenmodell mit HDBTable definieren .................... 1203.6 SAP HANA Smart Data Access (SDA) ....................... 125

4 Echtzeitauswertung mit Information Views ........... 129

4.1 SAP HANA Information Views im SAP HANA Studio ................................................... 131

4.2 Attribute Views erstellen ......................................... 1374.3 Analytic Views erstellen ........................................... 1424.4 Calculation Views erstellen ...................................... 1504.5 Hierarchien .............................................................. 1624.6 Berechnete Spalten ................................................. 1644.7 Variablen und Filter ................................................. 1664.8 Analytic Privileges definieren ................................... 1684.9 Information Views lesen .......................................... 169

5 Anwendungsentwicklung mit der SAP HANA XS Engine .............................................. 171

5.1 Programmiermodell der XS Engine .......................... 1725.2 Serverseitiges JavaScript .......................................... 175

5.2.1 Objekte ...................................................... 1765.2.2 Variablen ................................................... 177

3867.book Seite 8 Dienstag, 3. Mai 2016 2:51 14

Inhalt

9

5.2.3 Funktionen ................................................ 1785.2.4 Kontrollstrukturen ..................................... 180

5.3 JavaScript-Bibliotheken ........................................... 1815.4 JavaScript-API ......................................................... 1835.5 XS-Request-Verarbeitung ........................................ 185

5.5.1 HTTP-Protokoll .......................................... 1865.5.2 Request-Processing-API ............................. 187

5.6 Integration von externen HTTP-Services .................. 1905.6.1 Syntax der XS-Destination-Datei ................ 1925.6.2 Eine XS-Destination-Datei erstellen ........... 1965.6.3 Erweiterung der XS-Destination ................. 1995.6.4 XSJS-Outbound-API .................................. 2015.6.5 Onlineabfrage der Wetterdaten ................. 2015.6.6 Sichere HTTP-Services aufrufen .................. 204

5.7 XSJS-Outbound-API ................................................ 2065.7.1 SMTP-Konfiguration erstellen .................... 2075.7.2 E-Mail versenden ...................................... 209

5.8 Datenbankzugriff mit der XS Engine ........................ 2105.8.1 Verwendung der Legacy Database-API ...... 2125.8.2 SAP HANA Spatial Engine .......................... 2175.8.3 Verwendung der neuen Database-API ....... 2215.8.4 XS SQL Connection ................................... 226

5.9 XS-Jobs einplanen ................................................... 2315.9.1 JavaScript-Datei erstellen .......................... 2335.9.2 XS-Job anlegen und konfigurieren ............. 2345.9.3 XS-Job verwalten ....................................... 2395.9.4 Jobsteuerung zur Laufzeit .......................... 240

5.10 Sicherheit von nativen Anwendungen ..................... 2415.10.1 Injection Flaws .......................................... 2415.10.2 Cross-Site Scripting (XSS) ........................... 2435.10.3 Cross-Site Request Forgery ........................ 2435.10.4 Unzulässige Authentifizierungen und

Sessions ..................................................... 2445.10.5 Manipulation der XML-Verarbeitung ......... 244

5.11 Tracing von XS-JavaScript-Anwendungen ................ 2465.11.1 Konfiguration im SAP HANA Studio .......... 2475.11.2 Konfiguration in der SAP HANA

Web-based Development Workbench ....... 248

3867.book Seite 9 Dienstag, 3. Mai 2016 2:51 14

Page 25: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Inhalt

10

6 Erweitertes Programmiermodell mit den SAP HANA XS Data Services ................................... 249

6.1 Vorbereitung der SAP HANA XS Data Services ......... 2506.2 CDS-Entitäten als JavaScript-Objekte importieren .... 251

6.2.1 Erweiterung des Datenmodells ................... 2516.2.2 Laufzeitverbesserung .................................. 252

6.3 Mit dem Datenmodell arbeiten ............................... 2536.3.1 Im verwalteten Modus arbeiten ................. 2546.3.2 Entitäten im verwalteten Modus

verwalten ................................................... 2596.3.3 Im unverwalteten Modus arbeiten ............. 260

7 Entwicklung von Benutzeroberflächen ................... 265

7.1 Architektur von SAPUI5 ........................................... 2667.2 Konzepte einer SAPUI5-Anwendung ....................... 267

7.2.1 Model View Controller ............................... 2677.2.2 Data Binding .............................................. 2727.2.3 Navigation und Routing ............................. 277

7.3 Entwicklung einer SAPUI5-Anwendung ................... 2827.3.1 SAP Web IDE starten und aufsetzen ........... 2837.3.2 Projekt anlegen .......................................... 2847.3.3 Auf die Wetterdaten zugreifen ................... 2967.3.4 Darstellung der Wetterdaten ...................... 3047.3.5 Darstellung der Wetterstationen ................ 306

8 Verarbeitung räumlicher und unstrukturierter Daten ............................................ 321

8.1 Verarbeitung textbasierter Daten ............................. 3228.1.1 Volltextindex definieren ............................. 3228.1.2 Volltextsuche implementieren .................... 3288.1.3 Textanalyse ................................................ 331

8.2 Verarbeitung räumlicher Daten ................................ 3348.3 Data Mining und prädiktive Analysen ...................... 340

9 SQLScript ................................................................. 347

9.1 Werkzeuge zur Arbeit mit SQLScript ........................ 3489.2 Eine SQLScript-Prozedur erstellen ........................... 350

3867.book Seite 10 Dienstag, 3. Mai 2016 2:51 14

Inhalt

11

9.2.1 SQLScript-Prozedur testen ......................... 3569.2.2 Tabellentypen für Eingabe- oder

Ausgabeparameter definieren .................... 3579.3 Templates für SQLScript-Prozeduren erstellen ......... 3619.4 Debugging von SQLScript-Prozeduren .................... 3669.5 Benutzerdefinierte Funktionen ................................ 372

9.5.1 Skalarwertfunktionen ................................. 3739.5.2 Tabellenwertfunktionen ............................. 377

10 Webbasierter Datenzugriff ..................................... 383

10.1 Datenbankzugriff mit OData ................................... 38410.1.1 OData und die SAP HANA XS Engine ........ 38710.1.2 OData-Service erstellen ............................. 39010.1.3 OData-Services definieren ......................... 39410.1.4 Lesende Zugriffe mittels OData-Services .... 39610.1.5 Abfrageoptionen ....................................... 39910.1.6 Besonderheiten bei der OData-Service-

Definition .................................................. 40210.1.7 Schreibende Zugriffe mittels

OData-Services .......................................... 41010.2 Datenbankzugriff mit XMLA ................................... 416

10.2.1 MDX Query Language ............................... 41610.2.2 XML for Analysis (XMLA) .......................... 41810.2.3 XMLA-Service-Definition ........................... 419

11 Native SAP-HANA-Anwendungen debuggen und testen .............................................. 421

11.1 Debugging von XS-JavaScript-Dateien .................... 42211.1.1 Debugging auf einer On-Premise-

SAP-HANA-Plattform ................................ 42311.1.2 Debugging in der SAP-HANA-Trial-

Instanz ...................................................... 42611.2 Automatisierte Tests mit XSUnit ............................. 429

11.2.1 XSUnit-Syntax ........................................... 43111.2.2 Datenbankverbindung ............................... 43411.2.3 Test Suite mit XSUnit anlegen .................... 43511.2.4 Test Suites ausführen ................................. 437

11.3 Mocking von Testdaten .......................................... 43911.3.1 Initialisierung von Mockstar ....................... 441

3867.book Seite 11 Dienstag, 3. Mai 2016 2:51 14

Page 26: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Inhalt

12

11.3.2 Definition von Testdaten ............................ 44311.3.3 Integration der Testdaten in XSUnit ........... 445

11.4 HTTP-Services mit XSUnit testen ............................. 446

12 Lebenszyklus einer nativen SAP-HANA-Anwendung verwalten ............................................ 449

12.1 Lebenszyklusphasen einer nativen SAP-HANA-Anwendung ............................................................. 450

12.2 SAP HANA Lifecycle Management ........................... 45212.3 Änderungsaufzeichnung .......................................... 45612.4 Delivery Units verwalten ......................................... 46112.5 Definition des Transports ......................................... 465

13 SAP HANA Extended Application Services Advanced und weitere neue Konzepte ................... 471

13.1 Neuerungen in der SAP HANA XS Engine ................ 47213.2 Neuerungen in der Anwendungsentwicklung ........... 47613.3 Neues Entwicklungswerkzeug .................................. 47813.4 Neuerungen bei der Definition des Datenmodells .... 479

Anhang............................................................................ 483

A Abkürzungsverzeichnis ....................................................... 485

B Weiterführende Informationsquellen ................................. 487

C Die Autoren ....................................................................... 491

Index ......................................................................................... 493

3867.book Seite 12 Dienstag, 3. Mai 2016 2:51 14

Page 27: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

493

Index

.aflpmml 83

.analyticview 83

.attributeview 83

.calculationview 83

.controller.js 271

.hdbcds 479

.hdbdd 83, 99, 323

.hdbprocedure 83, 351, 414

.hdbrole 82, 83

.hdbroles 125

.hdbscalarfunction 83, 374

.hdbschema 84, 120, 121

.hdbsequence 84, 121

.hdbstructure 84, 414

.hdbsynonym 120

.hdbtable 82, 84, 120, 122

.hdbtablefunction 84, 378

.hdbtextbundle 84

.hdbti 84, 115

.hdbview 82, 84, 121

.proceduretemplate 84, 362

.project 85

.project.json 294

.searchruleset 85

.tgz 463

.view.html 271

.view.js 271

.view.json 270

.view.xml 270

.xsaccess 85

.xsaccess-Datei 75, 78

.xsapp 85

.xsapp-Datei 75

.xsappsite 85

.xshttpdest 85, 190, 196

.xsjob 85, 232

.xsjs 85

.xsjslib 85, 181, 252

.xsoauthappconfig 86

.xsoauthclientflavor 86

.xsodata 86, 390

.xsprivileges 86

.xssecurestore 86

.xssqlcc 86, 228

.xssqlcc-Datei 79

.xswidget 86

.xsxmla 86, 419@Catalog [email protected] [email protected] 113@nokey 107, 114@Schema 101, 113@SearchIndex 114, [email protected] [email protected] 114#ASC 114#COLUMN 113#GLOBAL_TEMPORARY 113#ROW 113$.db 212$.hdb 221$.import 253$.jobs 232, 240$discard() 258$discardAll() 258$execute() 261$filter 400$find() 255$findAll() 255$get() 255$importEntity() 250, 251, 253$inlinecount 401$lazy 260$order 401$prefixOp() 263$query() 250, 261$save() 257$saveAll() 258$select 401$skip 399$top 399$where() 263

A

ABAP Database Connectivity 41ACID 26ADBC 41AFL 341, 349AFM 346Aggregation 151Aggregation Binding 275

3867.book Seite 493 Dienstag, 3. Mai 2016 2:51 14

Page 28: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

494

Index

Aggregationsebene 163Algorithmus 341ALTER 118ALTER TABLE 92American National Standards

Institut 94Analytic Privilege 168Analytic View 137, 142, 481

Datenmodell 142erstellen 142

Änderungsaufzeichnung 456Änderungsliste 451Annotation 98, 112, 323, 324ANSI 94ANSI SQL 93Anwendungsobjekt, Verwaltung 82Anwendungsschema 87Anwendungsschicht 22, 174Anwendungssicherheit 78Anwendungsszenarien 38API-Schlüssel 203App-Controller 307Appliance Packaging 29Application Descriptor 75Application Function Library

341, 349Application Function Modeler 346Applikationsserver 36, 172App-View 307, 308Association Set 393association to 107, 405Assoziation 98, 105, 107, 405

einfache 405Kardinalität 406komplexe 407Lazy Navigation 260Multiplizität 109

Atomarität 26Attribut 101, 105, 137, 403, 409

ändern 119atomares 107Berechtigungen 169definieren 147hinzufügen 120Reihenfolge 119umbenennen 119

Attribute View 137, 481Ausführungsplan 236Ausgabe filtern 166

Authentifizierungs- und Session-Management 244

Authentifizierungsmethode 244

B

Base Changelist 451, 458Baseline 451, 458BBD-Framework 431Bedingung 263Benutzer, technischer 227benutzerdefinierte Funktion 372Benutzeroberfläche 63berechnete Spalte 165Berechtigung 78, 79Bereitstellungsphase 451Bewegungsdaten 97BFL 28, 341, 348Bibliothek 181Binding 269, 272

Aggregation 275bindAggregation 275bindProperty 274Context 275Element 276Factory-Funktion 276Instanz 273One-Time-Binding 273One-Way-Binding 273Property 274Template 276Two-Way-Binding 273Typen 274Variable 216Varianten 273

Body 186Bootstrap 290Breakpoint 368, 428Build-Prozess 172Business Function Library � BFL

C

C++-Laufzeit 472Cache 256, 259Cache Control 80Calculated Columns 165Calculation View 150, 481

Knotentypen 150

3867.book Seite 494 Dienstag, 3. Mai 2016 2:51 14

495

Index

Calculation View (Forts.)Subtyp 158Zeitwerte 158

Call by Value 179Callback-Funktion 291Cartesian Spatial Reference

System 335Catchall-Route 278CDS 96, 250

Annotation 112, 323cdstable 117Syntax 98Tabellentyp definieren 359View 111, 118

CDS-Dokument 99aktivieren 101ändern 118anlegen 99

CDS-Entität � EntitätCDS-Objekt 99

ändern 118löschen 118

Change and Transport System � CTSChange Recording 456Changelist 451, 457Chrome V8 474Client 36Cloud Foundry 473Code Completion 349Code Folding 349Code Pushdown 347Code-Vervollständigung 349Commit 71Component.js 280, 292, 313configurationID 332Constraint 411Container 480Content-Assist-Funktion 102Context 99Contribution 460Controller 36, 268, 271Controller-Methode 271Core Data Services � CDSCORS 80CPU 29CPU-Cache 24CREATE FULLTEXT INDEX 327CREATE TABLE 92Cron 232Cross-Origin Request 80

Cross-Origin Resource Sharing 80Crossroad.js 277Cross-Site Request Forgery 80, 243Cross-Site Scripting 243CSRF 80CSV-Datei, Testdaten 445CTS 466

D

Data Binding � BindingData Category � DatenkategorieData Control Language 91Data Definition Language 91Data Foundation 138Data Manipulation Language 91Data Mining 341Database-API 211, 221data-sap-ui-libs 291DataSource 297Datei anlegen 72Dateierweiterung 82Daten

Integrität 92räumliche 334unstrukturierte 322

Datenanalyse 129Datenbankabfrage 261Datenbankabfrageoperator 262Datenbank-API 184, 210Datenbankbenutzer 49Datenbankmanagementsystem 26Datenbankobjekt 91

ändern 118bearbeiten 91erstellen 91löschen 118

Datenbankoptimierer 109Datenbankprozedur 347Datenbankrolle 124Datenbankschema 87, 94, 101

Datenbankbenutzer 122definieren 121

Datenbankschicht 22, 36, 173Datenbanktabelle

bearbeiten 93erstellen 93

Datenbanktreiber 126Datenbank-View 111, 118

3867.book Seite 495 Dienstag, 3. Mai 2016 2:51 14

Page 29: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

496

Index

Datenbindung � BindingDatenimport 115Datenkategorie 153

CUBE 153DIMENSION 153, 157

Datenkonsistenz 254Datenmodell 91

aktivieren 110analytisches 129ändern 118Daten importieren 115definieren 97erweitern 250, 251föderiertes 125OData 388

Datenspeicherung 29Datentyp

ändern 119CDS/DDL 102definieren 102kundeneigener 104nativer SAP-HANA-Datentyp 103primitiver 102räumlicher 336

Datenverarbeitung 63Datenverarbeitung, sequenzielle 22Dauerhaftigkeit 26DCL 91DDL 91Debugger 367, 424Debugging 225, 422

Berechtigungen 425Konfiguration 370on Premise 423Session 371Timeout 429Trial-Instanz 426

default 107delimField 117Delivery Unit 97, 454, 459, 461

anlegen 461Export 463ID 461Import 464importieren 423Verwaltung 461

Deployment 172Deployment Descriptor 477Designtime-Objekt 96

Detail-Controller 316Detail-View 308DEV_ 87Developer Edition � Entwickler-

AccountDictionary Coding 35Dienst 190Dimension 137, 157discover 418DML 91Dokumenthäufigkeit, inverse 331Drei-Schichten-Architektur 36, 173DROP TABLE 92DU � Delivery Unit

E

Echtzeit 129Eclipse 51EDM 393EL 98Element Binding 276E-Mail 209E-Mail-Versand 206Enterprise-Security-API 243Entität 101, 105, 393

definieren 105Instanz aktualisieren 257Instanz löschen 258verwalten 259

entity 105Entity Data Model 393Entity Relationship Model 98Entity Tag 81Entity Type 393, 402Entity-Write-Operation 412Entwickler-Account

Benutzerkonto 47Einschränkungen 47

Entwicklung, Verwaltung 82Entwicklungsobjekt

Dateierweiterung 82Verwaltung 82

Entwicklungsphase 451Entwicklungssystem 465Entwicklungswerkzeug 41Entwicklungszeit 82Ereignisbehandler 314ERM 98

3867.book Seite 496 Dienstag, 3. Mai 2016 2:51 14

497

Index

ESAPI 243Escaping 243ETL-Prozess 23Event Handler 314Exit 411

Datenmanipulation 411Rückgabeparameter 413Signatur 412SQLScript 414Validierung 411

Expectation 432Expression Language 98

F

Factory-Funktion 276Faktentabelle 142, 155file 117Filter 151, 166Filterbedingung 148Filteroperation 400Flowgraph 346Flush Scheduling 323Formeleditor 164Freitextsuche 322Fremdschlüssel 98Funktion

benutzerdefinierte 372definieren 178JavaScript 178

Funktionsausdruck 179Funktionsdeklaration 179Funktionskonstruktor 179Fuzziness-Faktor 379Fuzzy-Index 326Fuzzy-Suche 114, 323, 329, 377, 379

G

Garbage Collection 258GeoSpatial Engine � Spatial EngineGlobal Positioning System 218Google Maps Geocoding API 205GPS 218GRANT 169GROUP BY 169GUI 63

H

HALM � SAP HANA Application Lifecycle Management

Haltepunkt 428Hardwarearchitektur 25Hash-Wert 277HCP � SAP HANA Cloud PlatformHCP_ACTIVATED_ROLES 88HCP_DEV_METADATA 88HCP_GRANT_SELECT_ON_

ACTIVATED_OBJECT 89HCP_GRANT_SELECT_ON_

ACTIVATED_OBJECTS 89HDBTable 102, 120HDBTable, Rollen 124HDI 96, 480Header 81, 117, 186Hierarchie 162

erstellen 162Level 162Parent-Child 162

HIGHLIGHTED 330Hintergrundjob 231HTML5 44HTML-View 271HTTP 36, 186, 388HTTP-Nachricht 186HTTP-Request 185, 186, 475HTTP-Response 186HTTPS 204HTTP-Service

externer 190testen 446

I

i18n.properties 294if-Anweisung 180Index 123Index.html 290Industrie 4.0 38Information View 129, 131, 480

Aktivierung 135Berechtigungen 168Editor 134Entwicklungsobjekt 133, 135Laufzeitobjekt 133, 135

Injection Flaw 241

3867.book Seite 497 Dienstag, 3. Mai 2016 2:51 14

Page 30: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

498

Index

In-Memory Planing Engine 27INNER JOIN 151, 377INSERT 107Installationsphase 451Instanz 49Instanziierung 176Integrität 92Internationalisierung 294inverse Dokumenthäufigkeit 331Isolation 26

J

Jasmine 429, 431Java 472Java EE 6 Web Profile 44JavaScript 172, 175

API 74, 172, 183Funktion 178Kontrollstruktur 180Objekte 176serverseitiges 71, 175Variablen 177

JavaScript-Proxy 226JavaScript-Variable 226JDBC 210Job

einplanen 231Steuerung zur Laufzeit 240Verwaltung 233

Job-Schedule-API 184, 240Join 139, 151jQuery 297JSLint 436JSON 188JSON Model 269JSON-Objekt 224, 225JSON-Struktur 262JSON-View 270JS-View 270

K

Kardinalität 109, 151Kennzahl 142, 147key 107, 114key generate local 404Klammer-Notation 177Kompressionsverfahren 34

Konfigurationsphase 452Konsistenz 26Konstruktor 253Kontext 101Kontrollfluss 63Kontrollstruktur, JavaScript 180Kopfzeile 117

L

L (Programmiersprache) 27Laufzeitumgebung 40, 473Layout Editor 304Lazy Association 260Lazy Navigation 259Left Outer Join 151, 263Legacy Database-API 211, 212Level-Hierarchie 162, 163Library 181Link-Write-Operation 413

M

M_SYSTEM_LIMITS 106Managed Modus 254, 259manifest.json 280, 295, 309manifest.yml 477Mapping, objektrelationales 249, 254Massendaten 38Master View 308Master-Detail-Anwendung 286,

288, 306Matcher 432MDX 27, 416Measure 142Messdaten 97Metadaten 97metadaten.xml 299Metadatenmodellierung 137Microsoft Excel, View lesen 169Mikroservice 190MIME-Mapping 81Mocking 439Mock-Server 297

DataSource 297Datenmodell 299Initialisierung 303Konfiguration 302mockserver.js 302

3867.book Seite 498 Dienstag, 3. Mai 2016 2:51 14

499

Index

Mock-Server (Forts.)Testdaten 300

Mockstar 422, 440clearAllTestTables 443clearTestTables 443defineAndCreate 441fillTestTable 443fillTestTableFromCsv 443getTestModelName 444

Mock-Tabelle 440Model 36, 268

clientseitiges 269instanziieren 298serverseitiges 270Typen 269

Model View Controller 36, 267Modellierungsphase 450Mozilla SpiderMonkey 474mtad.yml 477Multi-Core-Prozessor 23Multidimensional Expression � MDXMultipart-E-Mail 206Multiplizität 109MVC 267

N

Namensraum 99Namespace 99Navigation 277, 308, 407

attachRouteMatched 282attachRoutePatternMatched 282Ereignisse 281Hash-basierte 277Methoden 281navigates 407navTo 281Property 393, 407viewCreated 282

navTo 315NEO_ 87Neue Database-API 211Neustart von Jobs 238Node.js 175, 472, 474Node.js-API 185Normalisierung 22Nullwert 107

O

OASIS 385ObjectListItem 305ObjectPageLayout 318Objekt

Instanziierung 176JavaScript 176

objektrelationales Mapping 249, 254OData 384

Client-Bibliothek 389Datenmodell 389Model 269Protokoll 389

OData-Service 297, 384, 389Abfrageoptionen 399anlegen 299, 390Datenmanipulation 411Exit 411Filter 400JSON-Ausgabe 397lesender Zugriff 396Schlüssel 402Sortierung 401Validierung 411XML-Ausgabe 397

ODBC 126, 210OLAP 23OLE DB for OLAP 416OLTP 22onExit 272onInit 271Online Analytical Processing 23Online Transaction Processing 22onSelectionChange 315Open Data Protocol � ODataOpen Database Connectivity 126Open Web Application Security

Project 243OpenAjax 266OpenWeatherMap 192OpenWeatherMap-API 205Operation, atomare 26Operator 262, 263ORM 249, 254Outbound-API 184over 407OWASP 243

3867.book Seite 499 Dienstag, 3. Mai 2016 2:51 14

Page 31: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

500

Index

P

PaaS 42Paket 450, 461, 462PAL � Predictive Analysis Libraryparallele Ausführung 27, 35paralleler Thread 35Parallelisierung 34Parameter übergeben 188Parent-Child-Hierarchie 162Partitionierung 151Partitionierung, vertikale 34Performanceengpass 23Phrase-Index 324Platform as a Service 42Polygon 334, 335Präsentationsschicht 36, 174Predictive Analysis Library 27, 28,

340, 341, 348Prepared Statement 216, 242Preprocessor 325Primärschlüssel 98, 107, 114, 402

ändern 119explizite Definition 405künstlicher 404zusammengesetzter 107

Privilege zuweisen 122Product 466Produktivsystem 465Programmiermodell 40, 62, 63Projekt

anlegen 284SAP Web IDE 284teilen 71

Projektion 151, 262Property Binding 274Proxy 197Punkt-Notation 177

Q

QL 98Quellsystem 125, 467Query Language 98

R

R (Programmiersprache) 347Rank 151

räumliche Daten 334Redundanz 34referenzielle Integrität 92Repository 64Repository Workspace 66Repository-Objekt 394Request-API 184, 185Request-Processing-API 187, 233

Attribute 187Klassen 187

Resource Model 269REST-Prinzipien 387Reverse Geocoding 205Rewrite-Regeln 81RIGHT OUTER JOIN 151Route 278

callback 280clearTarget 280config 278definieren 312Match 282name 279pattern 279routes 278subroutes 280target 279targetAggregation 280targetControl 280targetParent 280view 279viewPath 279viewType 279

Router 278, 313Routing 277, 309

Ereignisse 281Konfiguration 278Methoden 281

Rückgabewert 178Runtime 40, 473

S

SAP FioriDesign Guidelines 307Erweiterung 287Master-Detail-Anwendung 286, 288

SAP HANA Administration Console 53

3867.book Seite 500 Dienstag, 3. Mai 2016 2:51 14

501

Index

SAP HANA Application Lifecycle Management 430, 449, 452

SAP HANA Application Services 45SAP HANA CDS � CDSSAP HANA Cloud Platform 42

Benutzerkonto 46Cockpit 47Einsatzszenarien 43Entwicklungsmodell 44

SAP HANA Connectivity Services 190SAP HANA DB Services 45SAP HANA Deployment Infra-

structure 96, 480SAP HANA Development 53SAP HANA Extended Application

Services � XS EngineSAP HANA Fulltext Engine 325SAP HANA Information View �

Information ViewSAP HANA Modeler 53, 132SAP HANA Procedure Template

Editor 363SAP HANA Repository 66, 473

Pakete 461Projekt hinzufügen 70

SAP HANA Smart Data Access 125SAP HANA Spatial Engine �

Spatial EngineSAP HANA SPS 11 471SAP HANA Studio 41, 51, 64

Debugger 367HTTP-Destination 196Installation 52Perspektiven 53Plug-ins 52SQLScript Editor 349XS JavaScript Library 181XS Job Scheduler File 234XS SQL Connection 228

SAP HANA Tools 52SAP HANA Web-based Development

Workbench 41, 57SAP HANA XS Administration

Tool 198HTTP-Destination 198SMTP-Konfiguration 207Trust Manager 204XS SQL Connection 230XS-Job 239

SAP HANA XS Data Services � XSDS

SAP HANA XS Debugging Tools 423SAP HANA XS Engine � XS EngineSAP HANA-Instanz 49SAP HCP � SAP HANA Cloud PlatformSAP User Interface Development Tool-

kit for HTML5 � SAPUI5SAP Web IDE 53, 280, 282, 283

Anwendungserweiterung 287Beispielanwendung 286for SAP HANA 478Import 287Layout Editor 304Projekt 284Quick Start 284Template 285

sap_bluecrystal 290sap.m 290SAP-HANA-Anwendung,

Lebenszyklus 450SAP-HANA-Instanz 49SAP-HANA-Transportmodus 466SAP-HANA-XS-Cookie 244SAPUI5 44, 265

Anwendung entwickeln 282Anwendung erweitern 287Architekturkonzept 266Container 308Controller 271, 272Initialisierung 291Model 269Navigation 277Routing 277View 270XS-JavaScript-Integration 297

Schleife 180Schlüsselattribut 252, 257Schlüsselwert 252SDA 125Secure Socket Layer 193Security-API 184SELECT 169Semantics 138, 147Sense-and-Respond-Anwendung 38Sensordaten 38, 97Sequenz 252, 411serverseitiges JavaScript 71, 175Service 190Session-API 184Shell-Control 292Sicherheit 241

3867.book Seite 501 Dienstag, 3. Mai 2016 2:51 14

Page 32: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

502

Index

Sicherheits-Token 244Signaturtabelle 343Simple Mail Transfer Protocol 206Single-Page-Anwendung 277Skalarwertfunktion 373, 374SMTP-Konfiguration 207SNIPPETS 330Sortierkriterium 401Sortierung 151Spalte

aggregierte 151berechnete 165hinzufügen 164umbenennen 252Variable 166

spaltenweise Speicherung 29Anwendungsfälle 32Vorteile 33

Spatial Data Type 336Spatial Engine 217, 334

Datentypen 218, 219ST_Buffer 219

Spatial Reference Identifier 218, 335Spatial Reference System 217, 335Spec 432Speicherart 113SpiderMonkey 174Spion 436Split-Screen-Layout 307Spot 319SQL 91SQL Privileges 227SQL/MM-Standard 336SQL92 26SQLExecutor 445

execQuery 446getTestModelName 446Initialisierung 446

SQL-Injection 242SQL-Konsole 92SQL-Operator 263SQL-Schnittstelle 26SQLScript 27, 172, 347

Editor 349Exit 414

SQLScript-Prozedur 348aufrufen 356Berechnungslogik 354Body 353

SQLScript-Prozedur (Forts.)Ein- und Ausgabeparameter

353, 357Header 353Identifier 353Template 361testen 356

SQL-Verbindunganonyme 79Default 79

SRID 218, 335SRS 335SSL 193ST_Buffer 219ST_Contains 220ST_Geometry 336ST_Point 219Star Join 146, 151, 160Sternschema 142stiller Fehler 238Stored Procedure erstellen 351String-Matching 256Subcriptions 55Suche, textbasierte 114Suchergebnisse, Ranking 331Suchoperator 328Support Package Stack 11 471switch-Anweisung 180synchrone Verarbeitung 202

T

Tabelledefinieren 106spaltenbasierte 106, 113virtuelle 126vollqualifizierter Name 117zeilenbasierte 113

Tabellentyp 357globaler 359inline 358

Tabellenwertfunktion 373, 377Table Type � TabellentypTemplate

Instanz 365Parameter 363SQLScript-Prozedur 361

Test 421

3867.book Seite 502 Dienstag, 3. Mai 2016 2:51 14

503

Index

Test Suite 432anlegen 435deaktivieren 433

Testdaten 443Testfall 432, 433Testrunner 435TestRunner.xsjs 437Testschema 431Testsystem 465Testwerkzeug 430TEXT JOIN 151Textanalyse 39, 331

Ergebnisse 333Konfiguration 331

Textverarbeitung, Modus 325Thread, paralleler 35Timeout 429TLS 245Tokenization 329Trace-API 184Trace-Level 247Tracing 246

debug 246Development Workbench 248error 246fatal 246info 246SAP HANA Studio 247warning 246

Transport 465Änderungsliste 458Verbindungsdetails 467

Transport Layer Security 245Transportmodus 466Transportphase 451Transportweg 468Trial-Account � Entwickler-AccountTrust Manager 204Trust Relationship 467Tupel selektieren 263

U

UDF 372UI-Bibliothek 290Union 150Unmanaged Mode 254, 260unstrukturierte Daten 39updateAggregation 275

URL-Überschreibungsregeln 81User Defined Function 372Utilities-API 185

V

Variable 148, 166JavaScript 177Sichtbarkeit 178Typisierung 177

Vendor-ID 455, 461Verbindungskonfiguration 227Verbindungssicherheit 80Verzweigung 180View 36, 111, 268, 270

ändern 118anlegen 317Primärschlüssel 402Typen 270

virtuelle Maschine 473virtuelle Tabelle 126VM 473Volltextindex 114, 322, 324

Annotationen 324automatischer 322definieren 322, 326

Vorprozessor 325

W

Währungsumrechnung 28Wertehilfe 167WGS84 218Wildcard-Suche 329with 409without 410Working Set 68Wrapper-Prozedur 342

X

XML for Analytics 384, 416XML Model 269XMLA 384, 416XMLA-Methoden 418XML-Sicherheit 244XML-View 270XS Application Privileges 227

3867.book Seite 503 Dienstag, 3. Mai 2016 2:51 14

Page 33: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

504

Index

XS Engine 37, 62, 172Advanced 175, 472Classic 472erweitern 181klassische 174OData 388Programmiermodell 172

XS JavaScript 172XS JavaScript Library 181XS Job Scheduler 233, 234XS SQL Connection 226, 227

description 229Konfigurationsdatei 228role_for_auto_user 229

XSA-Anwendung 476, 479XSC-Anwendung 476, 479XS-Data-Services-API 185XS-Destination 192, 196

authType 194description 193Erweiterung 199host 192modifies 200pathPrefix 193, 200port 193proxyHost 195proxyPort 195ProxyType 195sslAuth 193sslHostCheck 194timeout 195useSSL 193

XSDS 249Entity Manager 259Import 250Managed Mode 254, 259Query-API 261Unmanaged Mode 260

xsds_gen 253XS-JavaScript-Datei 72XS-Job

action 235aktivieren 239

XS-Job (Forts.)description 235schedules 236signature_version 237Verwaltung 233xscron 238

XS-Job-API 231XSJS-Outbound-API 201, 206

$.net.Mail 206$.net.SMTPConnection 206getResponse 201readDestination 201request 201

XS-Procedures-API 185XS-Request

API 185Verarbeitung 185

XSRF 80, 243XSS 243XS-Session 427XSUnit 421, 429

afterEach 433afterOnce 433beforeEach 433beforeOnce 433commit 435dbConnection 434describe 432expect 432it 432spyOn 436Syntax 431xdescribe 433xit 433

Z

zeilenweise Speicherung 29, 31Zeitwerte 158Zertifikat 204Zertifizierung 29Zugriffsberechtigung 79Zwischenspeicher 256, 259Zwischentabelle 407

3867.book Seite 504 Dienstag, 3. Mai 2016 2:51 14

Page 34: Native Anwendungsentwicklung mit SAP HANA Kapitel 2 In diesem Kapitel lernen Si e Besonderheiten nativer SAP-HANA-Anwendungen und die SAP HANA XS Engine kennen, mit der Sie native

Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie ger-ne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag.

Teilen Sie Ihre Leseerfahrung mit uns!

Stefan Kühnlein ist seit 2013 Solution Architect bei der OPITZ CONSULTING Deutschland GmbH und hier im Bereich Softwareentwicklung tätig. Unter anderem berät er Kunden beim Entwurf und Aufbau serviceorientier-ter Architekturen und war maßgeblich am betrieblichen Kompetenzaufbau zur nativen Anwendungsentwicklung mit SAP HANA beteiligt.

Holger Seubert arbeitet seit 2013 bei SAP als Enterprise Architect im Bereich Datenbanken und Technologie mit einem Schwerpunkt auf der SAP-HANA-Plattform. Er un-terstützt Kunden bei der Positionierung von SAP HANA im Rahmen von selbstentwickelten Softwarelösungen.

Stefan Kühnlein, Holger Seubert

Native Anwendungsentwicklung mit SAP HANA504 Seiten, gebunden, Mai 2016 69,90 Euro, ISBN 978-3-8362-3867-0

www.sap-press.de/3916

SAP-Wissen aus erster Hand.