За окном отличная погода, светит яркое солнце. На часах 16:17. Я сижу за своим ноутбуком и пишу пост в этот блог…
Не так давно переходя по ссылкам наткнулся на статью в блоге. В статье довольно подробно описывается как выборочно задизейблить кнопки в Tollbar ALV. Тема интересная и временами полезная. Поэтому, чтобы закрепись прочитанное на практике я убрал из статьи «многа букаф» и оставил только самое важное.
Как правило, если требование состоит в том, чтобы удалить всю панель инструментов ALV Grid, то это довольно просто. Нужно просто поднять флаг no_toolbar структуры lvc_s_layo и передать ее во входной параметр is_layout метода set_table_for_first_display( ).
Однако выборочно удалить или сделать неактивными кнопки немного сложнее. Но только немного)
Итак, как это сделать?
Ответ на этот вопрос — обработчики событий (Event Handlers).
На высоком уровне абстракции реализация может состоять из следующих шагов:
- Создание ALV, контейнера (стандартный объект, предоставляемый SAP) и обработчика событий (объект локального класса).
- Определение класса обработчика событий, содержащего метод для обработки toolbar’а.
- Реализация метода.
- Установка обработчика события.
Ниже процесс реализации представлен максимально подробно.
1. Создаем программу в se38.

2. Идем в se80 или жмем «Просмотреть список объектов».

Создаем экран.

Присваиваем экрану номер.

Заполняем описание и жмем «Формат».

Выбираем объект «Спец. упр. элемент» и даем ему имя. Это имя будет использоваться в программе.

Активируем и выходим.
Не забываем раскомментировать вызов модулей PBO и PAI…

… а также заполнить атрибут ОК.

В программе создаем объект «контейнер».


На этом дизайн экрана завершен. Теперь напишем нашу программу.
3. Программа
Обратите внимание на реализацию метода handle_toolbar (строки 34-50), который мы сделали обработчиком события toolbar (строка 27).

У события toolbar есть параметр e_object.

Это объект содержащий таблицу mt_toolbar.

Т.о. передав этот объект в метод handle_toolbar и оперируя таблицей mt_toolbar мы сможем управлять панелью кнопок тулбара.
4. Тестирование
Для тестирования я решил сделать кнопку «Печать» не активной и убрал кнопку «Экспортировать».

Запускаем программу и смотрим что получилось.

5. Вместо эпилога
За окном по-прежнему хорошая погода. На часах 18:48. Не знаю зачем вам эта информация, но пусть будет так.