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

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


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

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


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

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