This is a test message to test the length of the message box.
Login
ABAP RAP Einfaches Objekt
Erstellt von Software-Heroes

RAP - Einfaches Objekt

511

In diesem Aritkel bauen wir ein einfaches Business Objekt auf und zeigen dir die Funktionsweise des Frameworks.

Werbung


Wir legen ein einfaches Objekt mit allen Komponenten an und zeigen dir wie du damit eine einfache UI bekommst. Dabei werden wir die meisten Komponenten vorstellen, aber auch einige Teile weglassen, wie UI Annotationen, die wir in späteren Artikeln noch einmal genauer erklären.

 

Datenmodell

Für unser Datenmodell verwenden wir die Komponenten aus den Core Data Service Blogs und nutzen die Tabellen als Grundlage für diese Serie. Über den Link findest du das Datenmodell noch einmal im Detail erklärt, hier noch einmal die Auflistung der Tabellen und zugehörigen Daten:

 

Die heutige einfache Anwendung basiert deshalb auf dem Partner und umfasst nur diese eine Entität.

 

Business Objekt 

Die Modellierung beginnt mit der Anlage des Core Data Services über der Tabelle als Interface View. Damit bestimmst du die Menge der Felder, die im Datenmodell verfügbar sein werden. Hier hast du auch noch die Möglichkeit die Felder für das gesamte Datenmodell zu normalisieren (CamelCase). Im Anschluss kann die Verhaltensdefinition angelegt werden, die das Verhalten des BOs bestimmt. Mit Tabelle, Verhaltensdefinition und CDS View ist dann das Business Objekt vollständig modelliert und kann genutzt werden.

 

Interface View

Mit einem Rechts-Klick auf die Tabelle kannst du eine neue Datendefinition (CDS View) anlegen, dabei wählen wir als Template die "Root View Entity". Dieser View bildet immer die Grundlage des Objekts und es kann immer nur einen Wurzelknoten geben.

 

Entsprechend passen wir nach dem Import der Felder noch die Feldnamen an.

@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'RAP interface for Partner'
define root view entity ZBS_I_RAPPartner
  as select from zbs_dmo_partner
{
  key partner          as PartnerNumber,
      name             as PartnerName,
      street           as Street,
      city             as City,
      country          as Country,
      payment_currency as PaymentCurrency
}

 

Verhaltensdefinition

Mit einem weiteren Rechts-Klick auf den neuen Core Data Service, kannst du über das Kontextmenü die Verhaltensdefintion anlegen. Die Felder werden so weit vorbelegt, der Name entspricht dem Namen des CDS View und wir lassen den Typ auf "Managed".

 

Es werden entsprechende Implementierungen vorgeschlagen, die wir nun entsprechend unseren Bedürfnissen anpassen. Die fertige Version sieht nun wie folgt aus:

managed implementation in class zbp_bs_demo_rappartner unique;
strict;

define behavior for ZBS_I_RAPPartner alias Partner
persistent table zbs_dmo_partner
lock master
authorization master ( instance )
{
  create;
  update;
  delete;

  mapping for zbs_dmo_partner
  {
    PartnerNumber = partner;
    PartnerName = name;
    Street = street;
    City = city;
    Country = country;
    PaymentCurrency = payment_currency;
  }
}

 

An dieser Stelle noch die folgenden Informationen zur Verhaltensdefinition, die das Verhalten und die Funktionen des Business Objekts steuern:

  • Verhaltensklasse - Es gibt eine globale Klasse, wo das Verhalten des Objekts implementiert wird. Der globale Part der Klasse ist leer, die Implementierung findest du im Reiter "Local Types". Die Klasse kannst du per STRG + 1 anlegen.
  • Alias - Hinter dem Namen der Entität kann ein Alias angegeben werden, dieser kann vor allem bei der Nutzung des BOs das Leben erleichtern, wenn nicht immer der Name des CDS Views angegeben werden muss.
  • Tabelle - Mit dem BO ist auch die Tabelle verlinkt, um die Daten darin abzulegen und zu laden. Im managed Ansatz übernimmt das System das Lesen und Schreiben der Tabelle.
  • Operationen - Die CRUD Operationen müssen erst freigegeben werden, damit das Objekt sie zulässt, wobei READ nicht extra angegeben werden muss.
  • Mapping - Das Mapping der Felder des CDS Views auf die Tabellenfelder ist zwingend nötig, da sonst das Speichern und Laden der Daten nicht funktioniert. Das System erkennt aus den Aliasen im Interface View nicht die Zuordnung der Felder zur Datenbank.

 

