Получить значение выбора в сетке ALV

Я хочу получить значение выбранных ячеек в ALV, я пробовал метод get_selected_cells, но поле значения ПЕРВОНАЧАЛЬНО.

Что не так в этом методе?

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.

Спасибо.


person shmoolki    schedule 14.01.2015    source источник


Ответы (2)


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.
person Suncatcher    schedule 18.12.2019

Попробуйте вызвать CL_GUI_CFW=>FLUSH( ). после GET_SELECTED_CELLS, но до оценки результатов. В качестве технического фона я бы рекомендовал этот документ - обязательна к прочтению для программирования управления.

Также имейте в виду, что GET_SELECTED_CELLS вернет положение выбранных ячеек, а не содержимое.

person vwegert    schedule 14.01.2015
comment
Но что такое поля значений - person shmoolki; 14.01.2015
comment
Я не понимаю твоего вопроса. - person vwegert; 14.01.2015
comment
В структуре lvc_s_cell у вас есть 3 поля, первая строка, 2-й col_id, 3-е ЗНАЧЕНИЕ, почему у меня нет значения в последнем поле? - person shmoolki; 15.01.2015