ULINE.
DATA: gd_butter_offset TYPE i,
gt_result TYPE match_result_tab,
gs_result LIKE LINE OF gt_result,
gs_result_look_ahead LIKE gs_result,
sy_tabix_1 TYPE i,
gd_butter_length TYPE i
* 1. Suche nach Butter
FIND FIRST OCCURRENCE OF 'Butter'
IN gs_recipe-zutaten
IGNORING CASE
MATCH OFFSET gd_butter_offset.
* Nur weitermachen, falls etwas gefunden wurde
IF sy-subrc = 0.
WRITE: / 'Da ist Butter dabei'.
* 2. Alle Positionen von ## finden
FIND ALL OCCURRENCES OF '##'
IN gs_recipe-zutaten
RESULTS gt_result.
* 3. Intervall finden
LOOP AT gt_result INTO gs_result.
IF sy-tabix < LINES( gt_result ).
sy_tabix_1 = sy-tabix + 1.
READ TABLE gt_result INTO gs_result_look_ahead
INDEX sy_tabix_1.
ENDIF.
IF gs_result-offset < gd_butter_offset
AND gd_butter_offset < gs_result_look_ahead-offset.
gd_butter_length =
gs_result_look_ahead-offset - gs_result-offset + 1.
EXIT.
ENDIF.
ENDLOOP.
WRITE: / gs_recipe-zutaten+gs_result-offset(gd_butter_length).
* Oder so, etwas einfacher
DATA: ld_butter_line TYPE i.
SPLIT gs_recipe-zutaten AT '##'
INTO TABLE gt_zutaten.
FIND FIRST OCCURRENCE OF 'Butter'
IN TABLE gt_zutaten
IGNORING CASE
MATCH LINE ld_butter_line.
READ TABLE gt_zutaten INTO gs_zutaten
INDEX ld_butter_line.
WRITE: / gs_zutaten.