一、Filter Dependent
1、Overview

  • 如果实施一个特定功能的增强时,有时想想基于一些参数有不同的版本(e.g. 根据国家或者公司代码), 这时相同的一个BADI就需要生成多个不同版本的Implementation.
  • 在系统运行的时候,满足参数的特定Implementation会被执行
  • 这就需要filter dependent BADI
  • 那么怎样选择filter?
  • Filter type必须是data element或者ABAP dictionary structure。Data element使用的domain的value table包含了implementation所需要的valid values。如果filter type使用的是structure,那么这适用于structure的每个字段。当调用enhancement method时,filter value必须传给interface。

2、How it works?(老BADI的Filter创建步骤,和新BADI的差不多)

  • 当定义接口时打开Filter-dependency
  • 选择合适的filter element
  • 接口中所有的方法在创建时都会有一个Filter 'FLT_VAL'作为输入参数
  • 应用程序提供一个filter value 给增强
  • 增强根据提供的值来选择不同的激活的Implementation
  1. CALL METHOD exit->method
  2. EXPORTING
  3. flt_val   = flt
  4. CHANGING
  5. parameter = word.

复制代码

新BADI的Filter和Multiple的应用: 为什么一个BADI中实施多个Implementation

二、Multiple Use
1、Single Use Business Add-Ins

  • 当BADI只能有一个Implementation,不要选择multiple use的复选框
  • 有返回值
  • 可以使用importing, changing and returning参数
  • 应用程序可以直接调用这个implementation
  • 即使BADI本身不支持Mulitiple Use也可以同时存在多个Implementations,只不过只能有一个激活的Implementation

2、Multiple Use Business Add-INS

  • 选择Multiple use的复选框
  • BADI可以有多个Implementation
  • 无返回值
  • 可以使用importing,changing参数
  • 同时实施多个Implementation时,由于在BADI定义时,不知道哪些Implementation被激活,所有Implementation的执行顺序不能被确定
  • 应用程序可以调用所有被激活的Implementations
  • SE18中输入BADI名称,选择Implementation->Display,你可以查看所有的Implementation

当我在一个BADI中实施多个增强激活时,可能老是报错,即时勾了Multiple Use也还是报错,为什么呢?

这是因为我们在方法的返回参数使用了Exporting,应该使用changing参数,请参考二、2

BADI中Filter Dependent和Multiple Use相关推荐

  1. java中servlet filter_lua学习笔记(二)仿java servlet中Filter功能

    2)代码 Filter.lua--[[ 过滤器接口 ]]-- local FilterChain = require("FilterChain") local Filter = { ...

  2. matlab i型级联filter,Matlab中filter,conv,impz用法(最新整理)

    <Matlab中filter,conv,impz用法(最新整理)>由会员分享,可在线阅读,更多相关<Matlab中filter,conv,impz用法(最新整理)(5页珍藏版)> ...

  3. java filter注入,Spring-boot中Filter注入bean

    Spring-boot中Filter注入bean 在spring中使用Filter的方式不用再多说,但是通常情况下我们在使用filter中都可能会注入部分配置的类或者部分具有特殊功能的业务类. 在这种 ...

  4. java web开发中Filter使用Annotation配置 (转载)

    为什么80%的码农都做不了架构师?>>>    为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...

  5. python filter map区别_python中filter、map、reduce的区别

    python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内 ...

  6. JavaWeb中filter的详解及应用案例

    JavaWeb中filter的详解及应用案例 转载自:http://www.cnblogs.com/vanl/p/5742501.html 一:Filter介绍 Filter可认为是Servlet的一 ...

  7. 【JavaScript】查漏补缺 —数组中filter()方法

    [JavaScript]查漏补缺 -数组中filter()方法 一.filter()方法 该方法用于过滤数组成员,满足条件的成员组成一个新数组返回.它的参数是一个函数,所有数组成员依次执行该函数,返回 ...

  8. python filter和map的区别_js中filter和map的区别

    介绍了这么多关于filter的内容,大家有没有发现filter和map在为数组中的每个元素调用一次 callback 函数,都是js数组的操作方法,那么filter和map有什么区别呢?其实最大的区别 ...

  9. 在python中filter是什么意思_python中的filter函数功能是什么?

    在python中,面对众多的数据,我们要过滤筛选出我们需要的数据.python中的filter函数就是起到了过滤筛选的作用.filter函数可以筛选一个筛选函数和一个序列,将筛选函数依次作用于每一个筛 ...

最新文章

  1. 一个免费的css编辑器——Free CSS Toolbox
  2. linux通过c语言编程访问远程mysql
  3. HDU 1999 不可摸数
  4. mysql8优化实战
  5. Hadoop的学习路线图
  6. gitbook mysql_使用Gitbook做笔记
  7. winform窗体数据的添加 1217
  8. 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
  9. VMWarevSphere Client 克隆虚拟机、变更IP地址、变更主机名、修改MAC地址
  10. Storm原理及单机安装指南
  11. 添加控件并处理事件(纯手写)
  12. elasticsearch基础知识
  13. 微信JS-SDK的PHP demo页面,解决Internal error 500错误
  14. 如何进入docker系统
  15. canvas绘制虚线图表
  16. C语言解一元高次方程代码,拜求大佬,这代码里面是什么意思,这是一个求一元高次方程的代码...
  17. 求二叉树中度为1的结点个数
  18. 电磁学学习三__通量、散度、旋度
  19. 谭浩强c语言不讲位运算呢,谭浩强c语言教程_第十二章-位运算谭浩强c语言教程_第十二章-位运算.doc...
  20. IBM公司的企业管理

热门文章

  1. 拒绝不靠谱的需求:怎样确定需求才是正确的?
  2. 产品经理如何提升自己的配色能力
  3. 微信环境中如何实现下载apk文件的下载
  4. Linux+Jenkins自动构建服务器包
  5. BZOJ 2431 HAOI2009 在列的数目的顺序相反 递归
  6. HACMP 认证学习系列,第 2 部分:计划与设计
  7. 数据浪潮上的IP雄鹰
  8. 多线程系列之学习多线程下载的基本原理和基本用法(1)
  9. Maven 发布到本地仓库
  10. Centos6.4_X64飞信安装