zoukankan      html  css  js  c++  java
  • 一个BADI中实施多个Implementation

    转自:https://blog.csdn.net/zhongguomao/article/details/76251407

    业务场景:例如我们需要对国家的税率做一个增强,以完成某种业务运算,但是每个国家的税率又是不同的,所以可以新建一个BADI用于增强国家税率计算,对BADI进行多次实施,分别用于不同国家的税率计算。


    1、因为BADI多次实施,需要选中Multiple Use;因为实施的Implementation用于不同场景,需要选中Filter Use。
     

    2、在BADI:Y_BADI_CALC_VAT1中再实施一个Implementation:Y_BADI_CALC_VAT_GB
     


    部署Method(Y_CL_CAL_VAT_GB)代码:Y_IF_CALC_VAT~GET_VAT
      METHOD y_if_calc_vat~get_vat.
        DATA: percent TYPE p VALUE 8 .
        ex_amount_vat = im_amount * percent / 100 .
        ex_percent_vat = percent .
      ENDMETHOD.
    复制代码

    3、在BADI:Y_BADI_CALC_VAT1中新建定义一个Filter
     

    4、分别在BADI的两个Implemention中设置Filter条件
     


    Y_BADI_CALC_US的Filter条件为country = US,意思是:当country = US时,执行Y_BADI_CALC_US中Method代码
    Y_BADI_CALC_GB的Filter条件为country = GB,意思是:当country = GB时,执行Y_BADI_CALC_GB中Method代码

    5、SE38修改调用程序的代码:
    DATA: handle  TYPE REF TO y_badi_calc_vat1,
          sum     TYPE p,
          vat     TYPE p,
          percent TYPE p.

    PARAMETERS: ctry(2) TYPE c.

    START-OF-SELECTION.
      sum = 50.

    *获取BADI对象:Y_BADI_CALC_VAT1
      GET BADI handle FILTERS country = ctry.
    *调用BADI对象Y_BADI_CALC_VAT1的方法get_vat
      CALL BADI handle->get_vat
        EXPORTING
          im_amount      = sum
        CHANGING
          ex_amount_vat  = vat
          ex_percent_vat = percent.

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

    6、执行程序,测试效果:
    当输入条件是US时,执行Y_BADI_CALC_US Implemention
    当输入条件是GB时,执行Y_BADI_CALC_GB Implemention
    Multiple GB.jpg (22.73 KB, 下载次数: 0)

    下载附件

    2015-7-3 17:55 上传


    我们Debug就可以直观的看到不同条件执行不同Implemention了
    ---------------------
    作者:SAP剑客
    来源:CSDN
    原文:https://blog.csdn.net/zhongguomao/article/details/76251407
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    数模竞赛-长三角旅游路线
    数模培训-高压油管
    数模培训-城市表层土壤重金属污染问题
    数模练习-养孩子
    SpringBoot01
    搬家啦
    P4655 [CEOI2017]Building Bridges
    深入理解斜率优化
    暴力 K 短路的一个小细节
    搜索优化
  • 原文地址:https://www.cnblogs.com/rainysblog/p/10913923.html
Copyright © 2011-2022 走看看