Read the book: «ABAP-Programmierung unter SAP S/4HANA – 2., erweiterte Auflage»

Font:

Rüdiger Deppe

Viktor Laufer

ABAP-Programmierung unter SAP S/4HANA®

2., erweiterte Auflage


Rüdiger Deppe, Viktor Laufer

ABAP-Programmierung unter SAP S/4HANA® – 2., erweiterte Auflage

ISBN:978-3-96012-043-8 (E-Book)

Lektorat:Anja Achilles

Korrektorat: Christine Weber/Marina Pittsik

Coverdesign: Philip Esch

Coverfoto:© Just_Super | ID 1144908953 istockphoto.com

Satz & Layout: Johann-Christian Hanke

2. Auflage 2021

© Espresso Tutorials GmbH, Gleichen 2021

URL: www.espresso-tutorials.de

Das vorliegende Werk ist in allen seinen Teilen urheberrechtlich geschützt. Alle Rechte sind vorbehalten, insbesondere das Recht der Übersetzung, des Vortrags, der Reproduktion und der Vervielfältigung. Espresso Tutorials GmbH, Bahnhofstr. 2, 37130 Gleichen, Deutschland.

Ungeachtet der Sorgfalt, die auf die Erstellung von Text und Abbildungen verwendet wurde, können weder der Verlag noch die Autoren oder Herausgeber für mögliche Fehler und deren Folgen eine juristische Verantwortung oder Haftung übernehmen.

Feedback: Wir freuen uns über Fragen und Anmerkungen jeglicher Art. Bitte senden Sie diese an: info@espresso-tutorials.com.

Inhaltsverzeichnis

Cover

Titelseite

Copyright/Impressum

Vorwort

1 SAP HANA – Einführung

1.1 Grundbegriffe von SAP HANA

1.2 Neue Programmiersprachen

1.3 Eclipse als Entwicklungsplattform

1.3.1 Warum Eclipse?

1.3.2 Installation von Eclipse

1.3.3 Installation der ABAP Development Tools und des SAP HANA Studios für Eclipse

1.3.4 Beginn der Arbeit mit Eclipse

1.3.5 Ihr erstes Eclipse-Programm

1.3.6 SAP HANA Studio

1.3.7 Das SAP HANA Repository

2 Grundlagen der ABAP-Programmierung für SAP HANA

2.1 Übertragung der ABAP-Programmierung vom Applikationsserver nach SAP HANA

2.2 ABAP Database Connectivity

2.3 Sekundäre Datenbankverbindungen

2.4 Natives SQL in SAP HANA Studio

2.4.1 Dynamisches Anlegen von Tabellen und Views

2.4.2 Die SELECT-Anweisung in SAP HANA

2.5 SQLScript

2.5.1 HANA-Datenbankprozeduren (gebräuchlich bis Release 7.4 SP4)

2.5.2 Benutzerdefinierte Funktionen (gebräuchlich bis Release 7.4 SP4)

2.6 Analytische Views (gebräuchlich bis Release 7.4 SP4)

2.6.1 Attribute View

2.6.2 Analytic Views

2.6.3 Calculation Views

2.6.4 Laufzeitobjekte der Views

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

2.7.1 Aufrufen analytischer Views

2.7.2 Aufruf von HANA-Datenbankprozeduren

2.8 Transport der HANA-Objekte

2.9 ABAP-Erweiterungen seit Release 7.4 SP5

2.9.1 Grundlagen der Core Data Services (CDS)

2.9.2 ABAP CDS

2.9.3 HANA CDS

2.9.4 ABAP-Datenbankprozeduren

3 Fortgeschrittene Techniken 3.1 Unstrukturierte Daten und deren Textsuche

3.1.1 Grundlagen der Textsuche

3.1.2 Textsuche in Native SQL von SAP HANA

3.1.3 Textsuche in ABAP

3.2 Entscheidungstabellen in SAP HANA

