ABAP-Programmierung unter SAP HANA

Für Anwendungen im Umfeld von SAP HANA gibt es spezielle Acceleratoren (Beschleuniger), deren Vorteile auf der Hand liegen: Keine zusätzlichen Datenbankaggregate, extrem gute und v. a. konstante Zugriffszeiten, da das Risiko eines Zugriffs auf nicht definierte Aggregate nicht mehr besteht.

Für den ABAP-Entwickler wurde 2012 das HANA-optimierte SAP-Release 7.4 herausgebracht, welches umfassende Änderungen in der ABAP-Programmiersprache mit sich brachte. Der Leser dieses Buches findet viele Übungsprogramme, mithilfe derer er seine hier gelernte Theorie gleich in die Praxis umsetzen kann.

ABAP-Programmierung unter SAP HANA

ABAP-Programmierung unter SAP HANA
  • 220 Seiten - 18.04.2017 (Veröffentlichungsdatum) - Espresso Tutorials (Herausgeber)

Während Sie bisher Datenbankprozeduren mithilfe von Open SQL programmiert haben, werden Sie sehen, dass Native SQL in HANA zu erheblichen Performancegewinnen führt. Damit Open SQL von der Datenbankschnittstelle nicht erst aufwendig in Native SQL umgeformt werden muss, ist es besser für die Performance, wenn Sie schon direkt in Native SQL schreiben.

Sie werden auch SQLScript kennen- und einsetzen lernen. Um Ihnen den Umstieg leicht zu machen, werde ich am Anfang des Buches jedes Listing in zwei Varianten schreiben: zum einen im neuen und zum anderen im alten ABAP.

SAP HANA – Einführung

SAP HANA ist eine In-Memory Database. Sie befindet sich im Hauptspeicher des Applikationsservers. Während früher die Programme getrennt von den Datenbanken gelagert wurden, können jetzt Datenbankprozeduren direkt in der SAP-HANA-Datenbank gespeichert werden. Mit dieser werden gleichzeitig viele neue Tools ausgeliefert, die vom ABAP-Entwickler für die Bearbeitung in dieser Umgebung genutzt werden können.

Die HANA-Datenspeicherung kann sowohl zeilen- oder spaltenbasiert als auch objektorientiert erfolgen. Damit ist sie besonders für Zugriffe aus ABAP Objects ausgelegt. Ein großes Plus ist die hervorragende Parallelverarbeitungsmöglichkeit. Programme können ihre Verarbeitungsprozesse auf mehrere gleichzeitig ablaufende Datenpakete verteilen.

SAP hat die Eclipse-Plattform, die heutzutage von vielen Programmiersprachen als Entwicklungsumgebung verwendet wird, insbesondere für die neuartige Entwicklung in ABAP und SAP HANA angepasst: Ein besonderes Element der HANA-Plattform ist HANA XS (HANA Extended Application Services), das die Entwicklung von Anwendungen direkt auf der HANA-Plattform ohne externe Entwicklungsumgebung anbietet.

Die hiermit entwickelten Objekte erzeugen Objekte im Datenbankkatalog und werden im HANA Repository abgelegt. Die hierfür verwendete Beschreibungssprache ist Core Data Services (CDS), deren Dateien im HANA Repository mit der Endung .hdbdd gespeichert werden.

ABAP-Programmierung unter SAP HANA - Entwicklungsebenen
Abbildung 1.1: Entwicklungsebenen mit SAP HANA

Grundlagen der ABAP-Programmierung für SAP HANA

Mit dem Release 7.4 SP5 gab es eine bedeutende Neuerung im Umgang mit SAP HANA: Die Sprache wurde erheblich vereinfacht. Ich stelle Ihnen die Situation sowohl vor als auch nach dem Release 7.4 SP5 vor.

Übertragung der ABAP-Programmierung vom Applikationsserver nach SAP HANA

Für eine Übertragung der ABAP-Programmierung vom Applikationsserver in den SAP-HANA-Bereich ist, verbunden mit der damit notwendigen sprachlichen Veränderung, eine Übertragung der SQL-Anweisungen von Open SQL nach Native SQL erforderlich. Dabei finden auch Namensänderungen (Konvertierungen) von Datentypen statt.

