Neue Fiori App in wenigen Schritten: Datenmodellierung mit CDS & BOPF
In meiner mehrteiligen Anleitung möchte ich Ihnen zeigen, wie Sie mit wenig Aufwand Ihre eigene Fiori App mit Hilfe von CDS und BOPF erstellen können. Als Beispiel erstellen wir dafür eine App, mit der Fluginformationen zu allgemeinen Verbindungen (z.B. LH404 von Frankfurt nach New York) und deren tatsächlichen Flugzeiten (z.B. LH404 am 01.01.2019 um 13:30 Uhr) angezeigt und verändert werden können.
Wenn ein Entwickler die Anforderung erhält eine komplett neue Applikation aus dem Nichts zu entwickeln, muss er sich mit vielen Fragestellungen befassen:
- Wie sieht mein Datenmodell aus und wie implementiere ich es?
- Welche Geschäftsobjekte gibt es und welche Funktionalitäten benötigen diese?
- Wie stelle ich die Einhaltung meiner Abhängigkeiten zwischen den Objekten sicher?
- Wie implementiere ich Prüfmechanismen und Sperren?
- Wie transportiere ich Daten ins UI?
Natürlich sind diese Fragen nicht zufällig ausgewählt. Wenn Sie die neuen Technologien unter S/4HANA richtig einsetzen, können Sie sich auf die konzeptionelle Beantwortung dieser Fragen konzentrieren. Die technische Umsetzung übernehmen dann Core Data Services (CDS) und das Business Object Processing Framework (BOPF) für Sie.
Dieser erste Teil beschäftigt sich mit der Anlage der Business Object CDS Views sowie der Generierung der dazugehörigen Business Objects.
CDS & BOPF – Wie funktioniert die Kombination?
Anhand des unten dargestellten S/4HANA Technologie-Stacks können Sie sehen, dass CDS und BOPF direkt aneinandergrenzen und ineinander greifen.
CDS Views sind zusammengefasst die „Next Generation“ Views in SAP. Die hierbei neu verwendeten Assoziationen unterscheiden sich auf den ersten Blick kaum vom altbekannten JOIN. Der hauptsächliche Unterschied ist, dass Assoziationen mit Kardinalitäten versehen werden und ein tatsächlicher JOIN nur zwischen Tabellen gebildet wird, wenn die Assoziation bei der Datenbankabfrage angegeben wird. Also sozusagen ein flexibles JOIN auf Abruf.
Außerdem können durch Annotationen die Metadaten einer CDS View definiert werden. Dadurch lassen sich Einstellungen wie bspw. die Pufferung konfigurieren. Für unsere Flüge-App werden Annotationen benutzt, um die Eigenschaften des Business Objects zu beschreiben. Das BOPF Framework erstellt dann anhand dieser Annotationen das Business Object für uns.
Persistentes Datenmodell
Zu Beginn müssen zwei Datenbanktabellen in einer normalisierten Form erstellt werden, damit die Daten unseres Business Objects persistent gespeichert werden können. Diese lassen sich über Eclipse oder über die Transaktion SE11 in der SAP GUI erstellen.
Dabei stellt jedes Feld aus der Datenbanktabelle ein Attribut des Business Objects da. Zusätzlich wird die Struktur /BOBF/S_LIB_ADMIN_DATA eingefügt. Diese Struktur wird später automatisch von BOPF mit administrativen Daten wie dem letzten Änderungszeitpunkt gefüllt.
Aufbau der Tabelle für Flugverbindungen ZPS_VERBINDUNG:
Aufbau der Tabelle für Flüge ZPS_FLUG:
Business Object CDS View erstellen
In Eclipse können anschließend für die beiden Datenbanktabellen sogenannte Business Object CDS Views (im folgenden BO Views genannt) erstellt werden. Durch Assoziationen und @ObjectModel-Annotationen können wir die Hierarchie unserer Entitäten (Flugverbindung und Flug) abbilden. BOPF erkennt durch die Annotation @ObjectModel, dass Business Objects generiert werden sollen. Die genaue Bedeutung der verwendeten Annotationen können Sie hier nachlesen.
In unserem Beispiel bildet ZPS_VERBINDUNG die Root-Entität. Die hierarchisch darunterliegende Entität ZPS_FLUG wird durch eine Assoziation mit der Kardinalität 1..* aus Sicht von ZPS_VERBINDUNG verbunden – also 1 Flugverbindung aus ZPS_VERBINDUNG besitzt n viele Flüge aus ZPS_FLUG.
Die fertige BO View für ZPS_VERBINDUNG sieht wie folgt aus:
Um die darunterliegende Entität für Flüge abzubilden, wird eine weitere BO View benötigt:
BOPF macht die restliche Arbeit
Durch Angabe der Annotation @ObjectModel.association.type in beiden BO Views weiß BOPF nun, welche Knoten es im Business Object gibt und wie die Hierarchie der Knoten abzubilden ist. Nachdem wir die CDS Views erfolgreich aktiviert haben, zeigt Eclipse links neben der Annotation @ObjectModel.transactionalProcessingEnabled eine Info an, über die wir das neue Business Object öffnen können.
Damit haben wir nun nicht nur die Datenmodellierung unserer neuen Fiori App abgeschlossen, sondern zusätzlich unser zentrales Business Object generiert und mit Logik zum Erstellen, Lesen, Bearbeiten und Löschen ausgestattet (CRUD-Operatoren) – ohne dabei eine Zeile eigenen ABAP Code zu schreiben.
Ausblick
Im zweiten Teil meiner Anleitung stelle ich Ihnen das Business Object genauer vor und wir werden die CRUD Operatoren unseres Business Objects testen. Anschließend werden wir mit Hilfe einer Consumption CDS View unsere OData Services generieren lassen.
Haben Sie Fragen zur Verwendung von Business Object CDS Views oder BOPF? Gerne helfe ich Ihnen dabei Ihre Fragen zu beantworten. Kontaktieren Sie uns einfach!
In diesem halbtägigen Online-Learning erhalten ABAP-Entwicklerinnen und -Entwickler eine Einführung in die Grundlagen von ABAP Core Data Services (CDS). Sie bekommen alle grundlegenden Informationen rund um das neue S/4HANA-Programmiermodell vermittelt und werden befähigt, selbst CDS Views zu erstellen.