sap中通过权限控制对没有权限的人员使用的搜索帮助隐藏掉部分数据

最近有个需求,需要对如下图所示的搜索帮助,进行权限控制,即没有权限的人员,点开搜索帮助时,可选择的数据会少一部分

实现方式:对搜索帮助增加出口,并在其DISP中,根据权限有无,以及配置表中的数据对搜索帮助进行数据过滤

此出口可以复制系统标准的函数:F4IF_SHLP_EXIT_EXAMPLE

程序代码如下:

 IF CALLCONTROL-STEP = 'DISP'.
*   PERFORM ZAUTHORITY_CHECK TABLES RECORD_TAB SHLP_TAB
*                           CHANGING SHLP CALLCONTROL.
*    DATA ls_record LIKE LINE OF record_tab.
DATA :LV_GXSTRING TYPE STRING.

    FIELD-SYMBOLS: <LFS_ZZHGX> TYPE ZE_ZZHGX.

       SELECT *
       FROM ZTPP006GX
       INTO TABLE @DATA(LT_ZTPP006GX).

      AUTHORITY-CHECK OBJECT 'ZPP006N'
        ID 'ZYPGXQX' FIELD '1'.

        IF SY-SUBRC NE 0.
      LOOP AT record_tab .
        DATA(I) = SY-TABIX.
"去除前导零
         LV_GXSTRING = record_tab-STRING.

        SHIFT LV_GXSTRING LEFT DELETING LEADING SPACE.

*根据字符串的中间空格拆分成两个字符串
           SPLIT LV_GXSTRING AT '' INTO DATA(lv_str1) DATA(lv_str2).

       IF   lv_str1 IS NOT INITIAL.
         READ TABLE LT_ZTPP006GX INTO DATA(LS_ZTPP006GX) WITH KEY ZZHGX = lv_str1.
         IF SY-SUBRC = 0.
               DELETE record_tab  INDEX I.
          ENDIF.
        ENDIF.
       ENDLOOP.
        ENDIF.

    EXIT.
  ENDIF.

其中表ZTPP006GX中保存的即是需要排除的数据

最终实现效果为,没有此权限的人员,点击此搜索帮助时,会比有此权限的人员少ztpp006gx表中对应的工序数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值