JCO3遠端呼叫SAP介面隨筆二 輸入 出參

2021-07-06 11:17:21 字數 4395 閱讀 8746

遠端呼叫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...