SAP NetWeaver AS ABAP Release 751, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.
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.
Gutes Beispiel
Folgender Quelltext korrigiert und vereinfacht obiges Beispiel, indem das bedingte Verlassen durch eine leicht lesbare IF-Kontrollstruktur realisiert wird.