VA01/VA02/VA03/VA05 销售订单根据权限隐藏价格

1、业务需求

针对用户使用销售订单时,判断是否有权限,没有权限时隐藏销售订单抬头和行项目的价格相关字段

2、增强实现

2.1自定义权限对象

SE11创建一个带域的数据元素ZECHECK,SU21自定义权限对象:ZCONDMANT,校验ZCHECK = M 为有权限

2.2、隐藏抬头和行项目价格

隐藏抬头和行项目表格中的净值和净价字段

在程序MV45AFZZ→USEREXIT_FIELD_MODIFICATION中写隐式增强

"--------------------@斌将军--------------------
FORM USEREXIT_FIELD_MODIFICATION.

* CASE SCREEN-GROUP3.
*   WHEN '900'.
*     IF VBAK-VBTYP NE IF_SD_DOC_CATEGORY=>INQUIRY.
*       SCREEN-ACTIVE = 0.
*     ENDIF.
* ENDCASE.

* CASE SCREEN-NAME.
*   WHEN 'VBAK-VBELN'.
*     SCREEN-ACTIVE = 0.
* ENDCASE.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1)
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZSD_VA01_PRICE.    "active version

  IF sy-tcode = 'VA01' OR sy-tcode = 'VA02' OR sy-tcode = 'VA03' OR sy-tcode = 'VA05'.

    IF (
       screen-name = 'VBAK-NETWR' OR  "抬头 净值
       screen-name = 'VBAK-WAERK' OR  "抬头 货币
*     screen-name = 'RV45A-KOEIN' OR "项目 货币
       screen-name = 'VBAP-NETPR' OR  "项目 净价
       screen-name = 'VBAP-NETWR' "OR  "项目 净值
*     screen-name = 'VBAP-WAERK' OR  "项目 SD 凭证货币
        ).
      AUTHORITY-CHECK OBJECT 'ZCONDMANT'
      ID 'ZCHECK' FIELD 'M'.
      IF sy-subrc <> 0."没有权限
        screen-active = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDIF.
  ENDIF.
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*
ENDFORM.
"--------------------@斌将军--------------------

效果如下

2.3、隐藏条件页签价格

还需要隐藏抬头和行项目的条件页签中的价格数据

在程序LV69AF01→TCTRL_KONDITIONEN_INIT中写隐式增强。

此处的隐式增强必须写在FORM的末尾隐式增强点处,不能写在FORM开头的隐式增强点处。

因为抬头和行项目的条件页签都是调用了这段相同的代码,在第一次进入会对tctrl_konditionen进行重置,导致增强代码不起作用,所以要将增强代码写在FORM末尾

 参考代码

"--------------------@斌将军--------------------
FORM tctrl_konditionen_init.
  DATA: da_tfill LIKE sy-tabix.

* Refresh table control if screen number has changed
  STATICS: last_dynnr TYPE dynnr.
  IF sy-dynnr NE last_dynnr AND gf_called_by_lord IS INITIAL.
    last_dynnr = sy-dynnr.
    REFRESH CONTROL 'tctrl_konditionen' FROM SCREEN sy-dynnr.
  ENDIF.

  DESCRIBE TABLE xkomv LINES da_tfill.

......


"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1)
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZSD_VA01_ITEM_PRICE.    "active version

  IF sy-tcode = 'VA01' OR sy-tcode = 'VA02' OR sy-tcode = 'VA03' OR sy-tcode = 'VA05'.

    AUTHORITY-CHECK OBJECT 'ZCONDMANT'
     ID 'ZCHECK' FIELD 'M'.
    IF sy-subrc <> 0."没有权限

    "隐藏净值、税收字段
      LOOP AT SCREEN.
        IF screen-name = 'KOMP-NETWR' OR screen-name = 'KOMP-MWSBP'.
          screen-active = 0.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
      
      "隐藏表格中金额、定价值字段
      LOOP AT tctrl_konditionen-cols INTO DATA(lv_acol).
        IF lv_acol-screen-name EQ 'KOMV-KBETR' OR lv_acol-screen-name EQ 'KOMV-KWERT'.
          lv_acol-invisible = 1.
          MODIFY tctrl_konditionen-cols FROM lv_acol INDEX sy-tabix.
        ENDIF.
      ENDLOOP.
    ENDIF.

  ENDIF.
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*
ENDFORM.                    "tctrl_konditionen_init
"--------------------@斌将军--------------------

效果如下

抬头条件页签

行项目条件页签

2.4、VA05隐藏价格

VA05报表

在程序CL_SALV_GUI_OM_ADPT_FULLSCREENCM004中,找到filedcat列表的获取方法

在获取之后用隐式增强删除fieldcat表中抬头和行项目的净值字段,就可以隐藏价格

定期更文,欢迎关注

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值