Die Datenobjekte des Native SQL werden anders benannt als im Open SQL. Das ABAP Dictionary lässt benutzerspezifische DDIC-Datentypen zu wie

  • Datenelemente,
  • Strukturen,
  • Tabellentypen

Diese DDIC-Datentypen sowie Domänen sind bei der Modellierung und Programmierung aufgrund des notwendigen speziellen Native-SQL-Typs in SAP HANA nicht direkt verwendbar.

ABAP Database Connectivity

Um in normalen ABAP-Anwendungen des Applikationsservers Native SQL leichter nutzen zu können, was Sie im Zusammenhang mit SAP HANA tun sollten, hat die SAP die ABAP Database Connectivity (ADBC) erfunden, die objektorientiert verwendet wird.

Sekundäre Datenbankverbindungen

Bisher haben Sie es bei Ihren ABAP-Programmierungen immer mit nur einer Datenbank zu tun gehabt, auf der alle Ihre Datenbanktabellen gelagert waren. Vor allem bei HANA-Side-by-Side-Szenarien müssen Sie aber mit mehreren Datenbanken arbeiten. Die anderen Datenbanken bezeichnet man als sekundäre Datenbanken bzw. sekundäre Datenbankverbindungen.

Ihr Programm liest die Daten gewöhnlich von der HANA-Datenbank. Sie können aber auch direkt auf die sekundäre Datenbankverbindung zugreifen, um v. a. Lesezugriffe zu beschleunigen.

Natives SQL im SAP HANA Studio

In diesem Abschnitt befassen wir uns mit dem Einsatz von nativem SQL im Eclipse-basierten SAP HANA Studio.

Dynamisches Anlegen von Tabellen und Views

In Native SQL haben Sie die Möglichkeit, in Ihrem Programm zur Laufzeit DDIC-Objekte (Tabellen und Views) anzulegen. Im Listing 2.7 wird eine Datenbank-Tabelle mit Namen ZAIRPLANE angelegt, die aus den Feldern MANDT, TYPE, MODEL, SEATS und MOTOR besteht. Der Primärschlüssel besteht aus den Feldern MANDT, TYPE und MODEL. NVARCHAR und SMALLINT sind native Datentypen für SAP-HANA-Datenbanken.

ABAP-Programmierung unter SAP HANA - Datenbank-Tabelle
Listing 2.7: Dynamisches Anlegen einer Datenbank-Tabelle

In Listing 2.8 sehen Sie, wie ein Datenbank-View mit Namen ZFLIGHT dynamisch angelegt wird. Die DB-Tabellen SFLIGHT und SBOOK, aus denen der View bestehen soll, stehen bei der Erstellung dieses Buches im Datenbankschema SAPDEA. Die Nennung des Schemas ist immer dann erforderlich, wenn die Selektion in einem anderen Schema, i.d.R. mit der Benutzer-ID bezeichnet, durchgeführt wird.

ABAP-Programmierung unter SAP HANA - Datenbank-Views
Listing 2.8: Dynamisches Anlegen eines Datenbank-Views

SQLScript

Sie sind bereits mit dem Open-SQL-Select, das Sie in normalen ABAP-Programmen des Applikationsservers verwenden, und dem Native SQL für den SAP-HANA-Bereich vertraut. Als Drittes lernen Sie jetzt das SQLScript kennen, welches Sie in Datenbankprozeduren, Calculation Views von SAP HANA sowie den CDS-Views verwenden.

Datenbankprozeduren sind Selektionen als Codefragmente, die zwecks Wiederverwendung auf der SAP-HANA-Datenbank abgelegt werden, ähnlich den Ihnen bekannten Funktionsbausteinen auf dem Applikationsserver.

Analytische Views (gebräuchlich bis Release 7.4 SP4)

