我想获取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
将返回所选单元格的位置,而不是内容。