zoukankan      html  css  js  c++  java
  • 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));
       }
     
      }
     
  • 相关阅读:
    AcWing 157. 树形地铁系统 (hash判断树同构)打卡
    AcWing 156. 矩阵 (哈希二维转一维查询)打卡
    AcWing 144. 最长异或值路径 01字典树打卡
    AcWing 143. 最大异或对 01字典树打卡
    AcWing 142. 前缀统计 字典树打卡
    AcWing 139. 回文子串的最大长度 hash打卡
    AcWing 138. 兔子与兔子 hash打卡
    常用C库函数功能及用法
    编程实现C库函数
    C语言面试题5
  • 原文地址:https://www.cnblogs.com/lbs8/p/3675451.html
Copyright © 2011-2022 走看看