借助ABAP的帮助
call function 'functionname'
starting new task 'taskname'
exporting ... tables ...
其中函数必须标记为RFC,我可以启动独立于当前运行的单独任务,例如,用于批量执行。
我想交出一个Object实例,但默认情况下,RFC函数不接受这些参数。
是否有人想要传递一个对象实例并找到解决方法?
今天我的解决方法是:我传递Workareas /结构化数据,在被调用的函数中,我重新创建Objects并向其提供数据,我手工进行“编组”。
或许还有更好的方法可以解决这个问题?
OR - 作为替代方案 - 我可以在单独的后台任务中运行对象实例的方法吗?
我正在使用SAP R3 4.6C
答案 0 :(得分:5)
在4.6C中,没有将实例传递给启用RFC的功能模块的解决方案。它只能在功能模块内从头开始重新实例化。
但是从ABAP 6.20开始,通过在实例类中包含接口IF_SERIALIZABLE_OBJECT
并调用{{1},可以将实例序列化为STRING
或XSTRING
变量。通过CALL TRANSFORMATION
进行转换,如ABAP documentation的这一部分所述:
要导出引用变量引用的对象,如果这些对象的类实现了接口
ID
,请使用语句CALL_TRANSFORMATION
来序列化并导出这些对象。
这样,您可以通过类型为IF_SERIALIZABLE_OBJECT
或STRING
的参数将序列化实例传递给启用RFC的功能模块。
答案 1 :(得分:3)
我意识到这个帖子已经有5年之久了,所以我在这里做了一些线程的暗示,但它仍然出现在前几次点击" abap rfc objects"所以我希望每个人都能原谅我。
在现代ABAP中执行此操作的正确方法可能是使用IF_SERIALIZABLE_OBJECT接口。它基本上允许您将对象转换为XML字符串,然后可以将其作为导入字符串参数传递到FM中,并反序列化回目标系统中的对象。
答案 2 :(得分:0)
我不知道这是否适用于4.6C(我使用的是更新版本),但我会做以下事情:
i)通过SE11创建结构。
ii)结构的组件(字段)应该支持TYPE REF TO
选项。这意味着,您应该能够在此处指定类名。
iii)将结构(您刚刚创建的)传递给RFC。
希望在4.6C中工作。