Image
Startseite » Wissen » ABAP Forms

ABAP Form: Ein Gruß aus der Vergangenheit

Von Jeremia Girke
ABAP
15. Juli 2025

Wir erleben es in unseren Transformationsprojekten immer wieder: SAP Formulare, die neben dem Hauptquellcode aus etlichen Unterprogrammen bestehen. Schuld daran trägt ABAP Form.

Mit der Form Routine werden Code-Bestandteile geclustert und ausgegliedert. Was eigentlich der Übersichtlichkeit dienen soll, führt häufig genau zum Gegenteil: Chaos.Das geht auch anders – und vor allem besser. Wie, erfährst du hier. 

Inhalt
    • Mit ABAP Form werden Coding-Abschnitte in Unterprogramme ausgegliedert. Das soll Ordnung in den Quellcode bringen, Code-Redundanzen vermeiden und Programmteile wiederverwendbar machen.
    • Form Routinen verfolgen den klassiscen, prozeduralen Programmieransatz. Das bringt entscheidende Nachteile mit sich, weswegen SAP das Vorgehen als obsolet erklärt hat.
    • Form Routinen und Funktionsbausteine werden immer mehr durch das moderne, objektorientierte ABAP Objects abgelöst.
    Inhalt

      Was ist ABAP Form?

      ABAP ist die zentrale Programmiersprache von SAP. Mit ihr lassen sich individuelle Anpassungen an sämtlichen SAP-Modulen vornehmen – egal ob Central Finance, Human Capital Management, Plant Maintenance, Material Management und Production Planning.

      Papierflieger Interesse geweckt?

      Melde dich für unseren Newsletter an – verpasse keinen Blogpost, keine YouTube-Folge und bleib mit Eubuleus up-to-date!

      * Pflichtfelder
      Ich willige in die Verarbeitung meiner personen­bezogenen Daten zum Abonnement des Newsletters ein, wie in den Daten­schutz­bestim­mungen und AGB beschrieben.

      Der Quellcode bei ABAP wird in der klassischen Version einfach von oben nach unten ausgeführt. Das kann sehr unübersichtlich werden. Deswegen kamen Programmierer vor vielen Jahren auf die Idee, Quellcode in Unterprogramme auszulagern. Damit können wiederkehrende Aufgaben in separate Einheiten verschoben werden. Die Form Routinen waren geboren.

      Diese Modularisierung eines ABAP-Programms erfolgt mit den Anweisungen Form und Endform. In dieser Klammer wird der Verarbeitungsblock festgehalten. Der Name des Unterprogramms ist Subr. Die optionalen Zusätze USING und CHANGING legen die Parameterschnittstelle fest.

      FORM subr [USING	p1 TYPE type
      
      				p2 LIKE field
      
      				...
      
      				VALUE (p3) TYPE type
      
      				VALUE (p4) LIKE field
      
      				...			]
      
      		[CHANGING { {VALUE(p1)}|{p1 [{TYPE type}|(LIKE field}]}
      
      				{VALUE(p2)}|{p2 [{TYPE type}|(LIKE field}]}
      
      				...							} ]
      ...
      ENDFORM.

      Quelle: SAP Help

      Warum sind Form Routinen nicht mehr zeitgemäß?

      Form Routinen gehören zum klassischen, prozeduralen Programmieransatz und gelten deswegen als veraltet. Denn ihre sequenzielle Ausführung bringt drei entscheidende Nachteile mit sich:

      Geringe Wiederverwendbarkeit 

      Form Routinen können als externe Subroutinen angelegt und in verschiedenen Programmen verwendet werden. Die Aufrufe erfolgen mit PERFORM formname IN PROGRAM programname.

      Allerdings bleibt die Kapselung begrenzt, weil die Unterprogramme Zugriff auf alle globalen Daten des Hauptprogramms haben und nicht von diesen abgespaltet werden können. Durch die fehlende Trennung zwischen Daten und Funktionalität bieten Form Routinen weniger Möglichkeiten zur Wiederverwendung von Code im Vergleich zu objektorientierten Ansätzen.

      Erschwerte Wartung 

      Die prozedurale Programmierung führt oft zu monolithischen, wartungsaufwändigen Programmen. Ein Beispiel sind SAPscript und SmartForms. Mit diesen Formulartechnologien haben Unternehmen zahllose SAP Formulare entwickelt – und tun dies weiterhin.

      Das Problem: Der Code der Dokumente kann über Unterprogramme n-dimensional verschachtelt werden. Das macht es zum Teil für SAP-Berater enorm schwer, die Logik zu durchdringen, zu testen und zu erweitern. Eine Änderung in einem ABAP Form kann außerdem zu unbeabsichtigten Folgen in einem anderen Programm führen.

      Image

      Aus der Praxis

      Form Routinen könnten auch in Adobe Forms genutzt werden. Wir raten jedoch dringend davon ab, um die Formulartechnologie nachhaltig, klar strukturiert und langfristig wartbar zu halten. Bei unseren Transformationsprozessen analysieren wir deswegen alle Formulare und überführen sie in eine objektorientierte Logik. Das ist aufwendig, aber lohnt sich.

      Keine Unterstützung für moderne Entwicklungspraktiken 

      Form Routinen unterstützen keine Konzepte wie Vererbung, Polymorphismus oder klassenbasierte Exceptions. In der objektorientierten Entwicklung ist das längst Standard.

      Aus all diesen Gründen stuft SAP Form Routinen offiziell als obsolet ein. Sie funktionieren zwar weiterhin, gelten jedoch nicht mehr als Best Practice und könnten in Zukunft nicht mehr unterstützt werden.

      Form Routine vs. ABAP Objects

      Form Routinen repräsentieren die traditionelle, prozedurale Programmierweise in ABAP, während ABAP OO (Object-Oriented) die moderne, objektorientierte Herangehensweise darstellt. Die wesentlichen Unterschiede der beiden Methoden liegen in der Datenkapselung, Code-Organisation, Wiederverwendbarkeit und Wartbarkeit.

      Datenkapselung

      Bei Form Routinen ist die Datenkapselung schwach ausgeprägt. Wenn ein Unterprogramm ausgeführt wird, kann es direkt auf die globalen Daten des Hauptprogramms zugreifen, sie lesen und verändern – ohne dass dies explizit über Parameter gesteuert wird. Die Folge: der Zustand des Programms kann an vielen Stellen verändert werden, was möglicherweise unbeabsichtigte Seiteneffekte auslöst.

      In ABAP OO wird durch Klassen und Sichtbarkeiten (PUBLIC, PROTECTED, PRIVATE) eine klare Trennung zwischen internen und externen Datentypen geschaffen. Dadurch sind Beiträge besser geschützt und unbeabsichtigte Änderungen werden verhindert.

      Code-Organisation

      ABAP Form Routinen strukturieren den Code prozedural vom Start bis zum Ende. Das heißt, der Programmablauf wird als eine Abfolge von Anweisungen und Funktionsaufrufen gestaltet. Das kann bei größeren Programmen schnell unübersichtlich werden.

      ABAP OO ermöglicht eine hierarchische und modulare Organisation des Codes durch Klassen, Methoden und Vererbung. Es entsteht eine Hierarchie durch das Prinzip der Vererbung: Oberklassen definieren allgemeine Funktionalität, Unterklassen können diese erweitern oder spezialisieren. Das erleichtert die Strukturierung komplexer Anwendungen und fördert die Lesbarkeit.

      Wiederverwendbarkeit

      Die Wiederverwendbarkeit von Form Routinen ist begrenzt, insbesondere weil sie eng an das jeweilige Programm gebunden sind. Vererbung oder Erweiterung wird nicht unterstützen.

      ABAP OO bietet durch Vererbung und Polymorphismus eine deutlich höhere Wiederverwendbarkeit: Einmal entwickelte Klassen und Methoden können flexibel in verschiedenen Kontexten eingesetzt und erweitert werden.

      Wartbarkeit

      Programme mit vielen Form Routinen werden mit zunehmender Komplexität schwer wartbar. ABAP OO fördert die Wartbarkeit durch klar definierte Schnittstellen, Kapselung und modulare Strukturen. Änderungen können gezielt und mit geringem Risiko für Nebenwirkungen vorgenommen werden.

      Papierflieger Interesse geweckt?

      Melde dich für unseren Newsletter an – verpasse keinen Blogpost, keine YouTube-Folge und bleib mit Eubuleus up-to-date!

      * Pflichtfelder
      Ich willige in die Verarbeitung meiner personen­bezogenen Daten zum Abonnement des Newsletters ein, wie in den Daten­schutz­bestim­mungen und AGB beschrieben.

      Fazit

      Einst zentraler Bestandteil der Programmierung, sind Form Routinen heute nicht mehr zeitgemäß. Sie basieren auf einem prozeduralen Vorgehen, das im modernen Entwicklungsumfeld zahlreiche Nachteile hat. 

      Ohne Frage: Unternehmen sollten auf einen objektorientierte Ansätze umsteigen. So gestalten Entwickler ihre SAP-Formulare effizienter, besser wartbar und nachhaltiger. 

      FAQ

      Was ist der Unterschied zwischen internen und externen Subroutinen?

      Interne Subroutinen sind Form Routinen, die im selben Programm definiert und aufgerufen werden. Die Ausgabe erfolgt über PERFORM formname. 

      Die Typisierung externe Subroutine wird für Unterprogramme aus einem anderen Programm verwendet. Sie legen die Grundlagen für die Wiederverwendung von Code in unterschiedlichen Bereichen.

      Was ist beim TABLES Parameter zu beachten?

      Der TABLES Parameter ist ein veraltetes Konzept zur Übergabe interner Tabellen. TABLES Parameter werden automatisch als CHANGING Parameter mit Standardtabellen-Typ behandelt und unterstützen Header-Lines. 

      Moderne ABAP-Entwicklung sollte allerdings CHANGING Parameter verwenden und lokale Work Areas erstellen. 

      Wie erfolgt die Fehlerbehandlung in Form Routinen?

      Fehlerbehandlung in Form Routinen kann über verschiedene Mechanismen erfolgen. SY-SUBRC wird automatisch gesetzt, wenn Datenbankoperationen oder bestimmte Systemfunktionen innerhalb der Form fehlschlagen. 

      RAISE Statements können verwendet werden, um Exceptions zu werfen. Form Routinen können auch RAISING Klauseln in ihrer Definition haben, um potenzielle Exceptions zu deklarieren.

      Papierflieger Interesse geweckt?

      Melde dich für unseren Newsletter an – verpasse keinen Blogpost, keine YouTube-Folge und bleib mit Eubuleus up-to-date!

      * Pflichtfelder
      Ich willige in die Verarbeitung meiner personen­bezogenen Daten zum Abonnement des Newsletters ein, wie in den Daten­schutz­bestim­mungen und AGB beschrieben.