Товарищ недавно подходил, спрашивал не знаю ли я, как сделать светофор при выводе данных в TABLE CONTROL. Почесал я голову, и сказал два волшебных слова – SE16 и ICON. А теперь по-подробнее…
Каждая иконка – на самом деле это некоторый код, например для светофора:
@08@, @09@, @0A@
Эти иконки вполне успешно копируются в буфер обмена в виде кодов.
Сам код иконки здесь увидеть достаточно проблематично, ибо SAP превращает его в иконку.
Впрочем, для этой цели есть программка SHOWICON, которая показывает эти коды (без служебных знаков @).
SAP показывает код вместо иконки в нескольких случаях:
- если он находится не в начале целой строки вывода (внутри или в конце строки)
- если он находится в поле, открытом для ввода
- если он находится в ABAP-редакторе
Иконки вполне можно использовать и в ABAP-списках:
Вот ещё вполне забавная иллюстрация использования этого трюка. Изменяем и просматриваем документ:
Смотрим список документов:
Возвращаясь к началу, товарищу надо было только присвоить требуемые коды в поля вывода или приклеить их в начало какого-нибудь расшифровающего поля.
* * *
Однако с кодами не совсем удобно работать – для повышения читабельности следует использовать правильно именованные константы. Для этого свои инклюды не обязательно плодить, есть страндартный пул ICON.
Включаем пул в программу:
type-pools: icon.
Там уже эти иконки объявлены в виде констант примерно в таком виде:
ICON_4 ICON_GREEN_LIGHT ‘@08@’." Green light; positive
ICON_4 ICON_YELLOW_LIGHT ‘@09@’." Yellow light; neutral
ICON_4 ICON_RED_LIGHT ‘@0A@’." Red light; negative
Имя константы совпадает с именем иконки в таблице.
И все константы можно использовать в нашей программе:
if …
gt_stats-status = icon_red_light.
endif.
if …
gt_stats-status = icon_yellow_light.
endif.
Программа с текстовыми именами иконок читается гораздо легче чем с кодами.
* * *
Что же ещё…
Если подходящих иконок нет, и вам хочется свою иконку подсунуть – то данный подход вам вообще никак не поможет. Я предполагаю, что сами иконки “прошиты” в самом SAP GUI.
Код иконки можно увидеть в программе showicon, столбец внутр