C#调用SAP函数之RFC_READ_TABLE
来源:互联网 发布:ipv6没有网络访问权限 编辑:程序博客网 时间:2024/06/03 20:57
原文链接:http://blog.sina.com.cn/s/blog_52209ba70100l506.html
public void test(){ SAPLogonControlClass connctl = new SAPLogonControlClass(); //下面的参数值根据实际情况赋值 connctl.Client = "集团号"; connctl.Language = "ZH"; connctl.ApplicationServer = "服务器IP"; connctl.SystemNumber = 00; connctl.User = "SAP登录名"; connctl.Password = "SAP密码"; Connection conn = (Connection)connctl.NewConnection(); //登陆 if (conn.Logon(null, true)) { SAPFunctionsClass functions = new SAPFunctionsClass(); functions.Connection = conn; //这里就传入函数名称RFC_READ_TABLE Function fucntion = (Function)functions.Add("RFC_READ_TABLE"); //这里是传入值参数 QUERY_TABLE 就是要查询的表名 DELIMITER就是字段间的间隔符号,因为函数的返回参数不是表格形式 Parameter parameter1 = (Parameter)fucntion.get_Exports("QUERY_TABLE"); parameter1.Value = "BSEG"; Parameter parameter2 = (Parameter)fucntion.get_Exports("DELIMITER"); parameter2.Value = "@"; //这里是传入表的参数,这里有两个表OPTIONS和FIELDS;OPTION表是存放查询条件的,为空的话是不限制条件,FIELDS是存放你想要查询的字段,按理说可以为空,但是试过不行,只能设置要取的字段 Tables Tables1 = (Tables)fucntion.Tables; Table table0 = (Table)Tables1.get_Item("OPTIONS"); table0.AppendGridData(1, 1, 1, "");//设置条件,例如(MANDT=‘100’) Table talble1 = (Table)Tables1.get_Item("FIELDS"); talble1.AppendGridData(1, 1, 1, "MANDT");// talble1.AppendGridData(2, 1, 1, "BUKRS");// talble1.AppendGridData(3, 1, 1, "BELNR");// talble1.AppendGridData(4, 1, 1, "GJAHR");// talble1.AppendGridData(5, 1, 1, "BUZEI");// talble1.AppendGridData(1, 2, 1, "SHKZG");// talble1.AppendGridData(2, 2, 1, "MENGE");// talble1.AppendGridData(3, 2, 1, "MEINS");// talble1.AppendGridData(4, 2, 1, "EBELN");// talble1.AppendGridData(5, 2, 1, "EBELP");// //调用函数,并读取数据 if (fucntion.Call()) { Tables1 = (Tables)fucntion.Tables; //获取函数返回内容 Table talbe2(Table)Tables1.get_Item("DATA"); MessageBox.Show(talbe2.get_cell(1,1).ToString()); 或者 MessageBox.Show(talbe2.get_cell(1,"MANDT").ToString()); } //退出登陆 conn.Logoff(); }
阅读全文