Wenn man alle Leerzeichen in einem String finden möchte – um zum Beispiel die Wörter in einem Satz zu bestimmen – dann steht man vor einem Problem. Die Anweisung FIND ALL OCCURRENCES OF <space oder ‚ ‚> IN <string> RESULTS <Tabelle mit Positionsangaben> führt zu einem Laufzeitfehler da space oder ‚ ‚ die Länge 0 hat und so eine Endlosschleife ausgelöst würde.
Man könnte nun die Leerzeichen maskieren – unter Verwendung von OVERLAY – oder auch den String aufsplitten, aber es geht noch viel einfacher.
Durch die Verwendung von ` `, des sogenannten „Backticks“ oder „Backquotes“ – die deutsche Bezeichnung wäre Gravis oder rückwärts geneigtes Hochkomma – kann ein Stringliteral definiert werden, das als Leerzeichen interpretiert wird.
REPORT ztestfind.
DATA: testsatz(50) TYPE c VALUE ‚Das ist ein Test des Befehls FIND‘.
DATA: l_find_result TYPE TABLE OF match_result.
DATA: wa_find_result TYPE match_result.
DATA: len TYPE i.
len = strlen( testsatz ).
FIND ALL OCCURRENCES OF ` ` IN testsatz(len) RESULTS l_find_result.
LOOP AT l_find_result INTO wa_find_result.
WRITE:/ wa_find_result-offset.
ENDLOOP.
In dem Beispiel wird zusätzlich auf die tatsächliche Länge des Strings abgefragt mit STRLEN da sonst natürlich auch die Position der abschließenden Leerzeichen ausgegeben wird.