Текущее время: Пт, авг 01 2025, 22:36

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Помогите забороть косяк...
СообщениеДобавлено: Чт, апр 26 2007, 11:42 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 10 2005, 14:14
Сообщения: 216
Откуда: Україна -> Москва
Вывожу АЛВ методом
CALL METHOD grid2->set_table_for_first_display...

потом
CREATE OBJECT event_receiver_1.
SET HANDLER event_receiver_1->handle_hotspot_click FOR grid2

предварительно описав
CLASS lcl_event_receiver_1 DEFINITION.
PUBLIC SECTION.
METHODS:
* Обробка hotspot
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id.
ENDCLASS.

CLASS lcl_event_receiver_1 IMPLEMENTATION.
METHOD handle_hotspot_click.
CHECK e_row_id-rowtype IS INITIAL. "не тотал строка
CHECK e_column_id = 'MBLNR'.

DATA: ls_mess LIKE LINE OF it_mess.
READ TABLE it_mess INDEX e_row_id-index INTO ls_mess.

CHECK NOT ls_mess-mblnr IS INITIAL.

SET PARAMETER ID:'MBN' FIELD ls_mess-mblnr,
'MJA' FIELD ls_mess-mjahr.
CALL TRANSACTION 'MB03' AND SKIP FIRST SCREEN.

ENDMETHOD. "handle_hotspot_click_1
ENDCLASS.

"Проваливаюсь" с алв в просмотр документа по хотспоту-все хорошо. Но выход с просмотра документа срабатывает только на третьем нажатии на кнопках выхода. Почемуто у меня три раза подряд отрабатывает METHOD handle_hotspot_click.
Может кто пересекался с таким косяком? Не могу забороть никак...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите забороть косяк...
СообщениеДобавлено: Чт, апр 26 2007, 13:05 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Kahaber написал(а):
Почемуто у меня три раза подряд отрабатывает METHOD handle_hotspot_click.
Может кто пересекался с таким косяком? Не могу забороть никак...


А как Вы поняли, что он отрабатывает 3 раза? Ставили точку прерывания?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите забороть косяк...
СообщениеДобавлено: Чт, апр 26 2007, 13:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 10 2005, 14:14
Сообщения: 216
Откуда: Україна -> Москва
Lars написал:
Kahaber написал(а):
Почемуто у меня три раза подряд отрабатывает METHOD handle_hotspot_click.
Может кто пересекался с таким косяком? Не могу забороть никак...


А как Вы поняли, что он отрабатывает 3 раза? Ставили точку прерывания?


Да.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 13:34 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Не совсем в тему .. а пробовали, скажем, двойной клик?
lcl_event_receiver_1 - ловит события одного грида (если их несколько)?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 14:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 10 2005, 14:14
Сообщения: 216
Откуда: Україна -> Москва
Lars написал:
Не совсем в тему .. а пробовали, скажем, двойной клик?
lcl_event_receiver_1 - ловит события одного грида (если их несколько)?


Двойной клик пробовал - та же фигня. Грида два, но для них обьявлены разные классы lcl_event_receiver и lcl_event_receiver_1. В классе lcl_event_receiver метода handle_hotspot_click нет. В отладке смарел - все какбы правильно ходит, но, мля, три раза вертится в методе handle_hotspot_click класса lcl_event_receiver_1 :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 14:34 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Kahaber написал(а):
Двойной клик пробовал - та же фигня.


Может стоить посмотреть что творится в PBO, в плане описания гридов.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 14:46 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 10 2005, 14:14
Сообщения: 216
Откуда: Україна -> Москва
Lars написал:
Kahaber написал(а):
Двойной клик пробовал - та же фигня.


Может стоить посмотреть что творится в PBO, в плане описания гридов.


Вот код-

MODULE status_3000 OUTPUT.
SET PF-STATUS 'ZMM_MOVE_SCR3000'.
SET TITLEBAR '02'.

DATA: event_receiver TYPE REF TO lcl_event_receiver,
event_receiver_1 TYPE REF TO lcl_event_receiver_1,
is_layout TYPE lvc_s_layo,
gs_variant TYPE disvariant.

is_layout-zebra = x.
is_layout-totals_bef = x.

PERFORM fcat_3000.

IF z_grid_container IS INITIAL.
CREATE OBJECT z_grid_container
EXPORTING container_name = z_container.
CREATE OBJECT grid1
EXPORTING i_parent = z_grid_container.

