public class SapClass
{
/// <summary>
///
/// </summary>
/// <param
name="fphm">发票号码</param>
/// <param
name="fprq">发票开票日期</param>
/// <param
name="fkf">付款方</param>
/// <param name="fxqd">分销渠道
</param>
public DataTable nco(string fphm, DateTime fprq,
string fkf, char fxqd)
{
//MyBackendConfig config = new MyBackendConfig();
IDestinationConfiguration ID = new MyBackendConfig();
RfcDestinationManager.RegisterDestinationConfiguration(ID);
RfcDestination prd = RfcDestinationManager.GetDestination(PlatRunning.Global.AppSettings.GetValue("SapName"));//SAP系统标识
DataTable dt = nco(prd, fphm, fprq, fkf, fxqd);
RfcDestinationManager.UnregisterDestinationConfiguration(ID);
return dt;
}
/// <summary>
/// SAPTOJS
///
</summary>
/// <param name="prd"></param>
/// <param name="fphm"></param>
/// <param
name="fprq"></param>
/// <param
name="fkf"></param>
/// <param
name="fxqd"></param>
private DataTable nco(RfcDestination
prd, string fphm, DateTime fprq, string fkf, char fxqd)
{
RfcRepository repo = null;
try
{
repo = prd.Repository;
}
catch (Exception
ex)
{
throw (ex);
}
IRfcFunction companyBapi =
repo.CreateFunction("ZSD_SY_FUC_SAPTOJS");
//调用函数名
//设置Import的参数
companyBapi.SetValue("VBELN", fphm);
companyBapi.SetValue("ERDAT", fprq);
companyBapi.SetValue("KUNRG", fkf);
companyBapi.SetValue("ZBJ",
fxqd);
companyBapi.Invoke(prd); //执行函数
IRfcTable table = companyBapi.GetTable("IT_JS_EXPORT");
//获取相应的内表IT_JS_EXPORT
//提前实例化一个空的表结构处理
DataTable dt =
CreateSapToJSTable();
for (int i = 0; i < table.Count;
i++)
{
table.CurrentIndex = i;
DataRow dr = dt.NewRow();
dr["fxqd"] =
table[i].GetString("VTWEG");
dr["fphm"] =
table[i].GetString("VBELN");
dr["fphh"] =
table[i].GetString("POSNR");
dr["fpcjsj"] =
table[i].GetString("ERDAT");
dr["khdm"] =
table[i].GetString("KUNRG");
dr["khmc"] =
table[i].GetString("NAME");
dr["khdzch"] =
table[i].GetString("STRAS");
dr["sapddh"] =
table[i].GetString("AUBEL");
dr["khddh"] =
table[i].GetString("BSTKD");
dr["sapwlh"] =
table[i].GetString("MATNR");
dr["khwlh"] =
table[i].GetString("KDMAT");
dr["spmc"] =
table[i].GetString("ARKTX");
dr["kpm"] =
table[i].GetString("TEXT");
dr["jldw"] =
table[i].GetString("VRKME");
dr["sl"] =
table[i].GetString("FKIMG");
dr["bb"] =
table[i].GetString("WAERK");
dr["dj"] =
table[i].GetString("KBETR");
dr["jgdw"] =
table[i].GetString("KPEIN");
dr["zj"] =
table[i].GetString("NETWR");
dr["shl"] =
table[i].GetString("MWSK1");
dr["se"] =
table[i].GetString("MWSBP");
dr["myxz"] =
table[i].GetString("KTGRM");
dt.Rows.Add(dr);
}
return dt;
}
/// <summary>
///
///
</summary>
/// <param
name="sapfph">sap发票号</param>
/// <param
name="qtfph">生成发票号</param>
public DataTable nco(string
sapfph, string qtfph)
{
//MyBackendConfig config = new
MyBackendConfig();
IDestinationConfiguration ID = new
MyBackendConfig();
RfcDestinationManager.RegisterDestinationConfiguration(ID);
RfcDestination prd =
RfcDestinationManager.GetDestination(PlatRunning.Global.AppSettings.GetValue("SapName"));//SAP系统标识
DataTable
dt = nco(prd, sapfph, qtfph);
RfcDestinationManager.UnregisterDestinationConfiguration(ID);
return dt;
}
/// <summary>
/// JSTOSAP
///
</summary>
/// <param name="prd"></param>
/// <param name="sapfph"></param>
/// <param
name="qtfph"></param>
private DataTable nco(RfcDestination
prd, string sapfph, string qtfph)
{
DataTable dt =
WriteTableToSAP(prd, sapfph, qtfph);
return dt;
}
#region 写回数据到SAP
private DataTable
WriteTableToSAP(RfcDestination rfcDest, string sapfph, string qtfph)
{
RfcRepository repo = rfcDest.Repository;
IRfcFunction funBapi = repo.CreateFunction("ZSD_SY_FUC_JSTOSAP");
//调用函数名
IRfcTable tblROF = funBapi.GetTable("IT_JSTOSAP");
tblROF.Clear();
tblROF.Insert();
tblROF.CurrentRow.SetValue("VBELN", sapfph);
tblROF.CurrentRow.SetValue("JSVBELN", qtfph);
funBapi.SetValue("IT_JSTOSAP", tblROF);
funBapi.Invoke(rfcDest);
//引用回传结果
IRfcTable ReturnTable =
funBapi.GetTable("IT_RETURN");
DataTable dtReturn =
ReturnMessage();
for (int i = 0; i < ReturnTable.Count;
i++)
{
ReturnTable.CurrentIndex = i;
DataRow dr = dtReturn.NewRow();
dr["isSuccess"] =
ReturnTable[i].GetString("TYPE");
dr["ReturnMessage"] =
ReturnTable[i].GetString("MESSAGE");
dtReturn.Rows.Add(dr);
}
return dtReturn;
}
#endregion
#region 接口参数
public class
MyBackendConfig : IDestinationConfiguration
{
public
RfcConfigParameters GetParameters(String destinationName)
{
if ("DEV".Equals(destinationName))
{
string strtemp = string.Empty;
RfcConfigParameters parms = new RfcConfigParameters();
parms.Add(RfcConfigParameters.AppServerHost,
"192.168.0.122");//SAP主机IP
parms.Add(RfcConfigParameters.SystemNumber,
"00");//SAP实例
parms.Add(RfcConfigParameters.User,
"SYRFC");//用户名
parms.Add(RfcConfigParameters.Password,
"123456"); //密码
parms.Add(RfcConfigParameters.Client, "710");//
Client
parms.Add(RfcConfigParameters.Language,
"ZH"); //登陆语言
parms.Add(RfcConfigParameters.PoolSize, "5");
parms.Add(RfcConfigParameters.MaxPoolSize, "10");
parms.Add(RfcConfigParameters.IdleTimeout, "60");
return parms;
}
else
return null;
}
public bool ChangeEventsSupported()
{
return false;
}
public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;
}
#endregion
public DataTable CreateSapToJSTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("fxqd");
//分销渠道
dt.Columns.Add("fphm");//发票号码
dt.Columns.Add("fphh");//发票行号
dt.Columns.Add("fpcjsj");//发票创建时间
dt.Columns.Add("khdm");//客户代码
dt.Columns.Add("khmc");//客户名称
dt.Columns.Add("khdzch");//客户地址(中文)
dt.Columns.Add("sapddh");//sap订单号
dt.Columns.Add("khddh");//客户订单号
dt.Columns.Add("sapwlh");//sap物料号
dt.Columns.Add("khwlh");//客户物料号
dt.Columns.Add("spmc");//商品名称
dt.Columns.Add("kpm");//开票名
dt.Columns.Add("jldw");//计量单位
dt.Columns.Add("sl");//数量
dt.Columns.Add("bb");//币别
dt.Columns.Add("dj");//含税单价
dt.Columns.Add("jgdw");//价格单位
dt.Columns.Add("zj");//总价
dt.Columns.Add("shl");//税率
dt.Columns.Add("se");//税额
dt.Columns.Add("myxz");//贸易性质
return
dt;
}
public DataTable ReturnMessage()
{
DataTable dt = new DataTable();
dt.Columns.Add("isSuccess");
//成功与否
dt.Columns.Add("ReturnMessage");//Message
return
dt;
}
}
C#调用sap接口及返回数据到sap,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/JohnnyBao/p/3745000.html