Previous slide
Next slide
Toggle fullscreen
Open presenter view
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