将对象实例传递给RFC功能模块

时间:2011-07-04 13:36:01

标签: sap abap

借助ABAP的帮助

call function 'functionname' 
  starting new task 'taskname' 
  exporting ... tables ...

其中函数必须标记为RFC,我可以启动独立于当前运行的单独任务,例如,用于批量执行。

我想交出一个Object实例,但默认情况下,RFC函数不接受这些参数。

是否有人想要传递一个对象实例并找到解决方法?

今天我的解决方法是:我传递Workareas /结构化数据,在被调用的函数中,我重新创建Objects并向其提供数据,我手工进行“编组”。

或许还有更好的方法可以解决这个问题?

OR - 作为替代方案 - 我可以在单独的后台任务中运行对象实例的方法吗?

我正在使用SAP R3 4.6C

3 个答案:

答案 0 :(得分:5)

在4.6C中,没有将实例传递给启用RFC的功能模块的解决方案。它只能在功能模块内从头开始重新实例化。

但是从ABAP 6.20开始,通过在实例类中包含接口IF_SERIALIZABLE_OBJECT并调用{{1},可以将实例序列化为STRINGXSTRING变量。通过CALL TRANSFORMATION进行转换,如ABAP documentation的这一部分所述:

  

要导出引用变量引用的对象,如果这些对象的类实现了接口ID,请使用语句CALL_TRANSFORMATION来序列化并导出这些对象。

这样,您可以通过类型为IF_SERIALIZABLE_OBJECTSTRING的参数将序列化实例传递给启用RFC的功能模块。

答案 1 :(得分:3)

我意识到这个帖子已经有5年之久了,所以我在这里做了一些线程的暗示,但它仍然出现在前几次点击" abap rfc objects"所以我希望每个人都能原谅我。

在现代ABAP中执行此操作的正确方法可能是使用IF_SERIALIZABLE_OBJECT接口。它基本上允许您将对象转换为XML字符串,然后可以将其作为导入字符串参数传递到FM中,并反序列化回目标系统中的对象。

指南: https://rvanmil.wordpress.com/2011/05/20/serialization/

答案 2 :(得分:0)

我不知道这是否适用于4.6C(我使用的是更新版本),但我会做以下事情:

i)通过SE11创建结构。
ii)结构的组件(字段)应该支持TYPE REF TO选项。这意味着,您应该能够在此处指定类名。
iii)将结构(您刚刚创建的)传递给RFC。

希望在4.6C中工作。