Abap 以用户友好的方式更改表行的顺序

Abap 以用户友好的方式更改表行的顺序,abap,alv,Abap,Alv,在开始开发之前,我正在寻找这样做的标准方法:我需要实现在标准dynproalv网格中对表行进行排序的用户友好方法。我认为它应该看起来像一个定义了过滤列的表单,就像它在标准功能模块LVC_filter中实现的一样。不,这方面没有标准功能。但是,您可以通过在运行时插入/删除itab行,以编程方式通过拖放来手动进行表排序。这可以使用标准ALV事件实现:ondrag、ondrop和ondropcomplete。 请尝试以下代码示例以实现方法: method handle_grid_ondrag. da

在开始开发之前,我正在寻找这样做的标准方法:我需要实现在标准dynproalv网格中对表行进行排序的用户友好方法。我认为它应该看起来像一个定义了过滤列的表单,就像它在标准功能模块LVC_filter中实现的一样。

不,这方面没有标准功能。但是,您可以通过在运行时插入/删除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.     
_

_


如果您有困难,请参阅示例程序BCALV\u TEST\u DRAG\u DROP\u 02。

我必须承认我甚至不理解这个问题。解析器失败,嘿,维格特。我甚至没有读到任何以问号结尾的东西。是否有标准的sap函数或库可以通过拖放更改表行的顺序?或者需要比上下箭头更好的东西。内部表中的表行只能通过代码排序,至少在忽略已排序表的情况下是如此。但像ALV网格这样的UI控件允许按代码和用户设置进行排序。在某些情况下,正确的顺序与简单的排序表不匹配。只有用户知道排列行。
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.