Как построить граф вызовов для функционального модуля? - PullRequest
2 голосов
/ 13 апреля 2020

А пока go во время документирования старого кода я обнаружил, что есть инструмент для отображения графа вызовов (стека вызовов) любой стандартной программы. Абсурдно, я не знал об этом инструменте в течение многих лет: D

enter image description here

Это дает причудливый список / иерархию вызовов программы, хотя это не так граф вызовов в полном смысле , в некоторых случаях он очень полезен.

enter image description here

Проблема в том, что этот инструмент связан только до SE93, поэтому его можно использовать только для транзакций . Я пытался искать, но не нашел аналогичного инструмента для отчетов или функциональных модулей. Да, я могу создать tcode для отчета, но для функционального модуля этот подход не работает.

Если я помещаю FM-вызов в отчет и строю график с помощью этого инструмента, он упаковывает этот вызов как единое целое и не анализирует глубже. И это все

enter image description here

Кто-нибудь знает обходной путь, как мы можем построить граф для чего-то, кроме транзакции?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

Цини c во мне думает, что RS_CALL_HIERARCHY оставили гнить. Сандра права, это определенно работало. Как только OO подошло к концу, стали возможны интерфейсы и динамический / generi c код. Таким образом, иерархия вызовов, основанная на анализе кода stati c, подтолкнула общеизвестную проблему.

IMO лучший способ решить эту проблему - это ПОЛНАЯ трассировка, а затем извлечь данные из трассировки. Есть даже внешние инструменты, которые делают это. Это, конечно, все еще ограничено, так как выполнение трассировки на каждом пути выполнения может занять очень много времени. Я слышал, что кто-то говорит маленькие классы, пожалуйста?

Trans SAT. Убедитесь, что используемый вами профиль не агрегирует, и измерьте интересующие вас блоки.

Trace profile Make sure the profile isnt aggregating calls And set to measure the relevant callable blocks

Теперь вы пройдете через след. https://help.sap.com/doc/saphelp_ewm93/9.3/en-US/4e/c3e66b6e391014adc9fffe4e204223/content.htm?no_cache=true

Веселитесь :) 1025 *

1 голос
/ 14 апреля 2020

Отображение иерархии вызовов также работает для программ и функциональных модулей.

В моей системе S / 4HANA для VA01 отображается: enter image description here

При щелчке по иерархии функционального модуля CJWI_INIT отображаются: enter image description here

Я получаю точно такой же результат, вызывая функциональный модуль RS_CALL_HIERARCHY следующим образом: enter image description here

Параметр OBJECT_TYPE может иметь следующие значения:

  • P: программа
  • FF: функциональный модуль

«График вызовов» больше не поддерживается, начиная с версии 4.6, и он не работает для классов и методов.

Но инструмент глючит: в некоторых случаях функциональный модуль содержит PERFORM на первая строка, она может не отображаться, независимо от того, запущен ли график вызовов с SE93 или напрямую с RS_CALL_HIERARCHY.

...