背景:
(1)在VT01N进行创建装运单的时候,点击交货,只带出权限控制下面的装运点的数据。
(2)在VT02N进行更改装运单的时候,如果点击了交货,那么也只带出权限控制下面的装运点的数据。
1、VT01N前台操作界面:
1.1、输入运输计划点和装运类型
1.2、点击交货
1.3、可以看见:找到的交货数据有48条,但是我们显示的只有5条,因为其他的交货数据不是这个权限下面的装运点数据。
2、VT02N前台操作界面
2.1、输入装运编号:
2.2、不管是在VT02N界面点击交货还是敲击回车进去后点击交货,都只带出权限下面的装运点数据
3、增强代码实现
3.1、隐私增强的位置点:
SE37输入:/DSD/RP_DSD_FIELDS
在可以增强的地方创建隐式增强即可。
3.2、具体代码:
ENHANCEMENT 1 ZIM_EN_SD_VT01. "active version
field-symbols: <fs_xvttk_tab> type v56i1_vttk_tab,
<fs_xvttp_tab> type v56i1_vttp_tab,
<fs_vtrlk_tab> type v56i1_vtrlk_tab,
<fs_vtrlp_tab> type v56i1_vtrlp_tab,
<fs_xvttk> type v56i1_vttk,
<fs_xvttp> type v56i1_vttp,
<fs_vtrlk> type v56i1_vtrlk.
data: lf_vttk type vttkvb.
if sy-tcode = 'VT01N' or sy-tcode = 'VT02N' or sy-tcode = 'VT03N'.
if not cp_ref-xvttp is initial.
assign cp_ref-xvttp->* to <fs_xvttp_tab>.
endif.
if not cp_ref-vtrlk is initial.
assign cp_ref-vtrlk->* to <fs_vtrlk_tab>.
endif.
loop at <fs_xvttp_tab> into data(ls_xvttp).
"MODIFIED BY DS4K904566 20250409
"标准的权限对象:V_LIKP_VS无法管控,因为更改为自建的权限对象
authority-check object 'Z_V_LIKP'
id 'VSTEL' field ls_xvttp-vstel
id 'ACTVT' field '02'.
if sy-subrc <> 0.
delete <fs_xvttp_tab>.
delete <fs_vtrlk_tab> where vbeln = ls_xvttp-vbeln.
endif.
endloop.
endif.
ENDENHANCEMENT.
4、VT02N中对于没有装运点权限的装运单不允许更改
实现的效果如下图所示:
不管是敲击回车,还是点击交货或者点击装运与交货都不允许进行操作
4.1、增强点:程序:SAPMV56A----->包含文件:MV56AF0V---->子例程:varianten_check
4.2、增强代码:
ENHANCEMENT 2 ZSD_ENHANCE_TRANSPORT. "active version
*****---- ADD BY DS4K904566 20250409 BGEIN ------*****
if sy-tcode = 'VT02N'.
if fcode = 'MM_TKAL'or fcode = 'MM_LFSL'OR fcode = 'MM_UETP'.
select a~vstel,
a~vbeln
from likp as a
inner join vttp as b on b~vbeln = a~vbeln
where b~tknum = @vttk-tknum
into table @data(lt_likp).
loop at lt_likp into data(ls_likp).
authority-check object 'Z_V_LIKP'
id 'VSTEL' field ls_likp-vstel
id 'ACTVT' field '02'.
if sy-subrc <> 0.
delete lt_likp.
endif.
endloop.
if lt_likp is initial.
"您没有该装运单权限
message e012(zsd001).
endif.
endif.
endif.
ENDENHANCEMENT.