Разбиение строки на подстроки ABAP

Существует множество вариантов разбиения строки на части в зависимости от поставленной задачи.
Есть задачи в которых есть необходимость выделить подстроку из строки по определённым критериям. Для решения данной задачи отлично подходит функция substring с множеством своих вариантов. Рассмотрим подробнее каждый из них:

Функция substring возвращает нам подстроку длины равной len при этом берёт данную строку с отступом равным off.

	
		lv_substring = substring( val = 'ABCDEFGH' off = 2 len = 2 ). " CD					
									

В нашем случае результатом выполнения функции будет: CD

SUBSTRING_FROM
Возвращает подстроку начиная с первого вхождения символов sub включая эти символы и до конца строки.
По результату получим: CDEFGH

	
		lv_substring = substring_from( val = 'ABCDEFGH' sub = 'CD' )	" CDEFGH			
									

SUBSTRING_AFTER
Возвращает подстроку начиная с первого вхождения символов sub НЕ включая эти символы и до конца строки.
По результату получим: EFGH

	
		lv_substring = substring_after( val = 'ABCDEFGH' sub = 'CD' ). " EFGH			
									

SUBSTRING_BEFORE
Возвращает подстроку начиная с первого символа строки до первого вхождения символов sub НЕ включая эти символы.
По результату получим: AB

	
		lv_substring = substring_before( val = 'ABCDEFGH' sub = 'CD' ). " AB		
									

SUBSTRING_TO
Возвращает подстроку начиная с первого символа строки до первого вхождения символов sub включая эти символы.
По результату получим: ABCD

	
		lv_substring = substring_to( val = 'ABCDEFGH' sub = 'CD' ).	" ABCD
									

Так же бывают задачи разбиения одной строки на несколько подстрок. Разбиение строки оператором SPLIT по заданнному разделителю

	
		DATA(lv_dom_http) = 'https://сайт.рф'.

		SPLIT lv_img_http AT '://' INTO: DATA(lv_http) DATA(lv_dom_http). 						
									

По итогу выполнени программы переменным будут присвоены следующие значения:

	 lv_http = 'https'.
	 lv_dom_http = 'сайт.рф'.							
									

Так же бывают случаи, когда возникает необходимость разбить строку на несколько строк определённой длины. Для этого используется ФМ HR_RU_SLPIT_STRING0, который разбивает строку на подстроки и помещает их в таблицу. Использование данного ФМ показано на примере заполнения полей имени при создании кредитора.

	
		  l_string-char255 = 'ООО "ТЫКОДЕР" загружено из внешней системы'.
		  CALL FUNCTION 'HR_RU_SLPIT_STRING0'
			EXPORTING
			  string    = l_string
			  length    = 40
			  separator = l_separator
			TABLES
			  split     = lt_split.	
		  LOOP AT lt_split REFERENCE INTO DATA(lr_split).
			CASE sy-tabix.
			  WHEN 1.
				ls_data-name  = lr_split->char255.
			  WHEN 2.
				ls_data-name_2  = lr_split->char255.
			  WHEN 3.
				ls_data-name_3  = lr_split->char255.
			  WHEN 4.
				ls_data-name_4  = lr_split->char255.
			ENDCASE.
		  ENDLOOP.