注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

原来为了你

我的人生就是要一次次的超越

 
 
 

日志

 
 
 
 

C#连接SAP并调用SAP RFC  

2011-09-04 16:55:02|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.创建一个空项目Project1,系统会自动生成一个对应的解决方案Project1

2.右键这个项目名字,添加三个引用(基于COM组件):SAP Logon Control,SAP Remote Function Call Control,SAP Remote Factory.

3.右键这个项目名字->添加->新建项->代码文件,编码如下:

using System;

using SAPFunctionsOCX;

using SAPLogonCtrl;

using SAPTableFactoryCtrl;

 

class Welcome

{

    static void Main()

    {

        System.Threading.Thread s = new System.Threading.Thread(new System.Threading.ThreadStart(test)); //Create a new thread and set the method test() run in this thread

        s.SetApartmentState(System.Threading.ApartmentState.STA); //Set the run mode 'STA',否则会在functions.Connection = conn;时抛出异常Bad variant type

        s.Start(); //Start the thread

        s.Join(); //Wait until thread run OK.

    }

 

    static void test()

    {

        SAPLogonControlClass connctl = new SAPLogonControlClass();

        //下面的参数值根据实际情况赋值

        connctl.Client = "300";

        connctl.Language = "ZH";

        connctl.ApplicationServer = "192.168.2.24";//Application server IP

        connctl.SystemNumber = 00;

        connctl.User = "SXL005";

        connctl.Password = "2006057145";

 

        //实例化连接对象

        Connection conn = (Connection)connctl.NewConnection();

 

        //登陆

        if (conn.Logon(null, true))

        {

            Console.WriteLine("SUCCESS!");

        }

        SAPFunctionsClass functions = new SAPFunctionsClass();

        functions.Connection = conn;

 

        //这里就可以传入Function Name

        Function fucntion = (Function)functions.Add("Z_ADD");

 

        //这里是传入值参数

        Parameter parameter1 = (Parameter)fucntion.get_Exports("I_DATA1");

        parameter1.Value = "12";

        Parameter parameter2 = (Parameter)fucntion.get_Exports("I_DATA2");

        parameter2.Value = "15";

 

        //传出参数

        Parameter parameter3 = (Parameter)fucntion.get_Imports("E_RESULT");

 

        //调用函数

        if (fucntion.Call())

        {

            Console.WriteLine(parameter3.Value);

            Console.ReadKey();

        }

        //退出登陆

        conn.Logoff();

    }

}

测试结果成功,完成了两个数的和,返回27.

  评论这张
 
阅读(2785)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017