Former Member

Classic BAdi and New BAdi ...

2007年04月27日 04:43 | 1.5k Views

Hi all,

I have a question regarding the new BAdi concept using enhancement spots.

With the classic BAdi's once we create an implementation it will call up our implementation when the BADI class is been called.

But with the new concept we have to explicitly call the BAdi we created right ? doesn't this mean modifiying the standard code ( If there's no ehancement section or point )?

Can someone tell me whether there is another way to call our implementation by using GET BADI and CALL BADI statement without modifying standard code ( by creating an explicit enhancement).

Cheers,

D.

 

2条回复

 
排序

  • Former Member
    2007年04月27日 04:52
    1

    hi,

    Classic and new BAdIs differ in a number of features that are important for migration:

    1. BAdI object

    a. With classic BAdIs, a BAdI object is created by calling a factory method, and referenced via a reference variable of the type of the BAdI interface.

    b. With new BAdIs, a BAdI object is created via the ABAP statement GET BADIas a handle for the calls of BAdI methods, and referenced via a reference variable of the type of the BAdI. A BAdI object is an instance of an internal BAdI class, which otherwise is invisible to the outside.

    2. Passing comparison values for the filter

    a. With the classical BAdIs, the filter values are stored in a structure and passed with the call of the BAdI methods.

    b. With the new BAdIs, the comparison values for the filters used to search for implementations are passed when the BAdI object is created with the GET BADIstatement.

    There is no way of migrating the call of the factory method one-to-one into the ABAP statement, because GET BADI can also return an existing BAdI object, which is not possible with the factory method.

    3. Calling BAdI methods

    Passing comparison values for the filter

    a. A classic BAdI can be called only once and the call positions are registered centrally.

    b. With new BAdIs, multiple calls are possible and the call positions are not registered centrally.

    For the above reasons, an automatic call migration is not possible.

    Have a look at below link.

    http://help.sap.com/saphelp_nw2004s/helpdata/en/ee/6f3b42ea85b26be10000000a155106/content.htm

    http://help.sap.com/saphelp_nw2004s/helpdata/en/0e/4d3e42fc94aa04e10000000a1550b0/content.htm

    I hope it helps.

    Best Regards,

    Reshma

    4 Comments
      • Hi,

        If the BAdI is not a migrated BAdI but a new BAdI, it cannot be called via the

        CL_EXITHANDLER. It need to be called via the ABAP commands GET BADI and CALL BADI.

        A call to CL_EXITHANDLER will result in an error. If this coding, is deliverd from SAP and again the BAdI is not an migrated BADI you should create a problem message.

        Regrads

        Michael

     
     
  • Former Member
    2007年10月12日 02:57
    0

    Hi Dhanushka ,

    I have the same issue like yours. But I still don't understand how your issue is solved by the answers given above. Can you please give more specific answer?

    where to write the GET BADI and CALL BADI commands if there are no Enhancement Spot ? Is it correct to do it in implicit enhancement ?

Classic BAdi and New BAdi的更多相关文章

  1. SE18 BADI定义 / SE19 BADI 实现

    明天花30分 再研究下这个: 如果你知道一个BADI名称,可以: 1)使用SE18,输入该BADI名称后,选择Interface,然后查看对应的接口实施样例代码(Example implementat ...

  2. Classic BADI总结

    这里对sap Classic Badi 做一下总结,虽然已经是过时的技术了. Classic BADI的创建 Classic BADI的实施 Classic BADI的调用及运行原理 New BADI ...

  3. 如何从SAP中查找BADI

    如何从SAP中查找BADI   如何从SAP中查找BADI http://blog.csdn.net/CompassButton/article/details/1231652 BADI作为SAP的第 ...

  4. 20170520 BADI增强学习

    一.要求:Tcode:FF_5 导入数据运行时,产生财务凭证之前修改某些字段值.Exmp:FEBRE-VWEZWBKPF-XBLNRFEBEP-CHECTBSEG-ZUONR there is a b ...

  5. 第四代增强 NEW BADI的定义及实现

    NEW BADI 是在第四代增强框架下创建的BADI,是相对于第三代增强Classic Badi 而言的. 根据第四代增强的基本概念,所有显式增强Enhancement options 都必须放在增强 ...

  6. SAP ABAP第一,两,三代出口型BADI实现 解释的概念

    BADI这是第三代用户出口型.让我们来看看如何实现的细节. 一个,用户出口的类型 1,第一代 sap提供了一个空的子程序代码.在这个过程分,用户可以添加自己的代码.为了控制自己的需求.这样的改进是需要 ...

  7. 生产订单BADI实例

    转自:https://blog.csdn.net/wbin9752/article/details/7951390 以生产订单收货为例: 1.BADI的查找方法: SE38在程序中搜索关键字CL_EX ...

  8. ABAP Enhancement:第一部分

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. [SAP ABAP开发技术总结]增强Enhancement

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

随机推荐

  1. Reset.css和Normalize.css样式表初始化相关

    (1)Reset.css 简介:在HTML标签在浏览器里有默认的样式,例如 p 标签有上下边距,strong标签有字体加粗样式,em标签有字体倾斜样式.不同浏览器的默认样式之间也会有差别,例如ul默认 ...

  2. Vcode的生成工具类,生成制定长度验证码,图文验证码工具类

    public class VCodeUtils { // 使用到Algerian字体,系统里没有的话需要安装字体,字体只显示大写,去掉了1,0,i,o几个容易混淆的字符 public static f ...

  3. MyBatis框架之入门(三)

    使用原始dao层进行开发 UserMapper层接口 public interface UserMapper { /** * 通过id查询用户 * @param id * @return */ Use ...

  4. IDEA 注释模板

    类.接口.等文件注释: /** * @Description: * @author: tangsw * @date: ${DATE} ${TIME} * */ 方法上注释: /** * @Descri ...

  5. 【Postgres】Windows2012 不能启动

    PG启动错误-不知道什么错误 等待 postgresql-x64- 服务的连接超时( 毫秒). 由于下列错误,postgresql-x64- 服务启动失败: 服务没有及时响应启动或控制请求. 编写ba ...

  6. <?php return array(

    <?php //test.php return array( 'name' => 'andy', 'sex' => 'male' ); ?> <?php $set = r ...

  7. Java监听器中ServletRequestListener监听Request的创建和销毁

    ServletRequest和HttpServletRequest的区别 HttpServletRequest和ServletRequest都是接口,HttpServletRequest继承自Serv ...

  8. 优化sql技巧

    当表很大的时候可以设计冗余字段,避免与大表连表查询造成性能低下 比如日志表和用户表,日志表通常到后期会相当的大可以做一个username的冗余字段,避免查看username的时候去和user表关联 当 ...

  9. 11.07图论水题Test

    11.07图论水题Test 题目 描述 做法 \(BSOJ6378\) 在\(i\)位置可以到\(i+a_i\)或\(i+b_i\)求\(1\rightarrow n\)字典序最小路径 判可达性后贪心 ...

  10. npkill 一个方便的npm 包清理工具

    npm 包很好用,但是占用空间太多了,npkill 提供了一个方便的工具,可以帮助我们查找安装的npm 包,以及进行清理 安装 npm install -g npkill 简单使用 命令 npkill ...