*&---------------------------------------------------------------------*
*& Report ZSA_REGEX_FIND
*&
*&---------------------------------------------------------------------*
*& Тест поиска строк с использованием регулярных выражений
*&
*&---------------------------------------------------------------------*
REPORT zsa_regex_find.
DATA: lt_result_tab TYPE match_result_tab.
DATA: ls_result_tab TYPE LINE OF match_result_tab.
DATA: ls_submatches TYPE LINE OF submatch_result_tab.
DATA: lv_test(255) TYPE c.
lv_test = \':86:Операция:Платеж,БИК:12345678,Счет:987654321,Контрагент:ТОО ТЕСТ,РНН:120100000001,Выплата за XYZ /KNP/1719311 /BCLASS/\'.
DATA lv_name1 LIKE lfa1-name1.
DATA lv_stcd1 LIKE lfa1-stcd1.
DATA lv_sgtxt LIKE bseg-sgtxt.
FIND ALL OCCURRENCES OF REGEX `.*Контрагент:(.*),РНН:(\\d*),(.*)/KNP/.*`
IN lv_test
RESULTS lt_result_tab.
IF LINES( lt_result_tab ) = 1.
READ TABLE lt_result_tab INDEX 1 INTO ls_result_tab.
IF LINES( ls_result_tab-submatches ) = 3.
READ TABLE ls_result_tab-submatches INDEX 1 INTO ls_submatches.
lv_name1 = lv_test+ls_submatches-offset(ls_submatches-length).
READ TABLE ls_result_tab-submatches INDEX 2 INTO ls_submatches.
lv_stcd1 = lv_test+ls_submatches-offset(ls_submatches-length).
READ TABLE ls_result_tab-submatches INDEX 3 INTO ls_submatches.
lv_sgtxt = lv_test+ls_submatches-offset(ls_submatches-length).
ENDIF.
ENDIF.
WRITE: / \'lv_name1 =\', lv_name1.
WRITE: / \'lv_stcd1 =\', lv_stcd1.
WRITE: / \'lv_sgtxt =\', lv_sgtxt.