BAPI与JCO的使用Word文档格式.docx

上传人:b****7 文档编号:22109025 上传时间:2023-02-02 格式:DOCX 页数:15 大小:476.98KB
下载 相关 举报
BAPI与JCO的使用Word文档格式.docx_第1页
第1页 / 共15页
BAPI与JCO的使用Word文档格式.docx_第2页
第2页 / 共15页
BAPI与JCO的使用Word文档格式.docx_第3页
第3页 / 共15页
BAPI与JCO的使用Word文档格式.docx_第4页
第4页 / 共15页
BAPI与JCO的使用Word文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

BAPI与JCO的使用Word文档格式.docx

《BAPI与JCO的使用Word文档格式.docx》由会员分享,可在线阅读,更多相关《BAPI与JCO的使用Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

BAPI与JCO的使用Word文档格式.docx

4用户可以自行开发新的BAPI以满足业务需求。

1.2BAPI相关界面

1)事务码BAPI:

BAPIExplore

2)双击Functionmodule,可以浏览实现BAPI的功能模块。

3)在该界面,可以浏览该BAPI的IMPORT、EXPORT、TABLE参数,以及功能模块的相关文档。

4)事务码:

swo2:

BusinessObjectBrowser

5)选中业务对象Salesorder,可以以面向对象的方式进行浏览。

(注:

其中只有蓝色的方法是有BAPI实现的,红色的方法不提供BAPI实现)

6)BAPI测试工具,(点下图中注释的界面)

7)该界面可以输入测试数据,测试相关的BAPI。

1.3BAPI使用方法

在ABAP中调用BAPI的方法与调用FunctionModule的方法相同。

只是要注意BAPI函数没有Exception,调用是否成功是通过参数return返回的。

该return参数在不同的BAPI中结构不同,可能是structure,也可能是table,编程时要注意。

下面的程序是ABAP中调用BAPI_SALESORDER_CREATEFROMDAT2的例子。

注意:

1.创建时,订单类性等参数必须使用德语代码

2.必须调用BAPI_TRANSACTION_COMMIT完成整个事务。

3.某些数据必须用辅助结构(负责确定所要更新的数据位)完成数据更新。

(如ORDER_ITEMS_IN和ORDER_ITEMS_INX)

************************************************************************

*Orderheader:

*-Ordertype:

ORImportantyoumustusethegermancodeTA

*-Salesorg:

1000

*-Distrb.chan.:

10

*-Division:

00

*-Soldtoparty:

1032

*-Shiptoparty:

*-Purchorder:

DG-19970626-3

*Orderitem:

*-Material:

P-100

*-Qty:

1

DATA:

*Orderpartners

LI_ORDER_PARTNERSTYPESTANDARDTABLEOFBAPIPARNR,

L_ORDER_PARTNERSLIKEBAPIPARNR,

*Structuresfororderheader

L_ORDER_HEADER_INLIKEBAPISDHD1,

L_ORDER_HEADER_INXLIKEBAPISDHD1X,

*Tablesfororderitems

LI_ORDER_ITEMS_INTYPESTANDARDTABLEOFBAPISDITM,

L_ORDER_ITEMS_INLIKEBAPISDITM,

LI_ORDER_ITEMS_INXTYPESTANDARDTABLEOFBAPISDITMX,

L_ORDER_ITEMS_INXLIKEBAPISDITMX,

*Returntablefrombapicall

LI_RETURNTYPESTANDARDTABLEOFBAPIRET2,

L_RETURNTYPEBAPIRET2,

*Salesdocumentnumber

L_VBELNLIKEBAPIVBELN-VBELN,

*Errorflag

L_ERRFLAG

(1)TYPEC.

START-OF-SELECTION.

*------------------------------------------------------------------

*Buildpartnerinformation

CLEARL_ORDER_PARTNERS.

L_ORDER_PARTNERS-PARTN_ROLE='

AG'

."

RememberGermancodes!

L_ORDER_PARTNERS-PARTN_NUMB='

0000001000'

.

APPENDL_ORDER_PARTNERSTOLI_ORDER_PARTNERS.

*Buildorderheader

*Updateflag

L_ORDER_HEADER_INX-UPDATEFLAG='

I'

*Salesdocumenttype

L_ORDER_HEADER_IN-DOC_TYPE='

TA'

L_ORDER_HEADER_INX-DOC_TYPE='

X'

*Salesorganization

L_ORDER_HEADER_IN-SALES_ORG='

1000'

L_ORDER_HEADER_INX-SALES_ORG='

*Distributionchannel

L_ORDER_HEADER_IN-DISTR_CHAN='

10'

L_ORDER_HEADER_INX-DISTR_CHAN='

*Division

L_ORDER_HEADER_IN-DIVISION='

00'

L_ORDER_HEADER_INX-DIVISION='

*Purchaseorder

L_ORDER_HEADER_IN-PURCH_NO_C='

DG-19970626-300-FLC'

L_ORDER_HEADER_INX-PURCH_NO_C='

