BAPI与JCO的使用.doc_第1页
BAPI与JCO的使用.doc_第2页
BAPI与JCO的使用.doc_第3页
BAPI与JCO的使用.doc_第4页
BAPI与JCO的使用.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JCO与BAPI学习小节1BAPI的使用11.1 BAPI概念11.2BAPI相关界面11.3BAPI使用方法52.JCO的使用82.1JCO简介82.2JCO使用82.3JCO开发建议101BAPI的使用1.1 BAPI概念Term/SynonymDefinitionBusiness object (BO)1. 业务对象,封装了与该对象相关的数据与方法;2. 每个业务对象都必须定义关键字段,用于唯一确定一个特定的业务对象;3. 业务对象中某些通用的方法具有标准的定义格式(如getlist);4. 业务对象中定义的方法分为Instancedependent方法与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的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中结构不同,可能是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: 1000* - 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_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 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_NUMB = 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. 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_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-COMP_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 = 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 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 . ENDIF.2. JCO的使用2.1 JCO简介JCO是Java Connector的简称,它封装了JAVA-enabled RFC,实现了基于RFC的BAPI与JAVA接口。它提供结构化的BAPI调用,目前不支持面向对象的开发。2.2 JCO使用1) 类导入import com.sap.mw.jco.*;2) 建立R3连接,有两种方法:a持久连接/申明连接JCO.Client mConnection;/ 初始化连接mConnection =JCO.createClient(001, / SAP client, / userid*, / passwordEN, / language (null for 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 (pool = null) OrderedProperties logonProperties =OrderedProperties.load(/perties);JCO.addClientPool(POOL_NAME, / pool name5, / maximum number of connectionslogonProperties); / propertiesmConnection = JCO.getClient(POOL_NAME);System.out.println(mConnection.getAttributes();catch (Exception ex) 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 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”参数JCO.Structure jcoBapiReturn = jcoFunction.getExportParameterList().getStructure(RETURN); if (jcoBapiReturn.getField(TYPE).getValue().toString().equals(E) throw new Exception();7) 获得返回值JCO.Table jcoStatusInfo = j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论