NET调用RFC函数传入Table类型

31 篇文章 0 订阅

网上已经有人写了NET连接SAP系统专题,这里就不细说了,有需要的同学可以自己点开专题链接。
调用RFC的时候我们要传参数,传常规类型(string,int)非常简单,实例化一个IRfcFunction,然后调用实例化的SetValue函数就完成了。要传Structure、传Table怎么办呢。直觉告诉我,应该先定义一个RfcStructure或RfcTable,当然,定义它们之后还要定义一堆的RfcField,然后再用SetValue传进去。忙活了半天,发现还是不行。报数据类型转换的错误。找谷歌帮忙,也没找到满意的答案。后来打起了nco的主意,IRfcFunction在调用Invoke才开始调用rfc函数,能不能在调用Invoke之前,先调用GetTable或GetStructure得到内表或structure的结构的实例,将我们要传入的数据写入实例,再调用SetValue函数将实例设为RFC的参数,最后再调用Invoke呢?开始coding……,运行,成功了!!啰嗦了这么多,再整理下。
net调用rfc函数,对于简单类型的参数,可以直接调用SetValue进行传参。
对于复杂类型的参数(structure,table),先调用IRfcFunction.GetTable或GetStructure()创建复杂类型的实例,对实例进行赋值,再调用SetValue进行传参。
IRfcFunction function = SAPHelper.GetFunction(”ZHELI_TEST1″);

IRfcTable inTable = function.GetTable(”LINES”, true);

IRfcStructure wa_line = inTable.Metadata.LineType.CreateStructure();
wa_line.SetValue(0, “1″);
wa_line.SetValue(1, “1111111111111111111″);
inTable.Append(wa_line);

wa_line = remoteTable.Metadata.LineType.CreateStructure();
wa_line.SetValue(0, “2″);
wa_line.SetValue(1, “22222222222222″);
inTable.Append(wa_line);

wa_line = remoteTable.Metadata.LineType.CreateStructure();
wa_line.SetValue(0, “3″);
wa_line.SetValue(1, “3333333333333333″);
inTable.Append(wa_line);

function.SetValue(”LINES”, inTable);

function.Invoke(SAPHelper.DEST);

DataTable dt = SAPHelper.RfcTableToDataTable(function.GetTable(”OLINES”));

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值