Начиная с версии 7.0, EhP2 в язык ABAP вместе с большими изменениями в выражениях, внедрены так называемые строковые шаблоны. С помощью шаблонов можно сильно сократить объем кода программы, полностью избавившись от оператора WRITE TO и CONCATENATE.
Использование шаблонов возможно только в Unicode программах.
Далее будут рассмотрены некоторые особенности работы с шаблонами.
Шаблоны могут содержать в себе как простую текстовую последовательность, так и встроенные выражения, и управляющие символы (\n\r\t). Специальные символы экранируются символом "\"
Пример:
s2 = |Linebreak:\n. Tab: \t. Reserved: \\, \{, \}.|.
Результат:
S2 = `Linebreak: . Tab: . Reserved: \, {, }.`
Шаблон должен начинаться с символа «|» и так же заканчиваться им в той же строке исходного кода. Исключением из этого правила могут быть встроенные выражения, которые система позволяет переносить на новую строку.
gv_str = | { go_dt->add_day( 1 )->add_hours( 1 )->add_minutes( 1 )->date( ) } |.
Для объединения строковых шаблонов могут использоваться как оператор «&» так и «&&». Таким образом шаблон может быть длинной в несколько строк, кроме того не запрещается использовать комментарии при переносе шаблона.
gv_str = | { go_dt->add_day( 1 "добавляем день, час, минуту )->add_hours( 1 )->add_minutes( 1 )->date( ) } |.
Примечания:
Символ «|» является частью синтаксиса ABAP, для того чтобы использовать его в тексте необходимо воспользоваться escape символом \. Подсветка данного символа так же может быть настроена в опциях редактора.
При использовании оператора «&» в строковых шаблонах, нет ограничения на длину до 255 символов.
Гибкость использования шаблонов обеспечивает внедрение в них встроенных выражений. Выражение должно быть помещено в фигурные скобки «{}». Между скобками справа и слева должен быть как минимум один пробел. В качестве выражения могут выступать:
Результат работы выражения должен быть в виде, который преобразуем в строковую последовательность.
Пример:
s1 = |A VALUE:{SQRT(9)/2}. Another VALUE:{ lcl=>mi(2)}.|.
Результат:
S1 =`A value: 1.5. Another value: 20.`
Когда происходит анализ встроенного выражения, его результат преобразуется в строку и вставляется в указанном месте, формат строки может быть либо стандартным, либо переопределен с помощью опции форматирования и ключевых слов.
Следующий пример демонстрирует использование опций форматирования выражения, для вывода даты в ISO формате:
gv_str = | { sy-datum DATE=ISO} |.
Анализ строкового шаблона происходит последовательно слева на право.
Примечания:
Для отображения фигурных скобок необходимо использовать escape символ «\»
Фигурные скобки не могут быть вложенными напрямую. Опции форматирования нельзя использовать для выражений следующим образом:
gv_str = | { sy-datum DATE = ISO } |.
Примеры использования строковых выражений можно найти в программе: DEMO_EXPRESSIONS. Описание встроенных параметров форматирования выражений можно найти либо в справке по F1, либо по адресу: http://help.sap.com/abapdocu_731/en/abapcompute_string_format_options.htm.
Пример того как использование строковых шаблонов помогло сократить объем кода и сделать его более понятным для восприятия.
До:
tmp2 TYPE STRING. tmp = VALUE.
После:
lv_html_td = |<td STYLE="| & |{ iif( i_a = hidden i_b = 'display:none;' ) }| & |{ iif( i_a = invisible i_b = 'visibility:hidden;' ) }| & |" | & |{ iif( i_a = WIDTH i_b = ' width="' && WIDTH && '"' ) }| & |{ iif( i_a = CENTER i_b = ' id="center"' ) }| & |{ iif( i_a = colspan i_b = ' colspan="' && colspan && '"' ) }| & |>{ VALUE }</td>|.
Комментарии
NX
пт, 12/06/2013 - 16:37
Постоянная ссылка (Permalink)
По моему мнению, код "после"