BAPI 操作手册
作者:丑儿
MSN: njchouer@hotmail.com
abap 中关于 bapi 的介绍:
1.BAPI – business application programming interface
2.它实际上是一种特殊的 Remote Function Modules (RFC)是为了提供使用外部程序来进行交易
活动
3.它提供的基于企业目标(Business Object) 技术的接口应用界面
4.SAP 采用了 Object-oriented 技术,逻辑定义了 SAP R/3 系统的所有功能目标,并且将所有的目
标(Objects) 和 BAPIs 存储于企业目标库 BOR(Business Objects Repository).
5.SAP R/3 企业目标的目标类型(Object Type) 相当于目标设计语言中类(Class) 的概念,其定义
结构由以下几部分组成:基本数据,接口界面,键(Key Fields),方法(Methods),特征(Attributes),事
件(Events)
如何创建 BAPI 程序
1.定义 BAPI Structure (Structure 不能在 BAPI 中重复使用,因为一旦 BAPI 被释放,其 Structure
被冻结)
2.创建 FUNCTION MODULE
每个 BAPI 必须有自己的 Function Group,Function Group 属性必须为 RFC
3.创建 Business Object
4.使用 BAPI WIZARD 创建 API Method
这样 BAPI 可以被外部程序调用
5.Function Module 符合 BOR Method
4.释放 BAPI Function Module,
释放 Business Object Type,
释放 BAPI 作为 BOR 的一种 Method
BAPI 和 RFC 不是同一个层次上概念,不能说从字面上看到 BAPI 函数和 RFC 函数就认为他们之间
有必然的联系和区别。打个比如,问一个问题:人可以分为哪几类,答曰:男人和老人,呵~~,大
家都知道,男人是基于性别来说的,老人是基于年龄的。BAPI 是 SAP 提供的基于业务对象的函数,
关键是它们处理的对象是 R/3 的业务相关 business object),比如单据类销售订单,组织:公司
等,它们是一系列实体。RFC 则是一种系统间通讯的方式(Remote Funciton Call),一个男人可
能同时也是一个老人,一个 BAPI 函数往往能是一个 RFC 函数(我不知道是不是所有 BAPI 都可以
有基于 RFC 技术来调用,但是至少也可以说大部分吧,VB 里面用 BAPI,就是因为这个 BAPI 函数
具有 RFC 的特性)
--- BAPI 是个 SAP 里一个很好的思想,把业务对象都对象化了。刚学 ABAP/4 时,并不能理解 SAP
所说”ABAP/4”中的‘4’,而觉得它更像是一种脚本语言,顶多也就是和 C 一样,但是自从我接触了
BAPI 之后,我才体会到 SAP 说 ABAP 是种 4G 语言的确不虚。 当在外部调用 BAPI 的时候,比如
VB,就可以把 SAP 里的诸如订单,物料,员工,工厂等作为一个对象来处理,而且这种处理又是那
么的简单,可能只要几句代码就可以了,最关键就是:1.收集 BAPI 函数所要的数据,也就是 BAPI
输入参数,VB 也好,SAP 本身的 Screen 也好,甚至 Web 页面也好,只不过是一个数据收集器!
(要作一些必要的数据检查保证它们是正确的,不过即使不正确也没有关系,BAPI 会返回错误信息)
收集完成了,就送给 BAPI 作为参数,剩下的事都是 BAPI 给做了,你就不用管了! 2.接收 BAPI
返回的信息,也就是 BAPI 输出参数,并把它们“翻译”成恰当的形式给表达给用户。
BAPI 的简单实现步骤
一,创建 Function Module
1,在 SE11,创建需要的 structure
2,在 SE80,建 Function group
3,在 SE37,创建 Function Module
Note:一个 Function Group 只能包含一个 BAPI;参数传值;必须有有一个
BAPIRETURN 类型的 EXPORT 参数
二,封装
1,在 SWO1,建 Object Type
2,把 Function Module 作为一个 Method 加入,utilities->API Methods->Add
Method
3,release Object 和 Module。使在 BAPI Browser 中可以看到。也就是外部能
够调用。
三,调用
1,如在另一系统中用 ABAP 调用,先在 SM59 中建 RFC 联到有 BAPI 的 R/3,(ZGOGO)
在 SE38 的程序中调用,Call Function "ZBAPIXXXXX" DESTINATION ZGOGO
EXPORTING ...
2,如用 JAVA 调用
引入包;(不一定要用 IBM 的)
import com.sap.rfc.*;
import com.sap.rfc.exception.*;
import com.ibm.sap.bapi.*;
import com.ibm.sap.bapi.generated.*;
建立连接;调用。。。(See CALL_BAPI.java)
在《实战 SAP 程序开发》中学的简单的 BAPI2008 年 05 月 25 日 星期日 03:29 首先创建功
能模块:
1 建立功能模块: SE37
2 GOTO-->FUNCTION GROUPS-->CREATE GROUP
3 输入名称 单击 SAVE
4 建立功能模块,输入名称后,单击创建。
5 输入名称,函数组,描述后,单击 SAVE
6 进入功能模块设计界面后,根据需要定义输入输出参数,内表,源代码。
7 选择 ATTRIBUTES 页,选择 remote-enabled module
8 单击激活按钮,然后释放 Function module-->release-->release.
9 建立测试程序(调用自己创建的 FUNCTION)
定义 BAPI
1 输入 T-CODE :SWO1,输入名称,单击创建按钮。
2 输入对象名称等参数单击确定。
3 保存。
4 添加方法:选择菜单“utilities-->api methods --> add method”
5 选择函数(上面创建的 FUNCTION GROUPS),确认。
6 输入函数方法名称等参数,单击‘!>(对号左边的三角按钮)’,屏幕显示输入,输出参数
清单。
7 单击‘!>(对号左边的三角按钮)’系统提示方法未发布,继续。
8 确定后,在 METHODS 中出现了自己添加的 函数。
9 单击 PROGRAM 按钮,查看生成代码。
10 选择菜单 EDIT --> change release status --> object type -->to implemented 发布对象。
11 然后释放,object type-->change release status to-->released
12 完成后在 BAPI 主界面显示出该对象。
BAPI 操作简介:
T-CODE : BAPI 进入 BAPI 浏览界面。
Hierarchical(分等级的)/Alphabetical(按字母排序) 中,选中一个方法,系统显示对应的函
数。
双击函数,会显示输入,输出,变更,内表,等完整的信息,需要根据它编写调用的程序。
刚刚开始学 BAPI,不知道从什么地方入手,因此好多的东西都不知道怎么去做。前 2 天在
网上看到一篇关于这样的文章,但是自己手动操作的时候还是出现了一些问题,现在把它整
理成文档的形式,以供参考。
这里我非常感谢我的好朋友杜善晶,谢谢她给了我很大的帮助。
---题记(丑儿 2007-10-31)
1) 给 BAPI 创建数据结构(1)
事务代码:SE11- 输入结构的名称:ZBAPI_ORDER_STATUS_IMPORT
输入如下的 3 个字段
激活 保存
2) 给 BAPI 创建数据结构(2)
事务代码:SE11- 输入结构的名称:ZBAPISTAT
输入如下字段
激活 保存
2) 创建函数
事务代码:SE37
创建函数组:转到—〉函数组—〉创建组
输入函数组 和 函数组短文本
保存
输入 Function module:Z_BAPI_GET_ORDER_STATUSWW 点 创建
输入函数模块 和 函数组() 短文本 SAVE
属性选择状态如下
Import 输入如下的参数
Export 输入如下参数
Tables 选择参数
选择 goto –〉Global data 定义全局变量
激活 保存
输入代码如下
Types:
begin of Type_tj02t,
istat
like tj02t-istat,
txt04 like tj02t-txt04,
txt30 like tj02t-txt30,
end of type_tj02t.
DATA:
* Declarations for TABLE parameter
T_BAPISTAT like ZBAPISTAT occurs 0,