This is a test message to test the length of the message box.
Login
|
ABAP RETURN value
Erstellt von Software-Heroes

ABAP - RETURN value

1424

Nach all den Jahren ist nun endlich der "echte" Return in ABAP angekommen, in diesem Artikel zeigen wir dir, wie der funktioniert und was er kann.

Werbung


Mit dem letzten Release wurde das Return Statement im ABAP um eine wichtige Funktion erweitert auf die wahrscheinlich viele ABAP Entwickler seit Ewigkeiten warten. In diesem Artikel werden wir die Erweiterung beleuchten und testen.

 

Einleitung

Mit Release 2023 (7.58) wurde das RETURN Statement um eine neue Funktion erweitert, um in funktionalen Methoden (RETURNING) den Rückgabewert zu setzen. Möchten wir aktuell einen Wert setzen und dann die Logik verlassen, müssen wir zwei Statements verwenden.

rd_result = 20.
RETURN.

 

Diese Methodik wird vor allem dort verwendet, wo es während der Verarbeitung zu Fehlern kommt und die Methode vorzeitig verlassen werden soll.

 

Einfach

Schauen wir uns im ersten Fall einmal eine Methode mit einfacher Implementierung und einfachen Datentypen an. Bei 0 wollen wir die Methode vorzeitig beenden, danach führen wir einen RETURN aus und lassen und das Ergebnis zurückgeben. Zur Kontrolle führen wir noch ein letztes RETURN ein.

IF id_number = 0.
  RETURN `Early exit.`.
ENDIF.

RETURN |Number was returned: { id_number }|.

RETURN `Dead end`.

 

Zum Test rufen wir die Methode mit den Werten 0, 1 und 2 auf und lassen uns das Ergebnis in die Konsole ausgeben.

 

Das Ergebnis ist wie erwartet, bei 0 wird die Methode vrozeitig verlassen und gibt uns den Satz "Early Exit" zurück. Für die anderen beiden Werte kommt die entsprechende Nummer zurück. "Dead end" wird niemals erreicht, da mit RETURN die Logik an dieser Stelle beendet wird.

 

Komplex

In einem etwas komplexeren Beispiel wollen wir uns den RETURN mit eine Struktur und Inline Deklaration anschauen. Bei Null geben wir die leere Variable zurück, bei allen anderen Werten befüllen wir per VALUE die Struktur und übergeben sie an RETURN.

DATA ls_data TYPE ts_structure.

IF id_number = 0.
  RETURN ls_data.
ENDIF.

RETURN VALUE #( id      = id_number
                content = |The new ID is: { id_number }|
                value   = 'ID' && id_number ).

 

Wir führen die Methode mit 0 und 1 aus und bekommen unser erwartetes Ergebnis zurück.

 

Komplettes Beispiel

Möchtest du das Beispiel auf deinem System nachstellen, dann findest du hier die vollständige ausführbare Klasse für die Verwendung.

CLASS zcl_bs_demo_new_return DEFINITION PUBLIC FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

  PRIVATE SECTION.
    TYPES:
      BEGIN OF ts_structure,
        id      TYPE i,
        content TYPE string,
        value   TYPE c LENGTH 15,
      END OF ts_structure.

    METHODS functional_method_call_simple
      IMPORTING id_number        TYPE i
      RETURNING VALUE(rd_result) TYPE string.

    METHODS functional_method_call_struct
      IMPORTING id_number        TYPE i
      RETURNING VALUE(rs_result) TYPE ts_structure.
ENDCLASS.


CLASS zcl_bs_demo_new_return IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    out->write( functional_method_call_simple( 0 ) ).
    out->write( functional_method_call_simple( 1 ) ).
    out->write( functional_method_call_simple( 2 ) ).

    out->write( functional_method_call_struct( 0 ) ).
    out->write( functional_method_call_struct( 1 ) ).
  ENDMETHOD.


  METHOD functional_method_call_simple.
    IF id_number = 0.
      RETURN `Early exit.`.
    ENDIF.

    RETURN |Number was returned: { id_number }|.

    RETURN `Dead end`.
  ENDMETHOD.


  METHOD functional_method_call_struct.
    DATA ls_data TYPE ts_structure.

    IF id_number = 0.
      RETURN ls_data.
    ENDIF.

    RETURN VALUE #( id      = id_number
                    content = |The new ID is: { id_number }|
                    value   = 'ID' && id_number ).
  ENDMETHOD.
ENDCLASS.

 

Fazit

Der neue RETURN erleichtert die Rückgabe bei funktionalen Methoden, vor allem da sie sich so verhält, wie in anderen Programmiersprachen. Für uns ist das eine Erleichterung, vor allem da mit ABAP OO die funktionalen Methoden immer mehr werden und es so für den Entwickler eindeutiger wird. 

 

Quelle:

ABAP Dokumentation - RETURN


Enthaltene Themen:
Modernes ABAPRETURN
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP - XCO Logging

Kategorie - ABAP

Die XCO Klassen sind Bestandteil der ABAP Cloud APIs und verfügen über zahlreiche Funktionen, die nicht immer so einfach zu verstehen sind. In diesem Artikel schauen wir uns das Logging Objekt im Detail an.

16.12.2025

ABAP - Der richtige Schlüssel

Kategorie - ABAP

Wie sieht es eigentlich bei der Nutzung von internen Tabellen aus? Immer noch TYPE TABLE in ABAP und die Tabelle ist fertig definiert?

14.11.2025

ABAP - XCO Reguläre Ausdrücke

Kategorie - ABAP

Schauen wir uns einmal die XCO Klassen für die regulären Ausdrücke an und wie damit recht einfach REGEX gegen Texte und Eingaben in ABAP Cloud absetzen kannst. Dabei vergleichen wir auch mit klassischem ABAP.

07.11.2025

ABAP - Escape

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal im Detail verschiedene Escape Varianten an, die du für die ABAP Entwicklung und Sicherheit im System benötigst.

07.10.2025

ABAP - Datum und Uhrzeit

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal die Datentypen für das Datum und die Uhrzeit in ABAP etwas genauer an. Hat sich zwischen den verschiedenen Releases etwas geändert und was solltest du heute noch nutzen?

03.10.2025