Sap как найти метод

Поиск методов в классах/интерфейсах

Для того чтобы найти метод класса/интерфейса по его имени, достаточно зайти в таблицу SEOCOMPO,  в качестве компонента указать имя метода:

В случае если вам нужен не программный поиск, лучше воспользоваться инфо-системой репозитария — тр. SE15

Просмотр нерешенных тем
Сообщения без ответов | Активные темы

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

ВНИМАНИЕ!

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

Автор Сообщение

Заголовок сообщения: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 12:54 

Старший специалист
Старший специалист



Зарегистрирован:
Чт, авг 02 2007, 14:26
Сообщения: 443
Откуда: S/4 HANA
Пол: Мужской

Добрый день,
подскажите транзакцию для создания/просмотра метода?

Спасибо

Принять этот ответ

Вернуться к началу

Профиль  

sy-uname

Заголовок сообщения: Re: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 13:02 

Гуру-эксперт
Гуру-эксперт



Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988

VLAVLA написал:

Добрый день,
подскажите транзакцию для создания/просмотра метода?

Спасибо

Метода чего?


_________________
“После” – не значит “вследствие”

Принять этот ответ

Вернуться к началу

Профиль  

Паганель

Заголовок сообщения: Re: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 13:28 



Зарегистрирован:
Пн, янв 07 2008, 20:51
Сообщения: 156
Пол: Мужской

sy-uname написал(а):

VLAVLA написал:

Добрый день,
подскажите транзакцию для создания/просмотра метода?

Спасибо

Метода чего?

Класса видимо :D

VLAVLA написал:

Добрый день,
подскажите транзакцию для создания/просмотра метода?

Спасибо

SE24, закладка методы (Путь: Инструменты-ABAPинстр.средства – Разработки )

Принять этот ответ

Вернуться к началу

Профиль  

Lars

Заголовок сообщения: Re: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 13:52 



Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской

Так ктож знает, может он не создан глобальным. По посту-то не поймешь.
Поэтому, пост sy-uname вполне логичен :)


_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.

Последний раз редактировалось Lars Вт, май 12 2009, 13:52, всего редактировалось 1 раз.

Принять этот ответ

Вернуться к началу

Профиль  

VLAVLA

Заголовок сообщения: Re: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 13:52 

Старший специалист
Старший специалист



Зарегистрирован:
Чт, авг 02 2007, 14:26
Сообщения: 443
Откуда: S/4 HANA
Пол: Мужской

Паганель написал:

Класса видимо :D

VLAVLA написал:

Добрый день,
подскажите транзакцию для создания/просмотра метода?

Спасибо

SE24, закладка методы (Путь: Инструменты-ABAPинстр.средства – Разработки )

Да, спасибо

Принять этот ответ

Вернуться к началу

Профиль  

sy-uname

Заголовок сообщения: Re: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 16:41 

Гуру-эксперт
Гуру-эксперт



Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988

Паганель написал:

sy-uname написал(а):

Метода чего?

Класса видимо :D

Напимер у Business Object-ов то же есть методы, но SE24 тут не помошник.


_________________
“После” – не значит “вследствие”

Принять этот ответ

Вернуться к началу

Профиль  

Паганель

Заголовок сообщения: Re: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 17:18 



Зарегистрирован:
Пн, янв 07 2008, 20:51
Сообщения: 156
Пол: Мужской

Lars написал:

Так ктож знает, может он не создан глобальным. По посту-то не поймешь.
Поэтому, пост sy-uname вполне логичен :)

Не глобальным? А можно подробнее, а то я с абап по скольку- по скольку

Принять этот ответ

Вернуться к началу

Профиль  

Konstantin Anikeev

Заголовок сообщения: Re: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 17:59 



Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской

Паганель написал:

Lars написал:

Так ктож знает, может он не создан глобальным. По посту-то не поймешь.
Поэтому, пост sy-uname вполне логичен :)

Не глобальным? А можно подробнее, а то я с абап по скольку- по скольку

Класс можно в программе ручками написать… Локально…

Принять этот ответ

Вернуться к началу

Профиль  

Паганель

Заголовок сообщения: Re: Как создать/посмотреть метод?

СообщениеДобавлено: Вт, май 12 2009, 18:08 



Зарегистрирован:
Пн, янв 07 2008, 20:51
Сообщения: 156
Пол: Мужской

Konstantin Anikeev написал:

Класс можно в программе ручками написать… Локально…

Понял, спасибо :)

Принять этот ответ

Вернуться к началу

Профиль  

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

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

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

cron

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

Добавить комментарий