Kombination Read itab und Select dbtbl

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Eine sehr clevere Idee ist es, die Daten in eine interne Tabelle zwischenzuspeichern und zunächst in der internen Tabelle zu suchen. Dieses Vorgehen macht Sinn, wenn einerseits es nicht sinnvoll ist, eine Datenbanktabelle komplett in eine ITAB einzulesen und wenn zugleich die gefundenen Sätze mehrfach identifiziert werden müssen.

Beispiel (hier wird nach dem Materialtext eines Materials gesucht):

Types: begin of ty_matnr,
       matnr type makt-matnr,
       maktx type makt-maktx,
       end of ty_matnr.

Data: lt_matnr    TYPE SORTED TABLE OF ty_matnr WITH UNIQUE KEY matnr,
      ls_matnr type ty_matnr.

    IF <fs>-matnr <> space.
 
    READ TABLE lt_matnr INTO ls_matnr WITH KEY matnr = <fs_wpbil>-matnr BINARY SEARCH.

"    Wenn der Satz bereits gepuffert ist, wird er extrem schnell gefunden
     IF sy-subrc = 0.

       l_maktx = ls_matnr-maktx.

"    Wenn er nicht gepuffert ist, lese ihn von der Datenbank und füge ihn zur ITAB hinzu 
     ELSE.

       SELECT SINGLE
         matnr
         maktx
         INTO ls_matnr
         FROM makt
         WHERE matnr = <fs>-matnr
           AND spras = sy-langu.

       l_maktx = ls_matnr-maktx.

       INSERT ls_matnr INTO TABLE lt_matnr.

     ENDIF.

   ENDIF.