Veröffentlichung

Mit den letzten Schritten hast du bereits ein funktionierendes Business Objekt erhalten und kannst dieses innerhalb des Systems nutzen. Wir wollen natürlich etwas mehr und direkt eine Fiori Applikation daraus machen.

 

Service Definition

Dazu kannst du per Rechts-Klick auf den Core Data Service eine neue "Service Definition" anlegen. Diese Service Definition entspricht in der SEGW einem Projekt und bindet verschiedene Entitäten zu einem Service zusammen.

@EndUserText.label: 'Simple Partner Service'
define service ZBS_SIMPLE_PARTNER {
  expose ZBS_I_RAPPartner as Partner;
}

 

Wir geben den CDS View unter der neuen Entität "Partner" in diesem Service nach Außen frei.

 

Service Bindung

Wieder mit einem Rechts-Klick auf die Service Definition kannst du nun das "Service Binding" anlegen. Dieses bestimmt das gebundene Protokoll für den Service, egal ob du eine API, eine UI oder O2/O4 haben möchtest.

 

Nachdem das Objekt angelegt wurde, muss es noch aktiviert werden und kann dann veröffentlicht werden.

 

Über den Knopf "Publish" wir der Service zum Testen freigegeben und du erhältst den Endpunkt im System, unter dem du diesen aufrufen kannst.

 

Preview

Mit einem Doppelklick auf die Entität, einem Rechts-Klick und das Kontextmenü oder über Markieren und den Knopf "Preview" kannst du dir dann einen automatischen Fiori Elements Preview anzeigen, so wie die App generiert werden würde.

 

Sieht im ersten Schritt noch etwas leer aus und zeigt auch noch keine Daten an. Über die Standardfunktionalität können wir die App aber schnell einsatzbereit haben. Dazu kannst du über "Adapt Filters" verschiedene Felder der Entität zum Filtern aktivieren. Über das "Zahnrad" kannst du die Ausgabefelder in der Liste bestimmen. Wenn du im Anschluss noch einmal den "Go" Knopf drückst, dann hast du auch schon ein gutes Ergebnis.

 

Git

Für diese Serie legen wir wieder ein Git Repository an, damit du an die vollständigen Sourcen heran kommst. Über das Git Repository und die Commits kannst du dir auch die Veränderungen im Repository anschauen. Die Entwicklung der Komponenten geschieht über das ABAP Environment, sodass wir immer von den aktuellsten Komponenten ausgehen.

 

Fazit

Der Start ist immer so halbwegs einfach. Heute mal ein kleines und einfaches Business Objekt, wobei noch einiges an Funktion fehlt (Detailbild, Löschen, Anlegen, Automatische Felder). Im nächsten Blog werden wir dir dann zeigen, wie du das Detail und weiter UI Annotationen anlegst und die App entsprechender gestaltest. Weiterhin werden wir in einer späteren Version noch die Projektion implementieren, die hier noch komplett fehlt.


Enthaltene Themen:
RAPBTPEinfaches ObjektBusiness Object
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


RAP - Classic Pattern

Kategorie - ABAP

In diesem Artikel schauen wir uns das Classic Pattern an und gehen auf die Anwendungsfälle der Implementierung in ABAP Cloud ein.

25.03.2025

RAP - Popup Defaultwerte

Kategorie - ABAP

Wie kannst du im Popup einer Aktion in RAP dem User Defaultwerte zur Verfügung stellen? In diesem Artikel erweitern wir unsere Anwendung.

21.01.2025

RAP - Popup Pflichtfelder

Kategorie - ABAP

Wie kannst du eigentlich Pflichtfelder für ein Popup in RAP definieren? In diesem Artikel werden wir etwas genauer auf die Details eingehen.

14.01.2025

RAP - Deep Table Action

Kategorie - ABAP

Ist die Übergabe von Tabellen an Aktionen in RAP aktuell möglich? Dieser Artikel soll einen besseren Einblick in das Thema gewähren.

07.01.2025

ABAP Cloud - Programmiermodell

Kategorie - ABAP

Welches Programmiermodell kommt mit ABAP Cloud zum Einsatz und was können wir aus dem Vorgänger lernen? Mehr Details im Artikel.

03.01.2025