最近 做乙個專案 是 把 系統內部資料 上傳到 sap 中,由於 沒接觸 過 sap 對於 sap 還是 很陌生,在 問了 很多人 以及 查詢質料 終於 在 上周五 完成了 這個 模組,下面 說一下 具體的 步驟。
最開始 以為 c# 與 sap 是 websevice 之間 通訊 的 但是 在 聯絡 到 開發 sap 的 人 他們說 是 通過 rfc 函式 。
首先 是 需要 引用 兩個 dll
資源位址
將這兩個 dll 引用到 專案下
之後 引用 命名空間
using sap.middleware.connector;
連線 sap 需要 使用者 密碼 埠 等
rfcconfigparameters rfcpar = new rfcconfigparameters();
rfcpar.add(rfcconfigparameters.name, logininfo.clientinfo.sapsystem);
rfcpar.add(rfcconfigparameters.client, logininfo.clientinfo.sapclint);埠號
rfcpar.add(rfcconfigparameters.user, logininfo.clientinfo.sapuser);//使用者名稱
rfcpar.add(rfcconfigparameters.systemnumber, logininfo.clientinfo.sapsystemnumber);//系統號
rfcpar.add(rfcconfigparameters.language, logininfo.clientinfo.saplanguage);//語言
rfcdestination dest = rfcdestinationmanager.getdestination(rfcpar);
rfcrepository rfcrep = dest.repository;//開始連線
以上 是 連線 到 sap,連線上 之後 我們 要獲取 函式
irfcfunction myfunc = rfcrep.createfunction("sap上的函式名稱");
獲取函式 之後 這個 函式 會返回 類似於 方法 的 東西
我們 可以 知道 有 什麼 引數 (輸出,輸入) 當然 這個 在 於 sap 對接的時候 sap的開發人員 會 給 的
function sap函式名稱
export parameter e_flag=, import parameteris_header=structure ztb_jfi000_hpkg ,import parameter it_items_manu=null, import parameter i_testrun=, tablesparameter it_err_msg=table , tables parameter it_items
以上 是 獲取 的sap 函式 我們 可以 直觀 的 看到 引數 以及 引數 的型別 export 表示 輸出 import 表示 輸入 structure 表示 結構 型別 tables 表示 是 表型別 (自己的理解)
可以根據 引數 和 引數型別 進行 傳值
比如 結構 我們 需要 獲取 這個 函式 中的 結構 包含 什麼
irfcstructure ztb_jfi000_hpkg = myfunc.getstructure("結構名稱");
以上 是 獲取 乙個 結構 結構內部我們 也可 知道 有什麼
知道 結構的 字段 我們 就可以給結構 進行賦值
ztb_jfi000_hpkg.setvalue("結構中 欄位名稱", logininfo.clientinfo.sapclint);
myfunc.setvalue("結構名稱", ztb_jfi000_hpkg);
給表 賦值 同理 在 加 乙個 迴圈 即可 還是 寫上吧 怕 自己 以後會 用到 到時候 忘記了
irfctable it_items_manu = myfunc.gettable("it_items_manu");
it_items.currentrow.setvalue("mandt", logininfo.clientinfo.sapclint);
既然可以賦值 一樣可以取值
//返回標記 s上載成功;e上載失敗;
string issurce = myfunc.getstring("e_flag");//去字元型 引數的值
//取表型別引數的值
irfctable it_err_msg = myfunc.gettable("it_err_msg");
datatable table_it_err_msg = new datatable();
table_it_err_msg.columns.add("packg_uuid");
table_it_err_msg.columns.add("row_id");
table_it_err_msg.columns.add("msg_str");
table_it_err_msg.columns.add("msg_type");
table_it_err_msg.columns.add("msg_ref1");
table_it_err_msg.columns.add("bus_uuid");
for (int i = 0; i < it_err_msg.count; i++)
以上就是 c# 於sap 中 資料 傳輸 的 總結 希望 對大家 有幫助
注:本人 還不知道 如何 關閉 與 sap 的連線 希望 有 知道 的高手 告訴 我一下 一起 交流 討論
JAVA與Sap互動技術RFC
public class sapfunction if list null object obj commonutils.getbean map,beanclazz list.add obj catch exception e return list description 返回值為list,有入參...
c 與c 之間的互動
c 的 是非託管的.而.net是託管的.那麼c 和.net之間互相呼叫或者傳送資料的時候.就需要 封送資料到非託管 或者 到託管 而且他們之間的型別也是不相容的.如c 裡面的string型別,c 是沒有的.所以 如果像傳 int double一般不會有問題.但是string 傳值 最好用intptr...
mysql CAPI與C 的互動
首先要保證mysql的服務是開啟的才能進行對資料庫的操作。mysql與c 互動有兩個非常好的三方庫乙個是mysql 乙個是connector c 這兩個庫我嘗試了mysql 不過我發現在中國mysql 的很多資料缺乏,很多都是講了一半剩下的就沒了,除非去看英文文件,可惜我英文不算好,所以我果斷先放棄...