*Buildorderitem(s)-Only1isusedinthisexample

*

L_ORDER_ITEMS_IN-ITM_NUMBER='

000010'

L_ORDER_ITEMS_INX-ITM_NUMBER='

L_ORDER_ITEMS_IN-MATERIAL='

P-100'

L_ORDER_ITEMS_INX-MATERIAL='

L_ORDER_ITEMS_IN-TARGET_QTY='

3.000'

L_ORDER_ITEMS_INX-TARGET_QTY='

L_ORDER_ITEMS_IN-COMP_QUANT=3.

L_ORDER_ITEMS_INX-COMP_QUANT='

APPENDL_ORDER_ITEMS_INTOLI_ORDER_ITEMS_IN.

L_ORDER_ITEMS_INX-UPDATEFLAG='

APPENDL_ORDER_ITEMS_INXTOLI_ORDER_ITEMS_INX.

*CALLBapi

CALLFUNCTION'

BAPI_SALESORDER_CREATEFROMDAT2'

EXPORTING

ORDER_HEADER_IN=L_ORDER_HEADER_IN

ORDER_HEADER_INX=L_ORDER_HEADER_INX

IMPORTING

SALESDOCUMENT=L_VBELN

TABLES

RETURN=LI_RETURN

ORDER_ITEMS_IN=LI_ORDER_ITEMS_IN

ORDER_ITEMS_INX=LI_ORDER_ITEMS_INX

ORDER_PARTNERS=LI_ORDER_PARTNERS.

END-OF-SELECTION.

*CheckandwriteReturntable

CLEARL_ERRFLAG.

WRITE:

/'

Salesdcoument:

'

L_VBELN.

LOOPATLI_RETURNINTOL_RETURN.

/L_RETURN-TYPE,L_RETURN-MESSAGE(50).

IFL_RETURN-TYPE='

E'

L_ERRFLAG='

ENDIF.

ENDLOOP.

*Noerrors-Commit

CLEARL_RETURN.

IFL_ERRFLAGISINITIAL.

BAPI_TRANSACTION_COMMIT'

RETURN=L_RETURN

.

WRITE:

/L_RETURN-TYPE,L_RETURN-MESSAGE.

2.JCO的使用

JCO简介

JCO是JavaConnector的简称,它封装了JAVA-enabledRFC,实现了基于RFC的BAPI与JAVA接口。

它提供结构化的BAPI调用,目前不支持面向对象的开发。

JCO使用

1)类导入

importcom.sap.mw.jco.*;

2)建立R3连接,有两种方法:

a.持久连接

//申明连接

JCO.ClientmConnection;

//初始化连接

mConnection=

JCO.createClient("

001"

//SAPclient

"

<

userid>

//userid

****"

//password

EN"

//language(nullforthedefaultlanguage)

hostname>

//applicationserverhostname

00"

);

//systemnumber

//建立连接

try{

mConnection.connect();

}

catch(Exceptionex){

ex.printStackTrace();

System.exit

(1);

//关闭连接

mConnection.disconnect();

b.连接池方式

staticfinalStringPOOL_NAME="

Pool"

;

JCO.Poolpool=JCO.getClientPoolManager().getPool(POOL_NAME);

if(pool==null){

OrderedPropertieslogonProperties=

OrderedProperties.load("

/logon.properties"

JCO.addClientPool(POOL_NAME,//poolname

5,//maximumnumberofconnections

logonProperties);

//properties

mConnection=JCO.getClient(POOL_NAME);

System.out.println(mConnection.getAttributes());

finally{

JCO.releaseClient(mConnection);

3)获得BAPI方法

JCO.RepositorymRepository;

mRepository=newJCO.Repository("

ARAsoft"

mConnection);

IFunctionTemplateft=

try{

mRepository.getFunctionTemplate(“BAPI_SALESORDER_GETSTATUS”);

thrownewException("

ProblemretrievingJCO.Functionobject."

//Createafunctionfromthetemplate

jcoFunction=newJCO.Function(ft);

4)设定输入参数

JCO.FieldSalesDocumentField=jcoFunction.getImportParameterList().getField("

SALESDOCUMENT"

SalesDocumentField.setValue(iSalesDocument);

5)执行BAPI

mConnection.execute(jcoFunction);

6)处理“return”参数

JCO.StructurejcoBapiReturn=jcoFunction.getExportParameterList().getStructure("

RETURN"

if((jcoBapiReturn.getField("

TYPE"

).getValue()).toString().equals("

E"

))

thrownewException();

7)获得返回值

JCO.TablejcoStatusInfo=jcoFunction.getTableParameterList().getTable("

STATUSINFO"

8)最后是异常的捕获与处理

JCO开发建议

基于JAVA语言的特征,建议以如下的方式开发JCO应用。

1)主要的类:

输入参数封装到javabean类中,并统一进行有效性检查。

针对所要调用的BAPI建立代理类,将BAPI的业务功能封装起来。

建立一个解释类,负责调用业务功能类,并将参数从javabeans传递到业务功能类。

2)流程:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1