第三代增强Enhancement Spot(实例)

业务需要:

MIGO事务代码,录入采购订单后,行项目详细信息中,增加一个分页签,分页签中增加输入框,保存按钮上增加保存至自建数据库表。

业务模拟:

1、SE24查找MIGO业务相关的BADI清单:

(1)使用SE24跟踪MIGO中的BADI,考虑可能需要的BADI在:

       输入事务代码MIGO回车后:

         MB_MIGO_BADI、MB_MIGO_ITEM_BADI、GOS_SRV_SELECT、BADI_LAYER、BADI_MATN1、

       输入采购订单回车后:

        OIB_QCI_DET_DEF、OIB_QCI_EXTERNALFUNC、GOS_SRV_SELECT、

       (其他后续步骤与我们需要的业务不符合,故不记录后续出现的BADI)

(2)使用SE18查看上述BADI的描述

       MB_MIGO_BADI:外部详细子屏幕的 MIGO 中的BADI

2、SE18查找BADI下的Interface、method

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

PBO_DETAIL\PAI_DETAIL与屏幕有关的方法。在SE18下直接点击上方:实现--->创建--->保存,之后提示如下:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

此时可以不保存并退出该操作页面,重新进入SE18首页:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

SE18进入第一个分页后可知,该增强点是由标准的BADI(MB_MIGO_BADI)中移植而来的。

也有人将ENHANCEMENT SPOT称为第四代增强。(也有人认为是基于BADI的,也是三代增强)

3、SE18查看增强点

在上面的步骤中知道了该BADI有enhancement spot,返回SE18首页选择“enhancement spot”点击查看增强点相关的内容:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

可以点击左侧definition(定义)展开,查看该BADI定义下对应的接口及方法:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

基于当前的definition(定义)查看哪些实现已经定义了:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

可以引用该增强点下的系统范例

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

增强点(Enhancement spot),还是在SE18(也可以SE19)中查看(输入增强点):

4、创建增强点的实现

(1)SE18(专门查看definition)上图选中BADI,右击选择“创建”:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

(2)也可以使用SE19专门创建Implement的事务代码,输入增强点,点击实现,填写增强点对应的实现名称和文本:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

点击确认后,再选择增强点的定义definition(即在该增强点下包含的哪个definition需要创建实现,选择BADI定义为:MB_MIGO_BADI),再输入definition对应的需要创建的实现:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

点击确认或回车后,查看增强实现,并执行类,输入执行类CL_EXM_IM_MB_MIGO_BADI上文中系统中已有的实例):

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

若出现以下界面则选择“copy sample Class”:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

点击保存,则可带出该类下的方法:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

且刚创建的实现显示为“将不调用实施”(需要后续**):

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

5、**增强实现

点击**,全选后回车(全部**):

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

**后该实现显示“执行已被调用”:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

若系统中有多个“执行已调用”的实现,导致不能**时(若能顺利**,则表示无冲突),则需要将不使用的改为“执行未调用”状态:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

6、验证实现

使用事务代码MIGO查看该实现的系统实例CL_EXM_IM_MB_MIGO_BADI的功能,输入PO回车后,出现“MIGO BADI(例子)”分页:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

7、实例逻辑分析:

(1)、没有输入PO编号时,分页签不显示

(2)、分页签中包含一个屏幕界面,可以数据录入

(3)、点击MIGO中的check按钮时,有检查消息

(4)、点击保存时,分页签数据可以保存到对应数据库表中。

可以点击增强实现,或者SE19输入刚才创建的增强实现,查看方法下的增强代码:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

点击执行类,查看下面的方法:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

双击其中的方法可以查看增强代码及注释:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

(由注释知道该方法注册一个分页签,分页签ID保存在CT_INIT中)

可以查看到方法中的参数:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

注意:若同时使用该参数注册多个分页签,由于初始值相同,导致ID冲突,会使得增强实现失败。故需要增加分页签时使得初始的分页签ID不同,冲突时即两个实现中的GF_CLASS_ID初始值相同),冲突时进入MIGO事务后会出现BADI登记同名的报错信息:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

 

附:部分方法解析

方法1-INIT:注册分页签ID

方法2-PBO:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

方法3-PAI:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

可以查看赋值的参数:

SAP 增强--第三代BADI增强点--Enhancement Spot(实例)

表示若该参数值为‘X’,对应的方法LINE_MODIFY将被执行。

方法4-LINE_MODIFY:略

 

相关文章:

  • 2021-06-18
  • 2022-12-23
  • 2021-12-02
  • 2021-11-21
  • 2021-11-19
  • 2022-12-23
  • 2021-07-31
  • 2021-04-30
猜你喜欢
  • 2021-09-18
  • 2021-06-29
  • 2021-12-21
  • 2021-10-12
  • 2021-11-07
  • 2021-04-11
  • 2021-08-04
相关资源
相似解决方案