ABAP RAP Advanced

SideEffects in RAP

Dynamischere UIs

Was sind SideEffects?

  • Mechanismus zur Steuerung von UI- und Datenaktualisierungen
  • Erkennen Datenänderungen, die andere Felder oder UI Bereiche beeinflussen
  • Auslösen von Reloads, Permissions, Messages oder Determinations
  • Verfügbar ab RAP Version 7.58, SAP BTP ABAP, S/4HANA 2023

Warum SideEffects?

  • Verhindern inkonsistente UI-Daten nach Änderungen
  • Aktualisieren abhängige Felder automatisch im UI
  • Erhöhen die Benutzerfreundlichkeit und Datenkonsistenz
  • Reduzieren manuellen Aufwand und Fehlerquellen

Typen von SideEffects

Auslöser (Trigger) Ziel (Affected Targets)
Feldänderung (field) Felder, Assoziationen, Permissions, Messages, Entity, Self
Aktion (action) Felder, Entitäten, Aktionen
Determinate Action Aktionen, Felder
Event Entitäten, UI-Elemente
Self Eigene Entität oder assoziierte Daten

SideEffects in Behavior Definition

  • Seit RAP 7.58 deklarative SideEffects im Behavior Layer möglich
side effects {
field MyField affects field MyField1, MyField2;
}

side effects {
action MyAction affects field MyField;
}

side effects {
determine action MyDetermineAction executed on SourceEntity affects TargetEntity;
}

side effects {
$self affects messages;
}
  • Diese Definition steuert automatische Neuladen und Nachrichten-Trigger
  • Integration nahtlos in Fiori Elements und UI5 Anwendungen

Implementierungshinweise

  • SideEffects definieren Abhängigkeiten zwischen Entitätsfeldern und Aktionen
  • Performanceoptimierungen durch gezielte Betroffenheit (Targets)
  • Testing der definierten SideEffects im Draft- und Non-Draft Szenario
  • Fehler-Handling über SideEffects für Messages

Local SideEffects in der App

  • SideEffects können direkt in der Fiori Elements App ergänzt werden
  • Ergänzung erfolgt über UI-spezifische Annotationen in lokalen MDEs
  • Ermöglicht gezielte Aktualisierung von UI-Bereichen ohne Backend-Codeänderung
  • Nützlich für schnelle Anpassungen oder Ergänzungen zum Backend-Seitigen Verhalten

Beispiel: Local SideEffect Annotation

<Annotations Target="YourNamespace.YourEntity/Status">
  <Annotation Term="Common.SideEffects">
    <Collection>
      <Record>
        <PropertyValue Property="SourceProperties">
          <Collection>
            <String>Status</String>
          </Collection>
        </PropertyValue>
        <PropertyValue Property="TargetProperties">
          <Collection>
            <String>OverallStatus</String>
            <String>Messages</String>
          </Collection>
        </PropertyValue>
      </Record>
    </Collection>
  </Annotation>
</Annotations>
  • Hier unterstützt das Guided Development in VSCode/BAS

Zusammenfassung

  • SideEffects sind essenziell für integrierte, konsistente Benutzererfahrung
  • Deklarative Definition in Behavior erhöht Wartbarkeit
  • Unterstützt automatische UI-Aktualisierungen und Logikverknüpfungen
  • Unverzichtbar für komplexe, interaktive RAP-Anwendungen