本文目录
BAdIs(Business Add-Ins)是SAP在R/3 release 4.6A后增加的增强技术。 BAdIs克服了之前出口的所有缺点,并且还是用最新的OO技术实现。
常用事务代码:
SE18:创建及维护BAdI对象,创建增强点①维护接口/类(Interface)【维护方法,维护方法的参数】②维护实施Implementation(可以在SE19下面查看)。
SE19:维护BAdI实例,BAdI功能的实现。
一、查找BADI
通过SE24,输入CL_EXITHANDLER,然后在方法GET_INSTANCE中设置断点,然后运行事务代码判断 exit_name的值,操作过程如下:
再去se18查看里面的方法:
二、创建物料MM01的增强示例
业务逻辑: 当使用MM01创建物料的销售视图时,“税分类”自动填充默认值‘0’ 。查找方法和上面相同,打上断点后,输入事务码MM01之后查找到:
BADI_SCREEN_LOGIC_RT
W_RETAILSYSTEM_IDENT
BADI_MATN1
选择视图后:
BADI_MATERIAL_OD
BADI_MATERIAL_REF
找到这些增强名字后去SE18查看是不是自己需要的增强点,有没有包含需要的字段名,最后确定在BADI_MATERIAL_REF里面:
实施创建,激活
(SE19 修改刚刚创建的)
点击METHOD 进入写相关代码:
三、MIGO屏幕增强示例
业务逻辑: MIGO,录入采购订单后,行项目信息中增加一个页签,页签中增加输入框,按下保存时,将数据保存到自建数据表中。
查找方法同上,找到对应的增强点:MB_MIGO_BADI
注意这里和上一个例子有点不同的是不能直接创建 找到 spot
在SE18里面进入增强点,创建:
或者SE19中创建:
保存全部激活。
PBO事件:
PAI事件:
POST:
创建屏幕:
最终效果:
总结
①数据库表:存储数据,以行项目为主键
②一个内表:用来存储界面中的数据
③对应的结构体
④3个函数:PUT DATA 从内表取数 传给函数;GET DATA 从函数获取 可以存储到内表;
SAVE DATA 出内表存储到数据库表 。
1、SE11建立数据表,主要是用于存放附加的数据:
2、建立结构,在屏幕数据交换的时候使用:
3、建立表类型,并设置关键字:
4、SE80建立函数组,并创建对应的界面格式:
GET_DATA:
function:ZIM BADIEXAMPLE GET DATA
*Local interface:
*EXPORTING
* REFERENCE(ES_MIGO_BADISCREEN_FIELDS)TYPE
* 2JIM_BADI_EXAMPLE_SCREENFIED
*Get all data from fields of ekternal screen
*First move all customer-fields
MOVE-CORRESPONDING iim badi exampl To es_migo_badi_screen_fieldS.
*second move all GoITEm-fields (displayed on external sereen)
PUT_DATA:
function:ZIIM BADI EXAMPLE PUT DATA.
*Local interface:
*IMPORTING
* REFERENCE(IS_MIGO_BADISCREEN_FIELDS)TYPE
* ZJIM_BADI_EXAMPLE_SCREEN_FIELD
*Put all data from fields to external screen
*First fill all customer-fields+
MOVE-CORRESPONDING is_migo_badi_screen_fields To JIM_badi_ekamp
UPDATE_DATA:
INSERT zjiM_BADI_EXAMPL FROM TABLE IT_MIGO_BADI_EXAMPE.
IF sy-subre <> 0.
MESSAGE a398(00) WITHE 'error update MIGO_BADI_EXAMPL'.
ENDIF.
在INCLUDE:LZJIM_BADI001TOP
声明TABLEs :Zjim_badi_exampl.
到这里增强需要准备的做完了,接下来开始创建实现:
5、SE19创建
执行激活类:
双击类并维护类属性,GT_EXTDATA 用于数据交换,类型为ZJIM_TY_T_EXTDATA 表类型:
6、激活各种方法并维护,如上面提到的PBO、PAI等,就完成了。