За окном отличная погода, светит яркое солнце. На часах 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. Не знаю зачем вам эта информация, но пусть будет так.