22 октября 2021

Пример использования cl_salv_table

Простой пример использования 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( ).

Комментариев нет:

Отправить комментарий