MB21创建预留/MB22修改预留增强

一.预留抬头增强

背景:项目中要求对MB21建立的预留抬头成本中心进行校验,如下图,需要屏幕增强:
MB21创建预留/MB22修改预留增强_第1张图片
1.我们通过F1发现,抬头的成本中心字段在SAPLKACB这个程序的1001屏幕中,如图,双击屏幕号进入:
MB21创建预留/MB22修改预留增强_第2张图片
2.点击子例程,对函数组KACB的子例程进行查找,如图:
MB21创建预留/MB22修改预留增强_第3张图片
3.很容易就查询到CUSTOMER_EXIT字样的子例程,分别代表屏幕的PAI/PBO用户屏幕增强:

MB21创建预留/MB22修改预留增强_第4张图片
4.我们这段增强是在屏幕输入的时候进行判断,所以需要增加在customer_exit_pai模块中,查找到屏幕出口CALL CUSTOMER-FUNCTION ‘002’,如图:
MB21创建预留/MB22修改预留增强_第5张图片
5.通过查找表MODSAP得到增强名,我们需要在CMOD中创建自定义增强项目ZSY_MB21并将查询到的增强放入组件,并激活。
MB21创建预留/MB22修改预留增强_第6张图片

MB21创建预留/MB22修改预留增强_第7张图片
6.因为此增强点涉及到多个标准程序的复用,所以需要限制Tcode,如下图MB21创建预留/MB22修改预留增强_第8张图片
7.在增强点处理完之后,激活并测试,发现符合需求。
在这里插入图片描述

二.预留明细增强

背景:要求库存地点增加必填校验,同时不同条件的物料移动状态不同。
MB21创建预留/MB22修改预留增强_第9张图片
1.F1查询到行项目在程序SAPMM07R屏幕0521中
MB21创建预留/MB22修改预留增强_第10张图片
2.重复使用刚才的出口增强查找方法,查询到了一个增强点MM07RFBO,测试发现此增强点是预留保存的增强位置;所以不适用
MB21创建预留/MB22修改预留增强_第11张图片
3.我们查询第三代增强BADI,通过查找类CALL METHOD cl_exithandler=>get_instance,查询到BADI:MB_RESERVATION_BADI
MB21创建预留/MB22修改预留增强_第12张图片
4.使用SE18进行查看,根据接口的定义,大致是数据进行检查和修改,我们激活这个BADI进行测试
MB21创建预留/MB22修改预留增强_第13张图片
MB21创建预留/MB22修改预留增强_第14张图片
5.创建实施ZEWM_MB_CREATE_RESER
MB21创建预留/MB22修改预留增强_第15张图片
MB21创建预留/MB22修改预留增强_第16张图片
6.构建类ZCL_IM_EWM_MB_CREATE_RESER,上面的方法是数据修改,下面的方法是数据检查,分别对应我们需求的修改移动状态和库存地点必填
MB21创建预留/MB22修改预留增强_第17张图片
7.写入代码,激活进行测试
MB21创建预留/MB22修改预留增强_第18张图片
8.校验生效,则增强位置是OK的
在这里插入图片描述
在这里插入图片描述
需要注意的是MB21/MB22是同一个程序,所以他们的增强点复用的,所以在代码中需要限制TCODE

你可能感兴趣的:(ERP,增强,abap)