За окном отличная погода, светит яркое солнце. На часах 16:17. Я сижу за своим ноутбуком и пишу пост в этот блог…

Не так давно переходя по ссылкам наткнулся на статью в блоге. В статье довольно подробно описывается как выборочно задизейблить кнопки в Tollbar ALV. Тема интересная и временами полезная. Поэтому, чтобы закрепись прочитанное на практике я убрал из статьи «многа букаф» и оставил только самое важное.

Как правило, если требование состоит в том, чтобы удалить всю панель инструментов ALV Grid, то это довольно просто. Нужно просто поднять флаг no_toolbar структуры lvc_s_layo и передать ее во входной параметр is_layout метода set_table_for_first_display( ).

Однако выборочно удалить или сделать неактивными кнопки немного сложнее. Но только немного)

Итак, как это сделать?

Ответ на этот вопрос — обработчики событий (Event Handlers).

На высоком уровне абстракции реализация может состоять из следующих шагов:

  1. Создание ALV, контейнера (стандартный объект, предоставляемый SAP) и обработчика событий (объект локального класса).
  2. Определение класса обработчика событий, содержащего метод для обработки toolbar’а.
  3. Реализация метода.
  4. Установка обработчика события.

Ниже процесс реализации представлен максимально подробно.

1. Создаем программу в se38.

Рис 1

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

Рис 2

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

Рис 3

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

Рис 4

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

Рис 5

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

Рис 7

Активируем и выходим.

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

Рис 10

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

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

Рис 8
Рис 9

На этом дизайн экрана завершен. Теперь напишем нашу программу.

3. Программа

Обратите внимание на реализацию метода handle_toolbar (строки 34-50), который мы сделали обработчиком события toolbar (строка 27).

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

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

Т.о. передав этот объект в метод handle_toolbar и оперируя таблицей mt_toolbar мы сможем управлять панелью кнопок тулбара.

4. Тестирование

Для тестирования я решил сделать кнопку «Печать» не активной и убрал кнопку «Экспортировать».

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

5. Вместо эпилога

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.