《JCO与BAPI学习小节》由会员分享,可在线阅读,更多相关《JCO与BAPI学习小节(11页珍藏版)》请在金锄头文库上搜索。
1、细心整理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 BO1. 业务对象,封装了及该对象相关的数据及方法;2. 每个业务对象都必需定义关键字段,用于唯一确定一个特定的业务对象;3. 业务对象中某些通用的方法具有标准的定义格式如getlist;4. 业务对象中定义的方法分为Instancedependent方法及instanceindepend
2、ent两类。Business Object Repository业务对象仓库。Business Application Programming InterfaceBAPI1 访问R3中业务对象及业务过程的标准编程接口。 2 BAPIs 定义了BOR中业务对象的方法。 3 BAPIs 通过RFCenable的功能模块实现。4 用户可以自行开发新的BAPI以满足业务需求。 1.2 BAPI相关界面1事务码BAPI:BAPI Explore2双击Function module,可以阅读实现BAPI的功能模块。3在该界面,可以阅读该BAPI的IMPORT、EXPORT、TABLE参数,以及功能模块的相
3、关文档。4事务码:bwo2:Business Object Browser5选中业务对象Salesorder,可以以面对对象的方式进展阅读。注:其中只有蓝色的方法是有BAPI实现的,红色的方法不供应BAPI实现6BAPI测试工具,点下列图中注释的界面7该界面可以输入测试数据,测试相关的BAPI。1.3 BAPI运用方法在ABAP中调用BAPI的方法及调用Function Module的方法一样。只是要留意BAPI函数没有Exception,调用是否成功是通过参数return返回的。该return参数在不同的BAPI中构造不同,可能是structure,也可能是table,编程时要留意。下面的程
4、序是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* -
5、 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_
6、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
7、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 T
8、O 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.* Distr
9、ibution 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
10、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_QUAN
11、T = 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 SALESDOCUME
12、NT = 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