开博了,总要写点什么吧!正好前两天做了一个小实验"在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形式下如何调用将在下篇中进行描述!

在vs2005中使用Com连接SAP系统(一)相关推荐

  1. 在vs2005中使用Com连接SAP系统(二)

    昨天讲述了以下如何在VS2005中使用form的形式来调用SAP ECC6.0中的Function Module,今天将记录一下在VS2005中以web的形式来调用Function module. 以 ...

  2. Xamarin中VS无法连接Mac系统的解决办法

    Xamarin中VS无法连接Mac系统的解决办法 按照以下步骤排查: (1)确认Mac系统中安装Xamarin.iOS开发必备的组件,如Mono.Xamarin.iOS. (2)将Windows和Ma ...

  3. 如何在Excel中使用VB宏连接SAP系统

    准备工作 Excel连接SAP的时候需要使用RFC library, 首先从Service Marketing Place下载RFC SDK. 具体路径如下: http://service.sap.c ...

  4. .NET连接SAP系统专题:C#调用RFC代码(三)

    本文就说明在C#中如何编写代码来调用SAP中的RFC函数获取数据. 首先需要引用两个NCO3.0的DLL DLL下载地址:http://files.cnblogs.com/mengxin523/SAP ...

  5. .NET连接SAP系统专题:C#获取RFC中自定义的异常(四)

    有的时候我们需要在RFC中抛出一些自定义的异常,比如输入一个不存在的品号,我们需要抛出一个异常,告知用户品号不存在.有一个笨笨的做法就是通过返回值来判断,但是这样不灵活,同时也会因为品号不存在而继续之 ...

  6. .NET连接SAP系统专题:C#如何导入内文至SAP(十一)

    内文这个东西就像长篇大论的描述,跟在WORD里面一样可以输入无数个字.如果在sap中输入事务码进去可以维护多少个字都可以,但是如果是用.NET调用BAPI传进去内文的话,会将内文超过132个字符的内容 ...

  7. SAP系统权限管理及参数设置

    SAP系统的权限管理主要是通过事务代码,权限对象,权限等3个关键对象构筑的. 1. 事务代码(Tcode) SAP系统中,每个操作命令都是唯一对应一个事务代码.事务代码是操作命令的表现形式.用户通过输 ...

  8. SAP系统中的银行主数据FI12

    SAP系统中的银行主数据FI12:分为四个部分, 1,是银行代码,对每一个银行单位(包括总行.分行和分理处等)定义的一个唯一代码, 2是开户银行,在各下属单位代码下维护的,属于各下属单位自身开户银行的 ...

  9. SAP系统中凭证涉及日期

    SAP系统中凭证涉及三种日期:记账日期.凭证日期和收付基准日期.记账日期指的是凭证生成日期,即凭证在SAP系统中生成的日期:凭证日期指的是银行收付款日期,如凭证不涉及银行收付款,可输入与记账日期相同的 ...

最新文章

  1. C# 实现Oracle中的数据与Excel之间的转换
  2. C++ :: 的用法小结
  3. 深耕边缘计算 揭秘阿里云边缘云网一体化的技术实践
  4. struts2 标签不能使用EL 表单式
  5. 西北大学计算机考试,西北大学计算机技术
  6. mysql中数据类型的长度
  7. MixedRealityToolkit-Unity:MR应用必用神器
  8. 想系统的学习一下项目管理,有什么好的书籍推荐吗?
  9. Anaconda出现Navigator Error的解决办法
  10. 小米笔记本pro 双硬盘双系统 opencore引导安装黑苹果
  11. server 2008 r2中无法启用“网络发现”
  12. 安卓手机突然很卡_安卓手机为什么很卡 安卓手机卡顿原因分析【详解】
  13. 【2019.05】python 爬取拉钩数据(静态+动态)
  14. app后端设计(6)-- LBS
  15. Java项目:基于SSM的疫情物业系统
  16. kali Linux更新软件包
  17. 金山java笔试题_今天去金山找java开发,其中的笔试题第一大题给吧友们看看
  18. C语言版动态通讯录(增、删、改、查(查重)、去重、排序、导出)
  19. 造物者之吻:中国手机“爆改安卓”的这些年
  20. 在写论文的参考文献时,有的段落空格很大,有的段落则正常,原因及解决方法(wps)

热门文章

  1. Mac下安装mysql5.7 完整步骤(图文详解)
  2. 配置tomcat容器的access.log访问日志
  3. [LeetCode]题解(python):076-Minimum Window Substring
  4. Learning Cocos2d-x for WP8(9)——Sprite到哪,我做主
  5. 什么是爱?什么是幸福?
  6. 用Flash创建一个类似Nano War游戏的教程
  7. 中国汽车产销量负增长 工信部:不见得是坏事 将推新政策
  8. servlet解决javascript传来中文乱码问题
  9. 基于vue2+vuex+vue-router+sass+webpack的网易云音乐
  10. 08-CSS基础-体验CSS