Erste Schritte
Grundlegende Methoden und Konzepte anwenden
Mit lokalen Klassen arbeiten
Daten aus der Datenbank lesen
Mit strukturierten Datenobjekten arbeiten
Mit komplexen internen Tabellen arbeiten
Datenbankänderungen mit Business Objects implementieren
Das ABAP-RESTful-Anwendungsprogrammiermodell beschreiben

Analysieren eines Business-Objekts

Objective

After completing this lesson, you will be able to analysieren Sie ein Business-Objekt.

Business-Objekte

Im ABAP-RESTful-Anwendungsprogrammiermodell definiert ein Business-Objekt eine bestimmte Entität, z.B. ein Reisebüro. Seine Definition besteht aus zwei Teilen: einer oder mehreren CDS-Views, die die Struktur des Objekts definieren, d.h. die darin enthaltenen Felder, und einer Verhaltensdefinition, die beschreibt, was Sie mit dem Business-Objekt tun können.

Die Verhaltensdefinition legt fest, welche der Standardoperationen create, update, delete erlaubt sind. Sie kann auch die Definition von Validierungen, Determinierungen und Aktionen enthalten. Validierungen prüfen, ob die Daten korrekt sind, wenn Sie einen Datensatz anlegen oder aktualisieren. Ermittlungen ändern Instanzen von Business-Objekten basierend auf Auslösebedingungen. Aktionen sind Nicht-Standardoperationen, die Sie verwenden, um benutzerdefiniertes, geschäftslogisches Verhalten bereitzustellen. Das Genehmigen einer Bestellung oder das Stornieren eines Flugs sind Aktivitäten, die Sie als Aktion implementieren würden.

Die Verhaltensimplementierung besteht aus einer oder mehreren ABAP-Klassen. Hier werden die Validierungen, Determinierungen und Aktionen implementiert. Bei den Standardoperationen unterscheidet das Modell zwei Implementierungsszenarien: Im nicht verwalteten Implementierungsszenario werden create, update und delete in der Verhaltensimplementierung implementiert. Im verwalteten Implementierungsszenario übernimmt die Laufzeit diese.

Business-Objekte werden häufig verwendet, um die Transaktionslogik für Fiori-Elements-Apps oder Web-APIs bereitzustellen. Sie können jedoch auch aus dem ABAP-Coding heraus über die Entity Manipulation Language (EML) darauf zugreifen. Dies ist eine Reihe von ABAP-Anweisungen, mit denen Sie Daten mithilfe von Business-Objekten anlegen, lesen, aktualisieren und löschen können.

Notiz

EML kann auch von der Verhaltensimplementierung eines Business-Objekts auf die Anwendungsdaten zugreifen.

In diesem Kapitel legen Sie eine Klasse an, die ein Business-Objekt zum Ändern von Reisebürodaten verwendet. Die View-Entität enthält das Schlüsselfeld AgencyID und verschiedene weitere Felder, die Informationen über das Reisebüro enthalten.

Verhaltensdefinition und -implementierung

Das Verhalten eines Business-Objekts besteht aus zwei Teilen: der Verhaltensdefinition und der Verhaltensimplementierung. Die Verhaltensdefinition enthält Informationen darüber, was das Business-Objekt tun kann, während die Verhaltensimplementierung das eigentliche Coding enthält, das das System ausführt.

Die Verhaltensimplementierung ist eine ABAP-Klasse. Sie deklarieren die Klasse in der Verhaltensdefinition in der Anweisung managed implementation in class <class> unique. Das eigentliche Coding der Verhaltensimplementierung ist in einer lokalen Klasse innerhalb der von Ihnen angegebenen globalen Klasse enthalten.

Eine Verhaltensdefinition ist ein wesentlicher Bestandteil eines Business-Objekts. Sie beschreibt, welche der Standardoperationen erlaubt sind, z.B. Anlegen, Aktualisieren, Löschen. Außerdem werden Prüfungen (Validierungen) definiert, die beim Anlegen oder Ändern von Daten durchgeführt werden.

Das Beispiel hier ist die Verhaltensdefinition für das Reisebüro. Am Anfang der Definition sehen Sie den Namen der CDS-View, die wir gerade angesehen haben, und dass dafür ein Alias definiert ist. Dies ist wichtig, da es sich um den Aliasnamen handelt, über den die Entität mit EML adressiert wird.

