Текущее время: Сб, авг 02 2025, 12:40

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 10:55 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Silence1 написала:
У нас ERP, не поверите!
Все равно пришлось call method grid_ref->get_variant )))))))

Ну да, правильно, у них выходной параметр описан как EXPORTING, а не как RETURNING. Я не в системе, поэтому не мог проверить.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 10:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Сергей Королев написал:
М-да, приведение-то может и не требуется. Поскольку GET_VARIANT и GET_FRONTEND_FIELDCATALOG это методы, то нужно пустые скобки добавить:
Code:
t_fieldcat  = grid_ref->GET_FRONTEND_FIELDCATALOG( ).

С другой стороны, исходно вам требовалось понять, из какого грида пришло событие. Можно ведь sender сравнить с глобальной переменной, вы ведь скорее всего определили оба грида как глобальные переменные?


Со скобками тоже не прокатило :)
только call method grid_ref->get_variant

А про сравнение sender с глоб.переменной - это как их сравнивать? у меня
g_grid TYPE REF TO cl_gui_alv_grid,
p_grid TYPE REF TO cl_gui_alv_grid,

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 10:57 
Специалист
Специалист

Зарегистрирован:
Чт, мар 22 2007, 14:40
Сообщения: 142
Пол: Мужской
Silence1 написала:
Сергей Королев написал:
М-да, приведение-то может и не требуется. Поскольку GET_VARIANT и GET_FRONTEND_FIELDCATALOG это методы, то нужно пустые скобки добавить:
Code:
t_fieldcat  = grid_ref->GET_FRONTEND_FIELDCATALOG( ).

С другой стороны, исходно вам требовалось понять, из какого грида пришло событие. Можно ведь sender сравнить с глобальной переменной, вы ведь скорее всего определили оба грида как глобальные переменные?


Со скобками тоже не прокатило :)
только call method grid_ref->get_variant

А про сравнение sender с глоб.переменной - это как их сравнивать? у меня
g_grid TYPE REF TO cl_gui_alv_grid,
p_grid TYPE REF TO cl_gui_alv_grid,


так и сравнивайте ;) ведь это же указатели на одну и ту же область памяти ;)

IF sender EQ g_grid.

ENFIG.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 11:02 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Оказалось все просто:
if sender = g_grid.

ащще! :D

Pokusannoe_Zubilo и Сергей, спасибо вам огромное! С вашей помощью разобралась)))))

_________________
Silence v.2.0


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли в методе класса определить имя объекта?
СообщениеДобавлено: Вт, фев 17 2009, 11:08 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Silence1 написала:
Сергей, спасибо, sender "приехал", но по нему не видно, для которого объекта произошло событие :(

У меня на своем экране два alv-грида, обрабатываться должны практически одинаково, вот и хотела обойтись одним обработчиком событий. А в user-command уже разрулить, в зависимости от объекта.
Неужели придется второй обработчик "копи-пастить"?

В классе обраработчике создайте переменную, которая будет определять стратегию обработки события. Для каждого грида создайте отдельную инстанцию класса обработчика событий и сответственно привязав обработку события.
Примерно так
Code:
CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    DATA: GRID_TYPE TYPE I.

    METHODS:
    constructor
          IMPORTING I_GRID_TYPE TYPE I,

    handle_toolbar
        FOR EVENT toolbar OF cl_gui_alv_grid
          IMPORTING
            e_object
            e_interactive,

    handle_user_command
        FOR EVENT user_command OF cl_gui_alv_grid
            IMPORTING e_ucomm sender.
ENDCLASS.     

....
DATA: h1 type ref to lcl_event_receiver, h2 type ref to lcl_event_receiver.

create object : h1 exporting 1, h2 exporting 2.

set handler: h1->handle_user_command for grid1, h2->handle_user_command for grid2.

_________________
"После" - не значит "вследствие"


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

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


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

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


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

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