В настоящее время SALV объекты не предоставляют стандартных средств для подключения возможности редактирования. Но в некоторых случаях можно исхитриться и получить желаемый результат. Рассмотрим небольшой пример. Необходимо предоставить пользователю возможность обработки записей в таблице. Пользователь выделяет нужные записи в таблице и нажимает кнопку обработки, которую мы заранее добавили в GUI статус. Таким образом он совершает два действия: выделение и нажатие на кнопку обработки. А что если попробовать сократить его действия до одной операции? В этом случае мы можем использовать checkbox поля.
За обработку событий в таблицах отвечает класс CL_SALV_EVENTS_TABLE. Так как наше поле будет являться HOTSPOT элементом, мы можем поймать событие LINK_CLICK и использовать его чтобы назначить значение полю. Чтобы поле было доступно для редактирования необходимо задать тип для столбца — CHECKBOX_HOTSPOT. После изменения значения поля необходимо обновить ALV объект, если при этом будут использоваться сортировки, то обновление надо делать полным. Пример:
Cаповский пример где рассматривается обработка событий в ALV таблице — SALV_DEMO_TABLE_EVENTS
Результат работы данного кода таков — чекбоксами являются не квадратики с галочками, а полностью сами ячейки. То есть, щёлкая в любое место любой ячейки из первой колонки (не на сам чекбокс), чекбокс активируется. Вопрос, есть ли смысл страдать и делать чекбокс внутри ячейки, то есть, чтобы активация чекбокса была только по нажатии на него?
И как лучше работать с данными, у которых активированы чекбоксы в этой программе? Например, мне нужно выделенные записи отобразить где-нибудь в другом месте (на другом месте экрана, другом экране и т.п.)
Страдать конечно же не стоит
Данный пример сделан лишь для демонстрации событийной модели SALV. На счёт как лучше работать с данными, не совсем понятен вопрос, работайте как вам вздумается и как это позволяет диалоговое программирования в бэкенде SAP’a. Получить выделенные записи труда я думаю не составит?