java後台呼叫 SAP RFC的配置和呼叫

2021-08-19 03:47:36 字數 3312 閱讀 1028

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...