业务场景
在企业中,通常需要控制采购业务中的特殊权限,本次遇到的业务场景:公司启用了SAP的 PPDS模块, 因此,需要控制业务员不能手动使用ME51N创建采购申请.因为标准的权限对象控制不灵活,所以采用增强的方式进行控制.
一、增强方式:BADI
BADI:ME_PROCESS_REQ_CUST
这个增强中有很多可以控制的点,比如:
1.行项目检查(PROCESS_ITEM).
2:抬头检查(PROCESS_HEADER)
3.整单检查(CHECK).
4.保存检查(POST).
等等…
本次使用的事CHECK
二、增强步骤
1.SE18/SE19创建增强实施
详细的创建BADI增强步骤自行百度,这里不再赘述.
我主要讲下在CHECK中如何获取抬头和行项目的数据.
从截图中可以看到,CHECK方法和普通的增强是不同的,没有直接提供抬头数据和行项目数据,需要我们在增强中调用GET_DATA和GET_ITEMS方法去获取数据.
这里以获取行项目数据为例.
双击IM_HEADER的关联类型,
进入后,找到GET_ITEMS,选中后点击参数按钮.
进入后可以看到GET_ITEMS方法的参数:
这里RE_ITEMS的关联类型MMPUR_REQUISITION_ITEMS比较重要,在增强中我们要使用这个关联类型去获取行项目的数据对象.
双击MMPUR_REQUISITION_ITEMS,打开后如下图:
可以看到行类型,这个行类型MMPUR_REQUISITION_ITEM在增强中用来迭代行项目.
双击行类型,进入如下界面:
再双击组件类型,进入如下界面: