VA01/VA02/VA03 销售订单根据定价和步骤校验权限隐藏价格

之前发表了通过自定义权限对用户隐藏所有价格信息,本文档是通过定价和步骤校验权限隐藏部分价格

斌将军,公众号:斌将军VA01/VA02/VA03/VA05 销售订单根据权限隐藏价格

1、业务需求

针对用户使用销售订单时,根据定价和步骤顺序,判断是否有权限,没有权限时隐藏销售订单抬头和行项目的部分价格数据

要限制的定价和步骤在spro中的位置

e81c0ff75a7d8db201207d6e862cedb7.png

限制的步骤

ffb0756ea3d83deb23f423ca3bf55bf1.png

2、增强实现

2.1权限对象

创建带有定价和步骤的权限对象

a211daa26f610ce64dcff64adcccec9b.png

分配权限给需要的用户,也可用权限和代码反向控制

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

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

89d7bbf44e196ef563ef8695fc856b32.png

在程序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.


"
*$*$-Start: (1)-------------------------------------
ENHANCEMENT 1  ZSD007_VA01_PRICE.    "active version
CALL FUNCTION 'ZXX01_USER_EXITS'
  EXPORTING
    i_encode = 'SD007'
  EXCEPTIONS
    close    = 1
    OTHERS   = 2.
IF sy-subrc = 0.
  IF screen-name = 'KOMV-KBETR'
      OR screen-name = 'VBAK-NETWR'"抬头 净值
      OR screen-name = 'VBAK-WAERK'"抬头 货币
      OR screen-name = 'VBAP-NETPR'"项目 净价
      OR screen-name = 'VBAP-NETWR'."项目 净值


    AUTHORITY-CHECK OBJECT 'Z_KONH_KLS'
  ID 'ZKALSM' FIELD vbak-kalsm
  ID 'ZSTUNR' DUMMY
  ID 'ACTVT' DUMMY.
    IF sy-subrc <> 0.
      screen-active = 0.
      MODIFY SCREEN.
    ENDIF.
  ENDIF.
ENDIF.
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*
ENDFORM.
"--------------------@斌将军--------------------

效果如下

2960eed962fb7c4d84a3133958e6d62c.png

2.3、隐藏条件页签价格

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

ddb97a733091f2c5448fac899f2a23e3.png

在程序中定义变量

cadc53428f64cae69002ff51a0be3836.png

在出口处引用自定义代码

"--------------------@斌将军--------------------
*&---------------------------------------------------------------------*
*&      Form  USEREXIT_FIELD_MODIFIC_LEER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form userexit_field_modific_leer.
"
*$*$-Start: (1)--------------------------------------
ENHANCEMENT 1  ZSD007_SALES_PRICE.    "active version
 INCLUDE ZSD007_SALES_PRICE01.
ENDENHANCEMENT.
*$*$-End:   (1)-------------------------------------


endform.                               
*&---------------------------------------------------------------------*
*&      Form  USEREXIT_FIELD_MODIFIC_KZWI
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form userexit_field_modific_kzwi.
"
*$*$-Start: (2)--------------------------------------
ENHANCEMENT 2  ZSD007_SALES_PRICE.    "active version
INCLUDE ZSD007_SALES_PRICE01.
ENDENHANCEMENT.
*$*$-End:   (2)--------------------------------------


endform.                               
*&---------------------------------------------------------------------*
*&      Form  USEREXIT_FIELD_MODIFIC_KOPF
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form userexit_field_modific_kopf.
"
*$*$-Start: (3)-------------------------------------
ENHANCEMENT 3  ZSD007_SALES_PRICE.    "active version
INCLUDE ZSD007_SALES_PRICE01.
ENDENHANCEMENT.
*$*$-End:   (3)--------------------------------------


endform.                               
*&---------------------------------------------------------------------*
*&      Form  USEREXIT_FIELD_MODIFICATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form userexit_field_modification.
"
*$*$-Start: (4)---------------------------------------
ENHANCEMENT 4  ZSD007_SALES_PRICE.    "active version
INCLUDE ZSD007_SALES_PRICE01.
ENDENHANCEMENT.
*$*$-End:   (4)---------------------------------------


endform.                              
"--------------------@斌将军--------------------

ZSD007_SALES_PRICE01

bf297cbdd2cff2473f71f0b185d28dae.png

 代码如下

"--------------------@斌将军--------------------
IF screen-name = 'FCODE'.
    CLEAR:old_komk.
    auth_subrc = 4.
  ENDIF.


  IF screen-name = 'RV61A-SELKZ'
      OR screen-name = 'KOMV-KAWRT'
      OR screen-name = 'RV61A-AWEIN'
      OR screen-name = 'KOMV-KBETR'
      OR screen-name = 'RV61A-KOEIN'
      OR screen-name = 'KOMV-KPEIN'
      OR screen-name = 'KOMV-KMEIN'
      OR screen-name = 'KOMV-KWERT'
      OR screen-name = 'KOMV-KUMZA'
      OR screen-name = 'RV61A-MEINS'
      OR screen-name = 'KOMV-KUMNE'
*      OR screen-name = 'KOMP-NETWR' "净值
*      OR screen-name = 'KOMK-WAERK' "货币
*      OR screen-name = 'KOMP-MWSBP' "税收
      OR screen-name = 'RV61A-KMEI1'.
"增强开关
    CALL FUNCTION 'ZXX01_USER_EXITS'
      EXPORTING
        i_encode = 'SD007'
      EXCEPTIONS
        close    = 1
        OTHERS   = 2.
    IF sy-subrc = 0.
      IF komk-kalsm NE old_komk-kalsm 
      OR komv-stunr NE old_komv-stunr.


        AUTHORITY-CHECK OBJECT 'Z_KONH_KLS'
         ID 'ZKALSM' FIELD komk-kalsm
         ID 'ZSTUNR' FIELD komv-stunr
         ID 'ACTVT' DUMMY.


        auth_subrc = sy-subrc.


        old_komk = komk.
        old_komv = komv.
      ENDIF.


      IF auth_subrc <> 0.
        screen-active = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDIF.
  ENDIF.
"--------------------@斌将军--------------------

效果如下

这种方法做完之后,在页签跳转之后,再回到条件页签,此处的价格就又会出现,所以需要再写下边的增强

330a1bb18a9149f121e013bb9bc70b31.png

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

"--------------------@斌将军--------------------
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.


......




"""""""""""""""""""""""""""""""""""""""""""""""""""""""
*$*$-Start: (1)----------------------------------------
ENHANCEMENT 6  ZSD007_SALES_PRICE.    "active version
"增强开关
CALL FUNCTION 'ZXX01_USER_EXITS'
  EXPORTING
    i_encode = 'SD007'
  EXCEPTIONS
    close    = 1
    OTHERS   = 2.
IF sy-subrc = 0.
  LOOP AT SCREEN.
    IF screen-name = 'KOMP-NETWR' "净值
          OR screen-name = 'KOMK-WAERK' "货币
          OR screen-name = 'KOMP-MWSBP'. "税收.
      AUTHORITY-CHECK OBJECT 'Z_KONH_KLS'
       ID 'ZKALSM' FIELD komk-kalsm
       ID 'ZSTUNR' DUMMY
       ID 'ACTVT' DUMMY.
      IF sy-subrc <> 0.
        screen-active = 0.
        MODIFY SCREEN.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDIF.
ENDENHANCEMENT.
ENDFORM.                    "tctrl_konditionen_init
"--------------------@斌将军--------------------

到此,通过定价和步骤隐藏部分价格的增强就实现了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值