ABAP BADI
ABAP BADI
🎯 BADI概述
BADI(==Business Add-In==)是一种增强技术,允许在SAP系统中实现预定义的特殊功能来增强各种应用。类似于Microsoft Excel的加载项,SAP通过提供称为BADI的==业务加载项==来实现一些预定义的功能。
BADI必须首先被==定义==,然后==实现==以增强SAP应用程序。在定义BADI时,将创建一个接口。BADI由该接口实现,接口又由一个或多个适配器类实现。
graph TD
A[BADI定义] --> B[创建接口]
B --> C[适配器类实现接口]
C --> D[客户自定义实现]
D --> E[增强后的SAP应用]
🔍 BADI与其他增强技术的区别
BADI技术与其他增强技术在两个方面不同:
- ==增强技术只能实现一次==
- ==可以被许多客户同时使用==
ℹ️过滤器BADI
您还可以创建==过滤器BADI==,这意味着BADI是基于过滤的数据定义的,这是传统增强技术不可能实现的。
📋 SAP版本中的BADI
在SAP版本7.0中重新定义了BADI的概念,具有以下目标:
- 通过在ABAP语言中添加
GET BADI和CALL BADI来增强标准应用程序 - 提供更多灵活性功能,如==上下文==和==过滤器==
graph LR
A[BADI优势] --> B[灵活性]
A --> C[上下文支持]
A --> D[过滤器功能]
A --> E[多客户支持]
A --> F[可重复使用]
B --> B1["GET BADI / CALL BADI"]
C --> C1["上下文相关的增强"]
D --> D1["基于过滤数据的增强"]
E --> E1["多客户同时使用"]
F --> F1["可以多次实现"]
🏗️ BADI的组成
创建BADI时,它包含以下组件:
| 组件 | 说明 |
|---|---|
| ==接口== | 定义BADI的基本结构 |
| ==功能代码== | 用于菜单增强和屏幕增强的附加组件 |
增强过程
BADI创建允许客户在标准SAP应用程序中包含自己的增强功能。增强、接口和生成的类位于适当的应用程序开发命名空间中。
📌历史背景
SAP在版本4.6A中引入了BADI增强技术,该技术在版本7.0中重新实现,增加了更多功能。
💡 BADI实现示例
基本BADI定义
1 | REPORT z_badi_example. |
使用BADI
1 | START-OF-SELECTION. |
💡过滤器BADI示例
1 | GET BADI lo_badi FILTERS country = 'CN'. |
使用过滤器可以基于特定条件选择不同的BADI实现。
BADI相关事务码
| 事务码 | 用途 |
|---|---|
SE18 |
查看BADI定义 |
SE19 |
实现BADI |
SPRO |
IMG中查找BADI |
⚠️ 注意事项
- BADI必须在==定义后==才能实现
- 可以创建==多个实现==,但需要使用过滤器
- 修改BADI需要==适当的开发权限==
- 建议在修改前进行==充分测试==
💡BADI选择建议
- 优先使用BADI而不是用户出口,因为BADI更灵活
- 考虑使用过滤器BADI来实现不同客户的特定需求
- 避免在BADI中进行大量数据处理,以免影响性能