SAP接口编程-RFC系列13 : Table Parameter作为输入参数
2016-03-08 13:59
393 查看
在之前VBA代码中,我们已经介绍过table parameter作为输入参数的要点。本篇主要演示c#使用table parameter作为importing parameter的语法。以RFC_READ_TABLE为例。
说明:
向table参数添加行时,与VBA语法不同,使用AppendGridData()方法。
另外,获取importing参数、exporting参数、table参数,可以有以下两种方法:
单元测试
Utils.ConsolePrint()方法在Output窗口打印dataTable,代码如下:
VBA版对照:/article/8965624.html
using System.Data; using SAPLogonCtrl; using SAPFunctionsOCX; using ConnectionProvider; using SAPTableFactoryCtrl; // Table parameter作为importing parameter时的使用方法 namespace SAPRfcCall { public class RFC3 { private Connection connection; // get table SKA1 contents public DataTable GetSKA1() { DataTable ska1 = null; bool isSuccessful = SAPConnection.SilentLogon( "192.168.65.100", "D01", 00, "001", "STONE", "sappwd", "ZH"); if (isSuccessful) { connection = SAPConnection.Connection; ska1 = DoGetTableLines(); SAPConnection.Logoff(); } return ska1; } public DataTable DoGetTableLines() { if (connection.IsConnected != CRfcConnectionStatus.tloRfcConnected) { return null; } SAPFunctions functions = new SAPFunctions(); functions.Connection = connection; Function fm = functions.Add("RFC_READ_TABLE"); fm.Exports["QUERY_TABLE"].Value = "SKA1"; fm.Exports["DELIMITER"].Value = "~"; // criterial to filter data retrieved Tables tables = fm.Tables; Table options = tables.get_Item("OPTIONS"); options.AppendGridData(1, 1, 1, "KTOPL = 'Z900' "); // only cares for two fields Table fields = tables.get_Item("FIELDS"); fields.AppendGridData(1, 1, 1, "KTOPL"); // first row fields.AppendGridData(2, 1, 1, "SAKNR"); // second row fm.Call(); Table data = fm.Tables["DATA"]; DataTable tableLines = Utils.ToDataTable(data); return tableLines; } } }
说明:
向table参数添加行时,与VBA语法不同,使用AppendGridData()方法。
另外,获取importing参数、exporting参数、table参数,可以有以下两种方法:
fm.get_Exports("QUERY_TABLE").Value = "SKA1"; 或者 fm.Exports["QUERY_TABLE"].Value = "SKA1"
Tables tables = fm.Tables; Table options = tables.get_Item("OPTIONS"); // or : Table options = fm.Tables["OPTIONS"];
单元测试
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using SAPRfcCall; using System.Data; namespace UnitTestProject { [TestClass] public class TestRFC3 { [TestMethod] public void TestRFCReadTable() { RFC3 rfc = new RFC3(); DataTable ska1 = rfc.GetSKA1(); Utils.ConsolePrint(ska1); } } }
Utils.ConsolePrint()方法在Output窗口打印dataTable,代码如下:
public static void ConsolePrint(DataTable dataTable) { // function: print dataTable contents in console foreach (DataRow row in dataTable.Rows) { foreach (DataColumn col in dataTable.Columns) { Console.Write(row[col.Caption].ToString() + "\t"); } Console.WriteLine(); } }
VBA版对照:/article/8965624.html
相关文章推荐
- codeforces 598D - Igor In the Museum
- 深入理解PHP原理之变量分离/引用
- spring aop 异常记录
- java中的多态
- 使用Eclipse开发Java Web过程中Debug调试的使用方法
- 面向对象编程
- C++复习基础1
- PHP 运行方式(PHP SAPI介绍)
- Python爬取中文页面的时候出现的乱码问题
- eclipse怎么设置字体大小
- eclipse怎么设置字体大小
- C#实现客户端弹出消息框封装类实例
- Delphi richedit获取选中文字
- 刷爆Github小绿点
- C++函数重定义、重载、重写
- springMVC 常用注解
- 在已经有xml文件的情况下快速生成javabean
- Spring MVC常用的注解
- 快速排序代码及实现(优化)
- spring加载配置文件