SAP BADI的实现2-实现BADI

在上一篇文章中,我们学习了定义一个BADI,提供回调类,实例化一个BADI,以及去调用一个BADI方法。我们也建立了一个enhancement spot作为BADI的容器。

1,建立实现体的容器

定义和实现BADI有一个共同的地方,就是都是需要建立一个容器,我们不能新建一个BADI的实现,如果没有先建立容器的话。在同一个容器中,可以有多个BADI实现,但是前提是要求他们都是属于同一个enhancement spot所对应的BADI。

  • 进入TCode SE80,在enhancement spot中,选择如图按钮
  • SAP BADI的实现2-实现BADI_第1张图片
  • 创建一个新的BADI实现容器如图
  • 在接下来的窗口中,要求输入的是作为唯一指定的enhancement spot,一旦建立了这个关联,你就可以建立一个BADI实现,而且是在这个enhancment spot中的。
  • SAP BADI的实现2-实现BADI_第2张图片
  • 输入z_bdi_calc_vat_us作为BADI实现的名字,如图
  • SAP BADI的实现2-实现BADI_第3张图片

2,BADI类实现

在我们建立了BADI实现容器之后,就可以真正开始建立一个实现类了。

  • 选择BADI实现前面的三角形图标
  • 在实现类这项中,填入z_cl_cal_vat_us
  • SAP BADI的实现2-实现BADI_第4张图片
  • 在打开的类构建器中,接口对应的方法已经显示出来,我们需要做的是去完成get_vat
  • 实现这个方法,比如

DATA: percent type p value 4 .

ex_amount_vat = im_amount * percent / 100 .

ex_percent_vat = percent .

现在我们还可以实现另一个实现类,比如Z_CL_CALC_VAT_GB,但是当运行程序时,系统会dump,这是因为我们定义BADI时,是采用了默认的单一使用(single-use),没有选中复合使用选项(Multiple Use Option),单一使用的限制是只能有一个实现类。如何解决这个问题,请看本系列的最后一篇文章,如何使用过滤器。

 

你可能感兴趣的:(SAP,IM)