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

How to build a call graph for a function module?

不久前,在记录遗留代码时,我发现有一个工具可以显示任何标准程序的调用图(调用堆栈)。荒谬的是我多年来都不知道这个工具 :D

虽然不是 call graph in a full sense,但它提供了程序调用的奇特 list/hierarchy,在某些情况下非常有用。

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

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

有谁知道我们如何为交易之外的 smth 构建图表的解决方法?

愤世嫉俗的我认为 RS_CALL_HIERARCHY 任其腐烂。 Sandra 是对的,它曾经确实有效。一旦 OO 出现在 abap 中,接口和 dynamic/generic 代码就成为可能。因此,基于静态代码分析的调用层次结构正在将众所周知的问题推上坡路。

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

跨 SAT. 确保您使用的配置文件没有聚合,并测量您感兴趣的块。

现在让你涉足踪迹。 https://help.sap.com/doc/saphelp_ewm93/9.3/en-US/4e/c3e66b6e391014adc9fffe4e204223/content.htm?no_cache=true

玩得开心:)

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

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

点击功能模块层级CJWI_INIT显示:

我通过调用函数模块 RS_CALL_HIERARCHY 得到了完全相同的结果:

参数OBJECT_TYPE可能有这些值:

  • P : 程序
  • FF : 功能模块

至少从 Basis 4.6 开始,"call graph" 不再维护,并且它不适用于 类 和方法。

但该工具有问题:在某些情况下,在第一行包含 PERFORM 的功能模块可能不会显示,无论调用图是从 SE93 启动还是直接从 RS_CALL_HIERARCHY.