Текущее время: Сб, апр 20 2024, 02:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 11:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Поиском сразу не нашел, может знает кто навскидку, как получить имя класса из метода класса или объекта?

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 11:31 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, фев 15 2011, 15:02
Сообщения: 122
Code:
REPORT  zus_sdn_runtime.
TYPE-POOLS: abap.
DATA:
  gd_class          TYPE abap_abstypename,
  go_docking        TYPE REF TO cl_gui_docking_container.

START-OF-SELECTION.
  CREATE OBJECT go_docking.
  gd_class = cl_abap_classdescr=>get_class_name( go_docking ).
  WRITE: / 'Class', gd_class.

Оно?

_________________
Поздравляю тебя, Шарик, ты - балбес!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 13:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
8051core написал(а):
Code:
...
  gd_class = cl_abap_classdescr=>get_class_name( go_docking )...

Оно?

Ммм... Видимо оно. Просто тестил в 4.6D, а там нет этого метода. Но нашел cl_abap_classdescr=>DESCRIBE_BY_OBJECT_REF( me ).
Спасибо!
А имя класса из статич. метода класса можно через SY-REPID узнать. :)

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 14:37 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Parazit написал:
А имя класса из статич. метода класса можно через SY-REPID узнать. :)

Ах елки-палки :) Искал безуспешно пару лет назад, но лучше поздно чем никогда. Спасибо! :)

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 14:42 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
А я буду педантом, и замечу, что такой вопрос может возникнуть исключительно из-за ошибок проектирования :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 15:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Пономарев Артем написал:
А я буду педантом, и замечу, что такой вопрос может возникнуть исключительно из-за ошибок проектирования :)

А если класс участвует в каких-либо настройках и ему хочется узнать что там для него понастраивали?

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 15:37 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Исходя из принципа инкапсуляции, настройки для класса и читать следует в его внутренностях. Соответственно не вижу предпосылок для динамического определения имени.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 15:56 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Пономарев Артем написал:
Исходя из принципа инкапсуляции, настройки для класса и читать следует в его внутренностях. Соответственно не вижу предпосылок для динамического определения имени.

Не хочу в коде класса прописывать его имя константой. Это мои личные религиозные убеждения, попрошу их не оскорблять! :)

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 16:29 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Религия - это святое, у самого есть заморочки :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Пт, фев 15 2013, 17:37 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 347
Parazit написал:
А имя класса из статич. метода класса можно через SY-REPID узнать. :)
Я там понимаю, это для глобальных классов. А никто не знает, как в статик-методе узнать имя класса для локальных классов (без использования плясок с 'SYSTEM_CALLSTACK')?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Чт, июн 01 2017, 16:50 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 347
Parazit написал:
А имя класса из статич. метода класса можно через SY-REPID узнать. :)
ArmAnn написал:
Ах елки-палки :) Искал безуспешно пару лет назад, но лучше поздно чем никогда. Спасибо! :)
Кстати, что-то не получилось. Или же я неправильно понимаю, как это нужно делать.
Создаю глобальные классы: базовый ZCL_TEST_01 со статик-методом
Code:
METHOD test.
    WRITE: sy-repid.
ENDMETHOD.
и дочерний ZCL_TEST_02. При вызове
Code:
zcl_test_02=>test( ).
zcl_test_01=>test( ).
2 раза выводится
ZCL_TEST_01===================CP


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Чт, июн 01 2017, 17:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
LAT написал(а):
Parazit написал:
А имя класса из статич. метода класса можно через SY-REPID узнать. :)
ArmAnn написал:
Ах елки-палки :) Искал безуспешно пару лет назад, но лучше поздно чем никогда. Спасибо! :)
Кстати, что-то не получилось. Или же я неправильно понимаю, как это нужно делать.
Создаю глобальные классы: базовый ZCL_TEST_01 со статик-методом
Code:
METHOD test.
    WRITE: sy-repid.
ENDMETHOD.
и дочерний ZCL_TEST_02. При вызове
Code:
zcl_test_02=>test( ).
zcl_test_01=>test( ).
2 раза выводится
ZCL_TEST_01===================CP

Ну, так метод Test действительно принадлежит ZCL_TEST_01.
А если вот так:
Code:
zcl_test_02=>test( sy-repid ).
zcl_test_01=>test( sy-repid ).

причем параметр передавать по значению.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Чт, июн 01 2017, 17:10 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
LAT написал(а):
Кстати, что-то не получилось. Или же я неправильно понимаю, как это нужно делать.
Создаю глобальные классы: базовый ZCL_TEST_01 со статик-методом
Code:
METHOD test.
    WRITE: sy-repid.
ENDMETHOD.
и дочерний ZCL_TEST_02. При вызове
Code:
zcl_test_02=>test( ).
zcl_test_01=>test( ).
2 раза выводится
ZCL_TEST_01===================CP

В принципе логично - sy-repid показывает текущую программу, а так как метод test фактически выполняется из ZCL_TEST_01 - то этот класс и имеем в sy-repid.
sy-repid вообще про классы не знает, и до лампочки ему какое то там наследование..

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Чт, июн 01 2017, 17:12 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Parazit написал:
Code:
zcl_test_02=>test( sy-repid ).
zcl_test_01=>test( sy-repid ).

причем параметр передавать по значению.

будет передавать имя тестовой программы, я полагаю :)

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Имя класса получить из метода класса или объекта
СообщениеДобавлено: Чт, июн 01 2017, 17:14 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 347
Модифицировал дефинишн
Code:
class-methods TEST IMPORTING VALUE(i_repid) TYPE sy-repid.
и имлементешн
Code:
METHOD test. WRITE: i_repid. ENDMETHOD.
Теперь 2 раза выводится название программы, из которой происходит вызов.


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

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


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

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


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

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