Текущее время: Вс, июл 27 2025, 21:50

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: GET_SELECTED_ROWS по второму разу
СообщениеДобавлено: Пт, янв 15 2010, 23:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 23 2007, 14:56
Сообщения: 203
Есть ФМ, в нем INCLUDE:
Code:
*---------------------------------------------------------------------*
*    view related FORM routines
*   generation date: 04.01.2010 at 11:52:56 by user #####
*   view maintenance generator version: #001407#
*---------------------------------------------------------------------*

* base table related FORM-routines.............
INCLUDE LSVIMFTX .

FORM ALV_DOUBLE_CLICK.

  CLEAR: IT_ALV_ROW, IT_ALV_ROW[],
         IT_ALV_ROID, IT_ALV_ROID[].
  CLEAR: l_index.


CALL METHOD cl_gui_cfw=>flush.

  CALL METHOD MAIN_GRID->GET_SELECTED_ROWS
      IMPORTING
        ET_INDEX_ROWS = IT_ALV_ROW
        ET_ROW_NO     = IT_ALV_ROID.


  LOOP AT IT_ALV_ROW INTO wa_alv_row.
    l_index = wa_alv_row-index.
  ENDLOOP.

  READ TABLE IT_CURRS INDEX l_index.

  IF sy-subrc = 0.
    CONCATENATE FORMULA IT_CURRS-tabname '-' IT_CURRS-fieldname INTO FORMULA SEPARATED BY SPACE.
  ENDIF.

LEAVE SCREEN.
CALL SCREEN 900 STARTING AT 10 10 ENDING AT 70 35.

ENDFORM.


MAIN_GRID->GET_SELECTED_ROWS первый раз отрабатывает нормально, возвращает строку, по которой кликнули. Второй раз возвращает пустые таблички, sy-subrc = 0. Хочу чтобы и второй раз возвращался номер строки. Что делаю не так?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GET_SELECTED_ROWS по второму разу
СообщениеДобавлено: Сб, янв 16 2010, 23:28 
Начинающий
Начинающий

Зарегистрирован:
Сб, янв 16 2010, 23:06
Сообщения: 2
я сталкилась с подобной ситуацией при выводе alv списка на экран без определения управляющего элемента, при следующем создании грида:
create object grid1
exporting
i_parent = cl_gui_container=>default_screen.

Исправляется так: определением на экране вывода управляющего элемента и заменой предыдущего создания грида таким кодом:
g_container type scrfname value 'PARENT_CONTAINER',
create object g_custom_container
exporting
container_name = g_container.
create object grid1
exporting
i_parent = g_custom_container.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: GET_SELECTED_ROWS по второму разу
СообщениеДобавлено: Вт, янв 19 2010, 07:58 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 23 2007, 14:56
Сообщения: 203
Я все так и делал:
Code:
* Создание контейнера для ALV
  CREATE OBJECT GRID_CONTAINER
    EXPORTING
      CONTAINER_NAME = 'GRID_CONTAINER'.

* Создание ALV в контейнере
  CREATE OBJECT MAIN_GRID
    EXPORTING
      I_PARENT = GRID_CONTAINER.


Вышел из ситуации, вытаскивая индекс из E_ROW отсюда:
Code:
 
CLASS LCL_APPLICATION DEFINITION. "Объявление методов обработчика событий
    PUBLIC SECTION.
      METHODS:
        HANDLE_ALV_DOUBLE_CLICK "Двойной щелчок по строке ALV
          FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
          IMPORTING E_ROW E_COLUMN ES_ROW_NO.
  ENDCLASS.


Но почему метод по второму разу не отработал, все-равно интересно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GET_SELECTED_ROWS по второму разу
СообщениеДобавлено: Чт, янв 21 2010, 12:56 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
причину ищите в отладке,
для чего вызывается cl_gui_cfw=>flush?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: GET_SELECTED_ROWS по второму разу
СообщениеДобавлено: Чт, янв 21 2010, 14:17 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
nymbos написал(а):
MAIN_GRID->GET_SELECTED_ROWS первый раз отрабатывает нормально, возвращает строку, по которой кликнули. Второй раз возвращает пустые таблички, sy-subrc = 0. Хочу чтобы и второй раз возвращался номер строки. Что делаю не так?

get_selected_rows возвращает выделенную строку, а не "строку, по которой кликнули" :!:
В этом контексте действительно лучше перехватывать событие DOUBLE_CLICK, что Вы и сделали :)

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: GET_SELECTED_ROWS по второму разу
СообщениеДобавлено: Чт, янв 21 2010, 16:17 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
на счет параметров IMPORTING e_row e_column es_row_no в методе-обработчике даблклика совершенно верно, и надо использовать их по возможности...
однако, если уж возникла необходимость считать строку, на которой в данный момент установлен курсор, то можно, например, сделать так:
Code:
  DATA:
    ls_cell    TYPE lvc_s_cell,
    lt_cell    TYPE lvc_t_cell.

  CALL METHOD gi_0100_grid->get_selected_cells
    IMPORTING
      et_cell = lt_cell.

  READ TABLE lt_cell INTO ls_cell INDEX 1.
  CHECK NOT ls_cell-row_id-index IS INITIAL.

* актуальная строка в гриде
  DATA ls_outtab TYPE stype_outtab.
  READ TABLE gt_outtab INTO ls_outtab INDEX ls_cell-row_id-index.
  CHECK sy-subrc EQ 0.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB