使用 SAP .NET Connector 3.0 可向SAP輸出資料,步驟如下:
■ 新增SAP .NET Connector 3.0 dll
■ 引用dll
■ 調用RFC輸出資料
通常都在企業庫中封裝SAP輸出,再在流程中調用企業庫API。
■ 新增SAP .NET Connector 3.0 dll
■ 引用dll
■ 調用RFC輸出資料
新增SAP .NET Connector引用後,即可調用RFC輸出資料。
//SAP.cs
using System;
using System.Collections.Generic;
using System.Text;
using SAP.Middleware.Connector;
using BPM.Server;
namespace MyBPM
{
public class SAP
{
public static void DataToSap(string MCode, string MDesc, string MUint)
{
MyBackendConfig cfg = new MyBackendConfig();
RfcDestination dev = RfcDestinationManager.GetDestination(cfg.GetParameters("DEV"));//SAP系統標識
RfcRepository repo = dev.Repository;
IRfcFunction companyBapi = repo.CreateFunction("ZRFC_CREATE_MATERIAL"); //指定RFC名稱
companyBapi.SetValue("matnr", MCode);// "MM01"
companyBapi.SetValue("maktx", MDesc);// "自建物料1"
companyBapi.SetValue("meins", MUint);// "M"
companyBapi.Invoke(dev); //開始調用執行
IRfcStructure Returntable = companyBapi.GetStructure("Return");
if (!Returntable.GetString("type").Equals("S"))
{
throw new Exception("回寫失敗,錯誤資訊:" + Returntable.GetString("message"));
}
}
}
}
// MyBackendConfig.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Configuration;
using System.Xml;
using System.IO;
using SAP.Middleware.Connector;
namespace MyBPM
{
class MyBackendConfig :IDestinationConfiguration
{
public RfcConfigParameters GetParameters(String destinationName)
{
if ("DEV".Equals(destinationName))
{
RfcConfigParameters parms = new RfcConfigParameters();
parms.Add(RfcConfigParameters.AppServerHost, "demo.smartsoft.com.tw");//SAP主機IP
parms.Add(RfcConfigParameters.SystemNumber, "00");//SAP實例
parms.Add(RfcConfigParameters.SystemID, "dev");
parms.Add(RfcConfigParameters.User, "ddic");//用戶名
parms.Add(RfcConfigParameters.Password, "saperpecc6");//密碼
parms.Add(RfcConfigParameters.Client, "001");// Client
//parms.Add(RfcConfigParameters.SAPRouter, "/H/202.82.130.200/S/3299/W/rmsap/H/");
//parms.Add(RfcConfigParameters.Language, "EN");//登錄語言
parms.Add(RfcConfigParameters.PoolSize, "5");
return parms;
}
else
return null;
}
public bool ChangeEventsSupported()
{
return false;
}
public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;
}
}