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

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


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

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


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

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