【问题标题】:Old ABAP code still active for PyRFC even after TR was imported. Why?即使在导入 TR 之后,旧的 ABAP 代码仍然对 PyRFC 有效。为什么?
【发布时间】:2018-11-05 13:22:23
【问题描述】:

我在 SAP 系统 X 中更改了一个 ABAP RFC 模块并将更改传输到 Y。现在当我调用 RFC 时,SAP 仍然执行旧代码。

我用 diff 工具比较了 X 和 Y 的两个版本,没有发现任何差异,所以它看起来像传输的变化。激活我的 ABAP RFC 代码是否需要特殊步骤?

我使用PyRFC 作为客户端库。

【问题讨论】:

  • 你是直接修改功能模块还是某种形式的例程,例如定价条件例程?在某些特定情况下,您需要在传输更改后重新激活它们。但是,如果您修改了具有远程功能的功能模块,则不需要重新激活任何东西。为确保调用您更改的代码,请在 FM 中放置一个外部断点并查看它是否被触发(注意:FM 必须与您设置断点的用户一起调用)。
  • 导入后传输管理不会自动激活所有更改的对象吗?
  • 你怎么知道旧代码被执行了?你能分享一下 RFC 新旧代码的细节吗?
  • 分享您通话中的一些代码...您在调用 RFC 时使用 DESTINATION 吗?
  • @DirkTrilsbeek 我确实直接修改了功能模块。我想我找到了解决方案,我把它贴在下面。

标签: abap saprfc pyrfc


【解决方案1】:

我们的一个 RFC FM 也遇到了同样的问题。原因是连接一旦建立就保持打开状态。在这种情况下,二进制文件不会在 RFC 上下文中刷新。只需重新启动连接,一切都会按预期工作。

【讨论】:

  • 感谢您的反馈。您的文字看起来更像是对我的回答的评论。也许你还没有看到它。不过还是感谢您支持此解决方案。
  • 我看到了您的帖子,但评论的声誉太低了。所以我认为一个额外的答案是可以的......;-)
  • 我明白了。坚持下去,你很快就会有足够的声望。我希望你投票
【解决方案2】:

这是一个已知问题:https://github.com/SAP/PyRFC/issues/89

引用问题:

Python脚本结束后,应该会自动连接 关闭并初始化 SAP NW RFC SDK。这里会发生什么 集线器。

Python 解释器和 PyRFC 实例共享同一个 SAP NW RFC SDK lib 实例和当远程启用功能模块 (RFM) 是 第一次调用,RFM 元数据缓存在 SAP NW RFC 中 开发工具包。当第二次调用 Python/PyRFC 请求的同一个 RFM 时, SAP NW RFC SDK 从缓存返回元数据,而不是 从 ABAP 系统再次读取,节省一个 Python/ABAP 往返和 一些性能,尤其是在复杂的 RFM 的情况下。如果 RFM 签名同时更改,缓存的 RFM 元数据不会 改变了,Python “看到”了旧的 ABAP 代码。

我希望将来会使用对开发人员友好的解决方案。

【讨论】:

    【解决方案3】:

    不需要激活任何东西。运输时应该没问题。 你可以试试这些;

    • 再次传输所有内容。(包括相同请求的其他任务)
    • 检查呼叫中的目标字段,看看您呼叫的系统是否正确
    • 清除缓冲区 => TCode /$sync

    【讨论】:

      猜你喜欢
      • 2020-08-02
      • 2015-12-01
      • 2019-02-11
      • 1970-01-01
      • 2018-09-26
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 2017-11-21
      相关资源
      最近更新 更多