В общем так как постоянно писать какие-то обработки текстов нет необходимости, то когда возникает проблема снова найти в тексте дату или еще какое-то значение, оптимальным вариантом является использование регулярных выражений, но как обычно? все забывается и потом снова теряешь пару часов, чтобы или вспомнить или найти, так как точно уже такое или сам делал или кто-то делал. Кстати с кто-то делал не всегда хорошо получается так как примеры часто могут быть под другие языки и не работать в ABAP.
Традиционное найти дату формата ДД.ММ.ГГГГ или ДД-ММ-ГГГГ (да, дата берется из диапазона 2000 по 2099):
DATA: l_moff TYPE sytabix,
l_mlen TYPE sytabix.
* Find date in string
FIND REGEX '(?:0?[1-9]|[12][0-9]|3[01])(?:.|-)(?:0?[1-9]|1[0-2])(?:.|-)(?:20[0-9][0-9])(?!\d)'
IN iv_bktxt MATCH OFFSET l_moff
MATCH LENGTH l_mlen.
IF sy-subrc = 0. RV_date = iv_bktxt+l_moff(l_mlen). ENDIF.
Найти номер документа в строке, причем номер начинается с символа № потом идут цифры. Между символом номера могут быть пробелы а могут и небыть, но в результате пробелы между символом номера и самим номером убираются, возвращается что-то типа №1234:
DATA: l_moff TYPE sytabix,
l_mlen TYPE sytabix.
* Find number of document
FIND REGEX '№+\s*(\d{1,})' IN iv_bktxt MATCH OFFSET l_moff
MATCH LENGTH l_mlen.
IF sy-subrc = 0.
rv_number = iv_bktxt+l_moff(l_mlen).
CONDENSE rv_number NO-GAPS.
ENDIF.