内容发布更新时间 : 2024/12/24 1:56:07星期一 下面是文章的全部内容请认真阅读。
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