Die Verhaltensdefinition verknüpft die CDS-Entität auch mit der Datenbanktabelle, in der die Daten abgelegt sind. In diesem Fall verwendet das Business-Objekt zwei Tabellen: eine für aktive Daten und eine für Entwürfe (Daten, die unvollständig sind und nicht geprüft wurden). Es gibt auch Informationen, die für das Sperren der Daten, für Berechtigungsprüfungen und für die Parallelitätskontrolle relevant sind. Wir werden uns diese Informationen nicht im Detail ansehen. Sie müssen nur wissen, dass sich die Laufzeit um diese Probleme kümmern kann. Sie können auch CDS-Entitäten und Verhaltensdefinitionen basierend auf der Definition einer Datenbanktabelle generieren. In diesem Fall werden Sperren, Berechtigungsprüfungen und Parallelitätskontrollen automatisch behandelt.

Die globale Klasse der Verhaltensimplementierung (auch Behavior-Pool genannt) ist nur eine leere Klassendefinition mit dem speziellen Zusatz FOR BEHAVIOR OF gefolgt vom Namen der Verhaltensdefinition. Die eigentliche Implementierung der Verhaltensdefinition ist eine lokale Klasse innerhalb der globalen Klassendefinition. Sie greifen auf die Klasse zu, indem Sie auf die Registerkarte Lokale Typen klicken.

Die Verhaltensimplementierung enthält Business-Objekt-spezifischen Code, z.B. die Implementierung für Validierungen, Determinierungen und Aktionen. Ob sie auch Code für die Standardoperationen (create, update, delete und lock) enthält, hängt von den Details der Verhaltensdefinition ab. Die Verhaltensimplementierung für unser Business-Objekt enthält keinen Quelltext für die Standardoperationen. Dies liegt daran, dass das Business-Objekt die verwaltete Implementierungsart verwendet, in der sich die Laufzeit mit den Standardoperationen befasst.

Eine Validierung ist eine Prüfung, die die Laufzeit durchführt, wenn Daten geändert werden. Hier wird die Validierung immer beim Anlegen eines neuen Datensatzes durchgeführt (Trigger create;). Wenn ein vorhandener Datensatz geändert wird, wird die Validierung nur durchgeführt, wenn das Feld Name geändert wurde (Trigger field Name;).

Validierungen werden in der Verhaltensdefinition definiert. Für jede Validierung gibt es eine entsprechende Methode in der Verhaltensimplementierung.

Analysieren eines Business-Objekts

BO-Projektionen und BO-Interfaces

Im ABAP-RESTful-Anwendungsprogrammiermodell gibt es zwei wichtige Möglichkeiten, ein Business-Objekt zu konsumieren:

  • Über einen Business-Service, z.B. einen OData-UI-Service für eine SAP-Fiori-Anwendung.
  • Aus ABAP-Code unter Verwendung der Entity Manipulation Language (EML).

Obwohl es technisch möglich ist, sollte ein Business-Objekt nicht direkt konsumiert werden. Stattdessen sollten Konsumenten wie folgt auf Business-Objekt-Projektionen (BO-Projektionen) und Business-Objekt-Interfaces (BO-Interfaces) zugreifen:

BO-Projektion

Business Services sollten immer eine servicespezifische Projektion des Business-Objekts definieren. Die BO-Projektion gibt an, welche Teilmenge der Daten und Operationen des Business-Objekts über diesen Service verfügbar sind. Eine BO-Projektion kann auch die Definition und Implementierung servicespezifischer Daten und Verhaltensweisen enthalten.

Notiz

Eine BO-Projektion basiert entweder direkt auf dem Business-Objekt oder auf einem BO-Interface.

BO-Interface

Ein Business-Objekt-Interface bietet einen stabilen Zugriff auf die Daten und Operationen eines Business-Objekts. BO-Interfaces sind in der Regel für die Verwendung in anderen Softwarekomponenten freigegeben. Wenn für ein bestimmtes Business-Objekt ein BO-Interface vorhanden ist, sollte immer ABAP-Code mit EML verwendet werden, um auf das BO-Interface zuzugreifen.

Wie ein Business-Objekt besteht eine BO-Projektion aus zwei Teilen: einer oder mehreren CDS-View-Entitäten (definiert in Datendefinitionen) und einer Verhaltensdefinition. Dasselbe gilt für BO-Interfaces. Sie bestehen auch aus einer oder mehreren CDS-Views und einer Verhaltensdefinition.

Die einfachste Möglichkeit, Projektionen und Interfaces zu identifizieren, besteht darin, ihre Verhaltensdefinitionen zu betrachten: Verhaltensdefinitionen für Projektionen beginnen mit dem Schlüsselwort projection, Verhaltensdefinitionen für Interfaces beginnen mit dem Schlüsselwort interface.

