ABAP RAP – Advanced Topics

Draft Handling, Projections, Side-Effects und mehr

Praxisorientierte Vertiefung für ABAP Entwickler

Agenda

  • SAP Draft Handling
  • RAP Generator mit OData V4
  • Projections & Consumptions
  • Augmentations
  • Erstellung neuer Objekte
  • Nummernvergabe
  • Side-Effects
  • Mehrere Implementierungsklassen
  • Draft-Actions & Additional Save
  • Unmanaged Save & Custom Entities
  • Virtual Elements

SAP Draft Handling

Grundlagen Draft-Mechanismus

  • Temporäre Speicherung von Benutzeränderungen
  • Automatische Verwaltung über RAP Framework
  • Unterschiede zwischen „Draft“ und „Active Entity“

Vorteile

  • Transaktionen ohne Datenverlust
  • Parallele Bearbeitung mehrerer Benutzer
  • Verbesserte UX mit Fiori Elements

RAP Generator in Eclipse

Verwendung mit OData V4

  • Unterstützung von Draft-enabled Szenarien ab RAP V7.58
  • Generierung von BO-Struktur, Behavior Definition und Data Models
  • Nutzung von Templates und Wizards im ADT

Hands-On

  • Schrittweise Erstellung eines vollständigen Draft-Stacks
  • Aktivierung von Draft Support über Managed Implementation

Projections & Consumptions

Ziel

  • Abstraktion der Datenmodelle für UI und APIs
  • Definition über Consumption/Projection Views (C-Views)

Vorgehen

  • Projection für zuvor erstelltes Business Object
  • Ableitung der Consumption View für Fiori Elements
  • Integration mit @UI-Annotations

Ein Objekt, mehrere Protokolle

  • Unterstützung von OData V2 und V4 parallel
  • Anpassung der Service Definition
  • Umgang mit Limitierungen zwischen Versionen

Augmentations

C-Layer verbessern

  • Erweiterung bestehender C-Views
  • Nutzung von Custom Fields and Logic
  • Hinzufügen zusätzlicher Feldlogik im Consumption Layer

Erstellung neuer Objekte

Herausforderung bei CREATE

  • Validierungen und Defaultwerte
  • Pflichtfelder (Mandatory Fields)
  • Unterschiede Draft vs. Non-Draft Create

Best Practice

  • Vorbelegen über initialize Methode
  • Nutzung des Local Transaction Buffers

Nummernvergabe

Varianten

  • Early Numbering – Schlüssel vor Persistierung
  • Late Numbering – Schlüssel beim finalen Save
  • External Numbering – Schlüssel durch Client/API

Umsetzung

  • Implementierung über Behavior Definition und Determinations

Verwendung von Side-Effects

Ziel

  • Dynamische UI-Reaktionen auf Ereignisse

Typische Szenarien

  • Nach Actions (z. B. Statusänderungen)
  • Bei Feldänderungen (z. B. recalculations)
  • Nach Persistierung (refresh UI)

Mehrere Implementierungsklassen

Strukturierung großer BOs

  • Aufteilung in logische Teilklassen
  • Verwendung von final und partial Implementierungen
  • Klare Trennung von Determinations, Actions, Validations

Zusammenarbeit

  • Gemeinsame Entwicklung am gleichen RAP BO
  • Namespace-Strategien und Koordination

Draft-Actions

Erweiterte Möglichkeiten

  • Benutzerdefinierte Aktionen im Draft-Kontext
  • Zugriff auf Draft-Daten (z. B. temporäre Statuswechsel)
  • Automatische Save-Triggers

Beispiel

  • Action „ReleaseDraft“ mit finaler Validierung

Additional Save

Wenn mehr gespeichert werden muss

  • Erweiterte Persistenzlogik im Save-Event
  • Nutzung von Post-Persist Hooks für Nebenläufe

Unmanaged Save

Legacy-Integration im Managed Szenario

  • Hybrid-RAP: Verwende Implementation Type Unmanaged
  • Reuse vorhandener Logik und DB-Strukturen
  • Kombination von Custom Code und RAP BO

Custom Entities

Wenn CDS an Grenzen stößt

  • Lesende Zugriffspunkte ohne persistente Tabellen
  • Query-Implementierung über ABAP Classes
  • Ideal für Schnittstellen oder externe APIs

Virtual Elements

Erweiterung der App-Logik

  • Berechnete Felder, UI-only Informationen
  • Umsetzung via Annotations und ABAP-Implementierung
  • Szenarien: KPI-Berechnungen, Statusindikatoren