Loop at itab assigning fieldsymbol

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Je länger die Feldleiste ist und umso mehr Datensätze die ITAB hat, umso überlegener ist der Befehl "Loop at itab assigning <fs>" gegenüber dem klassischen "Loop at itab into wa". Der Geschwindigkeitsunterschied ist massiv (bis zu 20 x schneller).

Bei den Field-Symbols findet kein Transport vom Tabellenrumpf zu einer Kopfzeile/Working Area statt, sondern es wandert lediglich ein Cursor durch die Tabelle. Das verringert massiv den Datentransport.

Field-Symbols sind 2 - 20 x schneller als Loop über Workarea.

Testprogramm Vergleich Loop Field-Symbols und Workarea

report   zreb_field_symbols.

data : lv_dauer type   i ,
       lt_vbak type   standard   table   of  vbak,
       wa_vbak type  vbak.

field -symbols: <fs_vbak> type  vbak.

parameters : r_fs radiobutton group radi,
             r_wa radiobutton group radi.

**********************
* start-of-selection *
**********************
start-of-selection.

  select *
    from vbak
    into table  lt_vbak.

  get run time field lv_dauer.           "Beginn Laufzeitmessung

  if r_wa = 'X' .
    loop at lt_vbak into wa_vbak.       "Loop in Workarea
    endloop.
  endif.

 if r_fs = 'X' .
   loop at lt_vbak assigning <fs_vbak>. "Loop mit Field-Symbol
   endloop.
 endif.

 get run time field lv_dauer.            "Ende Laufzeitmessung

 write lv_dauer.