Текущее время: Чт, июл 31 2025, 17:52

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


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

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


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

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