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

[经验分享] 在vs2005中使用Com连接SAP系统(一)

[复制链接]

尚未签到

发表于 2015-9-17 12:15:25 | 显示全部楼层 |阅读模式
  开博了,总要写点什么吧!正好前两天做了一个小实验"在vs2005中使用Com连接SAP ECC 6.0",记录如下:
  我分别以form和web的形式对SAP中的Function module进行了调用,在form中稍微简单一点,具体如下:
  一,添加对Interop.SAPFunctionsOCX.dll以及Interop.SAPLogonCtrl.dll这两个com组件的引用。
  二,通过SAPLogonCtrl进行SAP系统的登录,输入登陆SAP系统需要的一些参数,具体参见如下代码:
              SAPLogonCtrl.SAPLogonControlClass logon = new SAPLogonCtrl.SAPLogonControlClass();
            logon.ApplicationServer = "";                 //SAP system's IP
            logon.Client = "";                                             //SAP system'client
            logon.Language = "EN";
            logon.User = "";                              //Username
            logon.Password = "";                               //Password
            logon.SystemNumber = 00;                                 //System number
            SAPLogonCtrl.Connection conn = (SAPLogonCtrl.Connection)logon.NewConnection();
  三,登陆成功后,通过SAPFunctionsOCX对SAP中的Function Module进行调用。具体步骤为:首先创建SAPFunctionsOCX.SAPFunctionsClass的实例func ,并设置其需要使用的Connection;然后使用func的Add方法添加需要调用的function module的名称(返回一个SAPFunctionsOCX.IFunction对象ifunc);再使用ifunc的get_Exports方法获取function module中的输入参数,最后对参数进行赋值;然后再调用ifunc的call方法进行调用;最后使用ifunc的get_Imports或者Tables方法获取返回值。具体参见如下代码:
      if (conn.Logon(0, true))                                //login successful
            {
                SAPFunctionsOCX.SAPFunctionsClass func = new SAPFunctionsOCX.SAPFunctionsClass();
                func.Connection = conn;
                SAPFunctionsOCX.IFunction ifunc = (SAPFunctionsOCX.IFunction)func.Add("ENQUEUE_READ");           //Call Function module 'ENQUEUE_READ'
                SAPFunctionsOCX.IParameter  gclient = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("GCLIENT");  //Get the import paremeter
                gclient.Value = "301";                                                                           //Set value for import paremeter
                SAPFunctionsOCX.IParameter GUNAME = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("GUNAME");
                GUNAME.Value = "";
                SAPFunctionsOCX.IParameter LOCAL = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("LOCAL");
                LOCAL.Value = "0";
                ifunc.Call();
                SAPFunctionsOCX.IParameter NUMBER = (SAPFunctionsOCX.IParameter)ifunc.get_Imports("SUBRC");
                SAPTableFactoryCtrl.Tables ENQs = (SAPTableFactoryCtrl.Tables)ifunc.Tables;              //get all the tables
                SAPTableFactoryCtrl.Table ENQ = (SAPTableFactoryCtrl.Table)ENQs.get_Item("ENQ");  //Get table 'ENQ'
                int n = ENQ.RowCount;
                DataTable dt = CreateTable();
                for (int i = 1; i <= n; i++)
                {
                    DataRow dr = dt.NewRow();
                    dr["GNAME"] = ENQ.get_Cell(i, "GNAME").ToString();                                  //Get cell information
                    dr["GUNAMe"] = ENQ.get_Cell(i, "GUNAME").ToString();
                    dr["GARG"] = ENQ.get_Cell(i, "GARG").ToString();
                    dr["GOBJ"] = ENQ.get_Cell(i, "GOBJ").ToString();
                    dr["GTDATE"] = ENQ.get_Cell(i, "GTDATE").ToString();
                    dt.Rows.Add(dr);
                }
                dataGridView1.DataSource = dt;
                dataGridView1.Visible = true;
                label1.Text = "Get data from FM 'ENQUEUE_READ' OK!";
            }
            else
                label1.Text = "NO";
        }
     这样就可以在form中调用SAP ECC中的function module了!至于在web形式下如何调用将在下篇中进行描述!

运维网声明 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-114937-1-1.html 上篇帖子: C# Call SAP RFC传入表 下篇帖子: Duet Enterprise for Microsoft SharePoint and SAP
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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