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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    94. Binary Tree Inorder Traversal
    101. Symmetric Tree
    38. Count and Say
    28. Implement strStr()
    实训团队心得(1)
    探索性测试入门
    LC.278. First Bad Version
    Search in Unknown Sized Sorted Array
    LC.88. Merge Sorted Array
    LC.283.Move Zeroes
  • 原文地址:https://www.cnblogs.com/rainysblog/p/10913923.html
Copyright © 2011-2022 走看看