This is a test message to test the length of the message box.
Login
ABAP New Cast Conv
Erstellt von Software-Heroes

ABAP - New, Cast, Conv

2098

Bei vielen der neuen Ausdrücke handelt es sich um sogenannte Konstruktor-Ausdrücke. Was das genau für dich heißt und was es dir bringt erfährst du hier in unserem Artikel.

Werbung


Konstruktor-Ausdrücke oder auch Inline Funktionen sind Funktionen die in einer Zeile verwendet werden können und auch ein Ergebnis, einen Wert oder ein Objekt zurückgeben. Sie sind das Gegenteil zu den Ein-Zeilen-Ausdrücken aus den Cobol Zeiten, die es noch sehr viele im System gibt.

Nehmen wir als Beispiel eine einfach Datenzuweisung. Diese wurde per Move durchgeführt, war sehr leicht lesbar für jeden. Mit der direkten Zuweisung mit "=" kann man dies aber nun in einer einzigen Zeile ausdrücken, spart viel Tippaufwand und ist ebenso leicht lesbar: 


DATA:
  ld_one TYPE c LENGTH 10,
  ld_two TYPE c LENGTH 10.

" alte Zuweisung
MOVE 'COUNT' TO ld_one.
MOVE ld_one TO ld_two.

" neue Zuweisung
ld_two = ld_one = 'COUNT'.

 

Inline Funktionen können nun beliebig ineinander geschachtelt werden, natürlich nur da wo es auch Sinn macht, und sind sehr flexibel einsetzbar. Die ersten drei Ausdrücke wollen wir dir heute vorstellen.

 

New

Der Befehl erzeugt ein Objekt einer Klasse und löst das alte "Create Object" ab. Der Typ der Klasse wird implizit über den Datentyp der Zielvariable abgeleitet oder er wird explizit als Typ bei der Nutzung angegeben. Die zweite Form der Definition spart natürlich noch eine Zeile und zeigt den Vorteil der verknüpften Funktionen.


" implizite Erzeugung
DATA lo_alv TYPE REF TO cl_gui_alv_grid.
lo_alv = NEW #( ... ).

" explizite Erzeugung
DATA(lo_alv) = NEW cl_gui_alv_grid( ... ).

 

Cast

Die Cast Funktion dient zum Up-/Downcast von Objekten. Bisher wurde es mit einer einfachen Zuweisung über "=" oder der Zuweisung "?=" durchgeführt. Diese Form der Zuweisung war aber nicht immer klar und für einige Entwickler etwas verwirrend. Dafür wurde diese Funktion implementiert, die immer verwendet werden kann und anzeigt, was an dieser Stelle des Codings passiert. Dazu wieder beide Formen der Erzeugung im Vergleich:


DATA:
  lo_dock TYPE REF TO cl_gui_docking_container,
  lo_cont TYPE REF TO cl_gui_container.

" implizite Erzeugung
lo_cont = CAST #( lo_dock ).

" explizite Erzeugung
DATA(lo_cont) = CAST cl_gui_container( lo_dock ).

 

Beim zweiten Fall brauchst du die vorherige Definition von lo_cont nicht, da du sie zur Laufzeit erzeugst. Durch den Cast Befehl wird die Anweisung auf den ersten Blick gesehen und der Entwickler weiß, dass hier der Typ des Objekt angepasst wurde.

 

Conv

Der neue Ausdruck konvertiert einen Quellwert in einen neuen Zielwert mit einem neuen Typen und kann, wie alle anderen neuen Ausdrück, auch verkettet verwendet werden. 

Am Nützlichsten ist die Funktion bei der Versorgung von Übergabeparametern, wenn diese einen strikteren Typ verlangen. Dann kannst du die Variable auf den entsprechenden Zieltyp mappen und sparst dir die Anlage einer Zwischenvariable und die Befüllung dieser.


" Konvertierung 12 -> 0012
DATA(ld_num) = CONV numc4( 12 ).

" Verwendung als Parameter
DATA:
  ld_name TYPE string VALUE 'ZTEST_JOBNAME',
  lt_log  TYPE STANDARD TABLE OF tbtc5.

CALL FUNCTION 'BP_JOBLOG_READ'
  EXPORTING
    jobname   = CONV btcjob( ld_name )
  TABLES
    joblogtbl = lt_log.

Im zweiten Beispiel lesen wir ein Joblog aus dem System aus, haben den Namen des Jobs aber nur in einem String zur Verfügung. Bei einem Aufruf mit diesem Parameter würde das System aber einen Dump erzeugen, da der Übergabeparameter einen anderen Datentyp hat. Mit der Konvertierung auf den richtigen Datentyp, sparen wir uns aber die Anlage einer Zwischenvariable.

 

Fazit

Mit den ersten neuen Funktionen bekommst du viele kleine Helferlein an die Hand, die dein Entwicklerleben in vielen Punkten unterstützen und schneller machen. Die direkte Erzeugung von neuen Variablen zur Laufzeit spart auch einiges an Code und macht dein Coding viel übersichtlicher.

 

Quelle:
SAP Dokumentation New
SAP Dokumentation Cast
SAP Dokumentation Conv


Enthaltene Themen:
Modernes ABAPNewCastConv
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 - RETURN value

Kategorie - ABAP

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.

13.02.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