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

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)

ABAP Deep Dive - VALUE

Kategorie - ABAP

In diesem Artikel wollen wir uns noch einmal das Value Statement in allen Ausprägungen anschauen und wie du es in deiner täglichen Arbeit nutzen kannst.

11.11.2022

ABAP - Common Table Expression (CTE)

Kategorie - ABAP

In diesem Artikel wollen wir uns einmal den allgemeinen Tabellenausdruck WITH anschauen und wie du ihn im Alltag nutzen kannst.

28.10.2022

ABAP Deep Dive - CORRESPONDING

Kategorie - ABAP

In diesem Artikel einmal etwas mehr über das neue Corresponding Statement und wie man es im Detail einsetzen kann. Dabei schauen wir einmal auf die zusätzlichen Features.

16.09.2022

ABAP - Step

Kategorie - ABAP

Heute einmal ein neuer Zusatz für die Schleifen und wie du ihn verwenden kannst. Mit Step hast du die Möglichkeiten Schritte in einer Schleife zu überspringen.

02.09.2022

ABAP - SELECT FROM @itab

Kategorie - ABAP

Über eine interne Tabelle selektieren war früher mit vielen Zeilen Code realisiert, heute funktioniert es auch praktisch über den Select.

20.01.2022