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

[经验分享] c# 读取SAP数据

[复制链接]

尚未签到

发表于 2015-9-20 10:05:45 | 显示全部楼层 |阅读模式
C# 通過SAP提供COM組件進行SAP數據的訪問
步驟:
1. 新建C#工程
2. 在菜單中點擊“Project”--〉“Add Reference”  ,在彈出窗口的COM列表中選擇SAP Component 組件
3.用SAPLogonCtrl 組件進行SAP的連接
4.連接后以SAPFunctionsOCX 進行SAP的 RFC Function的調用,傳入Function的Import 、Export  Parameters,及Table Parameters
   執行后以SAPTableFactoryCtrl 接收返回Table數據(注意此表數據無法直接賦予C#之DataTable)需自定義轉換函數

對於SAP之COM尚未深入了解,目前只能進行簡單數據的讀取,對於未能通過SAP以定義Function取得之數據,可在SAP中自定義Function來進行,注意自定義之Function 之 “Processing Type” 需選擇 “Remote Function Call Supported“ ,否則無法進行遠程使用。


以下為CODE:
public void  LoginSAP()
  {
     SAPLogonCtrl.SAPLogonControlClass logon = new SAPLogonCtrl.SAPLogonControlClass();
    logon.ApplicationServer = "IPadress";     //SAP系统IP
    logon.Client = "**";                           //SAP客户端号
    logon.Language = "ZF";                       //SAP登陆语言
    logon.User = "**";                               //用户帐号
    logon.Password = "**";                       //用户密码
    logon.SystemNumber = *;               //SAP系统编号
    SAPLogonCtrl.Connection Conn = (SAPLogonCtrl.Connection)logon.NewConnection();
    if (Conn.Logon(0, true))
    {
                     //登陆成功
    }
    else
    {
    ;                  //登陆失败
    }
      
   /// 调用SAP系统函数模块
   /// </summary>
   /// <param name="strFunName">函数名称</param>
   /// <param name="strArgs">输入参数字典</param>
   /// <param name="strRetTabs">返回表结果字典</param>
   /// <param name="strResult">返回程序运行结果</param>
   /// <returns>返回表结果集</returns>
  ListDictionary strArgs = new ListDictionary() ;
  ListDictionary strRetTabs = new ListDictionary();
  ListDictionary strResult = new ListDictionary();
        string strFunName="RFC_CUSTOMER_GET";
     object customs= new object();
      strArgs.Add("KUNNR","*");
     strArgs.Add("NAME1","*");
   strRetTabs.Add("CUSTOMER_T",customs);
    try
   {
    DataSet retDST = new DataSet();
    string[] array = new string[strResult.Count];
    strResult.Keys.CopyTo(array, 0);
   
     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); //取得输入参数
      string sssdfd=strArgs[arg].ToString();
      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
    //  MessageBox.Show(ifunc.);
     foreach (string tab in strRetTabs.Keys)
     {
      SAPTableFactoryCtrl.Table ENQ = (SAPTableFactoryCtrl.Table)ENQs.get_Item(tab); //返回指定Tables
      
        // MessageBox.Show(ENQ.RowCount.ToString());
      //MessageBox.Show(ENQ.ColumnCount.ToString());
      //MessageBox.Show(ENQ.get_ColumnName(5));
      //dataGrid1.DataSource=dat.Tables[0].DefaultView;
      DataSet dat = CoverTable(ENQ) ;
      dataGrid1.SetDataBinding(dat,"TSIS_route");         

  
      func.RemoveAll();
      Conn.Logoff();
     }
    }
   
   
   catch (Exception exc)
   {
    throw (new Exception(exc.Message));
   }

  }
来源于:http://blog.sina.com.cn/s/blog_701040340100llbl.html

运维网声明 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-116114-1-1.html 上篇帖子: 网络流SAP--模板 下篇帖子: SAP日志log:SLG0,SLG1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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