Schulung

Fiori Elements Advanced

RAP Draft

Brandeis Consulting & Cadao

Probleme von OData?

  • OData ist Stateless
  • d.h. JEDER Aufruf ist für sich eine abgeschlossene Transaktion
  • Das Backend wird mit jedem Aufruf komplett mit ALLEN Daten versorgt
  • Problem:
    • was tut man, wenn man nicht alle Informationen direkt zur Hand hat?
    • Wie werden Daten validiert?
    • Was tun bei Verbindungsabbrüchen?
  • Keinen State bedeutet auch keine Sperren
    • Option a.) wer zu letzt speichert gewinnt
    • Option b.) wer als zweiter speichert hat Pech gehabt
Brandeis Consulting & Cadao

Lösung?

Draft

  • Daten werden "zwischengespeichert" auf dem Applikationsserver
  • Framework erstellt DB-Tabellen, welche identisch sind mit Entity + Draft-Key!
  • Jede Änderung im Frontend überträgt Daten ins Backend
  • Möglichkeit von direkten Validierung nach Benutzereingaben
Brandeis Consulting & Cadao

Draft, aber wie?

Aktivierung in der Behavior-Definition

Ergänzen der Draft-Aktionen

  draft action Activate optimized;
  draft action Discard;
  draft action Edit;
  draft action Resume;
  draft determine action Prepare;
Brandeis Consulting & Cadao

Draft-Table

@EndUserText.label : 'Draft Database Table for ZFW_MOVIE_00_D'
@AbapCatalog.enhancement.category : #EXTENSIBLE_ANY
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #A
@AbapCatalog.dataMaintenance : #RESTRICTED
define table zfw_movie_00_d {

  key mandt          : mandt not null;
  key movieid        : sysuuid_x16 not null;
  title              : zfw_title_00;
  releasedate        : zfw_release_date_00;
  category           : zfw_category_00;
  fsk                : zfw_fsk_00;
  description        : zfw_description_00;
  rating             : zfw_rating_00;
  watched            : zfw_watched_00;
  localcreatedby     : abp_creation_user;
  localcreatedat     : abp_creation_tstmpl;
  locallastchangedby : abp_locinst_lastchange_user;
  locallastchangedat : abp_locinst_lastchange_tstmpl;
  lastchangedat      : abp_lastchange_tstmpl;
  "%admin"           : include sych_bdl_draft_admin_inc;

}
Brandeis Consulting & Cadao

Draft-Actions

Zeitpunkte im Draft

Brandeis Consulting & Cadao

Draft-Actions - Beispiel EDIT

Brandeis Consulting & Cadao

Übung 1

Zeit für die erste Übung :-)

welche "Unschönheit" gibt es?

Brandeis Consulting & Cadao

Sofortige Aktionen

Brandeis Consulting & Cadao

Determine Action

  • Wir definieren eine "Aktion"
  • Diese hat keine Implementierung!
  • Wir rufen stattdessen eine Validation auf
Brandeis Consulting & Cadao

Determine Action - Beispiel

Definition einer Determine Action

  validation checkMovieTitle on save { create; update; field Title; }

  determine action doChecks
  {
    validation checkMovieTitle;
  }

Exponieren in Projection

use action doChecks;
Brandeis Consulting & Cadao

Side-Effects

Hintergrund

  • Das Frontend soll "selbstständig" Aktionen ausführen
  • Was soll wann geschehen
  • Dokumentation: Developing Side Effects

Implementierung in der Projection

  side effects
  {
    determine action doChecks executed on field Title affects messages;
  }
Brandeis Consulting & Cadao