遠端呼叫sap介面,一般函式的傳參型別有幾種,據個人不完全了解,大概分為字串,結構體,內錶,下面整理了下這三種的傳參方式以及返回值(字串/內錶)。
注入獲取鏈結的beanserive(呼叫bean moethod請見隨筆一)
@resource(name="sapconnectionpool")
private sapconnectionpool sapconnectionpool;
一、傳參
1.字串
函式:zrfc_sd_160
傳參(字段):move_type
//獲取連線
jcodestination jcodestination=this.sapconnectionpool.getsapdestination();
//從知識庫中取得乙個函式模板 zrfc_sd_160
jcofunction function = jcodestination.getrepository
().getfunction
("zrfc_sd_160");
//獲取傳入引數
function.getimportparameterlist
().setvalue
("move_type", 261);
//執行bapi函式
function.execute
(jcodestination);
2.結構體
函式:zrfc_pp_053_mb1a
傳參(結構體):gdsmt_header
結構體包含屬性:pstng_date
//獲取連線
jcodestination jcodestination=this.sapconnectionpool.getsapdestination();
//從知識庫中取得乙個函式模板 zrfc_pp_053_mb1a
jcofunction function = jcodestination.getrepository
().getfunction
("zrfc_pp_053_mb1a");
//獲取輸入的結構體
jcostructure input = function.getimportparameterlist
().getstructure
("gdsmt_header");
//給結構體中的引數賦值
input.setvalue("pstng_date",);
//執行bapi函式
function.execute
(jcodestination);
3、內錶
函式:zrfc_mm_004
傳參(內錶):it_labst
內錶包含屬性:matnr,werks
//從知識庫中取得乙個函式模板 zrfc_mm_004
jcofunction function = jcodestination.getrepository
().getfunction
("zrfc_mm_004");
//獲取輸入的內部引數
jcotable intable =function.gettableparameterlist
().gettable
("it_labst");
//對內部引數包含屬性賦值
intable.setvalue("matnr","?");
intable.setvalue("werks","?");
//執行bapi函式
function.execute
(jcodestination);
....
物件是集合,可迴圈賦值
...
... //給表引數中的字段賦值
inputtable.setvalue("matnr", "1600");
inputtable.setvalue("werks","?");
}...
...
二、輸出引數
1、字段
輸出引數(字段):mat_doc
//執行bapi函式
function.execute
(jcodestination);
//獲取執行成功後返回的值
string invono = function.getexportparameterlist
().getstring
("mat_doc");
2.輸出內錶:
輸出引數(表):it_labst
表字段:matnr,lgort
//執行bapi函式
function.execute
(jcodestination);
jcotable outtable = function.gettableparameterlist
().gettable
("it_labst");
if(outtable!=null&&outtable.getnumrows()>0)
}
整合例子:綜合需求:
**(需try…catch):
//獲取連線
jcodestination jcodestination=this.sapconnectionpool.getsapdestination();
//從知識庫中取得乙個函式模板 zrfc_pp_053_mb1a
jcofunction function = jcodestination.getrepository
().getfunction
("zrfc_pp_053_mb1a");
//獲取傳入引數(移動型別)
function.getimportparameterlist
().setvalue
("move_type", 261);
//獲取輸入的結構體
jcostructure input = function.getimportparameterlist
().getstructure
("gdsmt_header");
//給結構體中的引數賦值(憑證中的記帳日期)
"pstng_date",);
//憑證中的記帳日期
"doc_date",);
//抬頭文字(非必填)
input.setvalue("header_txt","60008804操作內部訂單用料過賬");
//獲取輸入表引數 mb1a_item
jcotable inputtable = function.gettableparameterlist
().gettable
("mb1a_item");
//給表引數中的字段賦值
inputtable.setvalue("material", "100000705"); //物料號
inputtable.setvalue("plant", "1600"); //工廠
inputtable.setvalue("stge_loc", "440n"); //庫存地點
inputtable.setvalue("entry_qnt", 1); //數量
inputtable.setvalue("entry_uom", "ea"); //單位
inputtable.setvalue("orderid", "9003728"); //訂單編碼
//執行bapi函式
function.execute
(jcodestination);
//獲取執行成功後返回的值
string invono = function.getexportparameterlist
().getstring
("mat_doc");
//物料憑證編號
string doc_year=function.getexportparameterlist
().getstring
("doc_year");
//物料憑證年度
string message=function.getexportparameterlist
().getstring
("exmsg");
//整合失敗時才有訊息返回
JCo3 呼叫簡單SAP函式(Function)
本文闡述如何使用jco呼叫簡單sap函式。1.建立一sap使用者 test01 關於如何建立使用者,請參考我上一部落格 jco3 建立連線到sap 1 直接連線 2.編寫 3.編譯 4.執行 執行結果 本例呼叫sap function stfc connection 然後使用得到importpara...
RFC呼叫SAP介面程式之直接讀取SAP表案例4
這個需要有sap相關基礎知識。最起碼sap表結構要熟悉。根據品號讀取計量單位 idestinationconfiguration id new rfcconfig rfcdestinationmanager.registerdestinationconfiguration id rfcdestina...
Python呼叫遠端Socket介面
web應用通訊通常都喜歡用http介面,但不排除直接socket通訊的情況。socket除了server端構建麻煩些 需要考慮很多實際情況 對於呼叫者來說構建個client端其實不比http麻煩多少。usr bin env python coding utf 8 auther linvo impor...