通过 ABAP 构造STARTING NEW TASK
,我可以启动一个独立于当前运行的单独任务,例如批量执行。
我想交出一个对象实例 RFC 函数不接受这些类型的参数。是否有人也想传递一个对象实例并找到解决方法?
今天我的解决方法是传递结构化数据并在模块内重新创建对象,所以我手动进行“编组”。
也许有更好的方法来做到这一点?或者我可以在单独的后台任务中运行对象实例的方法吗?
PS我正在使用SAP R3 4.6C
通过 ABAP 构造STARTING NEW TASK
,我可以启动一个独立于当前运行的单独任务,例如批量执行。
我想交出一个对象实例 RFC 函数不接受这些类型的参数。是否有人也想传递一个对象实例并找到解决方法?
今天我的解决方法是传递结构化数据并在模块内重新创建对象,所以我手动进行“编组”。
也许有更好的方法来做到这一点?或者我可以在单独的后台任务中运行对象实例的方法吗?
PS我正在使用SAP R3 4.6C
在 4.6C 中,没有将实例传递给启用 RFC 的功能模块的解决方案。只能在功能模块内从头开始重新实例化它。
但是从 ABAP 6.20 开始,可以通过在实例类中包含接口并通过调用转换来将实例序列化为 aSTRING
或XSTRING
变量,如ABAP 文档的这一部分所述:IF_SERIALIZABLE_OBJECT
ID
CALL TRANSFORMATION
要导出引用变量引用的对象,
CALL_TRANSFORMATION
如果这些对象的类实现了接口,请使用该语句序列化和导出这些对象IF_SERIALIZABLE_OBJECT
。
这样,您可以通过类型为STRING
或的参数将序列化实例传递给启用 RFC 的功能模块XSTRING
。
我意识到这个线程大约有 5 年的历史,所以我在这里做了一些线程死灵术,但它仍然出现在“abap rfc objects”的前几首热门歌曲中,所以我希望大家原谅我。
在现代 ABAP 中执行此操作的正确方法可能是使用 IF_SERIALIZABLE_OBJECT 接口。它基本上允许您将对象转换为 XML 字符串,然后可以将其作为导入字符串参数传递到 FM 并反序列化回目标系统中的对象。
指南: https ://rvanmil.wordpress.com/2011/05/20/serialization/
我不知道这是否适用于 4.6C(我使用的是更新的版本),但我会执行以下操作:
i)通过 SE11 创建结构。
ii) 结构的组件(字段)应支持该TYPE REF TO
选项。这意味着,您应该能够在此处指定类名。
iii) 将结构(您刚刚创建的)传递给 RFC。
希望在 4.6C 下有效。