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)
Werbung

ABAP - Predicative Method Call

Kategorie - ABAP

Durch das OO Konzept werden für komplexe Abfragen meist eigene Methoden verwendet. In diesem Artikel geht es um den Vergleich des Ergebnisses aus solchen Methoden.

14.05.2021

ABAP - Performance für den SELECT

Kategorie - ABAP

In diesem Artikel schauen wir uns noch ein paar Spezialfälle mit dem SELECT an und beleuchten die Performance dieser Konstrukte. Wir zeigen dir die aktuellen Alternativen dafür und geben kleinere Tipps beim Lesen.

02.04.2021

ABAP - Objekte prüfen (Instanzen)

Kategorie - ABAP

In diesem Artikel zeigen wir dir, wie du Instanzen analysieren und auf diese korrekt reagieren kannst, wenn du diese zum Beispiel bei einer Verarbeitung übergibst und individuell reagieren möchtest.

19.03.2021

ABAP - Schleifen

Kategorie - ABAP

Mit dem modernen ABAP wurden auch neue Schleifen und Möglichkeiten zur Einschränkung von Tabelleninhalten geschaffen. Diese neuen Befehle schauen wir uns in diesem Artikel näher an.

19.02.2021

ABAP - Vergleiche

Kategorie - ABAP

Heute betrachten wir uns das Thema Vergleiche und Vergleichsoperatoren im Hinblick auf die neuen Befehle und die aktuelle Verwendung. Was hat sich bisher alles geändert und was sollte man noch tun.

12.02.2021