ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:476.72KB ,
资源ID:3922831      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-3922831.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JCO与BAPI学习小节.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

JCO与BAPI学习小节.docx

1、JCO与BAPI学习小节JCO与BAPI学习小节1BAPI的使用 11.1 BAPI概念 11.2 BAPI相关界面 11.3 BAPI使用方法 52. JCO的使用 82.1 JCO简介 82.2 JCO使用 82.3 JCO开发建议 101BAPI的使用1.1 BAPI概念Term/SynonymDefinitionBusiness object (BO)1. 业务对象,封装了与该对象相关的数据与方法;2. 每个业务对象都必须定义关键字段,用于唯一确定一个特定的业务对象;3. 业务对象中某些通用的方法具有标准的定义格式(如getlist);4. 业务对象中定义的方法分为Instancede

2、pendent方法与instanceindependent两类。Business Object Repository业务对象仓库。Business Application Programming Interface(BAPI)1 访问R3中业务对象与业务过程的标准编程接口。 2 BAPIs 定义了BOR中业务对象的方法。 3 BAPIs 通过RFCenable的功能模块实现。4 用户可以自行开发新的BAPI以满足业务需求。 1.2 BAPI相关界面1)事务码BAPI:BAPI Explore2)双击Function module,可以浏览实现BAPI的功能模块。3)在该界面,可以浏览该BAPI

3、的IMPORT、EXPORT、TABLE参数,以及功能模块的相关文档。4)事务码:bwo2:Business Object Browser5)选中业务对象Salesorder,可以以面向对象的方式进行浏览。(注:其中只有蓝色的方法是有BAPI实现的,红色的方法不提供BAPI实现)6)BAPI测试工具,(点下图中注释的界面)7)该界面可以输入测试数据,测试相关的BAPI。1.3 BAPI使用方法在ABAP中调用BAPI的方法与调用Function Module的方法相同。只是要注意BAPI函数没有Exception,调用是否成功是通过参数return返回的。该return参数在不同的BAPI中结

4、构不同,可能是structure,也可能是table,编程时要注意。下面的程序是ABAP中调用BAPI_SALESORDER_CREATEFROMDAT2的例子。注意:1 创建时,订单类性等参数必须使用德语代码2 必须调用BAPI_TRANSACTION_COMMIT完成整个事务。3 某些数据必须用辅助结构(负责确定所要更新的数据位)完成数据更新。(如ORDER_ITEMS_IN和ORDER_ITEMS_INX)* Order header:* - Order type: OR Important you must use the german code TA* - Sales org: 10

5、00* - Distrb. chan.: 10* - Division: 00* - Sold to party: 1032* - Ship to party: 1032* - Purch order: DG-19970626-3* Order item:* - Material: P-100* - Qty: 1DATA:* Order partners LI_ORDER_PARTNERS TYPE STANDARD TABLE OF BAPIPARNR, L_ORDER_PARTNERS LIKE BAPIPARNR,* Structures for order header L_ORDER

6、_HEADER_IN LIKE BAPISDHD1, L_ORDER_HEADER_INX LIKE BAPISDHD1X,* Tables for order items LI_ORDER_ITEMS_IN TYPE STANDARD TABLE OF BAPISDITM, L_ORDER_ITEMS_IN LIKE BAPISDITM, LI_ORDER_ITEMS_INX TYPE STANDARD TABLE OF BAPISDITMX, L_ORDER_ITEMS_INX LIKE BAPISDITMX,* Return table from bapi call LI_RETURN

7、TYPE STANDARD TABLE OF BAPIRET2, L_RETURN TYPE BAPIRET2,* Sales document number L_VBELN LIKE BAPIVBELN-VBELN,* Error flag L_ERRFLAG(1) TYPE C.START-OF-SELECTION.*-* Build partner information*- CLEAR L_ORDER_PARTNERS. L_ORDER_PARTNERS-PARTN_ROLE = AG. Remember German codes ! L_ORDER_PARTNERS-PARTN_NU

8、MB = 0000001000. APPEND L_ORDER_PARTNERS TO LI_ORDER_PARTNERS.*-* Build order header*-* Update flag L_ORDER_HEADER_INX-UPDATEFLAG = I.* Sales document type L_ORDER_HEADER_IN-DOC_TYPE = TA. Remember German codes ! L_ORDER_HEADER_INX-DOC_TYPE = X.* Sales organization L_ORDER_HEADER_IN-SALES_ORG = 1000

