SAPBAPI函数使用及示例

更新时间:2024-01-11 00:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 bapi概述

(1) bapis是\的简写,中文翻译为\业务应用编程接口\。

不同的系统或模块进行通讯时,就需要用到编程接口。

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

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

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

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

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

2 查看bapi

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

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

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

3 bapi编程 -- abap中访问bapi

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

例:进行月末结帐时,为了防止用户进行物料移动,在订单结算之前,需要锁定系统用户。 下面这一段代码就用来完成这个功能,它利用了bapi函数\和\。

------------------------------------------------------------------------------- report z_fi_f13 no standard page heading line-size 100.

* 声明全局变量

tables:usr21.

data:begin of itab occurs 0, bname like usr21-bname, end of itab.

data rtn like bapiret2 occurs0.

* 选择屏幕

selection-screen begin of block blk0 with frame title text-010. parameters: p_lock radiobutton group rad1 default 'X', \锁定 p_unlock radiobutton group rad1. \解锁 selection-screen end of block blk0.

selection-screen begin of block blk1 with frame title text-020. select-options p_bname for user21-bname. selection-screen end of block blk1.

* 初始化选择屏上的变量 initialization.

p_bname-sign = 'I'. p_bname-option = 'EQ'. p_bname-low = 'AD003'. append p_bname. p_bname-sign = 'I'. 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.

if p_lock = 'X'.

call function 'bapi_user_lock' exporting

username = itab-bname tables

return = rtn. endif.

if p_unlock = 'X'.

call function 'bapi_user_unlock' exporting

username = itab-bname tables

return = rtn. endif. endloop.

if p_lock = 'X'.

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

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

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

CALL FUNCTION 'BAPI_PROJECT_GETINFO' EXPORTING

with_subtree = '1' TABLES

i_wbs_element_table = i_proj 原始表

e_wbs_hierarchie_table = i_hierarchie_tab. 得到正确层次后的表 IF sy-subrc NE 0 .

MESSAGE '无法获得项目的层次结构!' TYPE 'E'. ENDIF.

5.使用对话框

CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE' EXPORTING

* DEFAULTOPTION = 'Y'

diagnosetext1 = '删除类别' \显示文本的主题

* DIAGNOSETEXT2 = ' ' * DIAGNOSETEXT3 = ' '

textline1 = l_str \显示的内容

* TEXTLINE2 = ' '

titel = '删除一级类别' \标题栏

* START_COLUMN = 25 * START_ROW = 6

* CANCEL_DISPLAY = 'X' IMPORTING

ANSWER = l_answer. \执行的“是/否” 返回值,是返回“J”,否返回“N”

如果l_answer = ‘J’说明用户选择的为“是”如果是‘N’则选择的为“否”

6 选择文件对话框

如果在程序里要选择一个文件,则使用“WS_FILENAME_GET”BAPI函数就会弹出一个对话框然后选择需要的文件,其中def_path 对就的是接收此地址的输入框,mask是过滤文件类型,title是对话框标题栏显示的文本,filename也是接收地址的输入框 CALL FUNCTION 'WS_FILENAME_GET' \弹出及设置对话框属性的函数

EXPORTING

def_path = p_basic

mask = ',*.xls,*.xls.' \文件过滤器,只能选择*.xls文件

mode = ' ' title = text-001 IMPORTING

filename = p_basic EXCEPTIONS

inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5

7.

将字符串尾的负号放在字符串首(用se37查看)

将字符串尾的负号放在字符串首 将字符串尾的负号放在字符串首 CLOI_PUT_SIGN_IN_FRONT CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' CHANGING VALUE = EXCEPTION OTHERS = 1. 2 目的 Func 程序代码 注意事项 8. 使用BAPI:“DATE_STRING_CONVERT”可以将输入的日期字

符串(20070803)转换为日期格式的(2007-08-03)见下面的句子:

DATA: dat TYPE sy-datum, str(10) TYPE c, df TYPE usr01-datfm. dat = '20070803'.

WRITE dat TO str .

SELECT SINGLE datfm INTO df FROM usr01 WHERE bname = sy-uname. CALL FUNCTION 'DATE_STRING_CONVERT' EXPORTING

date_format = df date_string = str IMPORTING

result_date = dat.

WRITE dat . 结果如下:

图12

9. BAPI执行后,正确则提交,错误则回滚.

DATA:i_return_2 TYPE bapiret2,

i_return LIKE bapiret2.

IF i_return-type = 'S'. \判断返回状态“S”创建成功,则提交 CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X' IMPORTING

return = i_return_2.

ELSEIF i_return-type = 'E'. \创建“物料组件”失败,则回滚 CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF.

该方法根据BAPI执行后返回的(type)类型不同而有所不同,有的返回’S’,有的返回空格为正确执行.

本文来源:https://www.bwwdw.com/article/gjso.html

Top