ABAP RAP Model

ABAP RESTful Application Programming Model

Einleitung & erstes Beispiel

(C) Brandeis Consulting📁

Evolution der Programmiermodelle

Darstellung der verschiedenen Versionen und Ansätze der OData Entwicklung mit ABAP von Begin bis heute

(C) Brandeis Consulting📁

Ziele von RAP

  • Einfache Entwicklung mit Fokus auf der Anwendungslogik, Stichwort "Entwicklungseffizienz"
  • Alle Standardfeatures sollen eingebaut sein oder wenig manuellen Aufwand verursachen:
    • CRUD Operatoren
    • Oberflächen
    • Sperren
    • Berechtigungsprüfungen
    • DRAFT Handling
    • Nummernvergabe
  • Klarer Programmfluss, was wann passiert
  • Integration mit DDic und CDS
  • Erweiterbarkeit
  • Nutzung der SAP Technologien
    • SAP HANA
    • FIORI
    • BTP-Enabled
(C) Brandeis Consulting📁

REST

Zustandslose (Web-)Anwendungen. In einer Anfrage oder Antwort sind jeweils alle relevanten Informationen für Server bzw. Client enthalten.

Der Server speichert keine Session, wie das z.B. bei WebDynpro der Fall war

Damit kann man sich auch jede Navigation im Browser speichern, da alle Infos in der URL stecken.

(C) Brandeis Consulting📁

OData

Für die Übertragung von Anwendungsdaten werden von RAP Services definiert, die das OData Protokoll nutzen.

Wir haben als RAP Entwickler eigentlich nichts direkt mit dem OData Protokoll zu tun!

(C) Brandeis Consulting📁

Fiori Elements

Aus dem Backend mit Annotationen steuerbare Oberflächen. Entweder mit wenigen Floorplans in eigenen Anwendungen, wie im RAP. Oder als Komponenten in von Hand gebauten UI5 Anwendungen.

Typische Floorplans:

  • List Report
  • Object Page
(C) Brandeis Consulting📁

RAP Transaktionsmodell

Innerhalb eines Serveraufrufes gibt es immer die folgenden Verarbeitungsphasen:

Interaktionsphase

z.B. mit

  • Ändern
  • Anlegen
  • Löschen
  • Aktionen

Speichersequenz

Nur wenn gespeichert werden soll:

  • Finalize
  • Prüfungen
  • Speichern
  • Commiten
(C) Brandeis Consulting📁

Architekturübersicht

(C) Brandeis Consulting📁

Projektionen

Wenn sich mehrere spezialisierte Anwendungen auf das gleiche BO beziehen, so kann man für diese jeweils eine Projektion anlegen.

In den meisten Übungen verzichten wir auf die Projektionsschicht, damit alles übersichtlicher bleibt.

Namenskonvention für mehrschichtige CDS Views

Untereste Ebene: Der I-View

Der I-View enthält das eigentliche Geschäftsobjekt bestehend aus den genannten Artefakten.

Oberste Ebene: Der C-View

Der C-View ist eine spezialisierte Projektion des Geschäftsobjektes für einen Anwendungsfall. Sowohl CDS-View als auch zugehöriges Behavior müssen angelegt werden. Falls zusätzliche Logik definiert wird, muss auch eine passende Implementierung hinzugefügt werden.

(C) Brandeis Consulting📁

Übersicht über ein BO bzw. die Anwendung dazu


(Aus der SAP Dokumentation)

(C) Brandeis Consulting📁

Datenmodell - Entitäten

Die Basis für alle RAP Anwendungen bildet das Datenmodell. Es basiert auf DB-Tabellen, die durch CDS Views gekapselt und verknüpft werden.

Wurzel-Entitäten

Bei Wurzel-Entitäten handelt es sich um Objekte, die eigenständig existieren können. Beispielsweise Kunden, Aufträge oder Materialien. Sie bestehen häufig auch aus

Kind-Entitäten

Kind-Entitäten sind Bestandteil einer Wurzel-Entität. Sie gehören als Teil dieser Entität fest dazu und können nicht ohne ihre Wurzel-Entität existieren. Häufig haben Sie in den Datenbanktabellen den gleichen Teil-Schlüssel oder eine Fremdschlüsselbeziehung.
Beispiele:

  • Positionen zu Aufträgen
  • Adressen zu Kunden
(C) Brandeis Consulting📁

Verhaltensdefinition (Behavior)

Mit einer Verhaltensdefinition werden die Aktionen beschrieben, die das Objekt machen kann:

  • Lesen
  • Anlegen
  • Ändern
  • Löschen
  • Filtern
  • Suchen
  • Validierungen
  • Berechnungen

Es werden hier auch viele Standardimplementierungen des Managed-Szenarios gesteuert, z.B. die Sperren.

(C) Brandeis Consulting📁

Namenskonvention in diesem Training

Grundsätzlich gelten die Konventionen aus dem Buch Clean ABAP. Da im RAP Bereich viele Objekte aufeinander aufbauen, muss man einerseits einen durchgängigen Namen verwenden, im folgenden mit <Name> bezeichnet, andererseits die Objekte bzw. Objekttypen sauber und einheitlich unterscheiden. Das bringt uns wieder zur umstrittenen ungarischen Notation, die an dieser Stelle aber die beste Option ist. Die Notation orientiert sich an der SAP Dokumentation zu RAP.

Ein guter <Name>

Die Suffix _R,_M,_D,_U,_C, aus der SAP Doku sind in der echten Welt nicht notwendig, da hier die Szenarien (read-only, managed, ddraft, unmanaged, service consumption) auf den gleichen Tabellen implementiert wurden.

Falls Ihr einen Präfix-Namensraum verwendet, diesen statt dem führenden Z verwenden.

(C) Brandeis Consulting📁

Namenskonventionen - Objekttypen

Objekttyp Konvention Beschreibung
DB-Tabelle ZA_<Name> Aktive Daten
DB-Tabelle ZD_<Name> Draft Daten
CDS View ZI_<Name> Interface View
CDS View ZR_<Name> Basis View
CDS View ZC_<Name> Projection View für den Consumption layer
Behaviour Definition Wie der zugehörige CDS View
Service Defintion Z_<Name>
Service Binding ZUI_<Name> Für UI Services
Service Binding ZAPI_<Name> Für API Services
ABAP Klasse ZBP_<Name> Klasse für den Behaviour Pool
Lokale Klasse LHC_ Lokale Handler Klasse
Lokale Klasse LSC_ Lokale Saver Klasse
(C) Brandeis Consulting📁

Datenmodell für die Beispiele

(C) Brandeis Consulting📁

Links

(C) Brandeis Consulting📁

Fehlersituationen

  • Service nach Änderung nicht aktualisiert ==> Binding Version hochzählen oder neu anlegen
  • Assoziierter View nicht sichtbar ==> View in der Service-Definition exponieren
  • Keine Berechtigung im Browser, noch vor Anmeldung ==> Anderen Browser verwenden, z.B. Chrome
  • Navigation von User/Aufgabenliste zur einzelnen Aufgabe wurde nicht angezeigt bzw. war nicht möglich. ==> Browser neu starten hatte geholfen.
(C) Brandeis Consulting📁