我在 SAP 系统 X 中更改了一个 ABAP RFC 模块,并将更改传输到 Y。现在,当我调用 RFC 时,SAP 仍然执行旧代码。
我用差异工具比较了 X 和 Y 的两个版本,没有发现任何差异,所以它看起来像是传输的变化。激活我的 ABAP RFC 代码是否需要特殊步骤?
我使用PyRFC作为客户端库。
我们的 RFC FM 之一也遇到了同样的问题。原因是连接一旦建立就保持打开状态。在这种情况下,二进制文件不会在 RFC 上下文中刷新。只需重新启动连接,一切都会按预期工作。
这是一个已知问题:https ://github.com/SAP/PyRFC/issues/89
引用问题:
Python 脚本结束后,应自动关闭连接并初始化 SAP NW RFC SDK。在集线器下会发生什么。
Python 解释器和 PyRFC 实例共享同一个 SAP NW RFC SDK lib 实例,当第一次调用远程启用功能模块 (RFM) 时,RFM 元数据缓存在 SAP NW RFC SDK 中。当第二次调用 Python/PyRFC 请求的同一 RFM 时,SAP NW RFC SDK 从缓存中返回元数据,而不是从 ABAP 系统再次读取,从而节省了一次 Python/ABAP 往返和一些性能,尤其是在复杂 RFM 的情况下。如果 RFM 签名同时更改,缓存的 RFM 元数据不会更改,Python 会“看到”旧的 ABAP 代码。
我希望将来会使用开发人员友好的解决方案。
不需要激活任何东西。运输时应该没问题。你可以试试这些;