fbpx

Noi functionalitati si optimizare cod ABAP

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

DATA text type string.
text = ‘ABC’.

Sintaxa noua

Data(text) = ‘ABC’.

– Parcurgerea unei tabele folosind o structura

Sintaxa veche

DATA wa type dbtab.
DATA: itab type table of dbtab.

SELECT …..
 
LOOP AT itab into wa
…….
ENDLOOP.

Sintaxa noua

 
DATA: itab type table of dbtab.
SELECT …..
 
LOOP AT itab INTO DATA(wa)
…….
ENDLOOP.

– Apelarea unei metode

Sintaxa veche

DATA a1 TYPE char10.
DATA a2 TYPE char10.
oref-meth(IMPORTING p1 = a1)
                                          p2 = a2 ).

Sintaxa noua

oref->meth( IMPORTING p1 = DATA(a1)
                                             p2 = DATA(a2) ).

– 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

Function modules:
CONVERSION_EXIT_ALPHA_INPUT

 

CONVERSION_EXIT_ALPHA_OUTPUT

Sintaxa noua

DATA(lv_kunnr) = ‘0000012345’.
WRITE / |{ lv_kunnr ALPHA = OUT }|. 
WRITE / |{ lv_kunnr ALPHA = IN }|.

13 July 2020

0 responses on "Noi functionalitati si optimizare cod ABAP"

Leave a Message

Despre SAP Online

SapOnline.ro - Toate materialele de instruire SAP sunt proprietatea SAPOnline.ro. Saponline.ro nu este afiliat SAP AG. SAP este o marca inregistrata SAP AG. SAP AG nu este editorul materialelor de pe acest site si nu este responsabil pentru acestea.

Online acum

There are no users currently online

Cauta un curs

top