3.2.1 Umgang mit den Entscheidungstabellen in SAP HANA

3.2.2 Aufruf der Entscheidungstabellen aus ABAP

3.3 Funktionsbibliotheken für SAP HANA

4 Zusammenfassung

A Die Autoren

B Disclaimer

Willkommen bei Espresso Tutorials!

Unser Ziel ist es, SAP-Wissen wie einen Espresso zu servieren: Auf das Wesentliche verdichtete Informationen anstelle langatmiger Kompendien – für ein effektives Lernen an konkreten Fallbeispielen. Viele unserer Bücher enthalten zusätzlich Videos, mit denen Sie Schritt für Schritt die vermittelten Inhalte nachvollziehen können. Besuchen Sie unseren YouTube-Kanal mit einer umfangreichen Auswahl frei zugänglicher Videos: https://www.youtube.com/user/EspressoTutorials.

Kennen Sie schon unser Forum? Hier erhalten Sie stets aktuelle Informationen zu Entwicklungen der SAP-Software, Hilfe zu Ihren Fragen und die Gelegenheit, mit anderen Anwendern zu diskutieren: http://www.fico-forum.de.

Eine Auswahl weiterer Bücher von Espresso Tutorials:

 Sebastian Abshoff:Mobile Apps mit den SAP® Cloud Platform Mobile Services

 Dr. Boris Rubarth:Schnittstellenprogrammierung in SAP® ABAP

 Johannes Gerbershagen:Qualitätsmanagement in der ABAP-Entwicklung unter SAP®

 Johannes Gerbershagen:SAP®-Praxishandbuch ABAP Core Data Services (CDS)

 Tobias Steckenborn:Schnelleinstieg in SAP® Cloud Platform Workflow

 Jörg Böke: Schnelleinstieg in SQLScript für SAP HANA®


Vorwort

Die Client-Server-Architektur der SAP startete 1993 mit dem Namen SAP R/3 und sorgte dafür, dass die SAP mit der angebotenen ERP-Software einen enormen Aufschwung erlebte. Erste Ansätze der HANA-Technologie kamen 2007 zur Anwendung. Die SAP-HANA-Datenbank fungierte zunächst als Side-by-Side-Szenario neben einer vorhandenen traditionellen Datenbank. SAP HANA bildete dabei die Sekundärdatenbank, die traditionelle war die Primärdatenbank. Schon bald konnte SAP HANA aber auch als alleiniges System zur Speicherung und Bereitstellung von Daten genutzt werden.

Im Februar 2015 setzte die SAP schließlich mit der als S/4HANA bezeichneten Technologie einen weiteren Meilenstein. Die Basis dieser neuen Technologie bilden die leistungsfähige In-Memory-Plattform SAP HANA und die moderne Benutzeroberfläche SAP Fiori. Datenmodelle und Benutzerführung wurden radikal vereinfacht. Zudem existieren nun Cloud-Lösungen, die mit einem zentralen Host-System verbunden sind.

Als In-Memory-Verarbeitung bezeichnet man die Tatsache, dass die Datenbank jetzt nicht mehr auf einem eigenen Datenbankserver abgelegt ist, sondern sich gemeinsam mit den Programmdaten im Hauptspeicher des Applikationsservers befindet. Programm und Datenbank verschmelzen miteinander; Rechenvorgänge, die vorher mehrere Stunden Laufzeit benötigten, werden jetzt innerhalb weniger Minuten bis Sekunden durchgeführt.

Was bedeutet das für Sie als Entwickler? Wie müssen Sie Ihre gewohnte Vorgehensweise umstellen? Diese Fragen werden mit diesem Buch beantwortet.

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. Ende des Jahres 2015 wurden SAP NetWeaver 7.5 sowie ABAP 7.50 mit noch einmal deutlich verbesserter SAP-HANA-Unterstützung veröffentlicht. Der Leser dieses Buches findet viele Übungsprogramme, mithilfe derer er seine hier gelernte Theorie gleich in die Praxis umsetzen kann. Für die Beispielprogramme dieses Buches ist mindestens die ABAP-Version 7.40 erforderlich.

Während Sie bisher Datenbankprozeduren mithilfe von Open SQL programmiert haben, werden Sie sehen, dass Native SQL in HANA zu erheblichen Performancegewinnen führt. Mit dem ABAP-Release 7.53 wurde Open SQL umbenannt in ABAP SQL. Wundern Sie sich daher nicht, wenn in älteren Quellen von Open SQL und in neueren von ABAP SQL die Rede ist. Da ABAP SQL von der Datenbankschnittstelle erst aufwendig in Native SQL umgewandelt werden muss, ist es besser für die Performance, wenn Sie Ihr Coding direkt in Native SQL schreiben. Sie werden auch SQLScript kennen- und einsetzen lernen.

Bei den Beispielselektionen wird Ihnen immer wieder auffallen, dass die Namen der Datenbanktabellen mit dem Zusatz »SAPDEA« ergänzt wurden. Hierbei handelt es sich um ein sogenanntes Datenbankschema, welches Ihnen in Verbindung mit der Eclipse-Plattform im ersten Kapitel näher beschrieben wird. Wenn Sie die Selektionsbeispiele auf Ihrem eigenen Rechner nachvollziehen möchten, müssen Sie den Namen dieses Datenbankschemas gegen den Ihres eigenen Datenbankschemas austauschen.

In den Releases ABAP 7.40 sowie 7.50 hat sich die ABAP-Sprache sehr verändert. Zahlreiche Anweisungen, die Sie seit vielen Jahren gewohnt sind, wurden in Funktionen umgewandelt. Um Ihnen den Umstieg zu erleichtern, werden wir am Anfang des Buches jedes Listing in zwei Varianten schreiben: im neuen sowie im alten ABAP.

Neue ABAP-Techniken

Detaillierte Informationen über alle Release-Neuerungen erhalten Sie im SAP-System unter der Transaktion ABAPDOCU. Wählen Sie dort den Link ABAP – Releaseabhängige Änderungen.

In Kapitel 1 stellen wir Ihnen die neue HANA-Datenbank vor. Außerdem führen wir Sie in die Handhabung der Entwicklungsplattform Eclipse ein, die für die Entwicklung von HANA-Objekten unentbehrlich ist. In Kapitel 2 zeigen wir Ihnen die Verwaltung der HANA-Objekte und tellen Ihnen die für HANA wichtigen Sprachen Native SQL und SQLScript vor. Außerdem werden Sie die Formen der optimierten Datenbankzugriffe unter HANA sowie alternatives Programmieren in reinem ABAP kennenlernen. In Kapitel 3 erläutern wir exemplarisch die Textsuche und den Einsatz von Entscheidungstabellen als zwei der neuen Funktionsweisen unter der HANA-Datenbank.

In dieser aktualisierten Fassung wurden neue Funktionen und Optionen ergänzt. Die Beispiele wurden angepasst sowie mit neuen Inhalten und Screenshots versehen, damit sich der Leser schneller in die Programmierung einlesen und diese leicht nachvollziehen kann.

Quellcode-Beispiele

Dieses Buch enthält viele Quellcode-Beispiele. Um die Lesbarkeit in Ihrem E-Book-Lesegerät zu verbessern und den Zeilenumbruch korrekt darzustellen, empfehlen wir, den Quellcode im Querformat zu betrachten oder die Schriftgröße kleiner zu zoomen.

Beispielszenario für dieses Buch

