Кодер написал(а):
В абап -редакторе ф1 а далее в первом уровне веток ищете.
Код есть, помогите, пожалуйста, довести до ума:
REPORT demo_string_distance.
PARAMETERS: word TYPE c LENGTH 30 DEFAULT 'CALL METHOD' OBLIGATORY,
percent TYPE i DEFAULT 50 OBLIGATORY.
CLASS demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
ENDCLASS.
CLASS demo IMPLEMENTATION.
METHOD main.
DATA: index_tab TYPE REF TO cl_abap_docu=>man_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=>man_index_tab,
<index> TYPE LINE OF cl_abap_docu=>man_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.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
demo=>main( ).
AT SELECTION-SCREEN ON percent.
IF percent NOT BETWEEN 0 AND 100.
MESSAGE 'Enter a value between 0 and 100' TYPE 'E'.
ENDIF.