SAP BADI应用

1.定义BADI
         1) T-Code:  SE18     Business Add-In Define.

2) 输入要创建的BADI的名字,点击"Create"。

3) 输入BADI的描述性文本,在"Interface"选项卡上输入接口的名字,也可以采用SAP建议的接口的名字。同时,BADI类也        会被创建。

例如:对于BADI "ZTEST",SAP会建议"ZIF_EX_TEST"作为接口的名字,"ZCL_EX_TEST"作为类的名字。

4) 保存BADI。

5) 双击接口的名字,会跳转到Class Builder界面,在这里你可以定义接口的方法。

6) 保存并激活接口。

2.实现BADI
         1) T-Code:  SE19     Business Add-In Implementation
         2) 输入BADI实现的名字,点击"Create"。
         3) 输入BADI定义的名字。
         4) 输入实现的描述性文本,在"Interface"选项卡上输入实现类的名字。可以采用SAP建议的名字。

例如:"ZIMPTEST",SAP会建议"ZCL_IM_IMPTEST"。

5) 保存实现。

6) 双击某一方法名会跳转到Class Builder界面,在这里你可以添加代码来重定义接口方法。

7) 激活实现。

3. 程序中调用BADI

1) 先用类型参照引用出要调用的BADI
      2) 实例化BADI
      3) 实例化后就可以任意调用BADI 中的方法了。

REPORT  ZZW_BAPI_01                                                 .

data exit type ref to ZIF_EX_ZW_BD_TEST.

call method cl_exithandler=>get_instance
     changing
        instance = exit.

call method exit->Z_ZW_01.

==》
badi 小记
BADI作为SAP的第三代用户出口,他的应用也越来越广泛,但如何找到合适的badi是许多abap程序员的困惑。我这里就介绍一下我个人的应用的经验,供大家参考。

1、badi对象的信息存储在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 这四个表中(参见SECE包);

2、sap程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP 和 V_EXT_ACT)进行查询和搜索。

3、基于这个机理,我查用ST05来监控一个TCODE来跟踪,然后选择查找有关上述几个表和视图的操作,就可获得相关BADI。

4、se18 查找接口,se19 实现接口就可以实现用户增强。
示例:用LE_SHP_DELIVERY_PROC控制跨月Cancel

METHOD IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_HEADER .
data : thismonth(2) type c.
data : wa_likp type line of SHP_LIKP_T.
data : wa_log type line of SHP_BADI_ERROR_LOG_T.
clear ct_log[],thismonth.
thismonth = sy-datum+4(2). "----->这一个月的月份
loop at it_xlikp into wa_likp.
check IS_V50AGL-WARENAUSG_STORNO ='X'."--->代表作GI cancel
if wa_likp-WADAT_IST+4(2) < thismonth.
wa_log-VBELN = cs_likp-vbeln.
wa_log-MSGTY = 'E'. "错误信息
wa_log-MSGID = 'ZDN_ERROR'. "这一个class要自己建
wa_log-MSGNO = '001'.
append wa_log to ct_log. "Error log写入
endif.
endloop.
ENDMETHOD.

转载于:https://www.cnblogs.com/panjun-Donet/archive/2011/01/03/1924933.html

SAP BADI应用相关推荐

  1. SAP BADI增强点初学分享

    在SAP系统实施过程,不可避免的需要实施增强点开发,来满足业务需求:现简单总结SAP BADI增强(第三代)的应用,用于SAP初学者理解. 1.首先,查询到可以被实施的BADI,通过事务代码SE24, ...

  2. SAP BAdI 深度解读

    BAdI是SAP在标准程序中,为客户自定义逻辑所预留的接口(属于第三代增强),在技术本质上是一个interface,通过实现类的向上继承,完成用户逻辑的调用. 操作BAdI的事务代码: SE18:定义 ...

  3. sap badi s4 MIGO屏幕实施测试

    1: 实施MB_MIGO_BADI 输入实施类:YCL_MIGO_TEST01 选择:复制实例类, CL_EXM_IM_MB_MIGO_BADI是一个比较快的实施方式, 2: 激活增强实施 3: 激活 ...

  4. sap 一代增强_SAP增强Enhancement

    第一代:基于源码增强(子过程subroutine) 第一代增强基于源代码,是SAP提供的一个空代码的子过程.在这个子过程中用户可以添加自己的代码,控制自己的需求.这类增强集中在一些文件名倒数第二个字符 ...

  5. BADI 构建方法(NEW BADI 实施)

    BADI 构建方法(NEW BADI 实施) 介绍 SAP Business Planning and Consolidation(SAP BPC)提供SAP Netweaver版本和Microsof ...

  6. BADI OVERVIEW

    什么是BADI,如何从SAP中查找BADI? Business Add-Ins are a new SAP enhancement technique based on ABAP Objects. T ...

  7. AMDP + XLSX Workbench 报表开发模式

    本文介绍了我和同事通过使用AMDP + XLSX Workbench缩短报表开发周期.分离数据查询处理逻辑和前端展示工作的经验.欢迎讨论. 前言 最近接到了一套人力资源报表的开发需求,需要以EXCEL ...

  8. 码农30多岁,要被辞退的时候 怎么办?

    ~~别光看干货, 注意 [文末有福利] ~~~ 老家伙的故事 突然有一天,我的老板用非常低沉的声音叫我的名字,然后对我说:"Jack,公司的业务已经长时间没有增长了,未来的路不好走,我们需要 ...

  9. 50 岁开发者如何绝地求生

    15 年没写代码,濒临被裁,50 岁开发者如何绝地求生? 突然有一天,我的老板用非常低沉的声音叫我的名字,然后对我说:"Jack,公司的业务已经长时间没有增长了,未来的路不好走,我们需要采取 ...

最新文章

  1. java interface list_你了解注解内的@interface List么
  2. 我在北京工作这几年 – 一个软件工程师的反省
  3. Class,表名,表单参数名关系
  4. 推荐:Dapper扩展-Dapper.SimpleCRUD
  5. mysql命令速查手册
  6. 说说Java 7中的模块系统基本概念
  7. JVM性能调优监控工具详解
  8. 卸载驱动精灵后重启蓝屏
  9. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2020.7
  10. MYSQL闪退的解决方法
  11. 华泰证券人工智能系列(1):人工智能选股框架及经典算法简介
  12. android高帧率模式,《和平精英》等五款游戏已经适配小米10系列高帧率模式
  13. 美国队用计算机计算排球队员,排球理论考试题库
  14. esxi 无盘服务器,用ipxe网络启动打造无盘ESXi系统
  15. Android卡顿优化
  16. C# 匿名方法和拉姆达表达式
  17. 老菜鸟致青春,程序员应该选择java 还是 c#-
  18. Oracle ADR(Automatic Diagnostic Repository)介绍
  19. 彻底解决 Windows 下 PHP 响应异常缓慢的问题
  20. echarts生成图表超出父容器问题解决

热门文章

  1. h5 video视频播放的同时加水印,图片加水印同样的原理
  2. V2V-PoseNet算法和应用详解(3D关节点估计领域)
  3. MSP430低功耗模式-while循环失效
  4. Matlab中bwmorph函数的使用
  5. jmeter吞吐量图形显示_Jmeter系列(43)- 详解 Jmeter 图形化 HTML 压测报告之 Charts 模块...
  6. 基础矩阵,本质矩阵,单应性矩阵讲解
  7. 天顶角Zenith方位角Azimuth
  8. C++ - emplace_back 和 push_back 的区别
  9. Vue给Element UI的el-popconfirm绑定按钮事件
  10. 设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)