Измените порядок строк таблицы удобным для пользователя способом

Перед началом разработки я ищу стандартный способ сделать что-то вроде этого: мне нужно реализовать удобный для пользователя способ упорядочивания строк таблицы в стандартной сетке Dynpro ALV. Думаю, это должно выглядеть как форма, в которой определены столбцы фильтров, как это реализовано, например, в стандартном функциональном модуле LVC_FILTER.


person IvanRyazanov    schedule 03.02.2015    source источник
comment
Признаюсь, я даже не понимаю вопроса. Сбой парсера.   -  person vwegert    schedule 03.02.2015
comment
Эй, vwegert. Я даже не читаю ничего, заканчивающегося знаком вопроса.   -  person icbytes    schedule 03.02.2015
comment
Есть ли стандартная функция или библиотека sap, которая изменяет порядок строк таблицы с помощью перетаскивания? Или требовалось что-то получше, чем стрелки вверх и вниз.   -  person IvanRyazanov    schedule 03.02.2015
comment
Строки таблицы, как и во внутренней таблице, можно сортировать только с помощью кода, по крайней мере, если мы игнорируем отсортированные таблицы. Но элементы управления пользовательского интерфейса, такие как сетка ALV, позволяют сортировать как по коду, так и по пользовательским настройкам.   -  person Dirk Trilsbeek    schedule 03.02.2015
comment
В некоторых случаях правильный порядок не соответствует простой таблице сортировки. Только пользователь знает как строки перестановки.   -  person IvanRyazanov    schedule 03.02.2015


Ответы (1)


Нет, стандартного функционала для этого нет. Однако вы можете сделать это (сортировка таблицы вручную путем перетаскивания) программно, вставив / удалив строки itab во время выполнения. Это может быть реализовано с использованием стандартных событий ALV: ondrag, ondrop и ondropcomplete. Попробуйте эти образцы кода для реализации методов:

method handle_grid_ondrag.

data: data_object type ref to drag_drop_object,
      help_row like line of gt_outtab.                  "#EC NEEDED

      read table gt_outtab_2 into help_row index es_row_no-row_id.
      create object data_object.
      move es_row_no-row_id to data_object->index.
      read table gt_outtab_2 into data_object->wa_test index
      es_row_no-row_id.
      e_dragdropobj->object = data_object.

endmethod.     

_

method handle_grid_ondrop.

data: data_object type ref to drag_drop_object,
      drop_index type i,
      help_row like line of gt_outtab.                  "#EC NEEDED

      delete gt_outtab_2 index data_object->index.
      insert data_object->wa_test into gt_outtab_2 index e_row-index

endmethod.

_

 method handle_grid_ondropcomplete.

  if data_cel = ' '.
    call method grid->refresh_table_display.
  endif.

endmethod.

Обратитесь к образцу программы BCALV_TEST_DRAG_DROP_02, если у вас возникнут трудности.

person Suncatcher    schedule 24.12.2015