SAP 增强学习(3):三代增强 BADI

使用到的TCODE:SE24 、SE18、SE19

需求样例:使用MM01创建物料的销售视图时,销项税分类的字段自动填写默认值0。(因为MM01创建销售视图时虽然屏幕上并没有必输项,但是直接保存会提示销项税没维护的错误)

 

  1. 介绍

由于一代、二代增强还是不能满足所有的业务需求,所有SAP在一代增强和二代增强的基础又开发出来第三代的增强。这就是BADI。BADI运用了面向对象的方式来体现增强。运用面向对象的思想来实现增强的话管理和实现起来就会方便很多,而且对系统的影响会比一代和二代增强小的多(因为,一代和二代增强都是直接在原程序里面进行修改的)。

  1. 学习的步骤
  1. 如何查找BADI.

第一种方式:

SE38->事务代码对应的程序名->在程序内搜索CL_EXITHANDLER

 

第二种方式:

SE24-> CL_EXITHANDLER->在GET_INSTANCE中打断点,然后运行相应事物码根据它来找到运行到的BADI。

 

第三种方式:

它的调用方式是call method(instance), 可以通过exit_handler关键词来查找

 

第四种方式:

ST05选择“table buffer trace”而不是常用的"SQL trace",然后查找表和视图(SXS_INTER,SXC_EXIT,SXC_CLASS和SXC_ATTR)找到对应的BADI.

 

  1. 根据上面的方法来实现我们的需求:SE24-> CL_EXITHANDLER->在GET_INSTANCE中打断点

然后查找到下面这些BADI

 

输入TCODE-MM01后

BADI_SCREEN_LOGIC_RT

W_RETAILSYSTEM_IDENT

BADI_MATN1

 

选择视图时

BADI_MATERIAL_OD

 

进入事务代码后

BADI_MATERIAL_OD

ECM_EXIT

BADI_LAYER

GOS_SRV_SELECT

BADI_MATERIAL_OD

BADI_MATERIAL_REF

 

 

  1. 查看BADI。

在SE18中分别查看这些BADI。如下图

这个增强BADI_MATN1下包含了一个接口IF_EX_BADI_MATN1,而这个接口下面包含了4个方法。查看这些方法是否有我们的需求。

点进方法里面取看,很显然,这是一个对MATNR进行输入输出转换增强。并不是我们想要的。

 

按照同样的步骤来查找最后可以找到是在BADI_MATERIAL_REF下CREATE_MATERIAL方法。然后在CT_SALES_TAX这个结构内去完成我们的需求。(小技巧,寻找BADI的时候如这个在给字段一个初始的默认值。那么可以先找到这个字段对应的字段名,然后根据参数中的描述和字段名去搜)

描述是对物料的税(非常接近我们想要的需求了)。

 

 

然后看它参考的结构,和屏幕字段上面的完全一致。确定就是它了。

 

 

 

  1. 已经找到需要的BADI了,接下来就是用BADI去实现我们的需求。

首先我们要创建一个BADI的实现(BADI是面向对象的思想,可以把BADI理解为一个类)可以在SE18下这里的增强或者点击显示进去后的创建,这2种方法是完全一致的。

 

 

 

 

 

双击方法进去写代码

写完后激活。

然后激活增强(上面是激活程序,这个是激活增强。不是一个东西!)

一般来说在测试增强前都要先检测确认下增强是否被激活

 

可以发现进入屏幕后自带默认值0了。完成测试。

 

 

 

学习心得: BADI可以说是基于面向对象概念的增强BADI源代码发布以接口的方式,通过接口来让用户实现增强,可以说让用户可以使用增强的地方更多了些。

 

容易的地方: 由于BADI都是一些接口,所以只需要找到对应的接口传对应的参数即可完成我们的需求。

难点:也由于BADI都是一些接口,所以有可能会有很多的参数。要找的我们需要的BADI和参数会有点难度。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joker-Full-stack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值