如何为功能模块构建调用图?
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.
确保您使用的配置文件没有聚合,并测量您感兴趣的块。
玩得开心:)
调用层次结构显示也适用于程序和功能模块。
在我的 S/4HANA 系统中,对于 VA01
,它显示:
点击功能模块层级CJWI_INIT
显示:
我通过调用函数模块 RS_CALL_HIERARCHY
得到了完全相同的结果:
参数OBJECT_TYPE
可能有这些值:
- P : 程序
- FF : 功能模块
至少从 Basis 4.6 开始,"call graph" 不再维护,并且它不适用于 类 和方法。
但该工具有问题:在某些情况下,在第一行包含 PERFORM 的功能模块可能不会显示,无论调用图是从 SE93
启动还是直接从 RS_CALL_HIERARCHY
.
不久前,在记录遗留代码时,我发现有一个工具可以显示任何标准程序的调用图(调用堆栈)。荒谬的是我多年来都不知道这个工具 :D
虽然不是 call graph in a full sense,但它提供了程序调用的奇特 list/hierarchy,在某些情况下非常有用。
问题是此工具仅链接到 SE93,因此它可以仅用于交易。 我试图搜索但没有找到任何类似的报告或功能模块工具。是的,我可以为报告创建一个 tcode,但对于功能模块,这种方法不起作用。
如果我将 FM 调用放入报告中并使用此工具构建图表,它会将此调用包装为一个单元并且不会进行更深入的分析。就是这样
有谁知道我们如何为交易之外的 smth 构建图表的解决方法?
愤世嫉俗的我认为 RS_CALL_HIERARCHY 任其腐烂。 Sandra 是对的,它曾经确实有效。一旦 OO 出现在 abap 中,接口和 dynamic/generic 代码就成为可能。因此,基于静态代码分析的调用层次结构正在将众所周知的问题推上坡路。
IMO 解决此问题的最佳方法是完整跟踪,然后从跟踪中提取数据。 甚至有外部工具可以做到这一点。 当然,这仍然是有限的,因为 运行 在每个执行路径上进行跟踪可能非常耗时。我听到有人说小 类 吗?
跨 SAT. 确保您使用的配置文件没有聚合,并测量您感兴趣的块。
玩得开心:)
调用层次结构显示也适用于程序和功能模块。
在我的 S/4HANA 系统中,对于 VA01
,它显示:
点击功能模块层级CJWI_INIT
显示:
我通过调用函数模块 RS_CALL_HIERARCHY
得到了完全相同的结果:
参数OBJECT_TYPE
可能有这些值:
- P : 程序
- FF : 功能模块
至少从 Basis 4.6 开始,"call graph" 不再维护,并且它不适用于 类 和方法。
但该工具有问题:在某些情况下,在第一行包含 PERFORM 的功能模块可能不会显示,无论调用图是从 SE93
启动还是直接从 RS_CALL_HIERARCHY
.