• c# 读取SAP数据


    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));
       }
     
      }
     
  • 相关阅读:
    C++ 用libcurl库进行http通讯网络编程(转)
    树莓派声音设置
    在Linux终端命令行下播放音乐的命令(Ubuntu)
    2.1 LibCurl编程流程(转)
    linux编译curl库的动态库so(转)
    单片机中断的IE和IP寄存器(摘抄)
    MCS-51系列特殊功能寄存器(摘抄)
    linux c libcurl的简单使用(转)
    普林斯顿结构 VS 哈佛结构
    树莓派(raspberry pi)学习4: 更改键盘布局(转)
  • 原文地址:https://www.cnblogs.com/lbs8/p/3675451.html
Copyright © 2020-2023  润新知