CREATE OBJECT z_grid_container_1
EXPORTING container_name = z_container_1.
CREATE OBJECT grid2
EXPORTING i_parent = z_grid_container_1.
ENDIF.

gs_variant-report = sy-repid.
* вариант нужен для подсчета тотал-суммы
gs_variant-variant = '/HEND'.

IF flag_err_hand IS INITIAL.

REFRESH: it_hand. CLEAR lin.
DESCRIBE TABLE it_table LINES lin.

LOOP AT it_table.
CLEAR it_hand.
it_hand-ostat = it_table-ostres.
it_hand-charg = it_table-charg.

IF lin = 1.
it_hand-inind = zostres.
ENDIF.
APPEND it_hand.
ENDLOOP.

ELSE.
CLEAR flag_err_hand.
ENDIF.

* выкидуем лишние кнопы из тулбара
PERFORM exclude_tb_functions CHANGING lt_exclude.

CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_double_click FOR grid1.
SET HANDLER event_receiver->handle_data_changed FOR grid1.

CALL METHOD grid1->set_table_for_first_display
EXPORTING
it_toolbar_excluding = lt_exclude
i_bypassing_buffer = x
is_variant = gs_variant
is_layout = is_layout
i_save = x
CHANGING
it_fieldcatalog = fc_doc
it_outtab = it_hand[].

* изменение данных по энтеру
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.

* изменение данных по выходу
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.

* контейнер для вывода сообщений проводки
PERFORM fcat_3000_1.
CREATE OBJECT event_receiver_1.
SET HANDLER event_receiver_1->handle_hotspot_click FOR grid2.

CALL METHOD grid2->set_table_for_first_display
EXPORTING
i_bypassing_buffer = x
is_layout = is_layout
i_save = x
CHANGING
it_fieldcatalog = fc_doc_1
it_outtab = it_mess[].

ENDMODULE. " STATUS_3000 OUTPUT


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 14:51 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
А z_grid_container где создается ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 15:01 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Попробуйте все события отключить, кроме hot_spot.

А здесь что: PERFORM fcat_3000_1 ?

Lars написал:
А z_grid_container где создается ?

В последнем сообщении Kahaber'а всё есть.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 15:16 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
а гриды где-то рефрешатся ?.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 15:19 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 10 2005, 14:14
Сообщения: 216
Откуда: Україна -> Москва
sibrin написал:
Попробуйте все события отключить, кроме hot_spot.
А здесь что: PERFORM fcat_3000_1 ?


PERFORM fcat_3000_1 - подпрограмма создания филдкаталога второго грида.
В классе lcl_event_receiver_1 только один метод - именно хотспот.
Закоментил на всякий обьявления со ссылкой на класс lcl_event_receiver для первого грида - ниче не помогло.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 15:21 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Kahaber написал(а):
sibrin написал:
Попробуйте все события отключить, кроме hot_spot.
А здесь что: PERFORM fcat_3000_1 ?


PERFORM fcat_3000_1 - подпрограмма создания филдкаталога второго грида.
В классе lcl_event_receiver_1 только один метод - именно хотспот.
Закоментил на всякий обьявления со ссылкой на класс lcl_event_receiver для первого грида - ниче не помогло.


Я думаю, sibrin имел ввиду вот это, когда говорил про коменты:

* изменение данных по энтеру
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.

* изменение данных по выходу
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.


И где рефрешатся гриды ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 15:22 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 10 2005, 14:14
Сообщения: 216
Откуда: Україна -> Москва
Lars написал:
а гриды где-то рефрешатся ?.


Причем тут рефреш грида? Я из транзакции MB03 выхожу тока после трех нажатий на зелную стрелку!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 15:24 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, июн 10 2005, 14:14
Сообщения: 216
Откуда: Україна -> Москва
Lars написал:
Kahaber написал(а):
sibrin написал:
Я думаю, sibrin имел ввиду вот это, когда говорил про коменты:

* изменение данных по энтеру
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.

* изменение данных по выходу
CALL METHOD grid1->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.

И где рефрешатся гриды ?


Это события для первого грида. Я их уже коментил. Хотспот срабатывает во втором


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, апр 26 2007, 15:28 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Kahaber написал(а):
Lars написал:
а гриды где-то рефрешатся ?.


Причем тут рефреш грида? Я из транзакции MB03 выхожу тока после трех нажатий на зелную стрелку!

может и не при чем...


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

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


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

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


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

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