logo资料库

VS2010+RFC连接SAP方法.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
.NET 连接 SAP 系统专题:C# Formwork4.0 调用 RFC 代码 本文就说明在 C#中如何编写代码来调用 SAP 中的 RFC 函数获取数据。(Winform32) 首先需要引用两个 NCO3.0 的 DLL,下载地址在文后。 1. sapnco_utils.dll; 2. sapnco.dll; 然后在程序代码页面引用: using SAP.Middleware.Connector; 然后所有的代码如下: namespace SAP_RFC { public partial class Form1 : Form { string MATNR = string.Empty; public Form1() { } InitializeComponent(); public void nco() { } IDestinationConfiguration ID = new MyBackendConfig(); RfcDestinationManager.RegisterDestinationConfiguration(ID); RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000"); RfcDestinationManager.UnregisterDestinationConfiguration(ID); nco(prd); public void nco(RfcDestination prd) { RfcRepository repo = prd.Repository; IRfcFunction companyBapi = repo.CreateFunction("ZRFC_MARA_INFO"); //调用函数名 companyBapi.SetValue("MATNR", MATNR); //设置 Import 的参数 companyBapi.Invoke(prd); //执行函数 IRfcTable table = companyBapi.GetTable("IT_MARA"); //获取相应的品号内表 string MAKTX = companyBapi.GetValue("MAKTX").ToString(); //获取品名
DataTable dt = new DataTable(); //新建表格 dt.Columns.Add("品号"); //表格添加一列 for (int i = 0; i < table.RowCount; i++) { } table.CurrentIndex = i; //当前内表的索引行 DataRow dr = dt.NewRow(); dr[0] = table.GetString("MATNR"); //获取表格的某行某列的值 dt.Rows.Add(dr); //填充该表格的值 if (MATNR == "") { } for (int i = 0; i < dt.Rows.Count; i++) { } this.comboBox1.Items.Add(dt.Rows[i][0].ToString()); //填充下拉框 this.label1.Text = MAKTX; //显示品名 prd = null; repo = null; } //登陆 SAP 前的准备工作 public class MyBackendConfig : IDestinationConfiguration { public RfcConfigParameters GetParameters(String destinationName) { if (" ".Equals(destinationName)) { RfcConfigParameters parms = new RfcConfigParameters(); parms.Add(RfcConfigParameters.AppServerHost, ""); //SAP 主机 IP parms.Add(RfcConfigParameters.SystemNumber, "0"); //SAP 实例 parms.Add(RfcConfigParameters.User, ""); //用户名 parms.Add(RfcConfigParameters.Password, ""); //密码 parms.Add(RfcConfigParameters.Client, "888"); // Client
parms.Add(RfcConfigParameters.Language, "ZH"); //登陆语言 return parms; } else return null; } public bool ChangeEventsSupported() { } return false; public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged; } private void Form1_Load(object sender, EventArgs e) { } comboBox1.Items.Clear(); nco(); comboBox1.SelectedIndex = 1; //当下拉框索引变化的时候传递品号进去查询出品名出来 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) MATNR = comboBox1.Text.ToString(); nco(); { } } }
分享到:
收藏