Erfolgreiche Dependency Injection mit ABAP

ABAP OO flexibler

ABAP OO flexibler

Erfolgreiche Dependency Injection mit ABAP

ABAP OO flexibler


Seit ABAP Objects ist es möglich, objektorientiere Programmierung in SAP-Systemen zu nutzen. Doch wie lässt sich Dependency Injection in diesem Umfeld realisieren? In diesem Artikel sollen erste Einblicke geboten werden.

Mit ABAP Objects (OO) hat die SAP AG die objektorientierte Programmierung in SAP-Systemen ermöglicht. Mittlerweile ist OO als Programmiermodell für Neu- und Weiterentwicklungen durch SAP gesetzt. Damit hat der Programmierer die Möglichkeit, die aus OO bekannten Patterns und Programmierprinzipien in seinen ABAP-Applikationen zu verwenden. Das Vorgehen zur Erstellung von OO-Programmen unterscheidet sich allerdings von prozeduralen Anwendungen. Mithilfe der Kapselung von Programmeinheiten in Klassen lassen sich mehrere Instanzen erzeugen, die unterschiedliche Implementierungen und inhaltliche Abbildungen enthalten. Für das Erzeugen und Verwalten von Instanzen gibt es diverse Herangehensweisen. Ein ungünstiges Vorgehen wäre es, die abhängigen Instanzen innerhalb der Fachklasse selbst zu erstellen. Dies wirkt sich nachteilig auf die Flexibilität, Testbarkeit und Wiederverwendbarkeit der Klassen aus. Folgender Artikel erläutert als Alternative das Pattern der Dependency Injection (DI) im Umfeld der ABAP-OO-Entwicklung. Es wird zunächst das Pattern und im Anschluss ein Ansatz zur pragmatischen Umsetzung dargestellt.

Weitere Informationen zu ABAP OO

Ursprünglich ist ABAP eine Sprache für die prozedurale Programmierung, in der die Anwendungsentwicklung mithilfe von Funktionsbausteinen und Formroutinen erfolgt. Mit dem Erscheinen des SAP-Releases 6.4 wurde ABAP um die Eigenschaften einer objektorientierten Sprache erweitert. Die SAP AG entwickelte ABAP Objects kontinuierlich weiter und mittlerweile wird das Programmiermodell in den ABAP-Programmierrichtlinien von SAP für Neuentwicklungen und Weiterentwicklungen empfohlen. Auch durch SAP HANA und die neuen Möglichkeiten in der Anwendungsentwicklung verliert der Application Server ABAP nicht an Bedeutung. Gerade im Zusammenwirken mit SAP HANA hat SAP Möglichkeiten geschaffen, diese neue Technologie effizient mit ABAP zu verbinden.

Das Dependency Injection Pattern

Bei der Dependency Injection [1] geht es um die Entkopplung von abhängigen Programmteilen und des Kontrollflusses bei OO-Anwendungen. Folgendes Beispiel verdeutlicht das Konzept: Eine Klasse, die eine Berechnung durchführt, soll das Ergebnis einer beliebigen Weiterverarbeitung zuführen. Diese kann beispielsweise die Ablage des Ergebnisses in einer Datenbank oder der Aufruf eines Web Service sein. Berechnung und Weiterverarbeitung sind in verschiedenen Klassen abgebildet. Im Rahmen der Dependency Injection wird die Instanz der Weiterverarbeitung nicht durch die Berechnungsklasse selbst erzeugt, sondern über den Konstruktor oder mithilfe einer Setter-Methode der Klasse übergeben. Auf diese Weise hat die Berechnungsklasse keine Kenntnis darüber, wie die konkrete Weiterverarbeitung aussieht. Somit bestimmt nicht die Implementierung...