rfc是sap系統和其他(sap或非sap)系統間的乙個重要而常用的雙向接**術,也被視為sap與外部通訊的基本協議。簡單地說,rfc過程就是系統呼叫當前系統外的程式模組!
rfc 是英文縮寫,全稱:remote function call ,遠端功能呼叫 !
配置:1、依賴包:把一下兩個依賴包放到lib資料夾下,相應的新增到路徑中去。
2. 配置檔案:用來配置 sap 位址等資訊
檔案裡的內容如下:
3.複製工具類,這兩個非常重要,有這兩個就可以直接在**裡面呼叫sap了
以上都配置好之後,基本就可以在**中使用了! 接下來看看如何呼叫rfc , 兩種情況:
1. 簡單的rfc呼叫 ,這種情況引數比較簡單,入參傳入幾個,出參是乙個表,只要根據表結構就可以取值 :
jcofunction function = rfcmanager.getfunction("
");
//rfc 名稱
// 設定import 引數
jcoparameterlist importparam = function.getimportparameterlist();
//獲得入參
//以下這些是呼叫該rfc所需要的引數
importparam.setvalue("i_zarea","all"); //區域 all 代表全部的公司
importparam.setvalue("i_ztmon",""); //月份
"i_zweeks","");//週數
importparam.setvalue("i_datum","");//日期
// 執行rfc
rfcmanager.execute(function);
// 獲取rfc返回的字段值
jcoparameterlist exportparam = function.getexportparameterlist();
jcoparameterlist exporttable= function.gettableparameterlist();
jcotable gettable1 = exporttable.gettable("
et_zdielg
");// 這是呼叫後 rfc 返回的表名
boolean loopflag1 = !gettable1.isempty();
//判斷 這張表中有木有資料
while(loopflag1)
就是這麼簡單粗暴,入參的值設定一下就好了,返回一張表,根據欄位取數就好了! 接下來說一下難的 !
2. 引數比較複雜:
jcofunction function = rfcmanager.getfunction("zrfc_hr_read_table"); //人力資源報表
// 設定import 引數
jcoparameterlist importparam = function.getimportparameterlist();
importparam.setvalue("query_table","zthr_r004"); //區域 all 代表全部的公司
importparam.setvalue("rowskips","0"); //
importparam.setvalue("rowcount","0"); //
importparam.setvalue("username","00002359"); //
importparam.setvalue("order_by",""); //
//以上和第一種情況一樣,只是普通的設定入參
// importparam.setvalue("selection","bukrs 3100"); //
jcoparameterlist intableparam = function.gettableparameterlist();
// 這裡又需要資料一張表作為引數
//以下是入參的表
jcotable tableind = intableparam.gettable("data");
jcotable tableinf = intableparam.gettable("fields");
jcotable tableino = intableparam.gettable("options");
jcotable tableins = intableparam.gettable("selection");
// jcotable tableinop = intableparam.gettable("selection");//得到sap函式中的條件引數
//新增一行,要給這個表設定引數的時候,需要先新增一行,然後才設定引數,而且引數如下
tableins.setvalue("fieldname","bukrs");
//前面是 這個表的欄位名,後面是值
tableins.setvalue("option","eq");
tableins.setvalue("andor","and");
tableins.setvalue("low",burknum);
if(!areanum.equals("") || areanum != null)
// 執行rfc
rfcmanager.execute(function);
// 獲取rfc返回的字段值
jcoparameterlist exportparam = function.getexportparameterlist();
jcoparameterlist exporttable= function.gettableparameterlist();
//獲取返回的表,然而不能像上面一樣根據表結構取值,因為表結構和值他又是分開放的,所以十分奇葩 ,
jcotable gettable1 = exporttable.gettable("data");
boolean loopflag1 = !gettable1.isempty();
while(loopflag1)
以上就是兩種呼叫sap-rfc的方法,第二個方法就是多了輸入引數的表。
C 呼叫 SAP RFC 方法
新增sap安裝程式的四個dll檔案引用 interop.sapbapicontrollib.dll interop.sapfunctionsocx.dll interop.saplogonctrl.dll interop.saptablefactoryctrl.dll 呼叫方法體 private v...
SAP 使用VBA呼叫SAP RFC
使用vba呼叫sap rfc和jco 常用的方法基本一致。大致分為兩步 登入和執行 1 設定登入資訊 set r3 createobject sap.functions r3.connection.system dev r3.connection.client 160 r3.connection.s...
介面後台呼叫方法
建立請求鏈結 string strurl this.txtcode.text.trim 傳送乙個請求 webrequest wrt webrequest.create strurl 獲取請求響應 webresponse wrse wrt.getresponse 將請求轉換為流的形式 stream s...