Select - Endselect

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Siehe Schlüsselbefehl Select.

Die Datenbankselektion über "SELECT - ENDSELECT" hat einen schlechten Ruf unter ABAP-Entwicklern.

Aber sie ist nicht so langsam wie viele SAP-Entwickler denken und es gibt durchaus Anwendungsfälle, wo ein "SELECT-ENDSELECT" Sinn machen kann.

SY-DBCNT

  • Wenn eine Datenbanktabelle mit "SELECT - ENDSELECT" durchlaufen wird, kann man den Counter der Schleife über das Feld SY-DBCNT abgreifen.

Beispiel SELECT - ENDSELECT

  • Hier wird nach einem BAPI-Aufruf mit "CALL FUNCTION 'BAPI_PO_CREATE1'" eine Z-Tabelle aktualisiert mit der erstellten Umlagerbestellung und den Positionen.
IF lv_po_number IS NOT INITIAL.
  SELECT *
    INTO @DATA(ls_umf_p)
    FROM zsd_umfuhren_p
    WHERE nummer = @mv_nummer
    order by nummer, posnr, etenr. "sortieren nach Key Tabelle
    read table lt_poitem into data(ls_poitem2) index SY-DBCNT.  "Zugriff auf die Positionstabelle mit
    if sy-subrc = 0.
      ls_umf_p-ebeln = lv_po_number.
      ls_umf_p-ebelp = ls_poitem2-PO_ITEM.
      update zsd_umfuhren_p from ls_umf_p.
    endif.
  endselect.
ENDIF.