Текущее время: Пт, апр 26 2024, 19:18

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


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

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


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

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