Поиск методов в классах/интерфейсах
Для того чтобы найти метод класса/интерфейса по его имени, достаточно зайти в таблицу SEOCOMPO, в качестве компонента указать имя метода:
В случае если вам нужен не программный поиск, лучше воспользоваться инфо-системой репозитария — тр. SE15
Просмотр нерешенных тем
Сообщения без ответов | Активные темы
Правила форума
ВНИМАНИЕ!
Вопросы по SAP Query и Quick View – сюда
Автор | Сообщение | ||
---|---|---|---|
Заголовок сообщения: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 12:54 |
|||
|
Добрый день, Спасибо
|
||
Вернуться к началу |
|
||
sy-uname |
Заголовок сообщения: Re: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 13:02 |
||
|
VLAVLA написал: Добрый день, Спасибо Метода чего?
|
||
Вернуться к началу |
|
||
Паганель |
Заголовок сообщения: Re: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 13:28 |
|
sy-uname написал(а): VLAVLA написал: Добрый день, Спасибо Метода чего? Класса видимо VLAVLA написал: Добрый день, Спасибо SE24, закладка методы (Путь: Инструменты-ABAPинстр.средства – Разработки )
|
Вернуться к началу |
|
Lars |
Заголовок сообщения: Re: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 13:52 |
|
Так ктож знает, может он не создан глобальным. По посту-то не поймешь. Последний раз редактировалось Lars Вт, май 12 2009, 13:52, всего редактировалось 1 раз.
|
Вернуться к началу |
|
VLAVLA |
Заголовок сообщения: Re: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 13:52 |
||
|
Паганель написал: Класса видимо VLAVLA написал: Добрый день, Спасибо SE24, закладка методы (Путь: Инструменты-ABAPинстр.средства – Разработки ) Да, спасибо
|
||
Вернуться к началу |
|
||
sy-uname |
Заголовок сообщения: Re: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 16:41 |
||
|
Паганель написал: sy-uname написал(а): Метода чего? Класса видимо Напимер у Business Object-ов то же есть методы, но SE24 тут не помошник.
|
||
Вернуться к началу |
|
||
Паганель |
Заголовок сообщения: Re: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 17:18 |
|
Lars написал: Так ктож знает, может он не создан глобальным. По посту-то не поймешь. Не глобальным? А можно подробнее, а то я с абап по скольку- по скольку
|
Вернуться к началу |
|
Konstantin Anikeev |
Заголовок сообщения: Re: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 17:59 |
|
Паганель написал: Lars написал: Так ктож знает, может он не создан глобальным. По посту-то не поймешь. Не глобальным? А можно подробнее, а то я с абап по скольку- по скольку Класс можно в программе ручками написать… Локально…
|
Вернуться к началу |
|
Паганель |
Заголовок сообщения: Re: Как создать/посмотреть метод? Добавлено: Вт, май 12 2009, 18:08 |
|
Konstantin Anikeev написал: Класс можно в программе ручками написать… Локально… Понял, спасибо
|
Вернуться к началу |
|
Кто сейчас на конференции |
Сейчас этот форум просматривают: нет зарегистрированных пользователей |
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения |
If you want to do a method search and it’s associated class with SAP or even search for attributes within a class simply use the repository info system transaction SE84. For example, maybe you know you want to use the method upload but you can’t remember which class it is part of!!!
Step 1: Execute transaction code SE84
First, execute SE84 and expand Repository Information System, then Class Library
Step 2: Enter method or class details
Now double click on the details you want to search on such as Classes/Interfaces, Methods, Attributes, Events or Types. Then enter your details and press execute.
Step 3: Example search “DOWNLAOD” method
For example, what if you can remember there is a method called DOWNLOAD but you can’t remember which class it is in. Simply enter the method name and press execute.
You will then be presented with a list of methods and their associated classes
У меня есть собственный метод в классе ABAP.
Я использовал инструмент «Где используется», чтобы показать, откуда вызывается класс, но, как оказалось, он вызывается откуда-то еще, чего я не ожидал.
Итак, как лучше всего показать полный список всего, что вызывает метод?
2 ответа
Лучший ответ
Отсортировано с помощью транзакции code_scanner.
0
Adam Harkus
11 Сен 2020 в 15:28
Благодаря чудесам объектно-ориентированного программирования экземпляр класса может скрываться за ссылкой на один из своих базовых классов или интерфейсов, которые он реализует. Например:
DATA foo TYPE REF TO z_my_interface.
CREATE OBJECT foo TYPE z_my_class.
" lots of more code
foo->bar( ).
Вы не можете найти эту ссылку на z_my_class->foo
в его списке «Где используется», потому что в этом месте кода foo
также может быть ссылкой на экземпляр любого другого класса, реализующего z_my_interface
. Но вы можете найти это, если не просто посмотрите на список использования метода, а на список того, где используется весь класс или интерфейс / базовый класс, который объявляет метод.
А еще есть злые уловки динамического программирования, подобные этому, которые определяют методы и классы во время выполнения:
DATA foo TYPE REF TO object.
CONSTANTS: classname TYPE string VALUE 'Z_MY_CLASS',
methodname TYPE string VALUE 'BAR'.
CREATE OBJECT foo TYPE (classname).
CALL METHOD foo->(methodname).
Невозможно найти это с помощью инструмента, где использовалось. Но если имя класса и / или метода действительно присутствует в коде (а может и нет, например, если они считываются из таблицы настройки), вы можете использовать отчет RS_ABAP_SOURCE_SCAN
. Этот удобный небольшой инструмент позволяет вам выбирать набор программ ABAP и искать строки (и даже регулярные выражения) в их исходных кодах.
Однако, если вы знаете , что метод вызывается, когда вы делаете что-то конкретное как пользователь и просто хотите знать, где, тогда может быть проще просто установить точку останова отладчика в методе, запустить его и проверьте стек вызовов.
0
Philipp
10 Сен 2020 в 16:30
In some situations, it can be useful to be able to determine the names of the current class and method dynamically instead of using hard-coded strings. I find this particularly useful for logging purposes. I have a helper class which writes to the system log when certain exceptions are triggered. As input to this helper class (or rather the method writing to the system log) I want to provide the names of the class and method where the exception was raised.
Determining the name of the current class
SAP provides the class CL_ABAP_CLASSDESCR
for determining some class attributes dynamically. To determine the name of the current class, the following code snippet can be used:
DATA(lv_class_name) = cl_abap_classdescr=>get_class_name( me ).
LV_CLASS_NAME
will contain the class name in the following format: CLASS=ZCL_MY_CLASS
Determining the name of the current method
The only approach I’ve found for determining the name of the current method is by using a function module to read the call stack. If you are aware of a better way of doing this, please leave a comment! The call stack approach looks like this:
DATA lt_callstack TYPE abap_callstack.
CALL FUNCTION 'SYSTEM_CALLSTACK'
EXPORTING
max_level = 1
IMPORTING
callstack = lt_callstack.
DATA(lv_method_name) = lt_callstack[ 1 ]-blockname.
LV_METHOD_NAME
will contain the method name in the following format: MY_METHOD
Happy coding!
This blog post first appeared on the Developer Voyage blog at https://www.developervoyage.com/2019/09/13/determine-the-current-class-and-method-names.html