Один из способов добавить свою кнопку в toolbar на SELECTION-SCREEN.
*--------------------------------------------------------------*
* Объявляем специальную системную
* структуру для работы с экраном
TABLES: sscrfields.
* Объявляем структуру которую будем
* использовать для формирования текстов для кнопок
DATA: functxt TYPE smp_dyntxt.
SELECT-OPTIONS...
PARAMETERS...
* Активируем кнопку номер 1
SELECTION-SCREEN FUNCTION KEY 1.
* в этом событии создаем кнопку и записываем
* ее в sscrfields
AT SELECTION-SCREEN OUTPUT.
functxt-icon_id = icon_create.
functxt-quickinfo = 'Создать'.
functxt-icon_text = 'Создать'.
MOVE funcxt TO sscrfields-functxt_01.
* Обрабатываем реакцию на нажатие кнопки
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
"тут происходит что-то важное
"и тут
"и еще немного тут
ENDCASE.
*--------------------------------------------------------------*
В результате получится что-то в этом духе:
Подробнее...
Для этого надо заполнить таблицу типа ALV_T_QINF. В ней для каждого значения которому необходима подсказка заполнить поля:
TYPE - тип,
VALUE - значение,
TEXT - текст подсказки.
Тип берется из констант класса cl_salv_tooltip:
- C_TYPE_ICON,
- C_TYPE_SYMBOL,
- C_TYPE_COLOR,
- C_TYPE_EXCEPTION,
- C_TYPE_TREE_STYLE.
Потом необходимо передать эту таблицу в методе SET_TABLE_FOR_FIRST_DISPLAY во входном параметре IT_EXCEPT_QINFO.
Пример:
DATA: l_t_qinf TYPE ALV_T_QINF.
DATA: l_s_qinf TYPE ALV_S_QINF.
l_s_qinf-TYPE = cl_salv_tooltip=>C_TYPE_ICON.
l_s_qinf-VALUE = ICON_HISTORY.
l_s_qinf-TEXT = 'Есть ПП'.
APPEND l_s_qinf TO l_t_qinf.
CALL METHOD my_alv_grid->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = my_alv_layo
IS_VARIANT = my_alv_vari
I_SAVE = 'A'
IT_EXCEPT_QINFO = l_t_qinf
CHANGING
IT_OUTTAB = my_alv_it[]
IT_FIELDCATALOG = my_alv_fcat.
Подробнее...
DATA: LS_COL_INFO TYPE LVC_S_COL,
LS_ROW_INFO TYPE LVC_S_ROW.
* Получаем информацию о текущей позиции скролла
CALL METHOD req_grid->GET_SCROLL_INFO_VIA_ID
IMPORTING
ES_ROW_INFO = LS_ROW_INFO
ES_COL_INFO = LS_COL_INFO.
* нужно для того чтобы не вываливалось в дамп
* после вызова предыдущего метода
CALL METHOD CL_GUI_CFW=>FLUSH
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2.
* Указываем индекс нужной нам строки
LS_ROW_INFO-INDEX = lv_index.
* Устанавливаем скролл в нужную позицию
CALL METHOD req_grid->SET_SCROLL_INFO_VIA_ID
EXPORTING
IS_ROW_INFO = LS_ROW_INFO
IS_COL_INFO = LS_COL_INFO.
* нужно для того чтобы не вываливалось в дамп
* после вызова предыдущего метода
CALL METHOD CL_GUI_CFW=>FLUSH
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2.
Подробнее...