BADIs是Business Add-Ins的缩写,BADIs是基于ABAP面向对象的SAP增强的新技术,它可以插入到SAP系统中,以实现用户个性化的需求,而此类需求由于过于特殊,以至于SAP标准系统无法实现。
BADIs应该被当作为广义的函数模块,这单个函数模块捆绑了程序,菜单,屏幕增强。
每一个BADIs包括:
- 至少一个BADIs的定义
- 一个BADIs接口
- 一个BADIs接口的实施类
BADIs特性:
- 使用面向对象的方法
- 包括两部分:定义和实施,定义既可以由SAP提供也可以用户自己创造
- 不再假定双层系统架构(SAP / 客户)
- 允许多层次的程序开发 ( SAP, partners, customers, and as country versions, industry solutions, and the like)
- 可以拥有多层表达 - 例如一个BADI的执行可以基于多个标准
- 版本升级不会影响标准程序调用增强也不会影响接口的可用性
- 无 SSCR (SAP Software Change Registration) 要求
定义BADI:
T-CODE: SE18(定义函数模块)
Definition-Attributes:
- 当一个BADI被创建时, Adapter Class名称自动添加'CL_EX_'在名字抬头
- Multiple use:当这个选项被选择时,同一个BADI可以多次被实施
- Filter-Dependent : BADIs可以根据特定的Filter值进行实施 (例如, 特定国家版本: 不同的国家可以用一个BADI进行不同的实施). 当定义一个这类BADIs时,Filter值的类型必须输入(例如:一个国家 or 某个部门). 这个BADI接口中的所有方法在创建时,都会产生一个输入参数'FLT_VAL'作为Filter值。在这个方法执行时,该方法会根据Filter值来选择激活的实施
Definition-Interface:
- 当一个接口被创建时,会自动添加'IF_EX_'在接口名称的抬头,双击接口,可以直接进入类编辑器,进行参数,方法和例外的编辑
Definition-Interface-Methods:
- 在类编辑器里面具体实现接口的方法
- 实例方法先于类的所有属性,并且可以调用类的所有事件
- 静态方法只能先于静态属性,调用静态事件
- 创建参数按钮查看方法的Import/Export参数
Definition-Interface-Methods-Parameter:
- 方法的Import/Export参数在'Parameters'中定义
- 类型指明了参数的类型(Importing, Exporting, Changing or Returning)
- 非必输参数,选择Optional field
- 可以指定type, default value and description of the parameter
Definition-Interface-Methods-Exceptions:
- 此部分可以指明异常处理
- 对于异常类,选择 'Exception Classes'