BADI中Filter Dependent和Multiple Use
一、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
- CALL METHOD exit->method
- EXPORTING
- flt_val = flt
- CHANGING
- 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相关推荐
- java中servlet filter_lua学习笔记(二)仿java servlet中Filter功能
2)代码 Filter.lua--[[ 过滤器接口 ]]-- local FilterChain = require("FilterChain") local Filter = { ...
- matlab i型级联filter,Matlab中filter,conv,impz用法(最新整理)
<Matlab中filter,conv,impz用法(最新整理)>由会员分享,可在线阅读,更多相关<Matlab中filter,conv,impz用法(最新整理)(5页珍藏版)> ...
- java filter注入,Spring-boot中Filter注入bean
Spring-boot中Filter注入bean 在spring中使用Filter的方式不用再多说,但是通常情况下我们在使用filter中都可能会注入部分配置的类或者部分具有特殊功能的业务类. 在这种 ...
- java web开发中Filter使用Annotation配置 (转载)
为什么80%的码农都做不了架构师?>>> 为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...
- python filter map区别_python中filter、map、reduce的区别
python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内 ...
- JavaWeb中filter的详解及应用案例
JavaWeb中filter的详解及应用案例 转载自:http://www.cnblogs.com/vanl/p/5742501.html 一:Filter介绍 Filter可认为是Servlet的一 ...
- 【JavaScript】查漏补缺 —数组中filter()方法
[JavaScript]查漏补缺 -数组中filter()方法 一.filter()方法 该方法用于过滤数组成员,满足条件的成员组成一个新数组返回.它的参数是一个函数,所有数组成员依次执行该函数,返回 ...
- python filter和map的区别_js中filter和map的区别
介绍了这么多关于filter的内容,大家有没有发现filter和map在为数组中的每个元素调用一次 callback 函数,都是js数组的操作方法,那么filter和map有什么区别呢?其实最大的区别 ...
- 在python中filter是什么意思_python中的filter函数功能是什么?
在python中,面对众多的数据,我们要过滤筛选出我们需要的数据.python中的filter函数就是起到了过滤筛选的作用.filter函数可以筛选一个筛选函数和一个序列,将筛选函数依次作用于每一个筛 ...
最新文章
- 一个免费的css编辑器——Free CSS Toolbox
- linux通过c语言编程访问远程mysql
- HDU 1999 不可摸数
- mysql8优化实战
- Hadoop的学习路线图
- gitbook mysql_使用Gitbook做笔记
- winform窗体数据的添加 1217
- 探索 OpenStack 之(7):Neutron 深入探索之 Open vSwitch (OVS) + GRE 之 Neutron节点篇
- VMWarevSphere Client 克隆虚拟机、变更IP地址、变更主机名、修改MAC地址
- Storm原理及单机安装指南
- 添加控件并处理事件(纯手写)
- elasticsearch基础知识
- 微信JS-SDK的PHP demo页面,解决Internal error 500错误
- 如何进入docker系统
- canvas绘制虚线图表
- C语言解一元高次方程代码,拜求大佬,这代码里面是什么意思,这是一个求一元高次方程的代码...
- 求二叉树中度为1的结点个数
- 电磁学学习三__通量、散度、旋度
- 谭浩强c语言不讲位运算呢,谭浩强c语言教程_第十二章-位运算谭浩强c语言教程_第十二章-位运算.doc...
- IBM公司的企业管理