Die CDS-Views von BO-Projektionen und die CDS-Views von BO-Interfaces sind immer CDS-Projektions-Views. D.h. ihre Definitionen enthalten den Zusatz as projection on, wobei die Definitionen gewöhnlicher CDS-Views as select from verwenden. In neueren Releases wird der Anwendungsfall einer Projektions-View mit dem Zusatz provider contract hinter dem View-Entitätsnamen wie folgt angegeben:

  • provider contract transactional_interface für BO-Schnittstellen
  • provider contract transactional_query für BO-Projektionen

Hinweis

Für SAP-Entwicklungen gilt folgende Namenskonvention:

  • <namespace>C_<…> für BO-Projektionen
  • <Namensraum>I_<…> für BO-Interfaces
  • <Namensraum>R_<…> für BO-Definitionen

Ein Business-Objekt analysieren

In dieser Übung analysieren Sie das Business-Objekt-Interface /DMO/I_AgencyTP, um sich über seine Struktur und die von ihm angebotenen Datenmanipulationsvorgänge zu informieren.

Aufgabe 1: Schnittstellenverhalten analysieren

Analysieren Sie die Verhaltensdefinition des Business-Objekt-Interface /DMO/I_AGENCYTP.

Schritte

  1. Öffnen Sie die Verhaltensdefinition /DMO/I_AGENCYTP im Editor.

  2. Analysieren Sie den Quelltext. Öffnen Sie die ABAP-Sprachhilfe, um weitere Informationen zu erhalten.

Aufgabe 2: Datenstruktur analysieren

Analysieren Sie die CDS-View-Entität, die die Datenstruktur der Business-Objekt-Schnittstelle definiert. Navigieren Sie zu ihrer Datenquelle, bis Sie eine CDS-View-Entität erreichen, die keine Projektion ist.

Schritte

  1. Navigieren Sie zur CDS-View-Entität /DMO/I_AgencyTP, und analysieren Sie den Quelltext.

    1. Gehen Sie zur Anweisung define behavior for /DMO/I_AgencyTP.

    2. Halten Sie die Strg-Taste gedrückt, und klicken Sie mit der linken Maustaste auf /DMO/I_AgencyTP. Alternativ positionieren Sie den Cursor auf /DMO/I_AgencyTP und drücken F3.

  2. Navigieren Sie zur Datenquelle der CDS-View-Entität /DMO/I_AgencyTP, und analysieren Sie den Quelltext.

    1. Navigieren Sie zum Quelltextfragment as projection on /DMO/R_AgencyTP.

    2. Halten Sie die Strg-Taste gedrückt, und klicken Sie mit der linken Maustaste auf /DMO/R_AgencyTP. Alternativ positionieren Sie den Cursor auf /DMO/R_AgencyTP und drücken F3.

Aufgabe 3: Analysieren des Business-Objekt-Verhaltens

Analysieren Sie die Verhaltensdefinition des Business-Objekts /DMO/R_AGENCYTP, das unter dem Business-Objekt-Interface /DMO/I_AGENCYTP liegt.

Schritte

  1. Öffnen Sie die Verhaltensdefinition /DMO/R_AGENCYTP im Editor.

  2. Analysieren Sie den Quelltext. Öffnen Sie die ABAP-Sprachhilfe, um weitere Informationen zu erhalten.

Aufgabe 4: Verhaltensimplementierung analysieren

Analysieren Sie die Verhaltensimplementierung des Business-Objekts /DMO/R_AGENCYTP.

Schritte

  1. Navigieren Sie zur ABAP-Klasse /DMO/BP_R_AGENCYTP, die die Verhaltensimplementierung des Business-Objekts /DMO/R_AGENCYTP enthält.

    1. Gehen Sie zur Anweisung managed implementation in class /dmo/bp_r_agencytp unique;.

    2. Halten Sie die Strg-Taste gedrückt, und klicken Sie mit der linken Maustaste auf /dmo/bp_r_agencytp. Alternativ positionieren Sie den Cursor auf /dmo/bp_r_agencytp und drücken F3.

  2. Navigieren Sie zur lokalen Klasse lhc_Agency, und analysieren Sie die Definition.

    1. Wechseln Sie zur Registerkarte Lokale Typen. Expandieren Sie alternativ den Wurzelknoten /DMO/BP_R_AGENCYTP in der Sicht Gliederung, und wählen Sie LHC_AGENCY.