ABAP RAP Advanced

Mehrere Implementierungsklassen

Eigene Implementierung je Entity

Ansatz: Eigene Implementierung pro Entity

  • Jede Entität kann eine individuelle Behavior Implementation Class haben
  • Diese Klasse enthält alle Validations, Determinations und Actions für die Entität
  • Fördert klare Trennung der Verantwortlichkeiten im RAP-Modell
  • Vereinfacht Wartung und Skalierung bei wachsendem Funktionsumfang

Vorteile dieses Ansatzes

  • Übersichtliche Strukturierung des Codes
  • Vermeidung von Monolithen und Überladenheit der Implementierung
  • Bessere Teamarbeit durch klare Ownership je Entität
  • Leichtere Testbarkeit und Debugging einzelner Entitäten

Umsetzung in der Behavior Definition

define behavior for ZI_Task alias Task
implementation in class zbp_i_task unique
persistent table zbc_tasks
{
    ...

}

define behavior for ZI_Comment alias Comment
implementation in class zbp_i_comment unique
persistent table zbc_comments
{
    ...
}

  • implementation in class verweist immer auf eine Entity-spezifische Klasse
  • Alle zugehörigen Logikmethoden bündeln sich dort

Best Practice

  • Klassennamen eindeutig und nach Entität benennen (z. B. zbp_i_##_task)
  • Umsetzung aller Behavior Methoden (Validations, Determinations, Actions) in dieser Klasse
  • Einheitliche Nutzung erleichtert Verständnis und Wartbarkeit
  • Separates Gruppieren von Logiken bei Bedarf über group möglich

Bedeutung von Implementierungsgruppen in der BDEF

  • Strukturierung von Validierungen, Determinations und Actions
  • Vermeidet komplexe Monolith-Implementierungen
  • Erlaubt parallele Entwicklung und bessere Übersicht
  • Gruppen referenzieren eigene Klassen mit klaren Verantwortlichkeiten

Beispiel: BDEF mit Gruppen und Implementierungsklassen

define behavior for ZI_Comment alias Comment
persistent table zbc_comments
draft table zbc_comment_d
lock dependent by _Task
authorization dependent by _Task
{
field ( numbering : managed, readonly ) Uuid;

group MyChecks implementation in class zbp_i_comment unique {
    validation noEmptyText on save { create; }
}

group MyDeterminations implementation in class zbp_i_comment_det unique {
    determination prefillNumber on modify { create; }
}

...
}

Vorteile der Gruppierung über BDEF

  • Klar definierte Logikblöcke in Behavior-Spezifikation
  • Erleichtertes Verständnis durch Trennung von Validierung vs. Determination
  • Schnelle Änderbarkeit einzelner Bereiche ohne Seiteneffekte
  • Skalierbare Entwicklung für komplexe Business Objekte

Best Practice

  • Gruppiere Verhalten logisch nach Funktion und Verantwortlichkeit
  • Vergib sprechende Gruppennamen für bessere Lesbarkeit
  • Nutze eindeutige Klassennamen passend zur Gruppe und Entität
  • Halte Gruppendefinitionen schlank und fokussiert