JCO与BAPI学习小节.docx

上传人:b****4 文档编号:3922831 上传时间:2023-05-06 格式:DOCX 页数:15 大小:476.72KB
下载 相关 举报
JCO与BAPI学习小节.docx_第1页
第1页 / 共15页
JCO与BAPI学习小节.docx_第2页
第2页 / 共15页
JCO与BAPI学习小节.docx_第3页
第3页 / 共15页
JCO与BAPI学习小节.docx_第4页
第4页 / 共15页
JCO与BAPI学习小节.docx_第5页
第5页 / 共15页
JCO与BAPI学习小节.docx_第6页
第6页 / 共15页
JCO与BAPI学习小节.docx_第7页
第7页 / 共15页
JCO与BAPI学习小节.docx_第8页
第8页 / 共15页
JCO与BAPI学习小节.docx_第9页
第9页 / 共15页
JCO与BAPI学习小节.docx_第10页
第10页 / 共15页
JCO与BAPI学习小节.docx_第11页
第11页 / 共15页
JCO与BAPI学习小节.docx_第12页
第12页 / 共15页
JCO与BAPI学习小节.docx_第13页
第13页 / 共15页
JCO与BAPI学习小节.docx_第14页
第14页 / 共15页
JCO与BAPI学习小节.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JCO与BAPI学习小节.docx

《JCO与BAPI学习小节.docx》由会员分享,可在线阅读,更多相关《JCO与BAPI学习小节.docx(15页珍藏版)》请在冰点文库上搜索。

JCO与BAPI学习小节.docx

JCO与BAPI学习小节

JCO与BAPI学习小节

1.BAPI的使用1

1.1BAPI概念1

1.2BAPI相关界面1

1.3BAPI使用方法5

2.JCO的使用8

2.1JCO简介8

2.2JCO使用8

2.3JCO开发建议10

1.BAPI的使用

1.1BAPI概念

Term/Synonym

Definition

Businessobject(BO)

1.业务对象,封装了与该对象相关的数据与方法;

2.每个业务对象都必须定义关键字段,用于唯一确定一个特定的业务对象;

3.业务对象中某些通用的方法具有标准的定义格式(如getlist);

4.业务对象中定义的方法分为Instance-dependent方法与instance-independent两类。

BusinessObjectRepository

业务对象仓库。

BusinessApplicationProgrammingInterface(BAPI)

1访问R3中业务对象与业务过程的标准编程接口。

2BAPIs定义了BOR中业务对象的方法。

3BAPIs通过RFC-enable的功能模块实现。

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

1.2BAPI相关界面

1)事务码BAPI:

BAPIExplore

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

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

4)事务码:

bwo2:

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:

1032

*-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'."RememberGermancodes!

L_ORDER_HEADER_INX-DOC_TYPE='X'.

*Salesorganization

L_ORDER_HEADER_IN-SALES_ORG='1000'.

L_ORDER_HEADER_INX-SALES_ORG='X'.

*Distributionchannel

L_ORDER_HEADER_IN-DISTR_CHAN='10'.

L_ORDER_HEADER_INX-DISTR_CHAN='X'.

*Division

L_ORDER_HEADER_IN-DIVISION='00'.

L_ORDER_HEADER_INX-DIVISION='X'.

*Purchaseorder

L_ORDER_HEADER_IN-PURCH_NO_C='DG-19970626-300-FLC'.

L_ORDER_HEADER_INX-PURCH_NO_C='X'.

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

*Buildorderitem(s)-Only1isusedinthisexample

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

*

L_ORDER_ITEMS_IN-ITM_NUMBER='000010'.

L_ORDER_ITEMS_INX-ITM_NUMBER='000010'.

L_ORDER_ITEMS_IN-MATERIAL='P-100'.

L_ORDER_ITEMS_INX-MATERIAL='X'.

L_ORDER_ITEMS_IN-TARGET_QTY='3.000'.

L_ORDER_ITEMS_INX-TARGET_QTY='X'.

L_ORDER_ITEMS_IN-COMP_QUANT=3.

L_ORDER_ITEMS_INX-COMP_QUANT='X'.

APPENDL_ORDER_ITEMS_INTOLI_ORDER_ITEMS_IN.

L_ORDER_ITEMS_INX-UPDATEFLAG='I'.

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.

WRITE:

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

IFL_RETURN-TYPE='E'.

L_ERRFLAG='X'.

ENDIF.

ENDLOOP.

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

*Noerrors-Commit

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

CLEARL_RETURN.

IFL_ERRFLAGISINITIAL.

CALLFUNCTION'BAPI_TRANSACTION_COMMIT'

EXPORTING

RETURN=L_RETURN

.

WRITE:

/L_RETURN-TYPE,L_RETURN-MESSAGE.

ENDIF.

 

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

"****",//password

"EN",//language(nullforthedefaultlanguage)

"",//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());

}

catch(Exceptionex){

ex.printStackTrace();

}

finally{

JCO.releaseClient(mConnection);

}

3)获得BAPI方法

JCO.RepositorymRepository;

mRepository=newJCO.Repository("ARAsoft",mConnection);

IFunctionTemplateft=

try{

mRepository.getFunctionTemplate(“BAPI_SALESORDER_GETSTATUS”);

}

catch(Exceptionex){

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-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2