SAP ABAP三代增强点查找
文章目录
- 前言
- 一、什么是三代增强?
- 二、使用三代增强我们需要了解那些东西?
- 1.BADI的调用机制
- 2.如何查找三代增强点
- 3.如何配置实施三代增强
- 三、三代增强实现案例
- 1、我们要实现的效果
- 2、如何查找确定我们使用那个BADI
- 3、列出所有BADI后确认使用的BADI
- 4、进一步确定BADI
- 5、BADI的创建实施逻辑代码编写
- 6、添加业务逻辑
- 7、最终效果展示
- 8、关于三代增强的补充点
- a.同一个BADI可能被多个标准程序使用
- b.有些BADI找对了但是参数中缺少我需要的字段
- c.如果后期我想起了有什么要补充的会继续写在这里,或者大家有什么想让我介绍的也可以评论私信我哦。
- 四、总结
前言
随着sap的发展它的增强功能也衍生了4代,今天这边文章给大家介绍一下三代增强BADI。从概念上相对来说还是一种比较新的技术,它解决克服了前两代增强的缺陷,查找增强点也比较方便,今天这篇文章来给大家讲解一下三代增强以及一个小案例。笔者也是边学习边写文章有不好或者说错理解不对的地方还望大家多多见谅。也欢迎大家指出问题,感谢!
一、什么是三代增强?
BADI的全称是(Business Add-Ins)是SAP在R/3 release 4.6A后增加的增强技术,可以说是克服了之前两代增强的所有缺点,三代增强是通过OO面向对象的思想去实现的,我们也知道OO的特性是 封装 继承 多态。使用OO的思想去实现功能肯定更易于我们程序的 扩展 维护,并且三代增强会通过断点的方法去查找增强点这也更便于我们快速准确的找到增强点。
二、使用三代增强我们需要了解那些东西?
以下两个内容我先简单介绍一下让大家先有个初始理解,后面的案例实现会有详细操作以及图文流程。主要作用还是可以让大家快速回顾巩固
1.BADI的调用机制
BADI是有一套特别规正的调用方式,它总是通过一个方法来获取需要调用的BADI,例如某个标准程序执行到某一步的时候这个方法始终会执行一下来获取当前所有可以调用的BADI,也就是说我在当前的这个操作步骤都有什么BADI也就是有哪增强。之后就是再通过这些BADI去找它的实现然后执行。这里的每个BADI其实也就是一个类,类中有些许方法以及参数,首先程序会先找到执行某个步骤前的所有BADI,然后去执行这些BADI中的方法代码逻辑。直到执行完所有的BADI之后程序才会执行完当前的步骤,我们可以依据BADI的这种调用机制就可以找到我们需要使用的BADI。因为它执行程序的每一个步骤都会调用这个方法去查找当前的所有调用的BADI,所以我们就可以到此方法处打以断点这样就可以查看每一个步骤都有什么BADI了。
2.如何查找三代增强点
a.
首先通过 se24 输入 CL_EXITHANDLER 这个类 然后点击显示。
b.
接着双击 GET_INSTANCE 这个类方法
c.
进来之后在第一个方法调用处打断点 CALL METHOD 我的当前版本是在14行
CALL METHOD cl_exithandler=>get_class_name_by_interface
d.
下来输入事务码进入想要增强的程序此时程序的每一个步骤都会进入断点我们要判断增强逻辑该写在那个步骤的BADI
e.
当程序进入断点位置后我们可以双击断点方法中的 exit_name 这个参数 查看程序当前步骤所调用的BADI名称
f.
确定我们当前增强业务需要使用那个BADI后使用 se18 查看此BADI 主要看它有哪些 方法 方法中有哪些 参数
g.
查看BADI接口中的方法根据业务需求和SAP所提供的方法描述以及方法中的参数来确定使用的方法
h.
确定要使用的方法后再用此方法中现有的参数思考如何用参数实现编写此增强业务逻辑
i.
方法中参数有两个类型Importing,Changing,也就是导入导出,简单点就是导入用来做判断导出用于保存或界面展示
j.
当我们BADI确定了,方法也确定了,也知道方法中的参数都代表什么了,也就等同于已经准确的找到增强点了。
3.如何配置实施三代增强
a.
例如我们已经确定了BADI为BADI_MATERIAL_REF
此BADI接口中有一个方法CREATE_MATERIAL
。此方法中有些许参数我们要了解参数思考如果运用需要的参数编写增强的业务逻辑,想好之后我们再进行创建实施。
b.
在输入BADI显示刚进来的界面上方的菜单栏中点击实施,再选择创建输入一个名称,再到保存界面输入短文本描述后进行保存。
c.
下来我们就可以在我们创建的这个BADI中去相应的接口方法中编写代码逻辑了,双击即可进入编写代码。
d.
逻辑代码写完后点击激活代码,然后还要激活此BADI,在我们双击接口方法的界面点击 显示/更改
按钮 ,再点击旁边的激活,当此BADI为激活状态时,运行时状态会显示 将调用实施
这样我们的BADI也就创建实施成功了。
三、三代增强实现案例
1、我们要实现的效果
这个案例我们是对 mm01 标准程序进行增强,我们将实现当用户创建物料的销售视图时并且创建 工厂为1109 销售组织是1310 分销渠道是20 的话就自动带入默认税为8。
2、如何查找确定我们使用那个BADI
a.
首先大家思考一个问题,创建物料时候大致可以分为下图三个步骤,那么我们要用的BADI会在下面那个步骤中步骤1有些许BADI,步骤2也有些许BADI,步骤三也一样。有如此多的BADI我们应该缩小查找筛选范围,其实这第一步很简单很明显我们所需要的BADI就是在步骤2出现的BADI,因为步骤1的时候还没有进入到输入税的创建界面,步骤3的时候应该是对我们输入的数据进行检查的一些BADI。按道理也应该是步骤2中的BADI,因为步骤2中的所有BADI执行完之后我们输入税界面也就展示了出来,需求也就是用户到创建界面时默认就输入了税为8。所以接下来我们打断点找BADI的时候应该注重于步骤2所出现的BADI。
b.
使用SE24在调用BADI的方法处打断点。
1、
CL_EXITHANDLER
SAP ABAP三代增强点查找相关推荐
- SAP ABAP常用增强记录文档(不定期完善更新)
在sap的开发中,如果遇到了标准系统实现不了的需要定制的功能.那么就需要用增强enhancement来实现. 这是一些常用的增强例子.有BADI,有修改.以供修改用. BADI-ADDRESS_UPD ...
- SAP ABAP 查找更改文档对象(SCDO)和表关系的在线字典1/2(全)
SAP ABAP 查找更改文档对象(SCDO)和表关系的在线字典1/2(全) 简介: 一个 SAP 更改文档对象(SCDO:SAP Change Document Object )由一组更改表和更改设 ...
- SAP ABAP 查找更改文档对象(SCDO)和表关系的在线字典2/2(全)
SAP ABAP 查找更改文档对象(SCDO)和表关系的在线字典2/2(全) 简介: 一个 SAP 更改文档对象(SCDO:SAP Change Document Object )由一组更改表和更改设 ...
- SAP增强实施步骤-三代增强BADI技术
SAP R/3 4.0之前 ABAP完全是面向过程的语言,面向对象的编程技术是在SAP R/3 4.0后版本中逐渐改造增加进去的,至目前ABAP已基本包含了面向对象的所有技术,所以完全可以说ABAP是 ...
- 【SAP Abap】SAP增强开发总结
SAP增强开发总结 1.概述 1.1.增强的概念 1.2.增强的类型 1.3.增强的发展 2.第一代增强(Form Exit) 2.1.简介 2.2.查找方法 2.3.实现方式 3.第二代增强(Fun ...
- 62. 如何通过增强(Enhancement) 的方式给 SAP ABAP 标准程序增添新功能
文章目录 如何找到可以创建增强实现的增强点位置 如何创建增强实现 如何在 SE80 里找到增强实现本身 如何调试 ABAP 增强实现 总结 ABAP 系统有比较完善的修改控制权限管控,比如笔者试图修改 ...
- SAP ABAP 工单增强
前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 正文部分 工单增强: 工单--工序--外部 BADI:MRO_CONTRACT 实现功能:外部中填入的物料组和维护的物料组是否 ...
- 73. 如何手动通过增强的方式,给 SAP ABAP 数据库表增添新的字段
有个朋友向我咨询关于 SAP 产品增强字段扩展(Field Extensibility) 的问题: Jerry,你好.看过你写的SAP产品增强Field Extensibility文章,对扩展字段在物 ...
- SAP ABAP CO核心扩展-为企业定制ZCKM3N物料价格分析增强(CKM3 CKM3N CKM8N)
SAP ABAP CO核心扩展-为企业定制ZCKM3N物料价格分析增强(CKM3 CKM3N CKM8N) 引言: 这篇文章,将为大家讲述物料价格分析扩展增强(ZCKM3N)的方法和原理,并基于CKM ...
最新文章
- Cnnot find System Java Compiler Ensure that you have installed a JDK
- DymSLAM: 基于几何和运动分割的4D动态场景重建( RAL)
- HTML怎么把文字分栏_PPT文字巨多!领导还不让删,怎么排版才高大上?
- STM32 基础系列教程 5 – 系统定时器
- ABAP Text edit使用
- RPA技术干货 | RPA防锁屏运行技巧
- Java黑皮书课后题第4章:4.22(检测子串)编写一个程序,提示用户输入两个字符串,检测第二个字符串是否是第一个字符串的子串
- ios wifi 定位_iOS 中的三种定位方式
- 公安信息通信网边界接入平台安全规范_【市场动态】3.56 亿元,阿里云中标青岛智慧公安项目...
- 软件包安装命令rpm和yum详解
- js校验明细列表字段是否存在相同值(js循环嵌套初始值问题)
- mysql 创建xml字段_使用PHP DOM从MySQL数据创建XML文件
- Keil C51大工程建立,模块化编程
- new操作符具体干了什么
- java开发程序员前景_java程序员的发展前景如何
- STM32 Systick定时器在实现1us延时时的问题与解决
- 通过IP地址连接两台电脑
- c++ 控制台游戏打砖块
- flutter全局状态管理Provider
- 【托福考场考点1】山东大学托福考点详情及考友评价
热门文章
- c++ std::map value_type、key_type、mapped_type
- 干货分享!微信抢红包实战案例
- 计算机联用测定无机盐溶解热测试题,实验一计算机联用测定无机盐溶解热..doc...
- HC小区管理系统快速安装版(手把手)
- 【案例集】直播间“长高产品”翻车了,120升油箱加了161升?
- wx.checkjsapi 一直显示ok_大聪明的显示器推荐
- 性能指标【多测师_王sir】
- android 背光驱动
- 横幅广告特效实现源码附带部分注释
- C++中实现自动注册的工厂