.net链接SAP工具类

先在app.config中增加配置信息

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <gcServer enabled="true"/>
  </runtime>
  <appSettings>
    <add key="SAP_Login" value="SapId=登录名,SapPwd=密码"/>
    <add key="SAP_Server" value="Type=AppServer,Name=NBD,Client=客户端如702,SystemID=NBD,SystemNumber=10,AppServerHost=地址IP"/>
  </appSettings>
</configuration>

然后加入sapnco.dll和sapnco_utils.dll,下载地址:
https://download.csdn.net/download/weixin_38441570/15745865

工具类

    public class SapHelper
    {

        #region 0.基础连接配置/参数等
        //单例
        private static RfcDestination dest;
        private static IRfcFunction func;


        /// <summary>
        /// 启动SAP连接
        /// </summary>
        public static void StartSapConn()
        {
            if (dest == null)
            {
                //<add key="SAP_Login"  value="SapId=SAPPROJECT2,SapPwd=init@120"/>
                string[] SAP_Login = ConfigurationManager.AppSettings["SAP_Login"].Split(',');
                string sapId = SAP_Login[0].Split('=')[1];
                string sapPwd = SAP_Login[1].Split('=')[1];
                string sapServer = ConfigurationManager.AppSettings["SAP_Server"];
                dest = CreateRfcDestination(sapId, sapPwd, sapServer);
            }
            dest.Ping();
        }

        /// <summary>
        /// 配置SAP连接参数
        /// </summary>
        /// <param name="sapId"></param>
        /// <param name="sapPwd"></param>
        /// <param name="sapServer"></param>
        /// <returns></returns>
        public static RfcDestination CreateRfcDestination(string sapId, string sapPwd, string sapServer)
        {
            RfcConfigParameters rfcPar = new RfcConfigParameters();

            string[] sapServerPara = sapServer.Split(',');
            string sapConnectType = sapServerPara[0].Split('=')[1];
            rfcPar.Add(RfcConfigParameters.Name, sapServerPara[1].Split('=')[1]);
            rfcPar.Add(RfcConfigParameters.Client, sapServerPara[2].Split('=')[1]);
            rfcPar.Add(RfcConfigParameters.SystemID, sapServerPara[3].Split('=')[1]);
            rfcPar.Add(RfcConfigParameters.SystemNumber, sapServerPara[4].Split('=')[1]);
            rfcPar.Add(RfcConfigParameters.AppServerHost, sapServerPara[5].Split('=')[1]);
            rfcPar.Add(RfcConfigParameters.User, sapId);
            rfcPar.Add(RfcConfigParameters.Password, sapPwd);
            rfcPar.Add(RfcConfigParameters.Language, "EN");

            rfcPar.Add(RfcConfigParameters.PoolSize, "5");
            rfcPar.Add(RfcConfigParameters.PeakConnectionsLimit, "10");
            rfcPar.Add(RfcConfigParameters.ConnectionIdleTimeout, "3600");
            RfcDestination dest = RfcDestinationManager.GetDestination(rfcPar);
            return dest;
        }

        /// <summary>
        /// 更换将要调用的RFC名称, 同时检查SAP连接的可用性
        /// </summary>
        /// <param name="rfcName"></param>
        public static void ChangeIRfcFunction(string rfcName)
        {

            if (dest == null)
            {
                StartSapConn();
            }
            try
            {
                dest.Ping();
            }
            catch (Exception)
            {
                dest = null;
                StartSapConn();
            }

            func = dest.Repository.CreateFunction(rfcName);
        }
        #endregion




//调用实例
        public static IRfcTable Z_FSSC_DOCUMENT(DataTable dt, int billid)
        {
            IRfcTable RETURN = null;
            try
            {
                //传入函数名称
                ChangeIRfcFunction("Z_FSSC_DOCUMENT");
                //传入表头
                IRfcStructure docStr = func.GetStructure("DOCUMENTHEADER");
                docStr.SetValue("BUS_ACT", ywsw);//业务事务
                docStr.SetValue("USERNAME", username);//用户名
                docStr.SetValue("HEADER_TXT", pztt);//凭证抬头文本
                docStr.SetValue("COMP_CODE", gsdm);//公司代码
                docStr.SetValue("DOC_DATE", pzzdpzrq);//凭证中的凭证日期
                docStr.SetValue("PSTNG_DATE", pzzdgzrq);//凭证中的过账日期
                docStr.SetValue("FISC_YEAR", kjnd);//会计年度
                docStr.SetValue("FIS_PERIOD", kjqj);//会计期间
                docStr.SetValue("DOC_TYPE", pzlx);//凭证类型
                docStr.SetValue("REF_DOC_NO", billno);//参考凭证编号
                func.Invoke(dest);
                RETURN = func.GetTable("RETURN");
                }
            }
            catch (Exception e)
            {
                LogHelper.Error("出错:" + e.Message);
            }
            finally
            {
                db.Close();
            }
            
            return RETURN;
        }
        
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
.NET 4.0 是微软公司开发的一种应用程序框架。它提供了开发和运行多种类型应用程序的环境,包括 Web 应用程序、服务、Windows 应用程序等。它是微软所提供的一种全面的开发平台,并提供了丰富的类库和工具,支持多种编程语言,如C#、VB.NET等。.NET 4.0 可以帮助开发人员快速、高效地开发应用程序,并提供了良好的可扩展性和性能。 SAP RFC 是SAP(系统、应用与产品)公司提供的一种远程功能调用接口(Remote Function Call)。它允许外部系统通过远程方式与SAP应用程序进行通信和交互。通过SAP RFC,外部系统可以调用SAP应用程序中的功能模块,并传输相关的数据。这样,外部系统可以与SAP系统集成,实现数据的共享和交换。同时,SAP RFC也可以用于在SAP系统内部进行模块之间的通信。 .NET 4.0 和 SAP RFC 可以结合使用,以实现.NET应用程序与SAP系统之间的集成。通过.NET 4.0所提供的丰富功能和灵活性,可以使用.NET编程语言(如C#)开发用于与SAP系统进行通信和交互的应用程序。同时,通过使用SAP RFC,可以调用SAP系统中的功能,并在.NET应用程序中处理相关的数据。这样,可以实现.NET应用程序与SAP系统之间的数据共享和交换,实现系统间的无缝集成。 总之,.NET 4.0 是一种开发框架,用于开发各种类型的应用程序,而SAP RFC 则是用于实现与SAP系统的远程通信的接口。两者可以结合使用,实现.NET应用程序和SAP系统之间的数据共享和交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值