VT01N/VT02N进行交货的时候,对装运点加权限控制的增强

背景:
(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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值