badi增强实例 - 图文
更新时间:2023-11-19 13:13:01 阅读量: 教育文库 文档下载
- sap badi增强推荐度:
- 相关推荐
刚开始写技术博客,就从官方文档的汉化开始,希望对自己和大家都有帮助。我会用自己的语言简洁的写清楚过程,而并非是百分之百的汉化。 1,SAP BADI的由来
大家都知道SAP在ERP行业中,应用最广的是财务领域。由于各个国家财务制度以及税务制度的差异,SAP希望在自己的程序开发平台中引入BADI,能够让开发人员自己编写业务插件,系统会自动调用这些插件程序来完成某种业务运算。本文中的举例是计算不同国家的税率。
2,创建一个Enhancement Spot
这是概念是作为一个BADI的容器,在这个容器里面,我们可以定义自己的BADI。
? 在TCode SE80中,选择想要创建Enhancement spot所在的package ? 选择Create->Enhancement->Enhancement Spot,如图 ? 输入这个enhanement spot的名称和描述
3,创建一个BADI
? 在新建立的enhancement spot中创建BADI,选择如图中的按钮 ? 输入BADI的名字和描述,如z_badi_calc_vat
4,定义BADI接口
接下来我们需要一个接口来定义这个BADI所需要用的方法
? 选择BADI前面的箭头
? 双选接口,此时可以选择或者输入一个新的接口名 ?
? 选择新建一个叫if_badi_interface的接口,如图它只有一个方法叫get_vat
?
? 设置方法的参数
?
至此,我们已经建立了一个enhancement spot而且带有一个BADI和一个接口。仅仅如此是不能使用这个BADI的,我们需要一个BADI实例来在程序中被调用。
5,现在我们写一小段程序来调用这个BADI方法get_vat,系统有两个关键字用来得到BADI实例和调用BADI,分别是GET BADI和CALL BADI DATA: handle TYPE REF TO z_badi_calc_vat, sum TYPE p, vat TYPE p, percent TYPE p. sum = 50.
GET BADI handle.
CALL BADI handle->get_vat
EXPORTING im_amount = sum IMPORTING ex_amount_vat = vat
ex_percent_vat = percent.
WRITE: 'percentage:', percent, 'VAT:', vat. 6,默认的回调类(Fallback Class)
当上述程序运行时,发现没有任何实现的BADI时,系统会抛出异常。在这种情况下,建议使用回调类。即便没有BADI的实现,GET BADI会返回回调类的实例,设置如图
可以把默认的逻辑写在这个回调类中,它会按照接口自动定义好方法,完成默认逻辑,比如
DATA: percent TYPE p VALUE 20.
ex_amount_vat = im_amount * percent / 100.
ex_percent_vat = percent.
在上一篇文章中,我们学习了定义一个BADI,提供回调类,实例化一个BADI,以及去调用一个BADI方法。我们也建立了一个enhancement spot作为BADI的容器。 1,建立实现体的容器
定义和实现BADI有一个共同的地方,就是都是需要建立一个容器,我们不能新建一个BADI的实现,如果没有先建立容器的话。在同一个容器中,可以有多个BADI实现,但是前提是要求他们都是属于同一个enhancement spot所对应的BADI。
o 进入TCode SE80,在enhancement spot中,选择如图按钮
o o
创建一个新的BADI实现容器如图
o o
在接下来的窗口中,要求输入的是作为唯一指定的enhancement spot,一旦建立了这个关联,你就可以建立一个BADI实现,而且是在这个enhancment spot中的。
o o
输入z_bdi_calc_vat_us作为BADI实现的名字,如图
o
2,BADI类实现
在我们建立了BADI实现容器之后,就可以真正开始建立一个实现类了。
o o
选择BADI实现前面的三角形图标 在实现类这项中,填入z_cl_cal_vat_us
o o
在打开的类构建器中,接口对应的方法已经显示出来,我们需要做的是去完成get_vat
o 实现这个方法,比如
DATA: percent type p value 4 .
ex_amount_vat = im_amount * percent / 100 . ex_percent_vat = percent .
现在我们还可以实现另一个实现类,比如Z_CL_CALC_VAT_GB,但是当运行程序时,系统会dump,这是因为我们定义BADI时,是采用了默认的单一使用(single-use),没有选中复合使用选项(Multiple Use Option),单一使用的限制是只能有一个实现类。如何解决这个问题,请看本系列的最后一篇文章,如何使用过滤器。
在上一篇最后引出的问题中,我们需要有一种方法来在不同的BADI实现中切换,这就引出了BADI过滤器的概念。我们可以为一个BADI定义多个过滤器。在本例中,我们只需要一个过滤器。
o o
进入到enhancement spot,然后选中Enh. Spot Element Definition tab。 选中BADI,然后新建过滤器。
o o
输入相应的数据。
o o
激活enhancement spot,选中implementation。
o o
选中第一行后,选中BADI实现体下面的过滤器图标,选择Create Filter Combination按钮;
o 选择Country作为过滤器,双击Combination1下面的这行,如图。
o
o o o
同理,可以设置另一个USA BADI实现类的过滤器。
现在,我们可以通过一个新的程序来,调用BADI,而且它会根据过滤器的值,选择执行真正的实现类。
REPORT Z_DEMO_ENH. parameters: ctry(2) type c.
DATA: handle TYPE REF TO z_badi_calc_vat, sum TYPE p, vat TYPE p, percent TYPE p. sum = 50.
GET BADI handle FILTERS Country = ctry. CALL BADI handle->get_vat EXPORTING im_amount = sum IMPORTING ex_amount_vat = vat
ex_percent_vat = percent.
WRITE: 'percentage:', percent, 'VAT:' ,vat.
正在阅读:
badi增强实例 - 图文11-19
英语 中级口译 历年真题2002.9答案03-28
度米作文汇编之英语作文带翻译我的父亲Myfather01-04
年产3万吨PVC工艺与设备设计04-23
质量管理学习方法11-15
Web网管操作指南(V100R006C00_02)05-08
罪犯自杀的原因和预防措施01-15
折纸心形盒子 手工折纸图谱教程08-27
钢结构3 考试试题03-15
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 实例
- 增强
- 图文
- badi
- 智能化立体仓库
- 2018年中国健身服市场分析及调研报告目录
- 语教版语文五年级上册说课标说教材
- 美国回归亚洲战略给中国带来哪些挑战,中国又该如何应对
- 《特种设备作业人员证》二级锅炉司炉工考试练习题
- 班主任工作总结
- 概率论与数理统计复习1(答案新)
- WinDNC - V04 - 00安装以及设置方法 - 图文
- 园林工程施工质量验收记录用表
- 广州市琶洲 - 员村地区城市设计竞赛公示 - 图文
- 建安工程费计算
- 技能比赛主持稿和致辞稿
- 第二章 核酸的结构与功能
- 计算机网络期末考试试题(杨晓晖主编 中国铁道出版社)
- 浅论鲁迅作品的现实意义完整版
- 报建人员报建手续全集 -
- 4460光谱仪基本操作规程
- SQL Server日志损坏造成整个数据库损坏的修复
- 年产5.2万千米节能环保型电线电缆工程融资投资立项项目可行性研究报告(中撰咨询)
- 风景园林工程建设项目可行性研究报告编制概述