Sie kennen sicherlich alle die Views aus dem Data Dictionary, die Ihnen eine spezielle Sicht auf eine oder mehrere Datenbanken gleichzeitig erlauben. Geschaffen wurden sie, um die Performance bei Selektionssichten auf Datenbanktabellen zu optimieren.

SAP HANA hat dieses Prinzip der Views noch verfeinert und erweitert. SAP HANA kennt drei Typen von analytischen Views:

  • Attribute View für Sichten auf Stammdaten,
  • Analytic View für Sichten auf Bewegungsdaten,
  • Calculation View für eine Kombination aus mehreren Views und Operationen.

Das Novum an diesen Views besteht darin, dass hier bereits während der Selektion aus der Datenbank Analysen und Berechnungen durchgeführt werden können.

ABAP-Programmierung unter SAP HANA - Attribut Views
Abbildung 2.7: Anlage eines Attribut Views

Einbindung der Objekte aus dem SAP HANA Studio in ABAP-Programme

Sie haben gerade gelernt, wie Sie mit dem SAP HANA Studio Daten aus der Datenbank auslesen können. Nun zeige ich Ihnen, wie Sie diese analytischen Views und Datenbankprozeduren in ABAP-Programme einbinden. Dabei steht »analytische Views« jeweils für die drei Viewtypen Attribute, Analytic und Calculation.

Ansprechbar sind die analytischen Views über die unter Catalog im Datenbankschema _SYS_BIC generierten Column Views. Die ABAP-Programme legen Sie bekanntlich in der Perspektive ABAP an.

Transport der HANA-Objekte

Der Transport von HANA-Objekten findet mithilfe einer Delivery Unit statt. Dies ist eine Sammlung von Paketen, die gemeinsam transportiert werden sollen. Ich habe in Abschnitt 1.3.7 schon einmal darauf hingewiesen, dass im HANA Repository das Paket sap die Objekte beinhaltet, die von der SAP ausgeliefert werden, und system-local die Pakete besitzt, die nicht transportiert werden sollen.

Dementsprechend müssen Sie für Ihre zu transportierenden eigenen Entwicklungen entsprechende Pakete anlegen. Eine Delivery Unit für Ihre Pakete muss immer explizit angelegt werden.

ABAP-Programmierung unter SAP HANA - Paketeigenschaften
Abbildung 2.34: Paketeigenschaften

ABAP-Erweiterungen seit Release 7.4 SP5

Wenn Sie dieses Buch aufmerksam gelesen haben, werden Sie festgestellt haben, dass die beschriebene Handhabung der HANA-Objekte sehr umständlich ist:

  • Bei Änderungen der HANA-Objekte müssen deren ABAP-Proxies und Transportcontainer immer manuell synchronisiert werden.
  • HANA-Entwicklungsobjekte sind nicht an die Versionsverwaltung angeschlossen.
  • HANA-Objekte werden bei der Syntaxprüfung von ABAP-Programmen nicht überprüft, was häufig zu Laufzeitfehlern führt.
  • HANA-Entwicklungsobjekte und ihre Proxies sind nicht erweiterbar.
  • Die Abbildung von SQL-Datentypen auf ABAP-Datentypen muss manuell überwacht werden, weil sie nicht eindeutig ist.

Aus diesem Grund sind seit dem ABAP-Release 7.4 SP5 für mehrere HANA-Objekte gleichbedeutende ABAP-Objekte geschaffen worden, sodass Sie auf die beschriebenen HANA-Datenbankprozeduren und analytischen Views verzichten können.

Fortgeschrittene Techniken

Nachdem Sie nun den Umgang mit SAP HANA gelernt haben, stelle ich Ihnen noch ein paar Anwendungsszenarien vor, in denen die HANA-Technik neue Möglichkeiten der Programmierumsetzung anbietet.

Unstrukturierte Daten und deren Textsuche

Ein Anwender muss heutzutage in vielen verschiedenen Anwendungsgebieten Texte suchen. Das kann entweder im Internet oder auch in Dokumenten sein, die nach bestimmten Textbausteinen durchsucht werden sollen. Des Weiteren sind Datenbanktabellen, wo über abgelegte Informationen nur wenig bekannt ist, als Quellen denkbar.

