二维码

[三代] 创建一个没有实施的BADI,程序中简单调用

Twilight发表于 2015-06-19 13:00jiapengsan 最后回复于 2020-11-02 07:53 [复制链接] 22334 31

我们定义一个BAdI,但是不实施,SE38程序调用该BADI就会出现程序Dumps,除了实施Implemention之外,我们还有2中方法避免出现dumps:
  • 使用类:CX_BADI_NOT_IMPLEMENTED捕捉异常
  • 使用Fallback Class

下面简单演示Fallback Class的用法:

1、SE18创建一个Enhancement Spot
BADI 1.jpg
个人理解Enhancement Spot相当于二代增强CMOD建的项目管理,一个项目中将所有的BADI增强都归集到一个Enhancement Spot中,更容易管理。

2、创建一个BADI
BADI 2.jpg

3、定义BADI接口
BADI 3.jpg
因为BADI实施中,需要用到接口,我们自己定义一个,但是真实项目中接口更多是用系统标准的。
为什么需要接口? 请参考:SAP BADI接口增强的面向对象原理解析

回车创建Y_IF_CALC_VAT接口
BADI 4.jpg
定义接口方法GET_VAT的传入、传出参数
BADI 5.jpg

4、定义回调类Fallback Class
BADI 6.jpg
注意:Multiple Use和Limited Filter Use 不要勾选,否则激活报错,为什么呢?
游客,如果您要查看本帖隐藏内容请回复

Y_IF_CALC_VAT~GET_VAT
  1.   METHOD y_if_calc_vat~get_vat.
  2.     DATA: percent TYPE p VALUE 20.
  3.     ex_amount_vat = im_amount * percent / 100.
  4.     ex_percent_vat = percent.
  5.   ENDMETHOD.
复制代码

5、SE38新建程序调用新建的BADI方法
  1. DATA: handle  TYPE REF TO y_badi_calc_vat1,
  2.       sum     TYPE p,
  3.       vat     TYPE p,
  4.       percent TYPE p.

  5. START-OF-SELECTION.
  6.   sum = 50.
  7. *获取BADI对象:Y_BADI_CALC_VAT1
  8.   GET BADI handle.
  9. *调用BADI对象Y_BADI_CALC_VAT1的方法get_vat
  10.   CALL BADI handle->get_vat
  11.     EXPORTING
  12.       im_amount      = sum
  13.     IMPORTING
  14.       ex_amount_vat  = vat
  15.       ex_percent_vat = percent.

  16.   WRITE: 'percentage:', percent, 'VAT:', vat.
复制代码

6、执行测试
BADI 7.jpg
打上Debug断点,你就能看到BADI执行的过程了

扩展阅读:Enhancement Spot中BADI的实现
回复

使用道具 举报

teyun2222
感謝無私分享,學習了謝謝!!
回复 支持 反对

使用道具 举报

ratg0626
很实用  谢谢分享
回复 支持 反对

使用道具 举报

Zeddicus
谢谢楼主,正在学习,感谢分享
回复 支持 反对

使用道具 举报

qshiou
楼主我看了一天了,感觉受益匪浅
回复 支持 反对

使用道具 举报

mckz8888
感谢分享  谢谢
回复 支持 反对

使用道具 举报

晓月之影
楼主加油,强大
回复 支持 反对

使用道具 举报

资明
很好看看安娜
回复 支持 反对

使用道具 举报

uniqueanswer
很实用  谢谢分享
回复 支持 反对

使用道具 举报

cwyhhbx
这种自定义BADI的实用性在哪些方面?
回复 支持 反对

使用道具 举报

scofield1106
hello world....this...
回复 支持 反对

使用道具 举报

riguang_2007

RE: 创建一个没有实施的BADI,程序中简单调用

谢谢楼主分享,学习了
回复

使用道具 举报

xiaoyuer

RE: 创建一个没有实施的BADI,程序中简单调用

  来学习一下,顺便感谢作者,好人
回复 支持 反对

使用道具 举报

494939637

RE: 创建一个没有实施的BADI,程序中简单调用

学习一下 谢谢分享
回复

使用道具 举报

小白爱吃鱼

RE: 创建一个没有实施的BADI,程序中简单调用

谢谢分享,非常感谢
回复

使用道具 举报

冬天不太冷

RE: 创建一个没有实施的BADI,程序中简单调用

学习学习!!!!!!!!!!
回复

使用道具 举报

lhx7300886

RE: 创建一个没有实施的BADI,程序中简单调用

这个值得学习,了解本质原理
回复 支持 反对

使用道具 举报

zzxbat007
感谢大神分享
SAP Business One 凭借单一系统 优化你的整个业务  www.iwilley.com
回复

使用道具 举报

xwq
顶一个,学习一下。
回复

使用道具 举报

wangfancool

RE: 创建一个没有实施的BADI,程序中简单调用

谢谢!!!
回复

使用道具 举报

12下一页

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表