精华内容
下载资源
问答
  • C#调用SAP接口

    热门讨论 2012-06-15 09:29:16
    此程序是基于DEV控件,使用C#调用SAP接口,运行环境VS2008。
  • 实现C#访问SAP数据接口传输数据的实例,在工业领域十分实用。解决的数据传输实时性的问题。需要的朋友请直接下载!
  • C#调用sap接口及返回数据到SAP

    千次阅读 2016-02-03 11:38:23
    [摘要]本文是对C#调用sap接口及返回数据到sap的讲解,对学习C#编程技术有所帮助,与大家分享。 public class SapClass { /// /// /// /// 发票号码 /// 发票开票日期 /// 付款方 /// 分销渠道 public DataTable ...

    [摘要]本文是对C#调用sap接口及返回数据到sap的讲解,对学习C#编程技术有所帮助,与大家分享。

    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;
    }
    }


    展开全文
  • //////////////////////“HJJDB_TRC02”为SAP中表名 IRfcTable irfcTable = myfun.GetTable("ITAB");////////////////“ITAB”为SAP输入值 for (int i = 0; i ; i++) { irfcTable.Insert(); irfcTable.CurrentRow....

                    DataTable dt ;

                    RfcDestination dest = SapManager.getRfcDestination();

                    RfcRepository rfcrep = dest.Repository;
                    IRfcFunction myfun = null;
                    myfun = rfcrep.CreateFunction("HJJDB_TRC02");//“HJJDB_TRC02”为SAP中表名
                    IRfcTable irfcTable = myfun.GetTable("ITAB");“ITAB”为SAP输入值

                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        irfcTable.Insert();
                        irfcTable.CurrentRow.SetValue("FHJD", dt.Rows[i]["11111"]);//前面是SAP字段,后面是保存的string
                        irfcTable.CurrentRow.SetValue("DJIDS", dt.Rows[i]["22222222"]);

                        irfcTable.CurrentRow.SetValue("GOKGO", dt.Rows[i]["3333333"]);
                        irfcTable.CurrentRow.SetValue("VOFOL", dt.Rows[i]["4444444"]);
                    }
                    myfun.SetValue("ITAB", irfcTable);
                    myfun.Invoke(dest);//保存完毕

    展开全文
  • 以下是调用SAP的例子: 以下是SAP的工具类: using SAP.Middleware.Connector; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; //using Syst...

    需要引入以下两个dll来访问SAP

    以下是调用SAP的例子:

    以下是SAP的工具类:

    using SAP.Middleware.Connector;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    //using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WLCGSystem.Util
    {
        public class SapCon
        {
            //登陆SAP前的准备工作
            public class MyBackendConfig : IDestinationConfiguration
            {
                public RfcConfigParameters GetParameters(String sapid)
                {
                    int client = int.Parse(sapid);
                    if (client >= 300 && client < 700)
                    {
                        RfcConfigParameters parms = new RfcConfigParameters();
                        parms.Add(RfcConfigParameters.AppServerHost, "10.0.0.20");   //SAP主机IP
                        parms.Add(RfcConfigParameters.SystemNumber, "00");  //SAP实例
                        parms.Add(RfcConfigParameters.User, "sap*");  //用户名
                        parms.Add(RfcConfigParameters.Password, "2015zhidu");  //密码
                        //parms.Add(RfcConfigParameters.User, "itman06");  //用户名
                        //parms.Add(RfcConfigParameters.Password, "654321");  //密码
                        parms.Add(RfcConfigParameters.Client, sapid);  // Client
                        parms.Add(RfcConfigParameters.Language, "ZH");  //登陆语言
                        parms.Add(RfcConfigParameters.PoolSize, "5");
                        parms.Add(RfcConfigParameters.MaxPoolSize, "10");
                        parms.Add(RfcConfigParameters.IdleTimeout, "60");
                        return parms;
                    }
    
                    if (client >= 700 && client < 800)
                    {
                        RfcConfigParameters parms = new RfcConfigParameters();
                        parms.Add(RfcConfigParameters.AppServerHost, "10.0.0.20");   //SAP主机IP
                        parms.Add(RfcConfigParameters.SystemNumber, "01");  //SAP实例
                        parms.Add(RfcConfigParameters.User, "ITMAN00");
                        parms.Add(RfcConfigParameters.Password, "2013itbsap");
                        //parms.Add(RfcConfigParameters.User, "sap*");  //用户名
                        //parms.Add(RfcConfigParameters.Password, "2015zhidu");  //密码
                        parms.Add(RfcConfigParameters.Client, sapid);  // Client
                        parms.Add(RfcConfigParameters.Language, "ZH");  //登陆语言
                        parms.Add(RfcConfigParameters.PoolSize, "5");
                        parms.Add(RfcConfigParameters.MaxPoolSize, "10");
                        parms.Add(RfcConfigParameters.IdleTimeout, "60");
                        return parms;
                    }
                    if (client == 800)
                    {
                        RfcConfigParameters parms = new RfcConfigParameters();
                        parms.Add(RfcConfigParameters.AppServerHost, "10.0.0.24");   //SAP主机IP
                        parms.Add(RfcConfigParameters.SystemNumber, "00");  //SAP实例
    
                        parms.Add(RfcConfigParameters.User, "sap*");  //用户名
                        parms.Add(RfcConfigParameters.Password, "2015zhidu");  //密码
                        //parms.Add(RfcConfigParameters.User, "CWZX00");  //用户名
                        //parms.Add(RfcConfigParameters.Password, "cwzx00");  //密码
                        parms.Add(RfcConfigParameters.Client, sapid);  // 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;
            }
    
    
            //Dictionary<string, string> RfcParIn是传入RFC的参数名及值
            //RfcOutTableFields是RFC传出TABLE的列名数组
            //sapid 是800,300,700等
            public static DataTable GetDT(string sapid, string rfc, string rfctable, Dictionary<string, string> RfcParIn, string[] RfcOutTableFields)
            {
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction(rfc);   //调用函数名
                    DataTable dt = new DataTable();
                    for (int i = 0; i < RfcOutTableFields.Length; i++)
                    {
                        dt.Columns.Add(RfcOutTableFields[i]); //表格添加一列
    
                    }
                    foreach (KeyValuePair<string, string> kvp in RfcParIn)
                    {
                        RfcFun.SetValue(kvp.Key, kvp.Value);
                    }
                    RfcFun.Invoke(prd);   //执行函数
                    IRfcTable table = RfcFun.GetTable(rfctable);  //获取相应的品号内表
    
                    DataRow dr;
                    if (table.RowCount > 0)
                    {
                        for (int i = 0; i < table.RowCount; i++)
                        {
                            table.CurrentIndex = i;
                            dr = dt.NewRow();
                            for (int a = 0; a < RfcOutTableFields.Length; a++)
                            {
                                dr[RfcOutTableFields[a]] = table.CurrentRow.GetString(RfcOutTableFields[a]).ToString();
                            }
                            dt.Rows.Add(dr);
                        }
                    }
    
                    prd = null;
                    repo = null;
                    return dt;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("读取SAP数据失败\n" + ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    throw ex;
                }
            }
    
            //Dictionary<string, string> RfcParIn是传入RFC的参数名及值
            //RfcOutTableFields是RFC传出TABLE的列名数组
            //sapid 是800,300,700等
            public static DataTable GetDT(string sapid, string rfc, string rfctable, DataTable RfcParIn, string[] RfcOutTableFields)
            {
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction(rfc);   //调用函数名
                    DataTable dt = new DataTable();
                    for (int i = 0; i < RfcOutTableFields.Length; i++)
                    {
                        dt.Columns.Add(RfcOutTableFields[i]); //表格添加一列
    
                    }
                    IRfcTable rc = RfcFun.GetTable(RfcParIn.TableName);
                    foreach (DataRow row in RfcParIn.Rows)
                    {
                        rc.Insert();
                        for (int i = 0; i < RfcParIn.Columns.Count; i++)
                        {
                            rc.CurrentRow.SetValue(RfcParIn.Columns[i].ColumnName, row[i].ToString());
                        }
                    }
                    RfcFun.Invoke(prd);   //执行函数
                    IRfcTable table = RfcFun.GetTable(rfctable);  //获取相应的品号内表
                    DataRow dr;
                    if (table.RowCount > 0)
                    {
                        for (int i = 0; i < table.RowCount; i++)
                        {
                            table.CurrentIndex = i;
                            dr = dt.NewRow();
                            for (int a = 0; a < RfcOutTableFields.Length; a++)
                            {
                                dr[RfcOutTableFields[a]] = table.CurrentRow.GetString(RfcOutTableFields[a]).ToString();
                            }
                            dt.Rows.Add(dr);
                        }
                    }
    
                    prd = null;
                    repo = null;
                    return dt;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("读取SAP数据失败\n" + ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    throw ex;
                }
            }
    
            public static DataSet GetDS(string sapid, string rfc, List<string> rfcTables, Dictionary<string, string> RfcParIn, List<string[]> RfcOutTableFields)
            {
                IDestinationConfiguration ID = new MyBackendConfig();
                RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                RfcDestination prd = RfcDestinationManager.GetDestination(sapid);
    
    
                RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                RfcRepository repo = prd.Repository;
                IRfcFunction RfcFun = repo.CreateFunction(rfc);   //调用函数名
                foreach (KeyValuePair<string, string> kvp in RfcParIn)
                {
                    RfcFun.SetValue(kvp.Key, kvp.Value); //设置Import的参数
                }
                RfcFun.Invoke(prd);   //执行函数
    
                DataSet ds = new DataSet();
                if (rfcTables.Count == RfcOutTableFields.Count)
                {
                    for (int i = 0; i < rfcTables.Count; i++)
                    {
                        ds.Tables.Add(GetDT(RfcFun, rfcTables[i], RfcOutTableFields[i]));
                    }
                }
    
                return ds;
            }
    
    
            public static DataTable GetDT(IRfcFunction RfcFun, string rfctable, string[] RfcOutTableFields)
            {
                IRfcTable table = RfcFun.GetTable(rfctable);  //获取相应的品号内表
                DataTable dt = new DataTable();
                foreach (string s in RfcOutTableFields)
                {
                    dt.Columns.Add(s, typeof(string));
                }
                for (int i = 0; i < table.RowCount; i++)
                {
                    DataRow dr = dt.NewRow();
                    table.CurrentIndex = i;
                    foreach (string s in RfcOutTableFields)
                    {
                        dr[s] = table.CurrentRow.GetString(s).ToString();
                    }
                    dt.Rows.Add(dr);
                }
                return dt;
            }
    
            public static IRfcFunction GetRfcFun(string sapid, string rfc, Dictionary<string, string> RfcParIn)
            {
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction(rfc);   //调用函数名
                    foreach (KeyValuePair<string, string> kvp in RfcParIn)
                    {
                        RfcFun.SetValue(kvp.Key, kvp.Value);
                    }
                    RfcFun.Invoke(prd);   //执行函数
                    return RfcFun;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("读取SAP数据失败", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    throw ex;
                }
            }
    
            public static IRfcFunction GetRfcFun(string sapid, string rfc, DataTable RfcParIn)
            {
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction(rfc);   //调用函数名
                    IRfcTable rc = RfcFun.GetTable(RfcParIn.TableName);
                    foreach (DataRow row in RfcParIn.Rows)
                    {
                        rc.Insert();
                        for (int i = 0; i < RfcParIn.Columns.Count; i++)
                        {
                            rc.CurrentRow.SetValue(RfcParIn.Columns[i].ColumnName, row[i].ToString());
                        }
                    }
                    RfcFun.Invoke(prd);   //执行函数
                    return RfcFun;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("读取SAP数据失败", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    throw ex;
                }
            }
    
            public static string GetDZNumber(DataTable IM_TAB, DataTable dt2, DataTable dt3, ref DataTable dt4, ref DataTable dt5, Dictionary<string, string> RfcParIn)
            {
                //DateTime t = BLL.ServerTime.GetServerTime();
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(Util.Configure.sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction("Z_RFC_PP_0000620_02");   //调用函数名
    
    
                    IRfcTable rt = RfcFun.GetTable("T_TIMETICKETS");
                    foreach (DataRow row in IM_TAB.Rows)
                    {
                        rt.Insert();
                        for (int i = 0; i < IM_TAB.Columns.Count; i++)
                        {
                            rt.CurrentRow.SetValue(IM_TAB.Columns[i].ColumnName, row[i].ToString().Trim());
                        }
                    }
    
                    rt = RfcFun.GetTable("T_GOODSMOVEMENTS");
                    foreach (DataRow row in dt2.Rows)
                    {
                        rt.Insert();
                        for (int i = 0; i < dt2.Columns.Count; i++)
                        {
                            rt.CurrentRow.SetValue(dt2.Columns[i].ColumnName, row[i] == null ? "" : row[i].ToString().Trim());
                        }
                    }
    
                    rt = RfcFun.GetTable("T_LINK_CONF_GOODSMOV");
                    foreach (DataRow row in dt3.Rows)
                    {
                        rt.Insert();
                        for (int i = 0; i < dt3.Columns.Count; i++)
                        {
                            rt.CurrentRow.SetValue(dt3.Columns[i].ColumnName, row[i] == null ? "" : row[i].ToString().Trim());
                        }
                    }
    
    
                    foreach (KeyValuePair<string, string> kvp in RfcParIn)
                    {
                        RfcFun.SetValue(kvp.Key, kvp.Value);
                    }
    
    
                    RfcFun.Invoke(prd);   //执行函数
    
    
                    IRfcTable table = RfcFun.GetTable("T_RETURN_DETAIL");  //获取相应的品号内表
                    DataRow dr;
                    if (table.RowCount > 0)
                    {
                        for (int i = 0; i < table.RowCount; i++)
                        {
                            table.CurrentIndex = i;
                            dr = dt4.NewRow();
                            for (int a = 0; a < dt4.Columns.Count; a++)
                            {
                                dr[dt4.Columns[a].ColumnName] = table.CurrentRow.GetString(dt4.Columns[a].ColumnName).ToString();
                            }
                            dt4.Rows.Add(dr);
                        }
                    }
    
                    table = RfcFun.GetTable("T_COGI");  //获取相应的品号内表
    
                    if (table.RowCount > 0)
                    {
                        for (int i = 0; i < table.RowCount; i++)
                        {
                            table.CurrentIndex = i;
                            dr = dt5.NewRow();
                            for (int a = 0; a < dt5.Columns.Count; a++)
                            {
                                dr[dt5.Columns[a].ColumnName] = table.CurrentRow.GetString(dt5.Columns[a].ColumnName).ToString();
                            }
                            dt5.Rows.Add(dr);
                        }
                    }
    
                    prd = null;
                    repo = null;
                    return "";
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
    
    
            public static string GetDZNumber(DataTable IM_TAB, DataTable dt2, DataTable dt3,ref DataTable dt4,ref DataTable dt5)
            {
                //DateTime t = BLL.ServerTime.GetServerTime();
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(Util.Configure.sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction("Z_RFC_PP_0000620_02");   //调用函数名
    
    
                    IRfcTable rt = RfcFun.GetTable("T_TIMETICKETS");
                    foreach (DataRow row in IM_TAB.Rows)
                    {
                        rt.Insert();
                        for (int i = 0; i < IM_TAB.Columns.Count; i++)
                        {
                            rt.CurrentRow.SetValue(IM_TAB.Columns[i].ColumnName, row[i].ToString());
                        }
                    }
    
                    rt = RfcFun.GetTable("T_GOODSMOVEMENTS");
                    foreach (DataRow row in dt2.Rows)
                    {
                        rt.Insert();
                        for (int i = 0; i < dt2.Columns.Count; i++)
                        {
                            rt.CurrentRow.SetValue(dt2.Columns[i].ColumnName, row[i] == null ? "" : row[i].ToString());
                        }
                    }
    
                    rt = RfcFun.GetTable("T_LINK_CONF_GOODSMOV");
                    foreach (DataRow row in dt3.Rows)
                    {
                        rt.Insert();
                        for (int i = 0; i < dt3.Columns.Count; i++)
                        {
                            rt.CurrentRow.SetValue(dt3.Columns[i].ColumnName, row[i] == null ? "" : row[i].ToString());
                        }
                    }
    
                    RfcFun.Invoke(prd);   //执行函数
    
    
                    IRfcTable table = RfcFun.GetTable("T_RETURN_DETAIL");  //获取相应的品号内表
                    DataRow dr;
                    if (table.RowCount > 0)
                    {
                        for (int i = 0; i < table.RowCount; i++)
                        {
                            table.CurrentIndex = i;
                            dr = dt4.NewRow();
                            for (int a = 0; a < dt4.Columns.Count; a++)
                            {
                                dr[dt4.Columns[a].ColumnName] = table.CurrentRow.GetString(dt4.Columns[a].ColumnName).ToString();
                            }
                            dt4.Rows.Add(dr);
                        }
                    }
    
                    table = RfcFun.GetTable("T_COGI");  //获取相应的品号内表
                    
                    if (table.RowCount > 0)
                    {
                        for (int i = 0; i < table.RowCount; i++)
                        {
                            table.CurrentIndex = i;
                            dr = dt5.NewRow();
                            for (int a = 0; a < dt5.Columns.Count; a++)
                            {
                                dr[dt5.Columns[a].ColumnName] = table.CurrentRow.GetString(dt5.Columns[a].ColumnName).ToString();
                            }
                            dt5.Rows.Add(dr);
                        }
                    }
    
                    prd = null;
                    repo = null;
                    return "";
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
    
    
    
            public static string GetDZNumber(DataTable IM_TAB, ref DataTable dt1, Dictionary<string, string> RfcParIn)
            {
                //DateTime t = BLL.ServerTime.GetServerTime();
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(Util.Configure.sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction("Z_RFC_PP_0000620_05");   //调用函数名
    
    
                    IRfcTable rt = RfcFun.GetTable("IM_ITAB");
                    foreach (DataRow row in IM_TAB.Rows)
                    {
                        rt.Insert();
                        for (int i = 0; i < IM_TAB.Columns.Count; i++)
                        {
                            rt.CurrentRow.SetValue(IM_TAB.Columns[i].ColumnName, row[i].ToString());
                        }
                    }
    
    
    
                    foreach (KeyValuePair<string, string> kvp in RfcParIn)
                    {
                        RfcFun.SetValue(kvp.Key, kvp.Value);
                    }
    
    
    
                    RfcFun.Invoke(prd);   //执行函数
    
    
                    IRfcTable table = RfcFun.GetTable("RETURN");  //获取相应的品号内表
                    DataRow dr;
                    if (table.RowCount > 0)
                    {
                        for (int i = 0; i < table.RowCount; i++)
                        {
                            table.CurrentIndex = i;
                            dr = dt1.NewRow();
                            for (int a = 0; a < dt1.Columns.Count; a++)
                            {
                                dr[dt1.Columns[a].ColumnName] = table.CurrentRow.GetString(dt1.Columns[a].ColumnName).ToString();
                            }
                            dt1.Rows.Add(dr);
                        }
                    }
                    prd = null;
                    repo = null;
                    return "";
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
    
    
    
            public static string GetDZNumber(DataTable IM_TAB,ref DataTable dt1)
            {
                //DateTime t = BLL.ServerTime.GetServerTime();
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(Util.Configure.sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction("Z_RFC_PP_0000620_05");   //调用函数名
    
    
                    IRfcTable rt = RfcFun.GetTable("IM_ITAB");
                    foreach (DataRow row in IM_TAB.Rows)
                    {
                        rt.Insert();
                        for (int i = 0; i < IM_TAB.Columns.Count; i++)
                        {
                            rt.CurrentRow.SetValue(IM_TAB.Columns[i].ColumnName, row[i].ToString().Trim());
                        }
                    }               
    
                    RfcFun.Invoke(prd);   //执行函数
    
    
                    IRfcTable table = RfcFun.GetTable("RETURN");  //获取相应的品号内表
                    DataRow dr;
                    if (table.RowCount > 0)
                    {
                        for (int i = 0; i < table.RowCount; i++)
                        {
                            table.CurrentIndex = i;
                            dr = dt1.NewRow();
                            for (int a = 0; a < dt1.Columns.Count; a++)
                            {
                                dr[dt1.Columns[a].ColumnName] = table.CurrentRow.GetString(dt1.Columns[a].ColumnName).ToString();
                            }
                            dt1.Rows.Add(dr);
                        }
                    }             
                    prd = null;
                    repo = null;
                    return "";
                }
                catch (Exception ex)
                {
                    return ex.Message;
                }
            }
    
            public static void GetDS(string sapid, string rfc, DataSet dsIN, ref DataSet dsOut)
            {
                try
                {
                    IDestinationConfiguration ID = new MyBackendConfig();
                    RfcDestinationManager.RegisterDestinationConfiguration(ID);
    
                    RfcDestination prd = RfcDestinationManager.GetDestination(sapid);
    
                    RfcDestinationManager.UnregisterDestinationConfiguration(ID);
    
                    RfcRepository repo = prd.Repository;
                    IRfcFunction RfcFun = repo.CreateFunction(rfc);   //调用函数名
                    foreach (DataTable dt in dsIN.Tables)
                    {
                        IRfcTable rc = RfcFun.GetTable(dt.TableName);
                        foreach (DataRow row in dt.Rows)
                        {
                            rc.Insert();
                            foreach (DataColumn col in dt.Columns)
                            {
                                rc.CurrentRow.SetValue(col.ColumnName, row[col].ToString());
                            }
                        }
                    }
                    RfcFun.Invoke(prd);   //执行函数
                    foreach (DataTable dt in dsOut.Tables)
                    {
                        IRfcTable rc = RfcFun.GetTable(dt.TableName);
                        for (int i = 0; i < rc.RowCount; i++)
                        {
                            DataRow dr = dt.NewRow();
                            rc.CurrentIndex = i;
                            foreach (DataColumn col in dt.Columns)
                            {
                                dr[col.ColumnName] = rc.CurrentRow.GetString(col.ColumnName).ToString();
                            }
                            dt.Rows.Add(dr);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("读取SAP数据失败", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    throw ex;
                }
            }
    
        }
    }
    

     

    展开全文
  • RfcDestination dest = SapManager.getRfcDestination(); RfcRepository rfcrep = dest.Repository; IRfcFunction myfun = null;...//“2222” 和 “sap字段”都为列名 dt.Rows.Add(dr); } return dt;

    RfcDestination dest = SapManager.getRfcDestination();

                    RfcRepository rfcrep = dest.Repository;
                    IRfcFunction myfun = null;
                    myfun = rfcrep.CreateFunction("ZMJDB_RFC01");


                    myfun.SetValue("ZTZRQ1", “11111”);//检索条件ZTZRQ1 = 11111
                    myfun.SetValue("ZTZRQ2", “2222”);//检索条件ZTZRQ2 = 2222

                    myfun.Invoke(dest);
                    IRfcTable IrfTable = myfun.GetTable("ITAB");


                    DataTable dt = new DataTable();
                    dt.TableName = "1111";//表名
                    dt.Columns.Add("2222");//添加列
                    DataRow dr;
                    dr = dt.NewRow();
                    for (int i = 0; i < IrfTable.Count; i++)
                    {
                        IrfTable.CurrentIndex = i;
                        dr["2222"] = IrfTable.GetString("sap字段");//“2222” 和 “sap字段”都为列名
                        dt.Rows.Add(dr);
                    }

    return dt;

    展开全文
  • 小弟最近开发一个功能,其中有调用SAP开发的接口做报查询,偶尔查询是报下面的错误,忘大侠指教啊 Connect_PM GWHOST=10.*.*.*, GWSERV=****, SYSNR=00 LOCATION CPIC (TCP/IP) on local host ERROR...
  • #region 接口参数 public class MyBackendConfig : IDestinationConfiguration { public RfcConfigParameters GetParameters(String destinationName) { if ("DEV".Equals(destinationName)) { string ...
  • SAP RFC接口实例代码 C#
  • 这里和大家介绍下C#如果调用SAP接口,从而调用SAP接口函数。 下面先贴出代码。这里我创建的是一个C# WInform程序。用于登录接口测试。界面如下图所示: 这里说明下,对于SAP连接来说,用户名、密码、服务器、...
  • C#调用sap rfc 接口

    千次阅读 2017-10-11 13:24:34
    1、安装sap .net connector 3.0 程序,附件中提供 注意根据自己的环境选择: Compiled with .NET Framework 2.0: sapnco30P_8-20007347.zip:SAP Connector for Microsoft .NET 3.0.8.0 for Windows 32bit (x86) ...
  • C# WINFORM 调用SAP PO的WebService接口 环境:SAP PO 7.50,VS2019 我们有一个SAP PO接口,JK0088,它可以输入用户名,查询用户的事务代码。 我们用SOAPUI测试一下这个接口,OK没有问题: 我们要用...
  • 最近使用C#调用SAP RFC函数,SAP提供了NCO3.0组件。 下载组件安装,之后引用“sapnco.dll”和“sapnco_utils.dll”两个文件。 在程序中 using SAP.Middleware.Connector; 具体看下面代码 使用app.config文件配置...
  • 小弟最近开发一个功能,其中有调用SAP开发的接口做报查询,偶尔查询是报下面的错误,忘大侠指教啊 Connect_PM GWHOST=10.*.*.*, GWSERV=****, SYSNR=00 LOCATION CPIC (TCP/IP) on local hostERROR ...
  • C#调用 Sap Byd Soap 接口文件 WSDL 一.Web 引用模式 1.添加服务引用 2.调用方法 static void Main(string[] args) { Pii.service client =new Pii.service(); client.Credentials = new ...
  • 第一步需要引入相应的dll,如果版本不一致,会出现引用不成功。...第二步 using SAP.Middleware.Connector; 第三步 :编码如下 #region // ERP交互设计开始 kele IDestinationConfiguration ID = new R...
  • 公司使用SAP,并且实施公司做了一些提供报表数据的接口调用,首先说明一下我对SAP不熟悉 但SAP用到的接口信息提供大家参考一下,这些Gateway Service使用的是DCP方式写的,SAP提供数据的协议叫:OData 相关资料...
  • C#通过RFC调用SAP接口系列三,接口程序输入输出结构的调用方法。 using SAP.Middleware.Connector; IDestinationConfiguration ID = new RfcConfig(); RfcDestinationManager....
  • .NET调用SAP内部接口BAPI_BATCH_CREATE时总是报错。调用其他RFC都是正常的。 哪位见过这问题的?帮忙看看哈。现在这谢谢了。 错误信息如下: 转载于:...
  • Sap作为ERP的龙头企业,在企业信息化建设中是有目共睹的,特别是财务、人力、物流等发挥着极大作用,占领着半壁江山,所以与企业系统用SAP软件的接口对接很是普遍,简单介绍一下与SAP接口的一点点儿心得: ...
  • 目录 1.引入dl 2 codeing 2.1 贴一段demo 3 代码解释 3.1 命名空间 ...最近需要和SAP(ERP)做系统接口,学习并搭建了接口...如图所示,C#调用RFC最主要的dll就是这俩个,其他的都不是必要的。这俩个dll分32位和64...
  • C#通过NCO调用SAP BAPI

    2018-11-07 11:46:21
    C#通过NCO组建,直接调用SAP BAPI接口。app.config中配置SAP连接信息,代码中加入调用函数。注意引用的DLL是针对64位操作系统的。
  • 接口不用返回参数进行返回信息的记录。均使用内表对象。譬如:该内表对象有A,B,C,D4个字段,我为内表对象赋值,执行函数,执行之后,无论是成功与否,数据是否满足业务逻辑。都会将A字段进行修改。也就是A字段记录...
  • c#接口调用RFC接口教程系列2,这个使用2.0接口。哈哈,天下武功就是在不断切磋中,锻炼出来的,技术也一样。 string str111 = ""; //物料文件號碼 string str222 = ""; //年度 IDestinationConfiguration ...
  • C#通过RFC调用SAP

    2013-10-17 14:33:00
    using System;using System.Collections.Generic;using SAP.Middleware.Connector;using System.Data;using System.Xml;namespace RFC{ /// /// C#SAP的RFC接口类 /// public class RFCInterface { ...
  • SAP接口编程-RFC系列11:C#语言调用RFC

    千次阅读 2016-02-18 22:37:13
    使用C#语言调用RFC。编程环境:Visual Studio 2012英文版
  • 最近接口项目需要用PB调用SAP的Web Service,研究了PB的Webservice Proxy很久。  第1个问题是SAP的Web Service有身份验证,主程序是PB9开发的,pbsoapclient90.pbd里没有对应函数,说是需要PB10以上,PB11.5经验证...
  • 最近接口项目需要用PB调用SAP的Web Service,研究了PB的Webservice Proxy很久。   但核心问题来了:SAP的Web Service函数中参数实际传输的是Table,也就是结构体数组参数。测试证明,即使PB12.5都对结构体参数的...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

c#调用sap接口

c# 订阅