zoukankan      html  css  js  c++  java
  • BADIs Filter Dependent/Multiple Use

    Filter Dependent

    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。
    • How it works?

    • 当定义接口时打开Filter-dependency
    • 选择合适的filter element
    • 接口中所有的方法在创建时都会有一个Filter 'FLT_VAL'作为输入参数
    • 应用程序提供一个filter value 给增强
    • 增强根据提供的值来选择不同的激活的Implementation

      ....
      .... call method exit->method
               exporting
                  flt_val = flt.
               Changing
                  parameter = word.
      ....
      .... 

    • Multiple Use


      -Single Use Business Add-Ins
      • 当BADI只能有一个Implementation,不要选择multiple use的复选框
      • 有返回值
      • 可以使用importing, changing and returning参数
      • 应用程序可以直接调用这个implementation
      • 即使BADI本身不支持Mulitiple Use也可以同时存在多个Implementations,只不过只能有一个激活的Implementation
      -Multiple Use Business Add-INS
      • 选择Multiple use的复选框
      • BADI可以有多个Implementation
      • 无返回值
      • 可以使用importing,changing参数
      • 同时实施多个Implementation时,由于在BADI定义时,不知道哪些Implementation被激活,所有Implementation的执行顺序不能被确定
      • 应用程序可以调用所有被激活的Implementations
      • SE18中输入BADI名称,选择Implementation->Display,你可以查看所有的Implementation
  • 相关阅读:
    微信小程序开发工具 POST net::ERR_PROXY_CONNECTION_FAILED 代理问题
    微信小程序 带参调用后台接口 循环渲染页面 wx.request wx:for
    三下乡感悟心得体会
    Mysql通过Adjacency List(邻接表)存储树形结构
    java的List中使用filter过滤出符合特定条件的元素List
    mybatis报表,动态列与查询参数+行列转换
    mysql行转列转换
    spring配置jackson不返回null值
    mybatis动态列名
    查出最新记录
  • 原文地址:https://www.cnblogs.com/SolisOculus/p/2959318.html
Copyright © 2011-2022 走看看