Прощай WRITE TO, привет шаблоны!

Начиная с версии 7.0, EhP2 в язык ABAP вместе с большими изменениями в выражениях, внедрены так называемые строковые шаблоны. С помощью шаблонов можно сильно сократить объем кода программы, полностью избавившись от оператора WRITE TO и CONCATENATE.

Использование шаблонов возможно только в Unicode программах.
Далее будут рассмотрены некоторые особенности работы с шаблонами.

Шаблоны могут содержать в себе как простую текстовую последовательность, так и встроенные выражения, и управляющие символы (\n\r\t). Специальные символы экранируются символом «\»

Пример:

Результат:

Шаблон должен начинаться с символа «|» и так же заканчиваться им в той же строке исходного кода. Исключением из этого правила могут быть встроенные выражения, которые система позволяет переносить на новую строку.

Для объединения строковых шаблонов могут использоваться как оператор «&» так и «&&». Таким образом шаблон может быть длинной в несколько строк, кроме того не запрещается использовать комментарии при переносе шаблона.

Примечания:

  • Символ «|» является частью синтаксиса ABAP, для того чтобы использовать его в тексте необходимо воспользоваться escape символом \. Подсветка данного символа так же может быть настроена в опциях редактора.
  • При использовании оператора «&» в строковых шаблонах, нет ограничения на длину до 255 символов.

Гибкость использования шаблонов обеспечивает внедрение в них встроенных выражений. Выражение должно  быть помещено в фигурные скобки «{}». Между скобками справа и слева должен быть как минимум один пробел. В качестве выражения могут выступать:

  • Встроенные функции (возвращающие результат — substring и т.п.)
  • Рассчитываемые выражения (арифметические операции, битовые выражения, символьные выражения)
  • Функциональные методы (методы классов) или цепочка вызовов методов, возвращающая результат
  • Значения переменных (sy-datum и т.п.)

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

Пример:

Результат:

Когда происходит анализ встроенного выражения, его результат преобразуется в строку и вставляется в указанном месте, формат строки может быть либо стандартным, либо переопределен с помощью опции форматирования и ключевых слов.

Следующий пример демонстрирует использование опций форматирования выражения, для вывода даты в ISO формате:

Анализ строкового шаблона происходит последовательно слева на право.

Примечания:

  • Для отображения фигурных скобок необходимо использовать escape символ «\»
  • Фигурные скобки не могут быть вложенными напрямую. Опции форматирования нельзя использовать для выражений следующим образом:

Примеры использования строковых выражений можно найти в программе: DEMO_EXPRESSIONS. Описание встроенных параметров форматирования выражений можно найти либо в справке по F1, либо по адресу: http://help.sap.com/abapdocu_731/en/abapcompute_string_format_options.htm.

Пример того как использование строковых шаблонов помогло сократить объем кода и сделать его более понятным для восприятия.

До:

 

После: