Простой пример использования cl_salv_table.
" Контейнер для ALV, чтобы сработало добавление кнопки
" В противном случае можно обойтись без контейнера
DATA(lo_container) = NEW cl_gui_custom_container(
container_name = 'CONTAINER_9001' ).
TRY.
cl_salv_table=>factory(
EXPORTING
r_container = lo_container
IMPORTING
r_salv_table = DATA(lo_salv)
CHANGING
t_table = mt_data ).
CATCH cx_salv_msg.
RETURN.
ENDTRY.
DATA(lo_settings) = lo_salv->get_display_settings( ).
" Установка заголовка
lo_settings->set_list_header( 'Data' ).
lo_settings->set_list_header_size( cl_salv_display_settings=>c_header_size_medium ).
DATA(lo_functions) = lo_salv->get_functions( ).
" Добавить стандартные кнопки
lo_functions->set_all( 'X' ).
TRY .
" Добавление кнопки
" Чтобы сработало, надо создавать ALV в контейнере
lo_functions->add_function(
EXPORTING
name = 'ZBUT01'
* icon =
text = |{ 'Button 1' }|
tooltip = |{ 'Button 1' }|
position = if_salv_c_function_position=>right_of_salv_functions ).
CATCH cx_salv_existing cx_salv_wrong_call.
" ToDo
ENDTRY.
TRY .
" Сделать кнопку неактивной
lo_functions->enable_function(
EXPORTING
name = 'ZBUT01'
boolean = abap_false ).
CATCH cx_salv_wrong_call cx_salv_not_found.
" ToDo
ENDTRY.
DATA(lo_columns) = lo_salv->get_columns( ).
TRY .
" Задать свойства столбцу
DATA(lo_column) = lo_columns->get_column( columnname = 'MANDT' ).
lo_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found.
" ToDo
ENDTRY.
DATA(lo_events) = lo_salv->get_event( ).
" Добавить обработчики событий
SET HANDLER lcl_report=>added_function FOR lo_events.
SET HANDLER lcl_report=>double_click FOR lo_events.
lo_salv->display( ).
Комментариев нет:
Отправить комментарий