Schulung

Fiori Elements Advanced

RAP Wiederholung

Brandeis Consulting & Cadao

Objekte im RAP

  • Tabellen
    • Weiterhin die Grundlage der Datenhaltung
  • CDS-Views
    • First-Class-Citizen: S/4HANA ist CDS
  • Behavior-Definition
    • Was soll mein Objekt können und tun
  • Behavior-Pool
    • Implementierung der Logik
  • Service-Definition
    • Welche Views werden unter welchem Namen exponiert
  • Service Binding
    • Welches Protokoll wollen wir nach außen verwenden?
Brandeis Consulting & Cadao

Datenmodell

ZFW_MOVIE_00

@EndUserText.label : 'Movie'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zfw_movie_00 {

  key client            : abap.clnt not null;
  key movie_id          : sysuuid_x16 not null;
  title                 : zfw_title_00;
  release_date          : zfw_release_date_00;
  category              : zfw_category_00;
  fsk                   : zfw_fsk_00;
  description           : zfw_description_00;
  rating                : zfw_rating_00;
  watched               : zfw_watched_00;
  local_created_by      : abp_creation_user;
  local_created_at      : abp_creation_tstmpl;
  local_last_changed_by : abp_locinst_lastchange_user;
  local_last_changed_at : abp_locinst_lastchange_tstmpl;
  last_changed_at       : abp_lastchange_tstmpl;
}
Brandeis Consulting & Cadao

ZFW_ACTOR_00

@EndUserText.label : 'Actor'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zfw_actor_00 {

  key client            : abap.clnt not null;
  key actor_id          : sysuuid_x16 not null;
  name_first            : zfw_name_first_00;
  name_last             : zfw_name_last_00;
  birthday              : zfw_birthday_00;
  email                 : zfw_email_00;
  mobile                : zfw_mobile_00;
  picture_url           : zfw_picture_url_00;
  local_created_by      : abp_creation_user;
  local_created_at      : abp_creation_tstmpl;
  local_last_changed_by : abp_locinst_lastchange_user;
  local_last_changed_at : abp_locinst_lastchange_tstmpl;
  last_changed_at       : abp_lastchange_tstmpl;
}
Brandeis Consulting & Cadao

ZFW_ACIMO_00

@EndUserText.label : 'Actor in Movie'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zfw_acimo_00 {

  key client   : abap.clnt not null;
  key acimo_id : sysuuid_x16 not null;
  actor_id     : sysuuid_x16;
  movie_id     : sysuuid_x16;
  role         : zfw_role_00;
}
Brandeis Consulting & Cadao

Überblick RAP Architektur

  • Tabelle als Grundlage
  • (ggf. Hilfsview)
  • View zur Objektdefinition
    • I-oder R-View
  • C-View / Projection
  • Service-Definition
  • Service-Binding
  • Behavior-Definition
  • Behavior-Pool/Implementation
  • Behavior-Projection
  • Behavior-Pool/Implementation für Projektion
Brandeis Consulting & Cadao

Was nun?

  • Anlage eines eigenen Objektes mit OData V4 und Draft-Unterstützung
    Aufruf des Objektgenerators
Brandeis Consulting & Cadao
  • UI Service auswählen
  • Weiter und im nächsten Schritt das Paket selektieren
Brandeis Consulting & Cadao
  • Hinterlegen des Alias für den Knoten
Brandeis Consulting & Cadao
  • Prüfen der Namen von Behavior-Implementation und Draft-Tabelle
Brandeis Consulting & Cadao
  • Prüfen des Namens der Service-Entity bzw. der Consumption-View
Brandeis Consulting & Cadao
  • Prüfen der Projection-Implementation Klasse
Brandeis Consulting & Cadao
  • Prüfen der Service-Definition
Brandeis Consulting & Cadao
  • Prüfen des Service-Bindings
Brandeis Consulting & Cadao
  • Letzte Prüfung der zu erstellenden Objekte
Brandeis Consulting & Cadao

Definition von Beziehungen

  • Ein Objekt kann aus mehreren Entitäten bestehen
  • Hier kann man mit dem Wizard "vorarbeiten", muss aber im Nachgang nacharbeiten
  • Alternative:
    • Zuerst das saubere Datenmodell, danach Behavior und Co.

Das ist zu tun

  • Service-Binding löschen
  • Service-Definition löschen
  • Root-Definition entfernen
  • Beziehung vom "Kind" in Richtung "Elternteil" definieren in der R-View
  • Redirect der Assoziation in der Projection
  • Composition auf Elternteil definieren
  • Redirect der Assoziation in der Projection
  • Bearbeiten der Behavior-Definition
  • Bearbeiten der Behavior-Projection
  • Hinzufügen der Entität in Service Definition
Brandeis Consulting & Cadao

Beispiel

Wir haben 2 Entitäten:

  • ZR_FW_ACTOR_00 für die Darsteller
  • ZR_FW_ACIMO_00 für die Darsteller in Filmen

Man könnte die Zuordnungstabelle ACIMO auch unter die Filme hängen, aber wir haben
uns für diesen Ansatz entschieden.

Beide Objekte werden über den Wizard wie zuvor gezeigt angelegt.

Die Löschung von Service-Binding und Definition ist selbsterklärend.

Brandeis Consulting & Cadao

Bearbeiten der I/R-View (Child)

  • Entfernen der Root-Definition
  • Hinzufügen der Association
  • Exponieren der Association
Brandeis Consulting & Cadao

Bearbeiten der C-View (Child)

  • Entfernen der Root-Definition
  • Association-Redirect
Brandeis Consulting & Cadao

Bearbeiten der I/R-View (Parent)

  • Composition definieren inkl. Kardinalität
  • Association exponieren
Brandeis Consulting & Cadao

Bearbeiten der C-View (Parent)

  • Association exponieren inkl. Redirect
Brandeis Consulting & Cadao

Bearbeiten der Behavior-Definition (1)

  • Behavior-Definition um Entität ergänzen
Brandeis Consulting & Cadao

Bearbeiten der Behavior-Definition (2)

  • Hinzufügen der Association vom Parent#

Association to Child

  • Hinzufügen der Association vom Child

Association to Parent

Brandeis Consulting & Cadao

Bearbeiten der Behavior-Projection

  • Erweitern der Projection um die Assoziationen

Brandeis Consulting & Cadao

Bearbeiten der Service-Definition

  • Expose der Projection-View
    h:´200
Brandeis Consulting & Cadao