ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Interne Daten verarbeiten →  Interne Tabellen →  Verarbeitungsanweisungen für interne Tabellen →  FIND IN TABLE itab → 

FIND IN TABLE - table_range

Kurzreferenz

Syntax

... [FROM lin1 [OFFSET off1]]
    [TO   lin2 [OFFSET off2]] ...


Wirkung

Dieser Zusatz begrenzt die Suche der Anweisung FIND IN TABLE auf den in lin1, off1, lin2 und off2 angegebenen Tabellenausschnitt. Ohne den Zusatz wird die gesamte Tabelle zeilenweise durchsucht. lin1, off1, lin2 und off2 sind numerische Ausdruckspositionen vom Operandentyp i.

Der Tabellenbereich beginnt in Zeile lin1 hinter dem Offset off1 und endet in Zeile lin2 vor dem Offset off2. Wird FROM ohne OFFSET angegeben, beginnt der Bereich implizit am Zeilenanfang von lin1. Wird TO ohne OFFSET angegeben, endet der Bereich implizit am Zeilenende der Zeile lin2.

Der Wert von lin1 muss größer oder gleich 1 und der Wert von lin2 muss größer oder gleich dem Wert von lin1 sein und beide müssen gültige Tabellenzeilen bezeichnen. Die Werte von off1 und off2 müssen größer oder gleich 0 sein und innerhalb der jeweiligen Zeilenlänge liegen. Wenn lin1 und lin2 die gleiche Zeile bezeichnen, muss der Wert von off2 größer oder gleich dem Wert von off1 sein. Beide Offsets dürfen auf das Zeilenende verweisen.

Hinweis

Dieser Zusatz wird auch in der Anweisung REPLACE IN TABLE verwendet.

Beispiel

Einlesen eines Texts im ITF-Format in eine interne Tabelle und Suche nach der ersten Zeichenkette "AS" ohne Berücksichtigung der Groß-/Kleinschreibung. Der Zeilentyp der internen Tabelle ist zwar strukturiert, wird aber wie einziges Feld vom Typ c interpretiert. Die erste Suche findet das erste Absatzformat "AS" in der Spalte tdformat. Die zweite Suche ist auf die Zeilen des ersten Absatzes begrenzt und findet dort in der Spalte tdline das Wort "as", falls vorhanden. Durch die Angabe des Offsets wird das Absatzformat in der ersten Zeile des Absatzes nicht gefunden.

DATA itf_tab TYPE tline_tab.
IF cl_abap_docu_itf=>get_docu( EXPORTING id = 'SD'
                                         langu = 'E'
                                         object = 'ABENABAP_XML'
                               IMPORTING itf = itf_tab ) = 0.
  DELETE itf_tab FROM 18.
  cl_demo_output=>write( itf_tab ).

  FIND FIRST OCCURRENCE OF SUBSTRING 'as'
       IN TABLE itf_tab
       IGNORING CASE
       MATCH LINE DATA(mline)
       MATCH OFFSET DATA(moff)
       MATCH LENGTH DATA(mlen).
  IF sy-subrc = 0.
    cl_demo_output=>write( |{ mline }, { moff }, { mlen }| ).
  ENDIF.

  DATA:
    idx1 TYPE i,
    idx2 TYPE i.
  LOOP AT itf_tab TRANSPORTING NO FIELDS WHERE tdformat = 'AS'.
    idx2 = COND i( WHEN idx1 IS NOT INITIAL THEN sy-tabix ).
    IF idx2 IS NOT INITIAL.
      EXIT.
    ENDIF.
    idx1 = COND i( WHEN idx1 IS INITIAL THEN sy-tabix ).
  ENDLOOP.

  FIND FIRST OCCURRENCE OF SUBSTRING 'as'
       IN TABLE itf_tab
       FROM idx1 OFFSET 2 TO idx2 - 1
       IGNORING CASE
       MATCH LINE mline
       MATCH OFFSET moff
       MATCH LENGTH mlen.
  IF sy-subrc = 0.
    cl_demo_output=>write( |{ mline }, { moff }, { mlen }| ).
  ENDIF.

  cl_demo_output=>display( ).
ENDIF.