ABAP Inline-Deklarationen

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Die Inline-Deklarationen sind in ABAP möglich seit der ABAP-Version 7.40.

Eine Variable muss nicht mehr mit "Data" deklariert werden vor dem Füllen, sondern kann sich während der Laufzeit ergeben durch den Befehl "into @data(<variable>)". Sonstigen Variablen in einer Where-Abfrage muss dann ein "@" vorangestellt werden.

Vorteile Inline-Deklarationen

  • Man muss die Variable nicht mehr explizit deklarieren.
  • Der Typ der Zielvariable muss nicht bekannt sein.
  • Man kann zusätzliche Felder in den Select aufnehmen und die Zielvariable/Struktur passt sich automatisch den Quellfeldern an.
  • Durch die Inline-Deklaration sieht man explizit, wo die Variable das erste mal im Code verwendet wird. Andernfalls gibt es einen Syntaxerror, falls die Variable vor dem Füllen angesprochen wird.
  • Ein Doppelklick auf die inline deklarierte Variable zeigt gleich die Verwendung an.

Nachteile Inline-Deklaration

  • Die Variablen in einer Programmeinheit stehen nicht gesammelt zusammen am Anfang der Programmeinheit
  • Einige ABAP-Entwickler, die keine Erfahrung mit Inline-Deklarationen haben, werden Probleme beim Verständnis von Programmcoding haben, wenn dort Inline-Deklarationen von anderen Entwicklern geschrieben wurde.

Anwendungen

Variable deklarieren

Data(lv_variable) = 'Test'.

oder gleich mit Übertragung von einer anderen Variablen.

Data(lt_itab) = ct_itab.

Select

Für ABAP ist es nur in den den meisten Fällen nicht relevant, ob der "INTO" vor dem "FROM" steht, vor dem "WHERE" oder nach dem "WHERE".

Diese Reihenfolge geht immer:

Select ..
  from ..
  into ..
  where ..

Select into table

Die Select-Felder müssen mit einem Komma getrennt werden. Die Inline-Deklaration wird mit "@data(<itab>)" durchgeführt.

 SELECT
   vbak~vbeln,
   vbak~erdat
   INTO TABLE @data(lt_vbak)
   FROM vbak
   INNER JOIN vbap
    ON vbap~vbeln = vbak~vbeln.

Select into Felder

Ein anderes Beispiel. Die anderen Where-Felder als Variablen müssen mit einem @ vorangestellt abgefragt werden.

 SELECT SINGLE 
  fsh_season_year,
  fsh_season
  INTO (@DATA(lv_season_year),
        @DATA(lv_season))
  FROM ekpo
  WHERE ebeln = @ls_lips-vgbel.

Loop in Struktur

LOOP AT itab INTO DATA(wa).   
 ...
ENDLOOP.

Empfangende Importparameter einer Methode

objekt->methode( importing var1 = Data(lv_var1)
                 importing var2 = Data(lv_var2) ).

Empfangende Referenzvariablen

DATA(ixml) = cl_ixml=>create( ).

Field-Symbols

Elegant ist auch die Arbeit mit Field-Symbolen.

ASSIGN … TO FIELD-SYMBOL(<fs>).
LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>).
  …
ENDLOOP.
READ TABLE itab ASSIGNING FIELD-SYMBOL(<line>) …

Beispielcoding

 SELECT SINGLE
   kdmat
   FROM knmt
   WHERE vkorg = @ls_lips-werks
     AND kunnr = @is_dlv_delnote-hd_gen-ship_to_party
     AND matnr = @ls_lips-matnr
   INTO @DATA(lv_cust_article).

Verwendungsnachweis

  • Man kann genauso auf die Zielvariable doppelt klicken, um einen Verwendungsnachweis auszulösen.

Inlinedeklaration1.JPG

Web-Links

Literatur