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

ABAP - RETURN value

362

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 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 Bibliotheken

Kategorie - ABAP

Was kannst du mit der Bibliothek in ABAP und ABAP Cloud machen und wie nutzt du die Objekte am besten? Hier erfährst du mehr.

12.11.2024

ABAP - Type Casting

Kategorie - ABAP

Wie kommst du eigentlich an den ursprünglichen Typ einer Klasse bzw. Instanz, wenn diese in einer generischen Tabelle übergeben wird? In diesem Artikel prüfen wir die Möglichkeiten.

16.04.2024

ABAP Deep Dive - FOR (Schleifen)

Kategorie - ABAP

Schauen wir uns einmal die FOR Schleife etwas näher an. Wie funktioniert sie? Was muss ich beachten und was kann ich damit tun?

14.04.2023

ABAP Deep Dive - Tabellenzugriff (intern)

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal den Tabellenzugriff auf interne Tabellen an und wie sie den READ TABLE ablösen.

03.02.2023

ABAP - FINAL

Kategorie - ABAP

In diesem Artikel schauen wir uns einmal das neue FINAL Sprachkonstrukt an, wie es funktioniert und was du damit anstellen kannst.

23.12.2022