Ansicht
Dokumentation

ABENEXIT_PROCEDURE_GUIDL - EXIT PROCEDURE GUIDL

ABENEXIT_PROCEDURE_GUIDL - EXIT PROCEDURE GUIDL

Addresses (Business Address Services)   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Prozeduren verlassen

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

  • RETURN
  • EXIT
  • CHECK log_exp

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:

  • Aufruf einer anderen Einheit (Programm, Dynpro) ohne Rückkehr in die Prozedur
  • Auslösen einer Ausnahme oder Senden einer Dialognachricht im Fehlerfall.

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").

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.

Die Verwendung der Anweisungen für das Verlassen von Programmen wird in Prozeduren nicht empfohlen. Sie sind in Kontexten wie Modultests oder bei update nicht erlaubt und führen zu Ausnahmen, wenn eine Prozedur aus einem solchen Kontext aufgerufen wird.

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 des ABAP-Laufzeit-Frameworks 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.

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.

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.






rdisp/max_wprun_time - Maximum work process run time   Vendor Master (General Section)  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5226 Date: 20240523 Time: 182112     sap01-206 ( 87 ms )