In diesem Buch wird das Beispielszenario »Flugdatenmodell« verwendet, das auch in SAP-Schulungen und zahlreichen ABAP-Büchern zum Einsatz kommt. Von Vorteil ist, dass die Beispieldaten des Flugdatenmodells in den Tabellen im SAP-System verfügbar sind bzw. mit dem SAP-Standardprogramm SAPBC_ DATA_GENERATOR generiert werden können. Im Wesentlichen handelt es sich um folgende Tabellen, die über den Primärschlüssel verknüpft werden können:

 SCARR (Fluggesellschaft)

 SPFLI (Flugplan)

 SCUSTOM (Flugkunden)

 SBOOK (Flugbuchungen)

 SFLIGHT (Flug)

Sie können alle Quellcodes aus diesem Buch unter folgender Adresse herunterladen: http://abap.espresso-tutorials.de.

Danksagung

Rüdiger Deppe: Ich bedanke mich beim Team von Espresso Tutorials für die Unterstützung bei der Erstellung dieses Buches, v.a. bei Anja Achilles, Johann-Christian Hanke und Martin Munzel. Außerdem danke ich meiner Frau Ivon für den administrativen Beistand.

Viktor Laufer: Auch ich möchte mich für die gute Zusammenarbeit bei der Aktualisierung dieses Buches bedanken, v.a. bei Anja Achilles. Mein besonderer Dank gilt meiner Frau Nadja für die Möglichkeit und meinen Kindern für die Geduld, an diesem Buch mitarbeiten zu können.

Im den Text sind Kästen eingefügt, um wichtige Informationen besonders hervorzuheben. Jeder Kasten ist zusätzlich mit einem Piktogramm versehen, das diesen genauer klassifiziert:

Hinweis

Hinweise bieten praktische Tipps zum Umgang mit dem jeweiligen Thema.

Beispiel

Beispiele dienen dazu, ein Thema besser zu illustrieren.

Achtung

Warnungen weisen auf mögliche Fehlerquellen oder Stolpersteine im Zusammenhang mit einem Thema hin.

Die Form der Anrede

Um den Lesefluss nicht zu beeinträchtigen, verwenden wir im vorliegenden Buch bei personenbezogenen Substantiven und Pronomen zwar nur die gewohnte männliche Sprachform, meinen aber gleichermaßen Personen weiblichen und diversen Geschlechts.

Hinweis zum Urheberrecht

Sämtliche in diesem Buch abgedruckten Screenshots unterliegen dem Copyright der SAP SE. Alle Rechte an den Screenshots hält die SAP SE. Der Einfachheit halber haben wir im Rest des Buches darauf verzichtet, dies unter jedem Screenshot gesondert auszuweisen.

1 SAP HANA – Einführung

In diesem Kapitel führen wir Sie in die Begriffswelt der HANA-Datenbank ein. So können Sie beim Thema SAP HANA gut mitreden. Außerdem erhalten Sie einen ersten Einblick in die Entwicklungsplattform Eclipse.

1.1 Grundbegriffe von SAP HANA

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 ihr werden gleichzeitig viele neue Tools ausgeliefert, die vom ABAP-Entwickler für die Bearbeitung in dieser Umgebung genutzt werden können.

Begriff: SAP HANA

HANA ist die Abkürzung von High Performance Analytical Appliance. Gemäß dem Namen diente sie in ihren Anfängen für die Echtzeitverarbeitung analytischer Szenarien wie BW (Business Warehouse). Im Laufe der Zeit wurde sie aber zunehmend auch für normale transaktionale Szenarien eingerichtet.

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 zu diesem Zweck verwendete Beschreibungssprache ist Core Data Services (CDS), deren Dateien im HANA Repository mit der Endung .hdbdd gespeichert werden.

Details zur SAP-Hana-Datenbank

Ausführliche Informationen zur SAP-HANA-Datenbank und ihren weiteren Komponenten, etwa für Datenmigrationen, finden Sie unter http://help.sap.com/hana. Wir beschränken uns in diesem Buch auf die Aspekte, die für eine gewöhnliche ABAP-Entwicklung notwendig sind.

