自己写的销售组织分销渠道的权限检查增强

本文展示了一个ABAP程序示例,该程序通过从TVKOT和TVTWT表中选择数据并进行权限检查来验证用户对特定销售组织和分销渠道的访问权限。通过循环遍历选择的数据记录并使用AUTHORITY-CHECK命令执行必要的权限验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DATA LT_TVKOT TYPE TABLE OF TVKOT WITH HEADER LINE.
  DATA LT_TVTWT TYPE TABLE OF TVTWT WITH HEADER LINE.


  SELECT * FROM TVKOT INTO TABLE LT_TVKOT WHERE VKORG IN svkorg AND SPRAS = '1'.
  SELECT * FROM TVTWT INTO TABLE LT_TVTWT  WHERE VTWEG IN svtweg AND SPRAS = '1'.
  LOOP AT LT_TVKOT.
    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
        ID 'VKORG' FIELD LT_TVKOT-VKORG
        ID 'VTWEG' DUMMY
        ID 'SPART' DUMMY
        ID 'ACTVT' DUMMY.
    IF SY-SUBRC NE 0.
      MESSAGE E899(MM) WITH '没有销售组织' LT_TVKOT-VKORG '的权限'.
    ENDIF.
    AUTHORITY-CHECK OBJECT 'V_VBRK_VKO'
          ID 'VKORG' FIELD LT_TVKOT-VKORG
          ID 'ACTVT' DUMMY.
    IF SY-SUBRC NE 0.
      MESSAGE E899(MM) WITH '没有销售组织' LT_TVKOT-VKORG '的权限'.
    ENDIF.
    CLEAR LT_TVKOT.
  ENDLOOP.


  LOOP AT LT_TVTWT.
    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
    ID 'VKORG' DUMMY
    ID 'VTWEG' FIELD LT_TVTWT-VTWEG
    ID 'SPART' DUMMY
    ID 'ACTVT' DUMMY.
    IF SY-SUBRC NE 0.
      MESSAGE E899(MM) WITH '没有分销渠道' LT_TVTWT-VTWEG '的权限'.
    ENDIF.
    CLEAR LT_TVTWT.
  ENDLOOP.

*..........................................





  DATA LT_TVTWT TYPE TABLE OF TVTWT WITH HEADER LINE.
  SELECT FROM TVTWT INTO TABLE LT_TVTWT  WHERE VTWEG IN S_VTWEG AND SPRAS '1'.

    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
        ID 'VKORG' FIELD P_VKORG
        ID 'VTWEG' DUMMY
        ID 'SPART' DUMMY
        ID 'ACTVT' DUMMY.
    IF SY-SUBRC NE 0.
      MESSAGE E899(MMWITH '没有销售组织' P_VKORG '的权限'.
    ENDIF.
    AUTHORITY-CHECK OBJECT 'V_VBRK_VKO'
          ID 'VKORG' FIELD P_VKORG
          ID 'ACTVT' DUMMY.
    IF SY-SUBRC NE 0.
      MESSAGE E899(MMWITH '没有销售组织' P_VKORG '的权限'.
    ENDIF.

  LOOP AT LT_TVTWT.
    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
    ID 'VKORG' DUMMY
    ID 'VTWEG' FIELD LT_TVTWT-VTWEG
    ID 'SPART' DUMMY
    ID 'ACTVT' DUMMY.
    IF SY-SUBRC eq 0.
      s_VTWEG-sign 'I'.
      s_VTWEG-option 'EQ'.
      s_VTWEG-low LT_TVTWT-VTWEG.
      APPEND s_VTWEG.

    ENDIF.
     CLEAR: s_VTWEG,LT_TVTWT.
  ENDLOOP.

 loop at p_gt_fvkdfi.

if p_gt_fvkdfi-vtweg not in s_VTWEG[].
  delete p_gt_fvkdfi where vtweg p_gt_fvkdfi-vtweg.
        delete p_gt_fvkdfi  where vtweg p_gt_fvkdfi-vtweg.
  ENDIF.

CLEAR p_gt_fvkdfi.
   endloop.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值