Меню

Глава 2. Два ALV GRID на одном экране. Часть 4

|

Цель данной главы - создать отчет с двумя ALV Grid.

§6. Класс представления заголовка и позиций

Необходимо создать следующие объекты:

Имя объекта

Тип

Назначение

ZCL_MVC_002_HEAD_VIEW

Класс

Класс представления данных.

ZCL_MVC_002_POSITIONS_VIEW

Класс

Класс представления данных.

В транзакции SE24 создаем класс ZCL_MVC_002_HEAD_VIEW.

Рис. 1

Рис. 2

Рис. 3

Рис. 4

Рис. 5

Отличие от предыдущего примера в том, что CONTAINER будет создаваться в классе котроллер, а не в  классе представления данных и отправляться как параметр IO_CONTAINER.

Рис. 6

Рис. 7

Рис. 8

METHOD zif_alv_grid_template~fill_fieldcatalog.
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'ZST_MVC_002_HEAD_ALV'
    CHANGING
      ct_fieldcat            = et_fieldcatalog
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
ENDMETHOD.

METHOD zif_alv_grid_template~fill_layout.
  es_layout-cwidth_opt = abap_true.
  es_layout-sel_mode = 'A'.
ENDMETHOD.

METHOD constructor.
  CALL METHOD me->set_context
    EXPORTING
      it_outtab = it_outtab.

  CHECK io_container IS BOUND.

  CREATE OBJECT mo_alv_grid
    EXPORTING
      i_parent = io_container.

  DATA: lt_fieldcatalog TYPE lvc_t_fcat.
  CALL METHOD me->fill_fieldcatalog
    IMPORTING
      et_fieldcatalog = lt_fieldcatalog.

  DATA: ls_variant TYPE disvariant.
  ls_variant-report = i_repid.

  DATA: ls_layout TYPE lvc_s_layo.
  CALL METHOD me->zif_alv_grid_template~fill_layout
    IMPORTING
      es_layout = ls_layout.

  mo_alv_grid->set_table_for_first_display(
    EXPORTING
      is_variant = ls_variant
      i_save = 'A'
      is_layout = ls_layout
      i_bypassing_buffer = abap_true
    CHANGING
      it_outtab = mt_outtab
      it_fieldcatalog = lt_fieldcatalog ).

  CALL METHOD register_events.
  CALL METHOD mo_alv_grid->refresh_table_display.
ENDMETHOD.

METHOD set_context.
  mt_outtab = it_outtab.
ENDMETHOD.

METHOD free.
  IF mo_alv_grid IS BOUND.
    CALL METHOD mo_alv_grid->free.
    FREE mo_alv_grid.
  ENDIF.
ENDMETHOD.

В транзакции SE24 создаем класс ZCL_MVC_002_POSITIONS_VIEW.

Рис. 9

Рис. 10

Рис. 11

Рис. 12

Рис. 13

Рис. 14

Рис. 15

Рис. 16

METHOD zif_alv_grid_template~fill_fieldcatalog.
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name       = 'ZST_MVC_002_POS_ALV'
    CHANGING

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти

Обсуждения Количество комментариев1

Комментарий от  

Анатолий Ермаков

  |  16 января 2015, 16:03

Для корректной работы с вариантами ALV необходимо для каждого ALV в управляющей структуре варианта (ls_variant) заполнить поле HANDLE уникальными значениями, например:
- для 1-го грида ls_variant-handle = '1'.
- для 2-го грида ls_variant-handle = '2'.
 
Без этого выбор варианта в любом из гридов будет применяться и к другому.