19,99 €
Das SAP Cloud Application Programming Model, kurz SAP CAP, ist ein Framework zur Erstellung von Unternehmensanwendungen, das sich besonders für wiederkehrende Aufgaben eignet. Dabei vereint es SAP- und Open-Source-Technologien. Es basiert nicht auf ABAP, sondern auf einer eigenen Datendefinitionssprache, CAP CDS, sowie Java bzw. JavaScript.
In diesem Buch erklärt Ihnen der Softwareentwickler Johannes Gerbershagen zunächst die Grundlagen von SAP CAP. Sie werden mit den nötigen Entwicklungswerkzeugen, insbesondere Node.js, vertraut gemacht, lernen die Core Data Services Definition Language (CDL), die Core Data Services Query Language (CQL) und Vue.js kennen. Sie erfahren, wie Projektionen und Views, Aktionen, Funktionen und Berechtigungen aufgebaut sind, und erhalten Informationen zum Deployment. Des Weiteren stellt der Verfasser die Entwicklung einer SAP-CAP-Anwendung anhand eines Beispielfalls vor, für den er auch den Code zur Verfügung stellt. Ferner erfahren Sie, wie die Integration von SAP-CAP-Anwendungen mit bestehenden ABAP-Anwendungen funktioniert.
Das Buch ist ein kompakter, praxisnaher Helfer für Entwickler, die mit SAP CAP zu neuen Ufern aufbrechen möchten.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 114
Johannes Gerbershagen
Praxishandbuch SAP® CAP
Cloud Application Programming Model
Johannes GerbershagenPraxishandbuch SAP® CAP – Cloud Application Programming Model
ISBN:978-3-960122-60-9 (E-Book)
Lektorat:Bernhard Edlmann
Korrektorat:Die Korrekturstube
Coverdesign:Philip Esch
Coverfoto:iStockphoto.com | millionsjoker No. 488649482
Satz & Layout:Johann-Christian Hanke
1. Auflage 2023
© Espresso Tutorials GmbH, Gleichen 2023
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 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: [email protected].
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.
Tobias Steckenborn:
Schnelleinstieg SAP
®
Business Technology Platform (BTP) – Services und Integration
Johannes Gerbershagen:
Praxishandbuch SAP
®
Gateway
Dr. Boris Rubarth:
Schnelleinstieg in SAP ABAP
®
– 2., erweiterte Auflage
Ulrich Bähr, Axel Treusch:
Praxisbuch SAP
®
Interactive Forms und Adobe LiveCycle Designer
– 2., erweiterte Auflage
Thomas Stutenbäumer:
SAP
®
Praxishandbuch ABAP Teil 1 – Konzeption, Entwicklung und Debugging
– 2., erweiterte Auflage
Thomas Stutenbäumer:
SAP
®
Praxishandbuch ABAP
®
Teil 2 – Performance, Erweiterungen, Transportwesen
– 2., erweiterte Auflage
Dieses Buch behandelt das SAP Cloud Application Programming Model (SAP CAP). SAP CAP basiert nicht auf ABAP, ist aber für ABAP-Entwickler, Node.js-Entwickler oder Webentwickler leicht zu erlernen, da es die Konzepte des SAP-RAP-Programmiermodells übernimmt und mit den Node.js- und den Webentwicklungswerkzeugen kombiniert. Als erfahrener ABAP-Entwickler verlassen Sie mit SAP CAP die gewohnte Programmierumgebung. Das erfordert von Ihnen eine Umorientierung. Unter anderem müssen Sie sich mit Kommandozeilenwerkzeugen wie dem Node.js-Paketmanager »npm« vertraut machen. Dieses Werkzeug ist Ihnen bestimmt schon einmal begegnet, wenn Sie aus der Node.js-Ecke kommen. Mit etwas Routine können Sie vieles schneller und einfacher implementieren als mit anderen SAP-Programmiermodellen. Sie brauchen beispielsweise keine Verbuchungsroutinen oder langwierigen Eingabeprüfungen mit ABAP zu implementieren. Ebenso entfallen die redundante Datenhaltung und der damit verbundene Zusatzaufwand bei der Entwicklung. Bevor Sie die Zeitersparnis nutzen können, steht jedoch die Investition in Ihr Know-how an. Dabei soll Ihnen dieses Buch behilflich sein:
Viele Probleme, die mich als SAP-CAP-Neuling Zeit gekostet haben, sind in diesem Buch berücksichtigt, sodass Sie in derselben Situation schnell eine Lösung bereithaben.
Kapitel 3
enthält eine realistische Beispielanwendung, die die unterschiedlichen Aspekte beleuchtet.
Quellcode-Beispiele
Dieses Buch enthält viele Quellcode-Beispiele. Um die Lesbarkeit in Ihrem E-Book-Lesegerät zu verbessern, empfehlen wir, den Quellcode im Querformat zu betrachten.
Beispielanwendung
Die Beispielanwendung finden Sie im GitHub-Repository https://github.com/germanysources/CAP_sample_app.
Vorkenntnisse von SAP RAP und UI5 sind auch bei SAP CAP hilfreich. Während Sie bei SAP RAP mit dem SAP Gateway Service Builder aus ABAP-Dictionary-Strukturen oder aus CDS-Views OData-Services generiert haben, verwenden Sie bei SAP CAP dazu die Core Data Services für CAP.
SAP CAP ist nicht nur auf UI5-Applikationen beschränkt. Sie können mit SAP CAP auch Webapplikationen mit einem Framework Ihrer Wahl oder nur mit HTML5 und den nativen Web-APIs, die Ihnen moderne Browser zu Verfügung stellen, entwickeln. Es besteht bei SAP CAP im Vergleich zu anderen SAP-Produkten kein Vendor Lock-in. Die Komponenten, die Sie für Entwicklung und Betrieb von SAP-CAP-Applikationen benötigen, sind unter Open-Source-Lizenzen verfügbar. Die SAP-HANA-Datenbank und die SAP Business Technology Platform (BTP) sind nur zwei Möglichkeiten, die Applikationen zu betreiben. Es hindert Sie niemand daran, SAP-CAP-Applikationen mit einer SQLite- oder einer PostgreSQL-Datenbank im Hintergrund selbst zu hosten. Wenn Sie eine Webapplikation mit nutzergenerierten Inhalten entwickeln möchten, ist SAP CAP ein Programmiermodell, das es zu evaluieren lohnt.
Im Text verwenden wir Kästen, 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.
Achtung
Warnungen weisen auf mögliche Fehlerquellen oder Stolpersteine im Zusammenhang mit einem Thema hin.
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.
Sämtliche in diesem Buch abgedruckten Screenshots unterliegen dem Copyright der SAP SE sowie Adobe. 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.
In diesem Kapitel möchte ich Ihnen die grundsätzlichen Konzepte des SAP Cloud Application Programming Model (CAP) und die einschlägigen Entwicklungswerkzeuge vorstellen.
Sowohl SAP CAP als auch SAP RAP verwenden OData-Services für CRUD-Operationen (CREATE, READ, UPDATE, DELETE). Alle Algorithmen, die Sie mit SAP CAP entwickeln, können Sie daher auch mit ABAP und SAP RAP umsetzen. Der Hauptunterschied besteht in der Datenhaltung. SAP CAP verwendet als erstes Programmiermodell nicht mehr das ABAP Dictionary zur Datenmodellierung, sondern die anwendungsspezifische Programmiersprache CAP CDS (Core Data Services für CAP), mit der Sie Strukturen, Entitäten und Assoziationen beschreiben. Adapter setzen dabei das in CAP CDS definierte Datenmodell in ein für die Datenbank passendes Datenbankschema um. Der Begriff »Datenbankschema« steht dabei für eine Kollektion aus Datenbanktabellen und für die Relationen der Tabellen untereinander. Es sind u.a. Adapter für SQLite, das hauptsächlich zu Entwicklungs- und Testzwecken dient, sowie für SAP HANA und PostgreSQL vorhanden.
Aus dem Datenmodell erstellen Sie Servicedefinitionen, die SAP CAP in OData-Services umsetzen kann. Die Servicedefinition enthält Projektionen oder Views auf Entitäten des Datenmodells. Aus Projektionen erstellt SAP CAP OData-Services zum Lesen oder Modifizieren von Entitäten. SAP CAP und die Adapter kümmern sich dabei darum, Anfragen an die OData-Services in native SQL-Statements umzusetzen und die Resultate der SQL-Abfragen an den Aufrufer weiterzugeben. Dies entspricht dem SAP Gateway (SAP RAP), nur dass SAP CAP keine Modell- und Datenanbieterklassen generiert. Über die Arbeitsweise des SAP Gateway erfahren Sie mehr in meinem »Praxishandbuch SAP Gateway« (Espresso Tutorials, 2021).
Mittels Annotationen implementieren Sie mit CAP CDS Bedingungen (z.B. Mussfelder). Das Ziel dabei ist es, Boilerplate-Codes zu vermeiden. Unter Boilerplate-Code versteht man mehrfach vorhandene Code-Segmente, die dieselbe Funktionalität bereitstellen bzw. weitestgehend identisch sind. Ein Beispiel sind Eingabeprüfungen. Im BAPI BAPI_GOODSMVT_CREATE ist die Eingabeprüfung händisch mit vielen IF-Klauseln implementiert. Unter anderem wird geprüft:
Existiert die Materialnummer?
Existiert die Bewegungsart?
Existiert der Lagerort?
SAP CAP nimmt Ihnen diese Arbeit ab. Sie definieren sich ein Datenmodell mit
den Materialstammdaten,
den Bewegungsarten,
den Lagerortstammdaten und
den Materialbelegpositionen.
Im Datenmodell geben Sie dann mittels Assoziationen an, dass die Materialnummer aus den Materialstammdaten, die Bewegungsart aus der Bewegungsartentabelle und der Lagerort aus den Lagerortstammdaten stammt. SAP CAP prüft nun beim Erstellen einer Materialbelegposition diese Zusammenhänge und wirft einen Fehler, wenn die Materialbelegposition inkonsistent ist.
Die SAP-CAP- und die ABAP-Entwicklung unterscheiden sich beim Einsatz der Entwicklungswerkzeuge. Bei der ABAP-Entwicklung gibt es im Regelfall immer ein Entwicklungssystem, auf dem Sie mit dem SAP GUI bzw. mit den ABAP Development Tools arbeiten. Bei SAP CAP entfällt das klassische Entwicklungssystem. Sie verwenden Ihren eigenen Rechner, um Programme zu erstellen und zu testen. Daher können Sie SAP GUI bzw. die ABAP Development Tools erstmal beiseitelegen. Stattdessen installieren Sie Node.js (https://nodejs.org/) und eine Entwicklungsumgebung Ihrer Wahl (z.B. Microsoft Visual Studio Code oder SAP Business Application Studio), die JavaScript bzw. Java-Projekte unterstützt und Ihnen eine Kommandozeile bietet (Bash bei macOS und Linux, Powershell, Eingabeaufforderung bzw. Git Bash bei Windows).
Node.js ist eine JavaScript-Umgebung für die Entwicklung von Webservices und bietet mit der NPM Registry viele Open-Source-Pakete, die Ihnen auf einfache Art den Aufbau eines Webservice ermöglichen. Dies hat sich auch die SAP zunutze gemacht und das CAP-SDK (Source Development Kit) in der NPM Registry veröffentlicht. Damit Sie nicht alle Pakete händisch von der NPM Registry herunterladen müssen, kommt Node.js mit dem Paketmanager npm im Schlepptau. Sie bedienen npm über die Kommandozeile Ihrer Entwicklungsumgebung. Dieses Werkzeug lädt Ihnen u.a. alle Pakete herunter, die Sie für Ihr Projekt benötigen. Die folgenden npm-Befehle sollten Sie kennen, bevor Sie mit der Entwicklung starten:
npm install
: Installiert alle benötigten Pakete, die in der Datei »package.json« angegeben wurden. Pakete werden aus der Registry https://registry.npmjs.com geladen. Unter https://npmjs.com durchsuchen Sie die Registry.
npm install @sap/cds-dk
: Installiert das Paket »@sap/cds-dk« (CAP-SDK) lokal im aktuellen Verzeichnis.
npm install –g @sap/cds-dk
: Installiert das Paket »@sap/cds-dk« global auf Ihrem Computer, sodass es für alle Projekte zur Verfügung steht.
Um ein neues Projekt zu starten, erstellen Sie als Erstes ein Verzeichnis lokal auf Ihrer Festplatte. Öffnen Sie die Kommandozeile und wechseln Sie in das Verzeichnis. Mit dem Befehl npx cds init erstellen Sie die initiale Ordnerstruktur für Ihr Projekt (siehe Abbildung 1.1). Sollte die Kommandozeile den Befehl nicht finden, fehlt Ihnen noch das CAP-SDK.
Abbildung 1.1: CAP-Projekt – initiale Ordnerstruktur
Die Ordner haben folgende Bedeutung:
.vscode
:
Einstellungen für Visual Studio Code (VS-Code, Entwicklungsumgebung der Firma Microsoft)
app
:
Ordner für die Clientapplikationen
db
:
Ordner für Schemadefinitionen (siehe
Abschnitt 2.3
)
srv
:
Ordner für Servicedefinitionen (siehe
Abschnitt 2.3
)
.cdsrc.json
:
lokale Projekteinstellungen
.gitignore
:
Dateien, die das Versionsverwaltungswerkzeug »git« ignoriert
package.json
:
lokale Paketkonfiguration
README.md
:
Dokumentationsdatei
Die Dateien müssen Sie immer in den passenden Verzeichnissen ablegen. Eine Schemadefinition im Ordner srv oder eine Servicedefinition im Ordner db kann SAP CAP nicht verarbeiten. Während der Entwicklung legt npm das Verzeichnis »node_modules« sowie die Datei »package-lock.json« an, die zur Verwaltung der Pakete dient.
Wenn Sie mit VS-Code arbeiten, installieren Sie die Erweiterung SAP CDS Language Support (siehe Abbildung 1.2).
Abbildung 1.2: VS-Code – Erweiterung
Diese Erweiterung bietet Ihnen Syntax-Highlighting und Source-Code-Prüfung (siehe Abbildung 1.3).
Abbildung 1.3: VS-Code – Syntax-Highlighting
Die Kommandozeile finden Sie im Menü Terminal • New Terminal (siehe Abbildung 1.4).
Abbildung 1.4: VS-Code – Kommandozeile öffnen
Abbildung 1.5 zeigt die Kommandozeile. Ein Kommando bestätigen Sie immer mit Enter, um es auszuführen.
Abbildung 1.5: VS-Code – Kommandozeile
Eine zentrale Komponente des SAP Cloud Application Programming Model sind Core Data Services (CAP CDS). Dabei handelt es sich, wie bei den ABAP CDS bzw. HANA CDS, um eine Datendefinitionssprache.
Mithilfe der CAP CDS (nicht mit den CDS für ABAP bzw. HANA zu verwechseln) definieren Sie das Datenmodell Ihrer Anwendung. Sie verwenden dazu die Core Data Services Definition Language (CDL) sowie die Core Data Services Query Language (CQL). Die Präsentationslogik Ihrer Anwendung erstellen Sie mit Webtechnologien. In diesem Buch werden UI5 bzw. SAP Fiori und Vue.js angesprochen. Natürlich können Sie andere Technologien wie HTML5 und JavaScript oder wie Web-Components, React, Svelte usw. verwenden.
Die Core Data Services Definition Language (CDL) legt ihr Hauptaugenmerk darauf, Datenmodelle kurz und prägnant zu beschreiben, ohne dass dabei der Fokus auf die Problemdomäne in technischen Details verloren geht. Dazu wurde eine SQL-ähnliche Syntax entwickelt. Kernelement ist wie bei ABAP CDS und dem SAP Gateway die Entität (im folgenden CDL-Entität genannt). Eine Entität repräsentiert einen Eintrag in einer Datenbanktabelle bzw. Einträge in mehreren zusammenhängenden Datenbanktabellen und besteht aus mehreren Feldern, die einen elementaren oder zusammengesetzten Datentyp besitzen. SAP CAP veröffentlicht Entitäten mittels OData-Services.
CDL-Entitäten setzen sich aus elementaren Datentypen (CDL-Datentypen) zusammen. Tabelle 2.1 zeigt alle elementaren CDL-Datentypen. Dazu ist der jeweilige SQL-Datentyp, der bei Generierung des Datenbankschemas Anwendung findet, mit angegeben.
CDL-Datentyp
Beschreibung
SQL-Datentyp
UUID
Eindeutige ID (36 Zeichen lang)
NVARCHAR(36)
Boolean
Wahrheitswert
BOOLEAN
Integer
Natürliche Zahl
INTEGER
Integer64
Natürliche Zahl mit erweiterter Länge
BIGINT
Decimal
Dezimalzahl
1
DECIMAL
Date
Datum
DATE
Time
Uhrzeit
TIME
DateTime
Datum und Uhrzeit
2
TIMESTAMP
Timestamp
Zeitstempel
3
TIMESTAMP
String
Zeichenkette
NVARCHAR
Binary
Binärdaten
VARBINARY
LargeString
Zeichenkette mit unbegrenzter Länge
NCLOB
LargeBinary
Binärdaten mit unbegrenzter Länge
BLOB
1 Länge und Dezimalstellen sind eine optionale Angabe. Ohne diese Angabe wird der Datentyp »DECFLOAT« verwendet.
2 Genauigkeit von einer Sekunde.
3 Genauigkeit von 0,1 µs.
Tabelle 2.1: CDL-Datentypen
CDL-Datentypen sind Case-sensitive
Anders als bei ABAP und SQL muss bei Angabe der CDL-Datentypen auf Groß- und Kleinschreibung geachtet werden.
Aus den elementaren Datentypen können Sie wie in Listing 2.1 strukturierte Datentypen erstellen. Mit dem Zusatz many