业务场景:例如我们需要对国家的税率做一个增强,以完成某种业务运算,但是每个国家的税率又是不同的,所以可以新建一个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

  1. METHOD y_if_calc_vat~get_vat.
  2. DATA: percent TYPE p VALUE 8 .
  3. ex_amount_vat = im_amount * percent / 100 .
  4. ex_percent_vat = percent .
  5. 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修改调用程序的代码:

  1. DATA: handle  TYPE REF TO y_badi_calc_vat1,
  2. sum     TYPE p,
  3. vat     TYPE p,
  4. percent TYPE p.
  5. PARAMETERS: ctry(2) TYPE c.
  6. START-OF-SELECTION.
  7. sum = 50.
  8. *获取BADI对象:Y_BADI_CALC_VAT1
  9. GET BADI handle FILTERS country = ctry.
  10. *调用BADI对象Y_BADI_CALC_VAT1的方法get_vat
  11. CALL BADI handle->get_vat
  12. EXPORTING
  13. im_amount      = sum
  14. CHANGING
  15. ex_amount_vat  = vat
  16. ex_percent_vat = percent.
  17. 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了

一个BADI中实施多个Implementation相关推荐

  1. BADI中Filter Dependent和Multiple Use

    一.Filter Dependent 1.Overview 如果实施一个特定功能的增强时,有时想想基于一些参数有不同的版本(e.g. 根据国家或者公司代码), 这时相同的一个BADI就需要生成多个不同 ...

  2. 哈萨克斯坦特警抓住一个在骚乱中实施破坏的“恐怖分子”团伙,缴获大量枪支弹药和外国护照

    瞩目惊心:哈萨克斯坦特警抓住一个在骚乱中实施破坏的"恐怖分子"团伙,缴获大量枪支弹药和外国护照!

  3. 求一个序列中最大的子序列_最大的斐波那契子序列

    求一个序列中最大的子序列 Problem statement: 问题陈述: Given an array with positive number the task to find the large ...

  4. 网站开发进阶(十一)如何将一个jsp页面嵌套在另一个页面中

    如何将一个jsp页面嵌套在另一个页面中 这个在做网页中常要用到,有些通用的内容可集中放在一个页面文件中,其它要用到这些内容的页面只需要包含(引用)这个通用文件即可.这样便于维护,如果有很多网页,当通用 ...

  5. 为什么神经元有数千个突触,一个新皮质中的序列记忆理论(HTM算法基础)

    为什么神经元有数千个突触,一个新皮质中的序列记忆理论(HTM算法基础) Jeff Hawkins* and Subutai Ahmad Numenta, Inc., Redwood City, CA, ...

  6. 求一个字符串中连续出现的次数最多的子串

    求一个字符串中连续出现的次数最多的子串.例如字符串"abababc",最多连续出现的为ab,连续出现三次.要和求一个字符串中的最长重复子串区分开来,还是上面的字符串,那么最长的重复 ...

  7. Iar环境c语言调用汇编函数,如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数?...

    我在硬故障处理程序中有一些程序集.程序集基本上是为了传递当前堆栈指针作为参数(在R0中).它看起来像这样...如何在IAR EWARM中通过内联汇编程序在另一个模块中调用C函数? __asm(&quo ...

  8. 一个表对应另一个表中多个主键的查询方法(把一个表当成两个表用)

    表t_Record PID(主键)   SendUserID(发送人)   ReceiveUserID(接收人)    1              1                      2 ...

  9. 算法题:“找出单身狗”--找出一个数组中只出现一次的数字

    题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次. 编写一个函数找出这两个只出现一次的数字. 解题过程以及思路:(思路在代码中以注释形式给出) //一个数组中只有两个数字是出现一次,其 ...

最新文章

  1. IDEA中maven的命令及作用
  2. python读取输入流_Python读取实时数据流教程
  3. 用python画玫瑰花代码-用python画一朵玫瑰花
  4. TypeScript,初次见面,请多指教 ?
  5. 三元运算符, @屏蔽错误运算符
  6. 重磅!吴恩达新书《机器学习训练秘籍》中文版来了(附PDF下载)
  7. Glide库里,藏了一套你心心念念的GIF压缩工具集
  8. ceph peering机制-状态机
  9. python + selenium + chrome 凡人修仙小说爬取
  10. 程序员投入时间和精力实现财富增长之道,这可能会伴随你程序员整个生涯(请不要连续点赞)
  11. MySQL 打开视图 1449_Mysql查询视图:ERROR 1449 (HY000)
  12. Android APP在线自动更新安装
  13. 原创丨嵌入式IMX6ULL学习指引-四大要点-简单也实用
  14. 直播APP制作时即时聊天功能实现
  15. MATLAB中Simulink创建与运行
  16. tSNE—高维数据降维可视化(理论部分)
  17. c语言单片机停车场收费系统,基于51单片机停车场车位引导系统设计
  18. npm 废弃/删除(五)
  19. 瓜果皮其实是防治疾病的良药
  20. 《高级数据库系统》学习笔记

热门文章

  1. DDP、DDU、DAP的区别你都知道吗?
  2. 前滴滴产品总监刘滢:从这里了解新零售的本质
  3. 精准评论,为何广受娱乐类产品的欢迎?
  4. 职场社交方向私密研究(脉脉、linkedin、会会…)| 北京活动
  5. java8-新特性default
  6. Ext.net中ComboBox如何绑定数据库中的值
  7. 内存和swap查看 内存是拿来用的 不是看的
  8. HTTP 错误 500.21 - Internal Server Error(转)
  9. 通过js判断不同终端类型,跳转到不同的页面
  10. sql 中使用 where 1=1 和 where 1=0的作用