ABAP Keyword Documentation → ABAP - Reference → Processing Internal Data → Character String and Byte String Processing → Expressions and Functions for String Processing → String Functions → Examples of String Functions
String Functions, distance
The example demonstrates the string function distance.
Other versions: 7.31 | 7.40 | 7.54
Source Code
DATA: index_tab TYPE REF TO cl_abap_docu=>abap_index_tab,
langu TYPE sy-langu,
dist TYPE i,
max TYPE i,
str1 TYPE string,
str2 TYPE string,
BEGIN OF result,
dist TYPE i,
text TYPE string,
END OF result,
result_tab LIKE SORTED TABLE OF result
WITH NON-UNIQUE KEY dist,
output TYPE string.
FIELD-SYMBOLS:
<index_tab> TYPE cl_abap_docu=>abap_index_tab,
<index> TYPE LINE OF cl_abap_docu=>abap_index_tab.
IF sy-langu <> 'D'.
langu = 'E'.
ELSE.
langu = 'D'.
ENDIF.
index_tab = cl_abap_docu=>get_abap_index( langu ).
ASSIGN index_tab->* TO <index_tab>.
LOOP AT <index_tab> ASSIGNING <index>.
str1 = to_upper( val = <index>-key1 ).
str2 = to_upper( val = word ).
IF strlen( str1 ) > strlen( str2 ).
max = strlen( str1 ).
ELSE.
max = strlen( str2 ).
ENDIF.
max = ( 100 - percent ) * max / 100 + 1.
dist = distance( val1 = str1 val2 = str2 max = max ).
IF dist < max.
result-dist = dist.
result-text = str1.
INSERT result INTO TABLE result_tab.
ENDIF.
ENDLOOP.
LOOP AT result_tab INTO result.
output = |{ result-text WIDTH = 40 }({ result-dist })|.
WRITE: / output.
ENDLOOP.
Description
The program compares a text that has been input with the index entry in the ABAP keyword documentation
using distance. The index entries that correspond to the longer texts to an arbitrary precentage are output in order of increasing edit distance.