Line exists: Unterschied zwischen den Versionen

Aus SAP Wiki ツ
(Die Seite wurde neu angelegt: „Kategorie:Schlüsselbegriffe Ab ABAP 7.40 kann anstelle READ TABLE ... TRANSPORTING NO FIELDS der Schlüsselbegriff "line_exists" genommen werden. Denn mi…“)
 
 
Zeile 10: Zeile 10:
=== Mit line_exists ===
=== Mit line_exists ===


<syntaxhighlight lang="abap" line start="1">
  IF line_exists( lt_mara[ matnr = '000000000000000100' ] ).
  IF line_exists( lt_mara[ matnr = '000000000000000100' ] ).
   "ist true
   "ist true
  ELSE.
  ELSE.
  ENDIF.
  ENDIF.
</syntaxhighlight>


<syntaxhighlight lang="abap" line start="1">
  IF line_exists( lt_mara[ matnr = '000000000000000500' ] ).
  IF line_exists( lt_mara[ matnr = '000000000000000500' ] ).
  ELSE.
  ELSE.
   "ist false
   "ist false
  ENDIF.
  ENDIF.
</syntaxhighlight>


=== Mit READ TABLE ... TRANSPORTING NO FIELDS ===
=== Mit READ TABLE ... TRANSPORTING NO FIELDS ===


<syntaxhighlight lang="abap" line start="1">
  READ TABLE lt_mara TRANSPORTING NO FIELDS WITH KEY matnr = '000000000000000100'.
  READ TABLE lt_mara TRANSPORTING NO FIELDS WITH KEY matnr = '000000000000000100'.
  IF sy-subrc = 0.
  IF sy-subrc = 0.
Zeile 27: Zeile 32:
  ELSE.
  ELSE.
  ENDIF
  ENDIF
</syntaxhighlight>

Aktuelle Version vom 12. August 2021, 12:56 Uhr

Ab ABAP 7.40 kann anstelle READ TABLE ... TRANSPORTING NO FIELDS der Schlüsselbegriff "line_exists" genommen werden.

Denn mit IF line_exists( itab [...] ) bekommt man ein true zurück, falls die Zeile in der internen Tabelle existiert bzw. im ELSE-Zweig ein false, falls die Zeile nicht existiert.

Beispiel

SELECT * FROM mara INTO TABLE @DATA(lt_mara) WHERE matnr = '000000000000000100' or matnr = '000000000000001000'.

Mit line_exists

 IF line_exists( lt_mara[ matnr = '000000000000000100' ] ).
  "ist true
 ELSE.
 ENDIF.
 IF line_exists( lt_mara[ matnr = '000000000000000500' ] ).
 ELSE.
  "ist false
 ENDIF.

Mit READ TABLE ... TRANSPORTING NO FIELDS

 READ TABLE lt_mara TRANSPORTING NO FIELDS WITH KEY matnr = '000000000000000100'.
 IF sy-subrc = 0.
  "ist true
 ELSE.
 ENDIF