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

  • 相关阅读:
    .NET对象克隆的深究(转)
    25条哈佛成功金言 (转)
    __doPostBack()方法研究
    一个好的人事博客
    (转)IIS的inetinfo.exe进程占用CPU达100%解决办法
    .net开发随笔
    visual studio.net已检测到web服务器运行的不是asp.net1.1版"故障的排除
    Infragistics NetAdvantage控件的使用:该关系不是此 DataView 指向的表的父关系
    新的一年开始了
    六种方法,做一名更好的开发者
  • 原文地址:https://www.cnblogs.com/rainysblog/p/10913923.html
Copyright © 2011-2022 走看看