9、. L_ORDER_HEADER_INX-SALES_ORG = X.* Distribution channel 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.* Purchase order L_ORDER_HEADER_IN-PURCH_NO_C = DG-19970626-300-FLC. L_ORDER_HEADER_INX-PURCH_NO_

10、C = X.*-* Build order item(s) - Only 1 is used in this example*-* 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-CO

11、MP_QUANT = 3 . L_ORDER_ITEMS_INX-COMP_QUANT = X. APPEND L_ORDER_ITEMS_IN TO LI_ORDER_ITEMS_IN. L_ORDER_ITEMS_INX-UPDATEFLAG = I. APPEND L_ORDER_ITEMS_INX TO LI_ORDER_ITEMS_INX.*-* CALL Bapi*- CALL FUNCTION BAPI_SALESORDER_CREATEFROMDAT2 EXPORTING ORDER_HEADER_IN = L_ORDER_HEADER_IN ORDER_HEADER_INX

12、= 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.*-* Check and write Return table*- CLEAR L_ERRFLAG. WRITE: / Sales dcoument: , L_VBELN. LOOP AT

13、 LI_RETURN INTO L_RETURN. WRITE: / L_RETURN-TYPE, L_RETURN-MESSAGE(50). IF L_RETURN-TYPE = E. L_ERRFLAG = X. ENDIF. ENDLOOP.*-* No errors - Commit*-CLEAR L_RETURN. IF L_ERRFLAG IS INITIAL. CALL FUNCTION BAPI_TRANSACTION_COMMIT EXPORTING RETURN = L_RETURN . WRITE : / L_RETURN-TYPE , L_RETURN-MESSAGE

14、. ENDIF.2. JCO的使用 JCO简介JCO是Java Connector的简称,它封装了JAVA-enabled RFC,实现了基于RFC的BAPI与JAVA接口。它提供结构化的BAPI调用,目前不支持面向对象的开发。 JCO使用1) 类导入import com.sap.mw.jco.*;2) 建立R3连接,有两种方法:a持久连接/申明连接JCO.Client mConnection;/ 初始化连接mConnection =JCO.createClient(001, / SAP client, / userid*, / passwordEN, / language (null for

15、 the default language), / application server host name00); / system number/建立连接try mConnection.connect();catch (Exception ex) ex.printStackTrace();System.exit(1);/关闭连接mConnection.disconnect();b连接池方式static final String POOL_NAME = Pool;JCO.Pool pool = JCO.getClientPoolManager().getPool(POOL_NAME);if

16、(pool = null) OrderedProperties logonProperties =OrderedProperties.load(/logon.properties);JCO.addClientPool(POOL_NAME, / pool name5, / maximum number of connectionslogonProperties); / propertiesmConnection = JCO.getClient(POOL_NAME);System.out.println(mConnection.getAttributes();catch (Exception ex

17、) ex.printStackTrace();。finally JCO.releaseClient(mConnection);3)获得BAPI方法JCO.Repository mRepository;mRepository = new JCO.Repository(ARAsoft, mConnection);IFunctionTemplate ft =trymRepository.getFunctionTemplate(“BAPI_SALESORDER_GETSTATUS”);catch (Exception ex) throw new Exception(Problem retrieving

18、 JCO.Function object.); / Create a function from the template jcoFunction = new JCO.Function(ft);4)设定输入参数 JCO.Field SalesDocumentField = jcoFunction.getImportParameterList().getField(SALESDOCUMENT); SalesDocumentField.setValue(iSalesDocument);5)执行BAPImConnection.execute(jcoFunction);6)处理“return”参数JC

19、O.Structure jcoBapiReturn = jcoFunction.getExportParameterList().getStructure(RETURN); if (jcoBapiReturn.getField(TYPE).getValue().toString().equals(E) throw new Exception();7) 获得返回值JCO.Table jcoStatusInfo = jcoFunction.getTableParameterList().getTable(STATUSINFO);。8)最后是异常的捕获与处理 JCO开发建议基于JAVA语言的特征,建议以如下的方式开发JCO应用。1) 主要的类:输入参数封装到java bean类中,并统一进行有效性检查。针对所要调用的BAPI建立代理类,将BAPI的业务功能封装起来。建立一个解释类,负责调用业务功能类,并将参数从java beans传递到业务功能类。2) 流程:

copyright@ 2008-2023 冰点文库 网站版权所有

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