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

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Подскажите пожалуйста:
1) Есть класс lcl_event_receiver,
метод
METHOD handle_user_command.
PERFORM handle_user_command USING e_ucomm.
ENDMETHOD.

2) Создано два объекта этого класса:
event_receiver1
event_receiver2

3) Как в FORM handle_user_command узнать, для которого объекта произошло событие? Какой-нибудь this.... :roll:

_________________
Silence v.2.0


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

Зарегистрирован:
Вт, янв 25 2005, 19:26
Сообщения: 67
Пол: Мужской
me?

_________________
Come to Cookies! We Have Dark Sides!


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Silence1 написала:
3) Как в FORM handle_user_command узнать, для которого объекта произошло событие? Какой-нибудь this.... :roll:

У метода-обработчика событий есть параметр sender, но чтобы его использовать, нужно в определении метода указать этот параметр как входной:
Code:
handle_user_command FOR EVENT .... IMPORTING sender.

ну а в подпрограмму тоже можно добавить лишний параметр и передавать его из метода, хотя не совсем понятно зачем здесь нужна подпрограмма.

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


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

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Сергей, спасибо, sender "приехал", но по нему не видно, для которого объекта произошло событие :(

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

_________________
Silence v.2.0


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

Зарегистрирован:
Чт, мар 22 2007, 14:40
Сообщения: 142
Пол: Мужской
Silence1 написала:
Сергей, спасибо, sender "приехал", но по нему не видно, для которого объекта произошло событие :(

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


осмелюсь предложить как вариант, различать объекты по имени структуры для ALV grid а,
или они у вас одинаковые для обоих объектов?

(данные структуры можно получить например из sender->GET_FRONTEND_FIELDCATALOG)

либо по Variant-у, в нем можно задать перед выводом каждого GRID уникальный ключ (HANDLE). а потом взять его sender->GET_VARIANT


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

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Pokusannoe_Zubilo написал:
осмелюсь предложить как вариант, различать объекты по имени структуры для ALV grid а,
или они у вас одинаковые для обоих объектов?
(данные структуры можно получить например из sender->GET_FRONTEND_FIELDCATALOG)
либо по Variant-у, в нем можно задать перед выводом каждого GRID уникальный ключ (HANDLE). а потом взять его sender->GET_VARIANT


А можно чуть подробнее? Я пока с классами на Вы..
вот у меня класс:
Code:
CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    METHODS:
    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.     

CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD handle_toolbar.
    PERFORM toolbar USING e_object e_interactive.
  ENDMETHOD.                   

  METHOD handle_user_command.
    PERFORM handle_user_command USING e_ucomm sender.
  ENDMETHOD.                 
ENDCLASS.         


Как правильно "можно задать перед выводом каждого GRID уникальный ключ (HANDLE)"?

На sender->GET_FRONTEND_FIELDCATALOG ругается :(
На sender->GET_VARIANT тоже

_________________
Silence v.2.0


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

Зарегистрирован:
Чт, мар 22 2007, 14:40
Сообщения: 142
Пол: Мужской
Silence1 написала:


Как правильно "можно задать перед выводом каждого GRID уникальный ключ (HANDLE)"?

На sender->GET_FRONTEND_FIELDCATALOG ругается :(
На sender->GET_VARIANT тоже


задать параметры варианта можно при первом вызове GRID а.

в CL_GUI_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY (параметр IS_VARIANT).

а как у вас параметр sender объявлен в вашей FORM ? (если я не ошибаюсь он долже быть TYPE REF TO CL_GUI_ALV_GRID)

и на что ругается ?


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

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Pokusannoe_Zubilo написал:
задать параметры варианта можно при первом вызове GRID а.
в CL_GUI_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY (параметр IS_VARIANT).
а как у вас параметр sender объявлен в вашей FORM ? (если я не ошибаюсь он долже быть TYPE REF TO CL_GUI_ALV_GRID)
и на что ругается ?


Я пробовала в IMPLEMENTATION
Code:
METHOD handle_user_command.
    gt_fieldcat  = sender->GET_FRONTEND_FIELDCATALOG.
    p_var = sender->GET_VARIANT.
    PERFORM handle_user_command USING e_ucomm sender.
  ENDMETHOD.     


Field "GET_VARIANT" is unknown.
Field "GET_FRONTEND_FIELDCATALOG" is unknown.

В FORM handle_user_command тоже самое.
( sender TYPE REF TO CL_GUI_ALV_GRID )

_________________
Silence v.2.0


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

Зарегистрирован:
Чт, мар 22 2007, 14:40
Сообщения: 142
Пол: Мужской
Silence1 написала:
Pokusannoe_Zubilo написал:
задать параметры варианта можно при первом вызове GRID а.
в CL_GUI_ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY (параметр IS_VARIANT).
а как у вас параметр sender объявлен в вашей FORM ? (если я не ошибаюсь он долже быть TYPE REF TO CL_GUI_ALV_GRID)
и на что ругается ?


Я пробовала в IMPLEMENTATION
Code:
METHOD handle_user_command.
    gt_fieldcat  = sender->GET_FRONTEND_FIELDCATALOG.
    p_var = sender->GET_VARIANT.
    PERFORM handle_user_command USING e_ucomm sender.
  ENDMETHOD.     


Field "GET_VARIANT" is unknown.
Field "GET_FRONTEND_FIELDCATALOG" is unknown.

В FORM handle_user_command тоже самое.
( sender TYPE REF TO CL_GUI_ALV_GRID )



попробуйте явно укажите методе

handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm
sender TYPE REF TO cl_gui_alv_grid.


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Silence1 написала:
Я пробовала в IMPLEMENTATION
Code:
METHOD handle_user_command.
    gt_fieldcat  = sender->GET_FRONTEND_FIELDCATALOG.
    p_var = sender->GET_VARIANT.
    PERFORM handle_user_command USING e_ucomm sender.
  ENDMETHOD.     


Field "GET_VARIANT" is unknown.
Field "GET_FRONTEND_FIELDCATALOG" is unknown.
( sender TYPE REF TO CL_GUI_ALV_GRID )

Можно сделать так:
Code:
METHOD handle_user_command.
  DATA: grid_ref TYPE REF TO CL_GUI_ALV_GRID.
  grid_ref ?= sender.
  gt_fieldcat  = grid_ref->GET_FRONTEND_FIELDCATALOG.
  p_var = grid_ref->GET_VARIANT.
  PERFORM handle_user_command USING e_ucomm grid_ref.
ENDMETHOD.     

Операция ?= позволяет привести тип (либо =? - мог перепутать).

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


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

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Сергей Королев написал:
Можно сделать так:
Code:
METHOD handle_user_command.
  DATA: grid_ref TYPE REF TO CL_GUI_ALV_GRID.
  grid_ref ?= sender.
  gt_fieldcat  = grid_ref->GET_FRONTEND_FIELDCATALOG.
  p_var = grid_ref->GET_VARIANT.
  PERFORM handle_user_command USING e_ucomm grid_ref.
ENDMETHOD.     

Операция ?= позволяет привести тип (либо =? - мог перепутать).


Попробовала - тот же результат Field "GET_VARIANT" is unknown.

_________________
Silence v.2.0


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

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Блиннн!Я ИДИЁТ, УБЕЙТЕ МИНЯ КТО-НИБУДЬ!!!
Code:
DATA: grid_ref TYPE REF TO CL_GUI_ALV_GRID.
    grid_ref ?= sender.
    call method grid_ref->get_variant
      importing
        es_variant = variant.

:lol:

Спасибо всем :D

_________________
Silence v.2.0


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

Зарегистрирован:
Чт, мар 22 2007, 14:40
Сообщения: 142
Пол: Мужской
Silence1 написала:
Сергей Королев написал:
Можно сделать так:
Code:
METHOD handle_user_command.
  DATA: grid_ref TYPE REF TO CL_GUI_ALV_GRID.
  grid_ref ?= sender.
  gt_fieldcat  = grid_ref->GET_FRONTEND_FIELDCATALOG.
  p_var = grid_ref->GET_VARIANT.
  PERFORM handle_user_command USING e_ucomm grid_ref.
ENDMETHOD.     

Операция ?= позволяет привести тип (либо =? - мог перепутать).


Попробовала - тот же результат Field "GET_VARIANT" is unknown.


а у вас случаем не 4.6 ??

если да то надо полностью писать CALL METHOD grid_ref->GET_VARIANT и все такое ;)


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Silence1 написала:
Попробовала - тот же результат Field "GET_VARIANT" is unknown.

М-да, приведение-то может и не требуется. Поскольку GET_VARIANT и GET_FRONTEND_FIELDCATALOG это методы, то нужно пустые скобки добавить:
Code:
t_fieldcat  = grid_ref->GET_FRONTEND_FIELDCATALOG( ).

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

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


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

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
У нас ERP, не поверите!
Все равно пришлось call method grid_ref->get_variant )))))))

_________________
Silence v.2.0


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

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


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

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


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

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