获取 ALV 网格中的选择值



我想获取ALV中选择单元格的值,我尝试了get_selected_cells方法,但值字段是INITIAL。

这种方法有什么问题?

FORM delete_livraison .
  DATA: lt_cells  TYPE lvc_t_cell,
        ls_cells  TYPE lvc_s_cell,
        lv_probl  TYPE xfeld.
  gr_alvpl->get_selected_cells(  IMPORTING et_cell = lt_cells ).
  LOOP AT lt_cells INTO ls_cells.
    IF ls_cells-col_id+0(3) NE 'DAY'.
*      lv_probl = 'X'.
    ENDIF.
    IF ls_cells-value IS INITIAL.
      lv_probl  = 'X'.
    ENDIF.
  ENDLOOP.
  IF lv_probl EQ 'X'.
    MESSAGE s029 DISPLAY LIKE 'E'.
  ENDIF.
ENDFORM.

谢谢。

get_select_cells

任务的错误方法,它只返回在行中选择索引用户,而不是选定的值。

要获取所选值,请使用get_selected_cells( )和/或get_selected_rows( )以及数据内部表:

CALL METHOD mo_grid->get_selected_cells
  IMPORTING
    et_cell = lt_cells.
CALL METHOD mo_grid->get_selected_rows
  IMPORTING
    et_row_no = lt_rows.
IF lt_rows IS INITIAL.
  IF lt_cells[] IS INITIAL.
    EXIT.
  ENDIF.
  READ TABLE lt_cells INTO ls_cell INDEX 1.
  IF sy-subrc = 0.
    ls_row-row_id = ls_cell-row_id-index.
    APPEND ls_row TO lt_rows.
  ENDIF.
ENDIF.
    
 LOOP AT lt_rows INTO ls_row.
  READ TABLE <lt_lines> ASSIGNING <ls_line> INDEX ls_row-row_id.
  IF sy-subrc = 0.
    APPEND <ls_line> TO et_lines.
  ENDIF.
ENDLOOP.

尝试在 GET_SELECTED_CELLS 之后但在评估结果之前调用CL_GUI_CFW=>FLUSH( ).。对于技术背景,我推荐此文档 - 控制编程的必读文档。

另请注意,GET_SELECTED_CELLS将返回所选单元格的位置,而不是内容

最新更新