SAPBAPI函数使用及示例.doc

1 bapi概述

(1) bap is 是\7'的简写,中文翻译为\业务 应用编程接口〃。 不同的系统或模块进行通讯时,就需要用到编程接口。

(2) bapi时外部应用程序访问sap业务对象的方法。在面向对象编程方面,业务对象 (business object)和bapi是sap的两个很重要的内容,业务对象就是类,bapi就是业 务对象的方法。他们的关系描述如下:

kernel -一> intergrity 一-> interface 一一>access: kernel为内核,对数据库直接进行操作

intergrity为业务对象,将实际业务定义成一个类

interface为应用编程接口,通过该接口,对业务对彖进行操作 access为访问方式,直接面向对象编程或远程函数调用

⑶ 每一个bapi都有与之对应的以” bapi_ “开头的函数。例如:业务对象” user “表示” 系统用户“,它有bapi (方法)“lock”和“unlock”,它们用来锁定系统用户和对系统用 户解锁。这两个方法对应的函数为“bapi_use:r_lock\和\api_user_unlock”。

2查看bapi

(1)运行bapi,进入sap bapi浏览器,在这里,我们能够通过业务层次迅速找到需要的业 务对象和方法。 如:

业务对象一> bussines object 关键字段一> short description bapi --> method

与 bapi 对应的函数 --> function module

3 bapi编程-abap中访问bapi

rfl于ABAP不是面向对彖的语言,所以在abap程序中使用bapi实际上是调用bapi函数。把 皮的函数名称,可以在bapi exploer中的afunction module\见到。

例:进行月末结帐吋,为了防止用户进行物料移动,在订单结算之前,需要锁定系统用户。 下面这一段代码就用来完成这个功能,它利用了 bapi函数\和 \—User—Unlock\。 report z_fi_f13 no standard page heading line-size 100. *声明全局变量 tablcs:usr21. data:begin of itab occurs 0,

bname 1 ike usr21-bname,

end of itab.

data rtn like bapiret2 occurs0. *选择屏幕

seiection-screen begin of block blkO with frame title text-010. parameters: p_lock radiobutton group radl default ‘X’,

p unlock radiobutton group radl?

selection-screen end of block blk0?

seiection-screen begin of block blkl with frame title text-020? select-options p_bname for user21-bname. selection-screen end of block blk1? *初始化选择屏上的变量 initialization. p_bname-sign 二 p bname-option = 'EQ'. p_bname-1ow = 'AD003'. append p bname.

p_bname-sign 二 ? p_bname-option = 'EQ'. p_bname-low = 'TMSADM. append p_bname. *主要数据处理逻辑 start-of-selection. select bname

into corresponding fields of table itab from use21

where bname not in p bname

and persnumber not in ( select persnumber from adrp where name_last 二'000)? loop at itab.

\锁定 \解锁

?

i f p_lock 二’X'.

call function bapi user lock exporting

username = i tab-bname tables return endif.

if p unlock 二'X'.

二 rtn

J

cal 1 function 'bapi_user_uniock' exporting username = itab-bname tables return endi f. endloop? if p_lock 二’X’ ?

message i846(so) with '所有用户解锁完成!’? else. message i846(so) with '所有用户解锁完成! endif.

=rtn<

4?得到输入的对象(如项目定义)的层次结构但API函数)

CALL FUNCTION 1BAPI_PROJECT_GETINFO1

EXPORTING with_subtree TABLES

i_wb s_element_table

= i_pro j

原女台表

= 111

e_w bs_hier4tchie_t4 b* = i_hierarchie_ta b ? IF sy-subrc NE 0 . MESSAGE,无法获得项目的层次结构L TYPE 'E* . ENDIF.

得到正确层次后的表

5.使用对话框

CALL FUNCTION 1POPUP_TO_CONFIRM_WITH_MESSAGE

EXPORTING

DEFAULTOPTION

diagnosetextl

=y 1

=,删除类别,

”显示文

木的主题

* ★

DIAGN0SETEXT2 DIAGN0SETEXT3 textlinel TEXTLINE2

= =

99

F

F

= l_str

= F

\显示

的内容

*

F

titel

STAR T_COLUMN START ROW

=,删除一级类别,

\标题

★ ★

=25 =6

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4