2025年SAP第三代增强——BADI解读

SAP第三代增强——BADI解读BAdI 是 SAP 在标准程序中 为客户自定义逻辑所预留的接口 属于第三代增强 在技术本质上是一个 interface 通过实现类的向上继承 完成用户逻辑的调用 操作 BAdI 的事务代码 SE18 定义 BAdI 查看 BAdI 的相关属性 SE19

大家好,我是讯享网,很高兴认识大家。

BAdI是SAP在标准程序中,为客户自定义逻辑所预留的接口(属于第三代增强),在技术本质上是一个interface,通过实现类的向上继承,完成用户逻辑的调用。

操作BAdI的事务代码:

  • SE18:定义BAdI, 查看BAdI的相关属性。
  • SE19: 实现BAdI,查看BAdI的相关实现。

通常所说的BAdI有两种类型, -

  • Classic BAdI (其在运行时进行实例化), 也称old BAdI;
  • Kernel BAdI (其在编译时便进行实例化), 也称new BAdI; .

Classic BAdI和Kernel BAdI在系统中的定义方式、程序中的调用方式是不同的。


讯享网

对于Classic BAdI, 其定义是通过SE18 >> Utilities >> Create Classic BAdI来进行的。

在这里插入图片描述

Classic BAdI通过CL_EXITHANDLER=>GET_INSTANCE来获取实例,然后通过实例来调用Interface中的方法。示例代码如下:

 " 对于classic BADI, 其应使用CL_EXITHANDLER=>GET_INSTANCE来获得实例 DATA: lo_custom_adj TYPE REF TO zif_badi_interface_name. DATA: lv_imp_exist TYPE c. CALL METHOD CL_EXITHANDLER=>GET_INSTANCE EXPORTING exit_name = 'OLD_BADI_NAME' " BAdI name null_instance_accepted = '' IMPORTING act_imp_existing = lv_imp_exist CHANGING instance = lo_custom_adj " type ref to BAdI's interface EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. ENDIF. IF lv_imp_exist IS NOT INITIAL. lo_custom_adj->badi_method( ). ENDIF. 

讯享网
小讯
上一篇 2025-02-10 08:44
下一篇 2025-03-13 09:09

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/31175.html