Текущее время: Пн, июл 28 2025, 00:14

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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