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

来源:互联网 发布:linux 安装monaco 编辑:程序博客网 时间:2024/04/27 23:05

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.