Philipp Schurr
17. November 2018

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.

Beitragsbild Webinar s4hana migration
In unserem Webinar trennt unser Experte Ingo Biermann für Sie die Must- von den Nice-to-Haves, für eine kompakte und dabei budgetfreundliche S/4HANA-Migration.

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.

S4HANA Technologiestack

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.

CDS Basics: Erste Schritte in die Core Data Services (CDS)

Whitepaper: CDS Basics

Erfahren Sie in unserem Whitepaper die Grundidee und die ersten Schritte in die Core Data Services (CDS).

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:

SE11 Tabelle ZPS_VERBINDUNG
Aufbau der Tabelle für Flüge ZPS_FLUG:

SE11 Tabelle 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:

CDS Verbindung

Um die darunterliegende Entität für Flüge abzubilden, wird eine weitere BO View benötigt:

CDS Flug

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.

BOPF Infofenster

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.

Philipp Schurr

Philipp Schurr

Ich helfe dabei, Integrationslösungen für Systemlandschaften nach dem aktuellen Stand der Technik einzuführen. Als Management & Technologieberater für Integration & Schnittstellen verbinde ich tiefgehende technische Expertise mit langjährigem Projektleitungs-Knowhow. Diese Kombination liefert mir die Grundlage, meine Kunden-Projekte zum Erfolg zu führen.

Sie haben Fragen? Kontaktieren Sie mich!



Das könnte Sie auch interessieren

Die Suchfunktion im Portal Content Directory (PCD) des SAP NetWeaver Portals ist oft nicht besonders hilfreich. Zwar kann man zum Beispiel nach iViews mit einem bestimmten Titel suchen, aber bei […]

weiterlesen

Alle Beteiligten (oder Neudeutsch "Stakeholder"), die am Entstehungsprozess einer Software teilhaben oder sie am Ende des Prozesses in ihrem Arbeitsalltag benutzen, haben unterschiedliche Vorstellungen und Anforderungen an das User Interface. […]

weiterlesen

SAP Screen Personas - warten oder nicht warten, das ist hier die Frage! Ja, ist es denn überhaupt eine Frage? Erscheint es nicht logisch, "kurz" vor einem anstehenden Release auszuharren […]

weiterlesen

Schreiben Sie einen Kommentar

Bitte füllen Sie alle mit * gekennzeichneten Felder aus. Ihre E-Mail Adresse wird nicht veröffentlicht.





Kontaktieren Sie uns!
Alexander Koessner-Maier
Alexander Kössner-Maier Kundenservice