SALV Table - PF-STATUS

Стандартный GUI статус можно взять в группе функций: SALV_METADATA_STATUS – статус: SALV_TABLE_STANDARD или SALV_TABLE_STDPOPUP, скопировать в свою программу и расширить необходимыми функциями.

Для того чтобы динамически исключить какую либо функцию можно применить класс cl_salv_functions, но вместо метода remove_function использовать метод set_function, параметр name определяет какую функцию будем скрывать, boolean - определяет скрыта она или нет, если скрываем ставим в abap_true. Метод remove_function не работает для полно-экранного грида.

Когда ALV объект создается в контейнере, для настройки функций используется класс: cl_salv_functions. Получить экземпляр этого класса можно используя метод - get_functions( ) главного объекта ALV. Для установки функций по умолчанию можно воспользоваться методом set_default( ) или set_all( ) – для установки всех функций ALV объекта. Чтобы добавить свою функцию существует метод add_function. Ниже пример того как это сделать:

  1. REPORT zalv_simple.
  2.  
  3. PARAMETERS p_dummy.
  4. gt_data TYPE spfli_tab, " Таблица с данными
  5. go_functions TYPE REF TO cl_salv_functions,
  6. go_alv TYPE REF TO cl_salv_table.
  7.  
  8.  
  9. SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_data.
  10. " Фабричный метод возвращяет экзмепляр ALV объекта
  11. TRY.
  12. cl_salv_table=>factory(
  13. EXPORTING
  14. r_container = cl_gui_container=>screen0
  15. IMPORTING
  16. r_salv_table = go_alv
  17. CHANGING
  18. t_table = gt_data ).
  19. CATCH cx_salv_msg .
  20. MESSAGE 'Ошибка при создании ALV' TYPE 'E'.
  21.  
  22. " Установка функций (кнопок)
  23. go_functions = go_alv->get_functions( ).
  24.  
  25. IF go_functions IS BOUND.
  26. go_functions->set_all( abap_true ).
  27. go_functions->add_function(
  28. EXPORTING
  29. NAME = 'ADDFUNC'
  30. icon = '@01@'
  31. text = 'ДопКнопка'
  32. tooltip = 'Всплывающая подсказка'
  33. POSITION = if_salv_c_function_position=>right_of_salv_functions ).
  34.  
  35. " показать alv
  36. go_alv->display( ).

Комментарии