Замена символа ABAP (REPLACE)

Замена символов в строке ABAP — REPLACE

Часто при разработке программ ABAP возникает необходимость заменить подстроку другой. Функция замены поможет. Эта функция заменяет подстроку текста строкой символов и возвращает измененный текст в результате. Есть два варианта вызова, мы рассмотрим каждый из них более подробно:

Заменить часть используя смещение(off) и длину подстроки после смещения(len).

Эта опция заменяет подстроку, которую мы выбираем, используя off смещение и длина, указанная в len переменная со значением, указанным в аргументе with. С помощью этой опции вызова должен быть определен хотя бы один из этих аргументов. Примеры:

Если указан только параметр off, который аналогичен указанию параметра len = 0, тогда эта констукция будет работать как вставка.

Если указан только параметр len, что аналогично указанию off = 0, то первый элемент длины len будет заменен.

Если значение параметра off равно длине строки, то значение параметра with будет вставлено в конец строки:

Заменить используя подстроку(sub) или регулярное выражение(regex).

Этот параметр определения ищет определенное количество вхождений occ в строке, проверяя соответствие подстроке, указанной в substring, или регулярному выражению, указанному в аргументе regex. И заменяет эти вхождения значением, переданным в with. Если значение параметра with имеет фиксированную длину, то пробелы, указанные в конце, будут игнорироваться программой. Если вы передадите значение 0 в аргумент occ, все вхождения будут заменены. Кроме того, по умолчанию при поиске заменяемых значений учитывается регистр, но это можно изменить с помощью параметра case.

Если параметр occ не указан, то по умолчанию это будет occ = 1, и будет заменено только первое вхождение подстроки:

Значением по умолчанию для параметра является case = abap_true, что означает регистр символов. То есть, указав case = abap_true или пропустив этот параметр, вы получите тот же результат:

Чтобы замена работала корректно, необходимо указать параметр case = abap_false, чтобы регистр игнорировался.

Пример из реальной задачи.

При использовании масок сравнения для таблицы range и для ограничения запроса вы должны передать значение другим способом. В этом случае эту замену удобно выполнить с помощью replace с параметром regex, в который мы передаем символ, который необходимо заменить:

В результате мы получаем значение, которое можно указать для ограничения запроса в дополнении WHERE. Например: WHERE name LIKE lv_str.

Добавить комментарий