ABAP 7.4 – Prze(d)staw się! – Deklaracje inline

ABAP 7.4 – Prze(d)staw się! To cykl wpisów w, którym będę przedstawiał nowości wprowadzone w nowej wersji języka programowania ABAP. Ten wpis przedstawi nowość związaną z możliwością deklarowania zmiennych „inline”.

W popularnych językach programowania to już normalne, że przy definiowaniu np. pętli – zmienna pomocnicza jest deklarowana w samej pętli. W języku ABAP deklarowanie zmiennych na początku programu było obowiązkowe. Taki sposób deklarowania zmiennych potrafił zajmować nawet setki linijek kodu! W wersji 7.4 dzięki możliwości deklarowania zmiennych „inline” znacznie skrócimy długość programów, ale samo programowanie będzie wygodniejsze i czytelniejsze. Jest to nowość, którą jak najszybciej powinien u siebie wdrożyć każdy programista SAP ABAP. W poniższej tabeli umieściłem fragmenty programów, które przedstawiają sposób deklarowania zmiennych przed wersją 7.4 i w drugiej kolumnie deklarowanie zmiennych metodą inline.

Ogólna zasada jest prosta. Gdy chcemy dynamicznie zadeklarować zmienną używamy następujących słów kluczowych:

DATA(nazwa_zmiennej)

lub

FIELD-SYMBOL(<nazwa_fs>)

Przykłady:

Przed wersją 7.40 Wersja 7.40
 
DATA text TYPE string. 
text = 'Sapblog.pl'. 
 
DATA(text) = 'Sapblog.pl'. 
DATA wa LIKE LINE OF itab.
LOOP AT itab INTO wa.
    //Operacja w pętli
ENDLOOP.
LOOP AT itab INTO DATA(wa).
    //Operacja w pętli
ENDLOOP.
DATA a1 TYPE string.
DATA a2 TYPE string.
oref->meth( 
    IMPORTING 
        p1 = a1
        p2 = a2
).
oref->meth( 
    IMPORTING 
        p1 = DATA(a1)
        p2 = DATA(a2)
).

DATA ixml           TYPE REF TO if_ixml.
DATA stream_factory TYPE REF TO if_ixml_stream_factory.
DATA document       TYPE REF TO if_ixml_document.

ixml           = cl_ixml=>create( ).
stream_factory = ixml->create_stream_factory( ).
document       = ixml->create_document( ).

DATA(ixml)           = cl_ixml=>create( ).
DATA(stream_factory) = ixml->create_stream_factory( ).
DATA(document)       = ixml->create_document( ).
FIELD-SYMBOLS <fs> TYPE string.
ASSIGN text TO <fs>.
ASSIGN text TO FIELD-SYMBOL(<fs>).
FIELD-SYMBOLS <line> LIKE LINE OF itab.
LOOP AT itab ASSIGNING <line>.
    //Operacje w pętli
ENDLOOP. 
 

LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>).
    //Operacje w pętli
ENDLOOP.

 

FIELD-SYMBOLS <line> LIKE LINE OF itab.
READ TABLE itab ASSIGNING FIELD-SYMBOL <line>.
READ TABLE itab ASSIGNING FIELD-SYMBOL(<line>).

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *