Abap 如何为功能模块构建调用图?

Abap 如何为功能模块构建调用图?,abap,call-graph,bapi,function-module,Abap,Call Graph,Bapi,Function Module,不久前,在记录遗留代码的过程中,我发现有一个工具可以显示任何标准程序的调用图(调用堆栈)。荒谬的是,我已经多年没有意识到这个工具了:D 它给出了程序调用的奇特列表/层次结构,虽然它不是一个列表,但在某些情况下非常有用 问题是此工具仅链接到SE93,因此只能用于事务。 我试图搜索,但没有找到任何类似的报告或功能模块的工具。是的,我可以为报表创建tcode,但对于功能模块,这种方法不起作用 若我将FM调用放在报告中,并使用此工具构建一个图表,它将此调用包装为单个单元,而不会进行更深入的分析。就这

不久前,在记录遗留代码的过程中,我发现有一个工具可以显示任何标准程序的调用图(调用堆栈)。荒谬的是,我已经多年没有意识到这个工具了:D

它给出了程序调用的奇特列表/层次结构,虽然它不是一个列表,但在某些情况下非常有用

问题是此工具仅链接到SE93,因此只能用于事务。 我试图搜索,但没有找到任何类似的报告或功能模块的工具。是的,我可以为报表创建tcode,但对于功能模块,这种方法不起作用

若我将FM调用放在报告中,并使用此工具构建一个图表,它将此调用包装为单个单元,而不会进行更深入的分析。就这样


有人知道除了事务之外,我们如何为smth构建图形的解决方法吗?

我内心的愤世嫉俗者认为RS_CALL_层次结构已经腐烂了。桑德拉是对的,它肯定曾经起作用。一旦OO进入abap,接口和动态/通用代码就成为可能。因此,基于静态代码分析的呼叫继承权将这一谚语推向了顶峰

IMO解决此问题的最佳方法是完整跟踪,然后从跟踪中提取数据。 甚至还有一些外部工具可以做到这一点。 当然,这仍然是有限的,因为在每个执行路径上运行跟踪可能非常耗时。我听到有人说小班了吗

Trans-SAT. 确保您使用的配置文件不是聚合的,并测量您感兴趣的块

现在你涉水穿过痕迹。


乐趣无穷:)

调用层次结构显示也适用于程序和功能模块

在我的S/4HANA系统中,对于
VA01
,它显示:

单击功能模块的层次结构显示:


我通过以下方式调用函数模块
RS\u CALL\u HIERARCHY
得到了完全相同的结果:

参数
OBJECT\u TYPE
可能具有以下值:

  • P:程序
  • FF:功能模块
“调用图”至少在Basis 4.6中不再维护,并且它不适用于类和方法


但该工具存在缺陷:在某些情况下,在第一行包含PERFORM的功能模块可能不会显示,无论调用图是从
SE93
启动的,还是直接从
RS\u call\u HIERARCHY

启动的,调用图都不会再维护,至少从Basis 4.6开始,它对类和方法不起作用。尽管有此限制,如果您有兴趣将其用于报表和功能模块,您可以直接调用功能模块
RS\u call\u HIERARCHY
,对于程序,参数
OBJECT\u TYPE
设置为
P
,对于功能模块,参数
FF
设置为
。另外,我在这个FM中没有看到输出参数,你试过功能模块吗?是的,我试过功能模块和程序,以及其他对象。不管是事务代码、功能模块还是程序,它或多或少都能工作,并且已经有20年没有维护了。可能您必须重新构建其功能组的对象列表。
RS\u CALL\u HIERARCHY
SE93
中选项背后的工具,它分析事务代码下面的层次结构,并针对每个子例程、功能模块、,对于一个程序或一个功能模块,可以单独调用同一工具。我发现一个功能模块包含一个PERFORM,但工具没有显示它。因此,无论是针对一个事务代码还是一个功能模块,该工具都有缺陷(尝试将功能模块包装在自定义事务代码中,然后运行该工具)。它仅适用于旧程序。
它仅适用于旧程序
我尝试了10多种不同的FMs,但没有一种有效,可能是因为它们都包含执行功能,但对于程序它是有效的。所以,是的,现在似乎被弃用了,buggyI使用该模块尝试了RS_CALL_层次结构,首先是
程序
参数,不能像您的屏幕截图上那样调用,其次,即使我填充了所有参数也不能调用。在7.50和7.02系统上试用。所以我不能接受这个答案,因为我的经验与你不同,我不要求接受我的答案;-)我只是提供截图来说明我最初的评论。也许可以尝试使用旧的功能模块,如
DELETE\u TEXT
,也许它会“更好地工作”。不管怎么说,它有缺陷,所以我认为不值得在这个工具上花费更多的时间。让我们看看是否有人开发了自定义工具。谢谢,这是最接近我想要得到的输出