设为首页 收藏本站
查看: 780|回复: 0

[经验分享] C# 实现调用 SAP Com组件

[复制链接]

尚未签到

发表于 2015-9-21 12:21:02 | 显示全部楼层 |阅读模式
  /// <summary>
        /// 登陆SAP系统
        /// </summary>
        /// <returns>登陆状态</returns>
        public LoginStatus LoginSAP()
        {
            try
            {
                SAPLogonCtrl.SAPLogonControlClass logon = new SAPLogonCtrl.SAPLogonControlClass();
                logon.ApplicationServer = ApplicationServer;     //SAP系统IP
                logon.Client = Client;                           //SAP客户端号
                logon.Language = Language;                       //SAP登陆语言
                logon.User = User;                               //用户帐号
                logon.Password = Password;                       //用户密码
                logon.SystemNumber = SystemNumber;               //SAP系统编号
                Conn = (SAPLogonCtrl.Connection)logon.NewConnection();
  if (Conn.Logon(0, true))
                {
                    Status = LoginStatus.Success;                //登陆成功
                }
                else
                {
                    Status = LoginStatus.Fail;                   //登陆失败
                }
                return Status;
            }
            catch (Exception exc)
            {
                throw(new Exception(exc.Message));
            }
        }
  /// <summary>
        /// 调用SAP系统函数模块
        /// </summary>
        /// <param name="strFunName">函数名称</param>
        /// <param name="strArgs">输入参数字典</param>
        /// <param name="strRetTabs">返回表结果字典</param>
        /// <param name="strResult">返回程序运行结果</param>
        /// <returns>返回表结果集</returns>
        public DataSet InvokSAPFun(string strFunName, ListDictionary strArgs, ListDictionary strRetTabs, ref ListDictionary strResult)
        {
            try
            {
                DataSet retDST = new DataSet();
                string[] array = new string[strResult.Count];
                strResult.Keys.CopyTo(array, 0);
                if (Status == LoginStatus.Success)
                {
  SAPFunctionsOCX.SAPFunctionsClass func = new SAPFunctionsOCX.SAPFunctionsClass();
                    func.Connection = Conn;
                    //(1)
                    SAPFunctionsOCX.IFunction ifunc = (SAPFunctionsOCX.IFunction)func.Add(strFunName);               //调用函数模块
                    foreach (string arg in strArgs.Keys)
                    {
                        SAPFunctionsOCX.IParameter gclient = (SAPFunctionsOCX.IParameter)ifunc.get_Exports(arg);     //取得输入参数
                        gclient.Value = strArgs[arg];                                                                //设置参数值               
                    }
                    ifunc.Call(); //调用函数模块
                    //(2)
                    foreach (string ret in array)
                    {
                        SAPFunctionsOCX.IParameter NUMBER = (SAPFunctionsOCX.IParameter)ifunc.get_Imports(ret);      //返回程序运行结果
                        strResult[ret] = NUMBER.Value;
                    }
                    //(3)
                    SAPTableFactoryCtrl.Tables ENQs = (SAPTableFactoryCtrl.Tables)ifunc.Tables;                      //获取所有Tables
                    foreach (string tab in strRetTabs.Keys)
                    {
                        SAPTableFactoryCtrl.Table ENQ = (SAPTableFactoryCtrl.Table)ENQs.get_Item(tab);               //返回指定Tables
                        DataTable dat = ConvertTable(ENQ);
                        retDST.Tables.Add(dat);
                    }
  }
                return retDST;
            }
            catch (Exception exc)
            {
                throw (new Exception(exc.Message));
            }
        }
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-116736-1-1.html 上篇帖子: 如何修改 SAP 登录后的背景图片(事务码 SMW0,SM30)(转) 下篇帖子: SAP对TCODE权限检查过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表