利用NCO 3.0 调用SAP中的函数
簡(jiǎn)介
.Net Connector 3.0,簡(jiǎn)稱 Nco3.0。Nco3.0 是 SAP 針對(duì) .net 平臺(tái)提供的編程接口,由 Nco1.0/Nco2.0 演變而來(lái)。如果使用 .net 平臺(tái)編程,推薦使用 NCo3.0。3.0 版與之前1.0/2.0 版本比較,不管是 API 還是架構(gòu),都重新設(shè)計(jì)過(guò),也借鑒了 Jco3.0 的設(shè)計(jì),所以相對(duì)來(lái)說(shuō)更為成熟,也為程序員提供更好的控制性和方便性。
.Net connector 3.0 下載和安裝
下載地址:NCO 3.0
安裝無(wú)非就是放了幾個(gè)DLL, 選擇安裝目錄,安裝后,可以看到目錄下有這幾個(gè)文件,如下圖所示:
? ? ? ? ??
?
新建一個(gè)WinForm程序,引用兩個(gè)DLL:sapnco.dll 和 sapnco_utils.dll,如下圖所示:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?根據(jù)下圖中SAP的配置,配置C#代碼:
? ?
?
首先修改App.config文件中的代碼,在configuration節(jié)點(diǎn)下增加如下配置:
<configSections><sectionGroup name="SAP.Middleware.Connector"><sectionGroup name="ClientSettings"><section name="DestinationConfiguration" type="SAP.Middleware.Connector.RfcDestinationConfiguration,sapnco"/></sectionGroup></sectionGroup></configSections><SAP.Middleware.Connector><ClientSettings><DestinationConfiguration><destinations><add NAME="Conn" USER="15970" PASSWD="369369" CLIENT="410" SYSNR="00" ASHOST="192.168.1.221" LANG="ZH" GROUP="PUBLIC" MAX_POOL_SIZE="10"></add></destinations></DestinationConfiguration></ClientSettings></SAP.Middleware.Connector>然后在測(cè)試的Form中增加如下圖的代碼:?
public partial class Form1 : Form{private RfcDestination _rfcDestination = null;public DataTable dtr = new DataTable();public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){ RegisterDestination();MyInvokeRFCFunctionGetCompanyID();}public void RegisterDestination() //注冊(cè)客戶端{(lán)try{if (_rfcDestination == null){_rfcDestination = RfcDestinationManager.GetDestination("Conn");}}catch (Exception ex){MessageBox.Show(ex.Message);}}public string MyInvokeRFCFunctionGetCompanyID(){IRfcFunction function = null;string str = string.Empty;try{function = _rfcDestination.Repository.CreateFunction("Z_MES_MATQTY_LIST");//調(diào)用服務(wù)器函數(shù)function.SetValue("E_BUKRS","1001");//傳入?yún)?shù)function.SetParameterActive(0, true);function.Invoke(_rfcDestination);//執(zhí)行服務(wù)器調(diào)用的函數(shù)IRfcTable myrfcTable = function.GetTable("ET_ITEM");//rfc server function 返回值table結(jié)構(gòu)名稱int liElement = 0;for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++){RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);dtr.Columns.Add(metadata.Name);//循環(huán)創(chuàng)建列}foreach (IRfcStructure dr in myrfcTable)//循環(huán)table結(jié)構(gòu)表{DataRow row = dtr.NewRow();//創(chuàng)建新行for (liElement = 0; liElement <= myrfcTable.ElementCount - 1; liElement++){RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);row[metadata.Name] = dr.GetString(metadata.Name).Trim();}dtr.Rows.Add(row);}this.dataGridView1.DataSource = dtr;}catch (Exception ex){MessageBox.Show(ex.ToString());}return str;}}點(diǎn)擊查詢按鈕即可得出結(jié)果。?
?
?
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的利用NCO 3.0 调用SAP中的函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 认识和选购显卡
- 下一篇: 如何发布.Net MVC 网站项目(攻略