ABAP - Schlüsselwortdokumentation →  ABAP - Programmierrichtlinien →  Robustes ABAP →  Modularisierungseinheiten → 

Prozeduren verlassen

Hintergrund

Prozeduren werden entweder regulär durch das Erreichen der END...-Anweisung oder vorzeitig durch eine der folgenden Anweisungen verlassen:

Diese Anweisungen beenden eine Prozedur ordnungsgemäß, das heißt Ausgabeparameter, für welche die Wertübergabe angegeben ist, und Rückgabewerte werden an die zugeordneten Aktualparameter übergeben. Daneben kann die Verarbeitung einer Prozedur wie folgt beendet werden, ohne dass die Aktualparameter mit Werten versorgt werden:

Regel

Prozeduren nur mit RETURN verlassen

Verwenden Sie die Anweisung RETURN zum ordnungsgemäßen vorzeitigen Verlassen einer Prozedur (Methode, siehe Regel "Keine Implementierungen in Funktionsbausteinen und Unterprogrammen").

Details

Die Anweisung RETURN ist zum Verlassen von Prozeduren vorgesehen und führt auch in jedem Fall zu diesem Ergebnis. Das Verhalten der Anweisungen EXIT und CHECK (bedingtes Verlassen) ist hingegen kontextabhängig: Innerhalb einer Schleife führen sie nur zum Verlassen der Schleife, außerhalb von Schleifen wird die umgebende Prozedur verlassen. Diese Mehrdeutigkeit schränkt die Lesbarkeit von Quelltext ein. Daher sollen EXIT und CHECK ausschließlich zum Verlassen von Schleifen verwendet und Prozeduren nur über RETURN verlassen werden. Insbesondere ermöglicht nur RETURN das Verlassen einer Prozedur im Kontext einer Schleife.

Hinweis

Neben den hier aufgeführten Anweisungen RETURN, EXIT und CHECK gibt es weitere Anweisungen (REJECT, STOP) zum Verlassen von speziellen Ereignisblöcken. Umgekehrt können RETURN, EXIT und CHECK auch andere Verarbeitungsblöcke außer Prozeduren verlassen. In beiden Fällen muss das spezielle Verhalten der ABAP-Laufzeitumgebung bezüglich des verlassenen Verarbeitungsblocks beachtet werden. Da andere Verarbeitungsblöcke gemäß Regel ABAP Objects verwenden bzw. Regel Keine Implementierungen in Dialogmodulen und Ereignisblöcken nur noch einen Methodenaufruf enthalten sollen, sollten diese Fälle in neuen Programmen jedoch nicht mehr auftreten.

Ausnahme

Eine Ausnahme von der Regel, nur RETURN zum Verlassen einer Prozedur zu verwenden, bilden CHECK-Anweisungen, die unmittelbar am Prozeduranfang stehen und dort Vorbedingungen für die Prozedurausführung prüfen. Eine solche Verwendung der CHECK-Anweisung schränkt die Lesbarkeit nicht ein und ist daher zulässig. Für andere Stellen innerhalb einer Prozedur und außerhalb von Schleifen gilt diese Ausnahme nicht.

Schlechtes Beispiel

Folgender Quelltext zeigt das vorzeitige Verlassen einer Methode über eine CHECK-Anweisung, deren Bedeutung sich durch einfaches Hinsehen nicht unbedingt erschließt. Man muss schon wissen, dass CHECK die Prozedur verlässt, wenn der folgende logische Ausdruck falsch ist, weswegen hier eine doppelte Verneinung notwendig ist.

METHOD some_method.
   ...
   CHECK is_finished = abap_false.
   ...
ENDMETHOD.

Gutes Beispiel

Folgender Quelltext korrigiert und vereinfacht obiges Beispiel, indem das bedingte Verlassen durch eine leicht lesbare IF-Kontrollstruktur realisiert wird.

METHOD some_method.
   ...
   IF is_finished = abap_true.
      RETURN.
   ENDIF.
   ...
ENDMETHOD.