SAP HANA ist in der Lage, Texte und Dokumente sowie Datenbanktabellen nach Wortfragmenten zu durchsuchen, wobei auch unrichtig eingegebene Datensuchen korrigiert werden können.

Grundlagen der Textsuche

Die Textsuche lässt sich in mehrere Kategorien unterteilen:

  • Fuzzy-Suche
    toleriert kleine Fehler des Anwenders bei der Sucheingabe und selektiert auch ähnliche Begriffe;
  • Freestyle-Suche
    die Eingabe in ein Suchfeld kann zu Recherchen über mehrere unterschiedliche Tabellenfelder führen;
  • Textanalyse
    Texte werden bezüglich Emotionen und Semantik analysiert;
  • linguistische Suche und Synonymsuche
    Synonyme, Ausdrücke und Sprachvarianten werden bei der Suche berücksichtigt;
  • Suchfacetten
    Sucheingaben können zu Datenanalysen gemäß bestimmter Merkmale genutzt werden; Ausgabe der Ergebnisse als Diagramme möglich;
  • Ranking der Resultate
    die Resultate der Suche werden gemäß ihrer Trefferwahrscheinlichkeit sortiert und angezeigt;
  • Vorschlagslisten
    bereits während der Sucheingabe des Anwenders werden mögliche Resultate zur Auswahl angezeigt.
ABAP-Programmierung unter SAP HANA - Fuzzy-Suche
Tabelle 3.1: Sucheingaben für die Fuzzy-Suche
Textsuche in Native SQL von SAP HANA

Für die Fuzzy-Suche im Column Store von SAP HANA mithilfe von Native SQL gibt es die speziell dafür optimierten Datentypen TEXT und SHORTTEXT. TEXT ist für Langtexte unbekannter Länge gedacht, SHORTTEXT soll bei Texten mit einer bestimmten Länge verwendet werden.

Sie können diese Datentypen aber nicht in der Definition einer Datenbanktabelle einsetzen. Dieses Problem können Sie umgehen, indem Sie einen Full-Text-Index für eine Tabellenspalte anlegen. Dadurch wird beim Laden der Daten aus der Tabelle im Hauptspeicher eine weitere Spalte (Schattenspalte) vom Typ TEXT erzeugt. Diese enthält dann dieselben Daten wie die Spalte, für die sie erzeugt wurde, aber in einer für die Textsuche optimierten Darstellung. Ohne einen Full-Text-Index gibt es keine sinnvolle Textsuche.

Der Full-Text-Index wird mit der Anweisung CREATE FULLTEXT INDEX angelegt. Es existieren viele Varianten dieser Anweisung, die wir hier nicht alle betrachten können. Ich verweise in dieser Angelegenheit auf das SAP Help Portal http://help.sap.com.

ABAP-Programmierung unter SAP HANA - Full-Text-Index
Abbildung 3.1: Anlage Index für Full-Text-Index

Zusammenfassung

Als Einsteiger in die neue Entwicklungsplattform von SAP werden Sie sich nach Bearbeitung aller Übungsprogramme hoffentlich sicherer in diesem ungewohnten Umfeld bewegen, während Fortgeschrittene gut gerüstet sein sollten, um mit den neuen Features, die die SAP in ihre Programmierung implementiert hat, umgehen zu können.

ABAP-Programmierung unter SAP HANA 29,95 €
  • Anfänger
  • Fortgeschrittene
  • Experte
4.3

Das erwartet Sie:

ABAP-Programmierung unter SAP HANASeiten: 220 – Sprache: de

Lernen Sie die Entwicklungsumgebung Eclipse unter dem HANA-optimierten ABAP-Release 7.4 kennen.

  • Entwicklungsumgebung: HANA-Objekte mit Eclipse entwickeln
  • Datenbankprogrammierung: Sichten auf der SAP-HANA-Datenbank anlegen
  • HANA-spezifische Funktionen: SQLScript versus die alten ABAP-Befehle