Текущее время: Ср, июл 23 2025, 20:22

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: ALV GRID при срабатывании возвращает курсор на первое поле
СообщениеДобавлено: Ср, июн 13 2012, 08:07 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 17 2009, 00:53
Сообщения: 166
Откуда: Екатеринбург
Пол: Мужской
День добрый!

Заморочка возникла... может кто-то уже разобрался.

вызываю функцию set_table_for_first_display в классе

Code:
CLASS calvevents DEFINITION.
  PUBLIC SECTION.
  METHODS:
    ON_DATA_CHANGED_FINISHED FOR EVENT DATA_CHANGED_FINISHED OF cl_gui_alv_grid
    IMPORTING E_MODIFIED
              ET_GOOD_CELLS.
ENDCLASS.

CLASS calvevents IMPLEMENTATION.

  METHOD ON_DATA_CHANGED_FINISHED.
    CHECK E_MODIFIED NE SPACE.
    PERFORM COVERSION_IT_TKOPER_OUT .

    CALL METHOD grid->set_table_for_first_display
    EXPORTING is_layout = layout
      is_variant = l_variant
      i_save = 'A'
      i_default = 'X'
    CHANGING  it_fieldcatalog = fcat[]
      it_outtab = IT_TKOPER_OUT
      it_sort = SORT.

  ENDMETHOD.
ENDCLASS.

Метод объявлен в создании объекта грид

Code:
  IF G_CUSTOM_CONTAINER IS INITIAL.

    CREATE OBJECT G_CUSTOM_CONTAINER
    EXPORTING CONTAINER_NAME = 'CONT_TK_OPER'.

    CREATE OBJECT GRID
    EXPORTING
      I_PARENT = G_CUSTOM_CONTAINER.

    CREATE OBJECT ALVEVENTS.
    SET HANDLER ALVEVENTS->ON_DATA_CHANGED_FINISHED FOR GRID.
  ENDIF.


т.е. отлавливается нажатие на ячейки, ну и после чего перерисовывается грид.
и при этой перерисовке курсор перемещается в первую ячейку.
а нужно чтобы оставался на месте.

Как это можно сделать?

_________________
Высшая степень уважения к клиенту - это разработать программу не так как он хочет, так как следует!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV GRID при срабатваении возвращет курсор на первое поле
СообщениеДобавлено: Ср, июн 13 2012, 08:16 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Сори, а зачем так делать? Вы не перерисовываете грид, а пересоздаете. Можно конечно мудрить дальше, то есть запоминать позицию курсора и потом выставлять ее заново. Но по хорошему нужно просто рефрешить с параметрами is_stable.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ALV GRID при срабатваении возвращет курсор на первое поле
СообщениеДобавлено: Ср, июн 13 2012, 08:48 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 17 2009, 00:53
Сообщения: 166
Откуда: Екатеринбург
Пол: Мужской
Спасибо.
нашел. Всё просто.
Выходные прошли на ура))

Code:
DATA: is_stable TYPE LVC_S_STBL.
    is_stable-row = 'X'.
    is_stable-col = 'X'.

CALL METHOD grid->refresh_table_display
  EXPORTING
    is_stable      = is_stable
*    i_soft_refresh =
  EXCEPTIONS
    finished       = 1
    others         = 2 .
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

_________________
Высшая степень уважения к клиенту - это разработать программу не так как он хочет, так как следует!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV GRID при срабатваении возвращет курсор на первое поле
СообщениеДобавлено: Пн, июн 25 2012, 13:16 
Специалист
Специалист

Зарегистрирован:
Чт, май 06 2010, 18:14
Сообщения: 152
По какой причине можут не срабатывать методы GET_SCROLL_INFO_VIA_ID. Позицию скролла определяет не правильно.Программа - обычная ALV

_________________
Я не волшебник, я только учусь.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV GRID при срабатваении возвращет курсор на первое поле
СообщениеДобавлено: Пн, июн 25 2012, 13:17 
Специалист
Специалист

Зарегистрирован:
Чт, май 06 2010, 18:14
Сообщения: 152
DATA: is_stable TYPE LVC_S_STBL.
is_stable-row = 'X'.
is_stable-col = 'X'.

CALL METHOD grid->refresh_table_display
EXPORTING
is_stable = is_stable
* i_soft_refresh =
EXCEPTIONS
finished = 1
others = 2 .
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Экран обновляется. Но позиционирование также не срабатывает

_________________
Я не волшебник, я только учусь.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ALV GRID при срабатывании возвращает курсор на первое поле
СообщениеДобавлено: Пн, июн 25 2012, 14:36 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, ноя 18 2008, 10:40
Сообщения: 342
Откуда: Пермь
Пол: Мужской
Возможно у вас где-то в другом месте refresh_table_display без is_stable срабатывает


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ALV GRID при срабатывании возвращает курсор на первое поле
СообщениеДобавлено: Пн, июн 25 2012, 14:47 
Специалист
Специалист

Зарегистрирован:
Чт, май 06 2010, 18:14
Сообщения: 152
Нет refresh_table_display только в одном месте используется. Никаких ошибок не выдает.

_________________
Я не волшебник, я только учусь.


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

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


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

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


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

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