Während Datenbanken bisher zeilenorientiert waren ( Row Store), soll die HANA-Datenbank v.a. spaltenorientiert ( Column Store) verwendet werden. Eine zeilenorientierte Datenbank hängt alle Datenwerte in einer Zeile aneinander, dann folgt die nächste Zeile usw. Eine spaltenorientierte Datenbank geht stattdessen Spalte für Spalte vor: Das bietet Vorteile für Anwendungen, bei denen Aggregate über eine große Anzahl ähnlicher Elemente gebildet werden.

Wenn einzelne Spalten vieler Datensätze einer zeilenorientierten Ablage gelesen werden, ist der Zeitaufwand wesentlich höher, als wenn in einer spaltenorientierten Variante sämtliche Datensätze als Spalten zur Verfügung stehen, da dort alle gewünschten Daten unmittelbar ausgelesen werden können.

In Tabelle 1.1 sind Beispieldaten dargestellt, um Ihnen den Unterschied zwischen einer zeilen- und einer spaltenorientierten Datenspeicherung zu verdeutlichen.


Tabelle 1.1: Beispieldaten für zeilenorientierte vs. spaltenorientierte Datenspeicherung

Unterschied zeilenorientertes und spaltenorientiertes Lesen

Für unser Beispiel, das sich der Daten aus Tabelle 1.1 bedient, sollen zu jeder Fluggesellschaft die Flugpreise selektiert werden.

Bei einer zeilenorientierten Ablage sind die Daten wie folgt abgelegt:

AA,17,425,USD;AZ,555,187,EUR;

LH,400,668,EUR;UA,941,882,USD

Zuerst wird Zeile 1 Spalte 1 (Wert »AA«), dann Zeile 1 Spalte 3 (Wert »425«), Zeile 2 Spalte 1 (Wert »AZ«), Zeile 2 Spalte 3 (Wert »187«) usw. gelesen.

Bei einer spaltenorientierten Ablage sind dieselben Daten wie folgt abgelegt:

AA,AZ,LZ,UA;17,555,400,941;425,

187,668,882;USD,EUR,EUR,USD

Bei dieser Ablageform wird erst Spalte 1 (»Fluggesellschaft«) in einem Zug gelesen, dann in gleicher Weise Spalte 3 (»Flugpreis«).

Für die Verarbeitung von Geschäftsdaten oder großer Datenmengen empfiehlt sich daher i.d.R. die spaltenorientierte Verarbeitung. Column Store sollte hierfür also die Regel sein. Nur bei kleinen Tabellen mit wenigen Datensätzen, oder wenn überwiegend auf einen einzelnen Datensatz zugegriffen wird (SELECT SINGLE), sollten Sie die zeilenorientierte Variante verwenden.

Da sich die Daten bei der HANA-Datenbank im Hauptspeicher befinden, entfällt die bisher übliche lange Zugriffszeit auf den Datenbankinhalt. Bei der HANA-Datenbank entscheidet über die Dauer der Zugriffszeit, welche der drei unterschiedlichen CPU-Caches des Rechners mit den Daten befüllt werden.

Die Daten der HANA-Datenbank können zudem sowohl im Hauptspeicher als auch auf der HANA-Datenbank im Column Store komprimiert werden, was sich sehr laufzeitoptimierend auswirkt. Dabei wird jeder Wert eines Datensatzes als einmaliger Integer-Wert in einem sogenannten Dictionary-Vektor abgelegt.

Datenkomprimierung

Für Datensätze der Fluggesellschaften LH, AA und AF gibt es einen Dictionary-Vektor mit den Datensätzen LH = 1, AA = 2 und AF = 3. Die Nummerierung folgt der Position der Datensätze. In den eigentlichen Datensätzen der Datenbank werden aber nur die Werte 1, 2 und 3 gespeichert.

Wenn LH im 5., AA im 8. und AF im 9. Datensatz der Tabelle stehen, wird auf der Datenbank die Kombination 5/1, 8/2 und 9/3 abgespeichert, was als Attributvektor bezeichnet wird. Dabei belegen die Werte 5, 8 und 9 keinen Speicherplatz, sondern ergeben sich daraus, dass die 1 im 5., die 2 im 8. und die 3 im 9. Datensatz stehen.

Der entscheidende Vorteil dieser Technik ist: Die Verarbeitung von Ganzzahlen erfolgt wesentlich schneller als die von Zeichenketten.

Die auf diese Weise komprimierten Daten lassen sich erneut verdichten. Die einzelnen Zeichen der Zeichenketten des Dictionary-Vektors werden mithilfe einer Delta-Komprimierung verkleinert. Dazu werden Blöcke von z.B. zwanzig Zeichen gebildet, wobei jedes einzelne Zeichen nur einmal in einem Delta-String und dieser wiederum im Block über eine Referenz gespeichert wird. Auch für den Attributvektor werden noch verschiedene Komprimierungsverfahren angewendet.

Die HANA-Datenbank eignet sich zudem sehr gut für eine Partitionierung (Einteilung der Datenbank in mehrere abgeschlossene Bereiche). Die Suche innerhalb einer Partition verläuft wesentlich schneller, als wenn die ganze Datenbank durchsucht werden muss. Auch lassen sich mehrere Partitionen parallel verarbeiten. Ein weiterer Faktor zur Beschleunigung der Datenbankzugriffe ist die zeilenweise Partitionierung von Tabellen. In der HANA-Datenbank gibt es eine Begrenzung auf zwei Milliarden Zeilen pro Datenbank oder pro Partition.

Die HANA-Datenbankarchitektur umfasst mehrere Serverbestandteile. Der für Entwicklungen wichtige Bestandteil ist der Indexserver . Er verfügt über einen SQL-Prozessor, der die SQL-Befehle ausführt oder an Unterkomponenten weiterleitet. Stored Procedures sind Datenbankprozeduren, die als komplexe SQL-Anweisungen direkt in der Engine des Indexservers gespeichert werden und so ohne Umwege über Programmableitungen der Datenbank zur Verfügung stehen. Auch umfangreiche Analyseszenarien werden in der Engine gespeichert. Diese Verlagerung von Coding aus den Anwendungsprogrammen in die Datenbankschicht bezeichnen wir als Code Pushdown.

Herkömmliche ABAP-Anwendungen arbeiten nach dem sogenannten Data-to-Code-Paradigma: Die Daten müssen aufwendig von der Datenbank in das Programm übertragen werden. SAP-HANA-optimierte Programme benutzen das Code-to-Data-Paradigma. Das bedeutet, dass Teile des Codings (Kalkulationslogik) jetzt in der Datenbankschicht liegen, während der übrige Teil (Orchestrierungslogik) in der Applikationsschicht verbleibt:

 Die Kalkulationslogik umfasst Verarbeitungen, die Berechnungen mit den Anwendungsdaten durchführen. Je komplexer Kalkulationen sind, desto besser sind sie in der Datenbankschicht aufgehoben.

 Die Orchestrierungslogik steuert Geschäftsprozesse, kontrolliert den Datenfluss und legt fest, wie Kalkulationsergebnisse kombiniert und weiterverarbeitet werden.

Acceleratoren sorgen in Side-by-Side-Szenarien dafür, dass die Programme der SAP Business Suite beschleunigt werden. Auch bestehende kundeneigene ABAP-Programme können ohne Veränderungen des Codings mithilfe des SAP Business Application Accelerators zur HANA-Bearbeitung beschleunigt werden.

Während die bisherige SAP Business Suite sowohl mit einer HANA- als auch mit einer traditionellen Datenbank betrieben werden kann, ist die SAP Business Suite ab S/4HANA nur noch mit der HANA-Datenbank einsetzbar.