

Majoritatea programatorilor ABAP își petrec o mare parte a timpului la partea de declarea de date care urmează să fie folosite în rapoarte, realizând funcții, clase, metode sau citind informații din baza de date. Odată cu apariția ABAP 7.40 lucrurile au început să se schimbe și e uimitor de observat cum există noi modalitati de realizare a acelorași functionalități mult mai intuitive și cu mai puține linii de cod, ceea ce duce la o programare mai clară și mai concisă. În cele ce urmeaza o sa puteti vedea doar cateva din funcționalităti folosind noua sintaxa ABAP.
Declararea In-Line
– Pentru declararea de date
Sintaxa veche
Sintaxa noua
Data(text) = ‘ABC’.
– Parcurgerea unei tabele folosind o structura
Sintaxa veche
SELECT …..
…….
Sintaxa noua
…….
– Apelarea unei metode
Sintaxa veche
Sintaxa noua
– Comenzile LOOP si READ folosind Field Symbol
Sintaxa veche
FIELD-SYMBOLS: <line1> type itab,
<line2> type itab.
LOOP AT itab ASSIGNING <line1>.
…
ENDLOOP.
READ TABLE itab ASSIGNING <line2>.
Sintaxa noua
LOOP AT itab ASSIGNING FIELD-SYMBOL(<line1>).
…
ENDLOOP.
READ TABLE itab ASSIGNING FIELD-SYMBOL(<line2>)
– Selectia de date intr-o tabela interna
Sintaxa veche
DATA: itab TYPE TABLE OF mara.
SELECT * FROM mara
INTO TABLE itab
WHERE matnr = lv_matnr.
Sintaxa noua
SELECT * FROM mara
INTO TABLE DATA(itab)
WHERE matnr = @lv_fld1.
Actiuni pe table interne
– Loop cu conditie de Where
Sintaxa veche
DATA: it_tab1 TYPE tt_tab1,
wa_tab1 TYPE ty_tab1,
it_tab2 TYPE tt_tab2,
wa_tab2 TYPE ty_tab2.
LOOP AT it_tab1 INTO wa_tab1 WHERE field= ‘value’.
wa_tab2 = wa_tab1–field.
APPEND wa_tab2 TO it_tab2.
ENDLOOP.
Sintaxa noua
DATA(it_tab2) = VALUE wa_tab2(
FOR ls_tab1 IN it_tab1
WHERE ( field = ‘value’ ) ( ls_tab1–field) ).
Comanda REDUCE
Sintaxa veche
DATA: lv_lines TYPE i.
LOOP AT itab INTO wa where Field = ‘somevalue’.
lv_lines = lv_lines + 1.
ENDLOOP.
Sintaxa noua
DATA(lv_lines) = REDUCE i( INIT x = 0 FOR wa IN itab
WHERE( Field = ‘somevalue’ ) NEXT x = x + 1 ).
Sintaxa veche
DATA: lv_line TYPE i,
lv_sum TYPE i.
LOOP AT itab INTO lv_line.
lv_sum = lv_sum + lv_line.
ENDLOOP.
Sintaxa noua
DATA(lv_sum) = REDUCE i( INIT x = 0 FOR wa IN itab
WHERE( Field = ‘somevalue’ ) NEXT x = x + wa )
CORRESPONDING Command
Sintaxa veche
CLEAR ls_line2.
MOVE-CORRESPONDING ls_line1 TO ls_line2.
Sintaxa noua
ls_line2 = CORRESPONDING #( ls_line1 ).
Concatenarea
Sintaxa veche
DATA lv_output TYPE string.
CONCATENATE ‘Hello’ ‘world’ INTO lv_output SEPARATED BY space.
Sintaxa noua
DATA(lv_out) = |Hello| & | | & |world|.
Conversia ALPHA
Sintaxa veche
Sintaxa noua
DATA(lv_kunnr) = ‘0000012345’.
WRITE / |{ lv_kunnr ALPHA = OUT }|.
WRITE / |{ lv_kunnr ALPHA = IN }|.
0 responses on "Noi functionalitati si optimizare cod ABAP"