Vergleichsoperatoren Zeichen

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Siehe ABAP.

Es gibt Vergleichsoperatoren, mit denen man sehr schnell und flexibel nach Fundstellen in einem Text suchen kann.

Berücksichtigung führende/schließende Leerzeichen

  • Bei einem Datenfeld vom Typ String werden schließende Leerzeichen berücksichtigt.
  • Bei allen anderen zeichenartigen Datentypen werden schließende Leerzeichen ignoriert.

SY-FDPOS

  • Die Fundstelle im String wird in die Systemvariable SY-FDPOS geschrieben.
  • Die Zählung beginnt bei 0.

Suchmuster

Der Vergleich erfolgt nach dem Prinzip.

Data: lv_offset type i.

if <string> <operator> <suche_nach>.
  ... "Suche erfolgreich
endif.

Operatoren

Operator CA (Contains Any)

  • Mit dem Vergleichsoperator CA kann man gut nach einem Space in einem String suchen. Bei der Suche nach einem Space funktioniert der Vergleichsoperator CS nicht. Es wird dann die Fundstelle des Space nicht in die Systemvariable SY-FDPOS geschrieben.
Data: lv_text type string value 'Text mit Leerzeichen',
      lv_offset type i.

if lv_text ca ' '.       "oder ca space
  lv_offset = sy-fdpos.  "Die erste Fundstelle wird aufgeführt: sy-fdpos = 4
endif.

Operator CO (Contains Only)

  • Mit dem Vergleichsoperator CO prüft man in einem String, ob nur die erlaubten Zeichen in dem String vorkommen.
if lv_text co '0123456789'.
   ... "erfolgreich, wenn lediglich Zahlen in dem String vorkommen
endif.

Operator CP (Covers Pattern)

  • Mit dem Operator CP kann man sehr flexibel auch nach Wildcards suchen.

Das Zeichen * steht für eine beliebige Zeichenfolge

if lv_variable cp 'Test*Beispiel'.
  ... "erfolgreich
endif.

Das Zeichen + steht für genau ein beliebiges Zeichen

if lv_variable cp 'Tes+Beispiel'.
  ... "erfolgreich
endif.

  • Standardmäßig wird beim Operator CP nicht zwischen Groß-/Kleinschreibung unterschieden
  • Durch Voranstellen von "#" kann ein Zeichen casesensitiv gekennzeichnet werden (Berücksichtigung Groß-Kleinschreibung), z. B.: 'ABcd' cp '#bc' --> FALSE, aber 'ABcd' cp 'bc' --> TRUE.

Hier werden z B. alle Partner gelöscht, die mit "Z*" beginnen

DELETE lt_partner WHERE parvw CP 'Z*'.

Operator CS (Contains String)

  • Oft wird man den Vergleichsoperator CS verwenden, um zu prüfen, ob ein Suchstring in einem Text vorkommt.
IF <ls_column>-column CS 'MG'.

Findet solche Felder:

Zeichenvergleich1.JPG


Es wird hier geprüft, ob in einer Variable LV_STR_NAME ein interner Wiki-Link vorkommt (Zeichen "[[").

Data: lv_offset_begin type i.
IF lv_str_name CS '[['.
  lv_offset_begin = sy-fdpos.
endif.

Wenn die Bedingung erfüllt ist, kommt in dem String ein interner Link vor. Die Fundstelle wird in die Variable LV_OFFSET_BEGIN geschrieben.

Tabelle mit Operatoren

Operator Bedeutung
CO Contains only. Beispiel: 'ABCDE' co 'DA' --> TRUE
CA Contains any. Beispiel: 'ABCDE' ca 'EFG' --> TRUE
CS Contains string. Beispiel: 'ABCDE' cs 'BA' --> TRUE (sy-fdpos = 0)
CP Covers pattern. Beispiel: '<z>HTML-Text</z>' cp '<+>' --> TRUE

Web-Links