1.创建BADI
Tcode: SE18 (BADI Builder)
(注:不能通过画面上的create来创建,除非使用一个enhancement Spot)
只能这样,如图1:
在Interface处,我们双击进入interface(如图2),我们定义一个Method:
定义method(如图3):
定义该method的parameter(如图4).
然后我们激活该interface.
现在我们的BADI变成如图5.
我们这里不再去实现Fcode(Menu exit)与Subscreen(Screen Exit).
保存该BADI.
2.实现BADI
Tcode : SE19 (BADI Implementation)
进入后,如图6.
点CreateImpl,如图7
进入后,点interface,如图8.
双击这个method:change_item进入并coding如下:
if im_carrid = 'AC'.
ex_carrid = '这是AC'.
else.
ex_carrid = im_carrid.
endif.
激活.,退出到如图9的这个界面,再激活.
report ztest_badi.
*---types
types:begin of typ_scarr,
carrid type scarr-carrid,
carrname type scarr-carrname,
currcode type scarr-currcode,
end of typ_scarr.
*---data for badi
data: go_badi type ref to zif_ex_test_badi.
*---define data
data: gw_scarr type typ_scarr,
gt_scarr type table of typ_scarr.
start-of-selection.
*---get data
select
carrid
carrname
currcode
from scarr
into table gt_scarr.
*---get the badi instance
call method cl_exithandler=>get_instance
changing
instance = go_badi.
*---output data
data: lw_output type string.
loop at gt_scarr into gw_scarr.
lw_output = gw_scarr-carrid.
call method go_badi->change_item
exporting
im_carrid = gw_scarr-carrid
importing
ex_carrid = lw_output.
write:/10 lw_output, 60 gw_scarr-carrname, 100 gw_scarr-currcode.
endloop.
执行结果如图10.
评论