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”));

在Android Studio中远程调用SAP RFC函数,可以通过以下步骤实现: 1. 首先,确保你的Android Studio项目中已经添加了相应的SAP Java Connector(SAP JCo)库。你可以在项目的build.gradle文件中添加依赖项,例如: ```java dependencies { implementation 'com.sap.conn.jco:jco3:3.1.2' } ``` 2. 创建一个SAP连接: 在你的代码中,实例化一个`JCoDestination`对象,并设置连接所需的属性,如SAP服务器的地址、用户名、密码等。例如: ```java JCoDestination destination = JCoDestinationManager.getDestination("MY_DESTINATION"); destination.getRepository(); // 设置连接属性 destination.getProperties().setProperty(DestinationDataProvider.JCO_ASHOST, "SAP服务器地址"); destination.getProperties().setProperty(DestinationDataProvider.JCO_SYSNR, "系统编号"); destination.getProperties().setProperty(DestinationDataProvider.JCO_CLIENT, "客户端"); destination.getProperties().setProperty(DestinationDataProvider.JCO_USER, "用户名"); destination.getProperties().setProperty(DestinationDataProvider.JCO_PASSWD, "密码"); ``` 3. 调用RFC函数: 使用SAP连接后,可以从SAP系统的函数库中获取function module,然后通过函数的`execute()`方法调用RFC函数并传递参数。例如: ```java JCoFunction function = destination.getRepository().getFunction("RFC_FUNCTION_NAME"); if (function == null) { throw new RuntimeException("Function not found"); } // 设置RFC函数的输入参数 function.getImportParameterList().setValue("parameterName", parameterValue); function.execute(destination); // 获取RFC函数的输出参数 String result = function.getExportParameterList().getString("outputParamName"); ``` 4. 处理RFC函数的返回结果: 根据你的需求,可以根据RFC函数的返回结果进行一系列的操作,例如显示在界面上、保存到本地等。 以上就是在Android Studio中远程调用SAP RFC函数的基本步骤。请注意,在实际应用中,你可能还需要处理连接的异常、异常情况下的处理等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值