asp.net c#语言RFC连接SAP

   最近公司导入PDA项目,要求使用浏览器来进行扫描,那么只能做网站服务器了。

由于要连接SAP那么PDA客户端就不能安装SAP客户端了。只是利用服务器连接SAP然后传出资料到客户端页面了

本人在网上上搜索了大量的资料,这个项目终于完成了,以下为源代码,仅供参考。

1.下载SAP的dll:http://files.cnblogs.com/mengxin523/SAP_DotNetConnector3.zip   

2.导入dll到项目中,导入sapnco.dll和sapnco_utils.dll即可

3.源码为下:

using SAP.Middleware.Connector;  //引入

    public void nco(string WorkNo)
    {

        IDestinationConfiguration ID = new MyBackendConfig();

        RfcDestinationManager.RegisterDestinationConfiguration(ID);


        RfcDestination prd = RfcDestinationManager.GetDestination("PRD_000");

        RfcDestinationManager.UnregisterDestinationConfiguration(ID);

        nco(prd, WorkNo);


    }

 

    //登陆SAP前的准备工作
    public class MyBackendConfig : IDestinationConfiguration
    {
        public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;

        public RfcConfigParameters GetParameters(String destinationName)
        {

            if ("PRD_000".Equals(destinationName))
            {

                RfcConfigParameters parms = new RfcConfigParameters();

                parms.Add(RfcConfigParameters.AppServerHost, Constant.SAPIP);   //SAP主机IP

                parms.Add(RfcConfigParameters.SystemNumber, "00");  //SAP实例

                parms.Add(RfcConfigParameters.User, Constant.SAPAcc);  //用户名

                parms.Add(RfcConfigParameters.Password, Constant.SAPPwd);  //密码

                parms.Add(RfcConfigParameters.Client, "888");  // Client

                parms.Add(RfcConfigParameters.Language, "EN");  //登陆语言

                parms.Add(RfcConfigParameters.PoolSize, "5");

                parms.Add(RfcConfigParameters.MaxPoolSize, "10");

                parms.Add(RfcConfigParameters.IdleTimeout, "60");
                // parms.Add(RfcConfigParameters.UseSAPGui, "1");
                return parms;

            }

            else return null;

        }

        public bool ChangeEventsSupported()
        {

            return false;

        }

  public void nco(RfcDestination prd, string WorkNo)
    {
        RfcRepository repo = prd.Repository;

        IRfcFunction companyBapi = repo.CreateFunction("Z_SFC_WO_INRO");   //调用函数名

        companyBapi.SetValue("P_WKNO", WorkNo);   //设置Import的参数

        companyBapi.Invoke(prd);   //执行函数

        IRfcTable table = companyBapi.GetTable("R_ITAB");  //获取相应的品号内表

        string[,] array = new string[table.RowCount, 4];

        for (int i = 0; i < table.RowCount; i++)
        {       
            array[i, 0] = table[i]["MATNR"].GetString();
            array[i, 1] = table[i]["BDMNG"].GetString();
            array[i, 2] = table[i]["WERKS"].GetString();
            array[i, 3] = table[i]["LGORT"].GetString();
        }

        result = Oralce.insertData(array, WorkNo);      //得到的数组可以进行任意处理
    }

 

 

 

 

你可能感兴趣的:(asp.net c#语言RFC连接SAP)