【问题标题】:How to build a call graph for a function module?如何为功能模块构建调用图?
【发布时间】:2020-07-25 17:35:03
【问题描述】:

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

它提供了程序调用的精美列表/层次结构,虽然它不是call graph in a full sense,但在某些情况下非常有用。

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

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

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

【问题讨论】:

  • 至少从 Basis 4.6 开始就不再维护调用图,并且它不适用于类和方法。尽管有这个限制,如果您有兴趣将它用于报表和功能模块,您可以直接调用功能模块RS_CALL_HIERARCHY,参数OBJECT_TYPE设置为P用于程序,FF用于功能模块。跨度>
  • 我只是 receive this 如果我为功能模块调用它,则没有显示调用层次结构。另外我在这个FM里没有看到输出参数,你试过功能模块吗?
  • 是的,我用功能模块和程序以及其他对象也试过了。它或多或少地工作,无论是用于事务代码,功能模块还是程序,它都没有维护20年。也许你必须重建其功能组的对象列表。
  • RS_CALL_HIERARCHYSE93中option后面的工具,分析事务代码下面的层级,针对每个子程序、功能模块等往下走。可以调用这个一个程序或一个功能模块单独使用相同的工具。我找到了一个包含 PERFORM 的功能模块,但该工具没有显示它。因此,该工具是有缺陷的,无论是针对一个事务代码还是一个功能模块(通过将功能模块包装在自定义事务代码中并运行该工具来尝试)。它仅适用于旧程序。
  • It works well only for old programs 我尝试了 10 多种不同的 FM,但没有一个能奏效,可能是因为它们都包含表演,但对于程序来说它是有效的。所以是的,现在似乎已被弃用并且有问题

标签: abap call-graph bapi function-module


【解决方案1】:

我的愤世嫉俗者认为 RS_CALL_HIERARCHY 已经腐烂了。桑德拉是对的,它确实曾经有效。一旦 OO 来到 abap,接口和动态/通用代码就成为可能。因此,众所周知,基于静态代码分析的调用层次结构正在上坡。

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

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

现在,您将穿越踪迹。 https://help.sap.com/doc/saphelp_ewm93/9.3/en-US/4e/c3e66b6e391014adc9fffe4e204223/content.htm?no_cache=true

玩得开心:)

【讨论】:

  • 谢谢,这是我想收到的最接近的输出
【解决方案2】:

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

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

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

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

参数OBJECT_TYPE可能有这些值:

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

至少从 Basis 4.6 开始,“调用图”就不再维护了,并且它不适用于类和方法。

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

【讨论】:

  • 我尝试了 RS_CALL_HIERARCHY 与该模块完全一致,首先PROGRAM 参数is obligatory 并且不像您的屏幕截图那样可调用,其次它doesn't not return anything 即使我填写了所有参数。在 7.50 和 7.02 系统上试过。所以我不能接受这个作为答案,因为我的经历和你不同
  • 我不要求接受我的答案;-) 我只是提供屏幕截图来说明我最初的 cmets。也许尝试使用像DELETE_TEXT 这样的旧功能模块,也许它会为你“更好地工作”。无论如何,它有问题,所以我认为不值得花更多时间在这个工具上。让我们看看是否有人开发了自定义工具。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2019-10-18
  • 2014-07-29
  • 1970-01-01
  • 2020-09-13
  • 2016-05-30
相关资源
最近更新 更多