SALV Table — Checkbox поля

В настоящее время SALV объекты не предоставляют стандартных средств для подключения возможности редактирования. Но в некоторых случаях можно исхитриться и получить желаемый результат. Рассмотрим небольшой пример. Необходимо предоставить пользователю возможность обработки записей в таблице. Пользователь выделяет нужные записи в таблице и нажимает кнопку обработки, которую мы заранее добавили в GUI статус. Таким образом он совершает два действия: выделение и нажатие на кнопку обработки. А что если попробовать сократить его действия до одной операции? В этом случае мы можем использовать checkbox поля.

За обработку событий в таблицах отвечает класс  CL_SALV_EVENTS_TABLE. Так как наше поле будет являться HOTSPOT элементом, мы можем поймать событие LINK_CLICK и использовать его чтобы назначить значение полю. Чтобы поле было доступно для редактирования необходимо задать тип для столбца —  CHECKBOX_HOTSPOT. После изменения значения поля необходимо обновить ALV объект, если при этом будут использоваться сортировки, то обновление надо делать полным. Пример:

Cаповский пример где рассматривается обработка событий в ALV таблице — SALV_DEMO_TABLE_EVENTS

2 комментария

  1. Результат работы данного кода таков — чекбоксами являются не квадратики с галочками, а полностью сами ячейки. То есть, щёлкая в любое место любой ячейки из первой колонки (не на сам чекбокс), чекбокс активируется. Вопрос, есть ли смысл страдать и делать чекбокс внутри ячейки, то есть, чтобы активация чекбокса была только по нажатии на него?
    И как лучше работать с данными, у которых активированы чекбоксы в этой программе? Например, мне нужно выделенные записи отобразить где-нибудь в другом месте (на другом месте экрана, другом экране и т.п.)

    1. Страдать конечно же не стоит 😉 Данный пример сделан лишь для демонстрации событийной модели SALV. На счёт как лучше работать с данными, не совсем понятен вопрос, работайте как вам вздумается и как это позволяет диалоговое программирования в бэкенде SAP’a. Получить выделенные записи труда я думаю не составит?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *