CSharp/C#用SAP官方NET的RFC类库调用SAP函数 > RFC_READ_TABLE

原创 Yearn  2021-02-04 09:01:03  阅读 337 次 评论 0 条

因工作需要使用C#调用SAP系统函数进行数据交互,  留下个笔记记录一下调用过程和参数传递过程.

C#调用SAP需要用到 SAP NCO  类库, 可以到SAP官网下载 :  https://support.sap.com/en/product/connectors.html

SAP官网下载需要有SAP官网的账号, 也可以用我提供的网盘连接下载 : https://yfyun.lanzous.com/iOgQjlaht9g

也可以到CSDN下载 : https://download.csdn.net/download/u012168125/15043034


// 在引用里面添加类库  sapnco 和 sapnco_utils
// 引用以下命名空间
using SAP.Middleware.Connector;
void MainFormLoad(object sender, EventArgs e)
{
	RfcConfigParameters parameters  = new RfcConfigParameters();
	parameters.Add(RfcConfigParameters.SystemID, "QA4"); //系统ID标识
	parameters.Add(RfcConfigParameters.SystemNumber, "00"); //实例编号
	parameters.Add(RfcConfigParameters.User, "SAPUSER"); //SAP用户名
	parameters.Add(RfcConfigParameters.Password, "PASSWORD"); //用户密码
	parameters.Add(RfcConfigParameters.Client, "820"); //集团号, 登录SAP系统后在菜单[ 系统 > 状态 ] 可以看到集团号
	parameters.Add(RfcConfigParameters.Language, "ZH"); //登录语言 ZH EN
	parameters.Add(RfcConfigParameters.PoolSize, "5");
	parameters.Add(RfcConfigParameters.MaxPoolSize, "10");
	parameters.Add(RfcConfigParameters.IdleTimeout, "30");
	parameters.Add(RfcConfigParameters.AppServerHost, "192.168.1.10"); //SAP服务器地址
	parameters.Add(RfcConfigParameters.Name, "QA4"); //名称自定义
	
	RfcDestination SapRfcDes = RfcDestinationManager.GetDestination(parameters); //提供登录参数获取RFC目的信息对象  
	RfcRepository SapRfcRep = SapRfcDes.Repository;
	
	IRfcFunction myfun = SapRfcRep.CreateFunction("RFC_READ_TABLE");
	myfun.SetValue("QUERY_TABLE", "EKKO");//SAP的传入参数
	myfun.SetValue("ROWCOUNT", "100");//SAP的传入参数
	myfun.SetValue("DELIMITER", "|");//SAP的传入参数
	
	IRfcTable IgetTable = myfun.GetTable("FIELDS"); //SAP的传入参数 TABLE
	IgetTable.Clear();
	IgetTable.Append(5);
	
	IgetTable.CurrentIndex = 0;
	IgetTable.SetValue(0,"EBELN");
	
	IgetTable.CurrentIndex = 1;
	IgetTable.SetValue(0,"BUKRS");
	
	IgetTable.CurrentIndex = 2;
	IgetTable.SetValue(0,"BSTYP");
	
	IgetTable.CurrentIndex = 3;
	IgetTable.SetValue(0,"AEDAT");
	
	IgetTable.CurrentIndex = 4;
	IgetTable.SetValue(0,"BSART");
	
	myfun.Invoke(SapRfcDes); //执行SAP函数
	
	
	IgetTable = myfun.GetTable("DATA");

	 DataTable dt = new DataTable();
	 dt.Columns.Add("EBELN");
	 dt.Columns.Add("BUKRS");
	 dt.Columns.Add("BSTYP");
	 dt.Columns.Add("AEDAT");
	 dt.Columns.Add("BSART");

	 for (int i = 0; i < IgetTable.Count; i++)
	 {
		 IgetTable.CurrentIndex = i;
		 DataRow dr = dt.NewRow();
		 string[] itab = IgetTable.GetString(0).Split('|');
		 for (int k = 0; k < itab.Length; k++) {
			 dr[k] = itab[k];
		 }
		 dt.Rows.Add(dr);
	 }
	 
	 dataGridView1.DataSource = dt;
}


打赏
本文地址:https://www.yfyun.xin/index.php/post/38.html
版权声明:本文为原创文章,版权归 Yearn 所有,欢迎分享本文,转载请保留出处!
NEXT:已经是最新一篇了

发表评论


表情

还没有留言,还不快点抢沙发?