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


    1、业务需求

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

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

    限制的步骤

    2、增强实现

    2.1权限对象

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

    分配权限给需要隐藏价格的用户

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

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

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

    1. "--------------------@斌将军--------------------
    2. FORM userexit_field_modification.
    3. * CASE SCREEN-GROUP3.
    4. * WHEN '900'.
    5. * IF VBAK-VBTYP NE IF_SD_DOC_CATEGORY=>INQUIRY.
    6. * SCREEN-ACTIVE = 0.
    7. * ENDIF.
    8. * ENDCASE.
    9. * CASE SCREEN-NAME.
    10. * WHEN 'VBAK-VBELN'.
    11. * SCREEN-ACTIVE = 0.
    12. * ENDCASE.
    13. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1)
    14. *$*$-Start: (1)---------------------------------------------------------------------------------$*$*
    15. ENHANCEMENT 1 ZSD007_VA01_PRICE. "active version
    16. CALL FUNCTION 'ZXX01_USER_EXITS'
    17. EXPORTING
    18. i_encode = 'SD007'
    19. EXCEPTIONS
    20. close = 1
    21. OTHERS = 2.
    22. IF sy-subrc = 0.
    23. IF screen-name = 'KOMV-KBETR'
    24. OR screen-name = 'VBAK-NETWR'"抬头 净值
    25. OR screen-name = 'VBAK-WAERK'"抬头 货币
    26. OR screen-name = 'VBAP-NETPR'"项目 净价
    27. OR screen-name = 'VBAP-NETWR'."项目 净值
    28. AUTHORITY-CHECK OBJECT 'Z_KONH_KLS'
    29. ID 'ZKALSM' FIELD vbak-kalsm
    30. ID 'ZSTUNR' DUMMY
    31. ID 'ACTVT' DUMMY.
    32. IF sy-subrc = 0.
    33. screen-active = 0.
    34. MODIFY SCREEN.
    35. ENDIF.
    36. ENDIF.
    37. ENDIF.
    38. ENDENHANCEMENT.
    39. *$*$-End: (1)---------------------------------------------------------------------------------$*$*
    40. ENDFORM.
    41. "--------------------@斌将军--------------------

    效果如下

    2.3、隐藏条件页签价格

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

    在程序中定义变量

    在出口处引用自定义代码

    1. "--------------------@斌将军--------------------
    2. *&---------------------------------------------------------------------*
    3. *& Form USEREXIT_FIELD_MODIFIC_LEER
    4. *&---------------------------------------------------------------------*
    5. * text
    6. *----------------------------------------------------------------------*
    7. * --> p1 text
    8. * <-- p2 text
    9. *----------------------------------------------------------------------*
    10. form userexit_field_modific_leer.
    11. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1)
    12. *$*$-Start: (1)---------------------------------------------------------------------------------$*$*
    13. ENHANCEMENT 1 ZSD007_SALES_PRICE. "active version
    14. INCLUDE ZSD007_SALES_PRICE01.
    15. ENDENHANCEMENT.
    16. *$*$-End: (1)---------------------------------------------------------------------------------$*$*
    17. endform. " USEREXIT_FIELD_MODIFIC_LEER
    18. *&---------------------------------------------------------------------*
    19. *& Form USEREXIT_FIELD_MODIFIC_KZWI
    20. *&---------------------------------------------------------------------*
    21. * text
    22. *----------------------------------------------------------------------*
    23. * --> p1 text
    24. * <-- p2 text
    25. *----------------------------------------------------------------------*
    26. form userexit_field_modific_kzwi.
    27. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(2)
    28. *$*$-Start: (2)---------------------------------------------------------------------------------$*$*
    29. ENHANCEMENT 2 ZSD007_SALES_PRICE. "active version
    30. INCLUDE ZSD007_SALES_PRICE01.
    31. ENDENHANCEMENT.
    32. *$*$-End: (2)---------------------------------------------------------------------------------$*$*
    33. endform. " USEREXIT_FIELD_MODIFIC_KZWI
    34. *&---------------------------------------------------------------------*
    35. *& Form USEREXIT_FIELD_MODIFIC_KOPF
    36. *&---------------------------------------------------------------------*
    37. * text
    38. *----------------------------------------------------------------------*
    39. * --> p1 text
    40. * <-- p2 text
    41. *----------------------------------------------------------------------*
    42. form userexit_field_modific_kopf.
    43. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(3)
    44. *$*$-Start: (3)---------------------------------------------------------------------------------$*$*
    45. ENHANCEMENT 3 ZSD007_SALES_PRICE. "active version
    46. INCLUDE ZSD007_SALES_PRICE01.
    47. ENDENHANCEMENT.
    48. *$*$-End: (3)---------------------------------------------------------------------------------$*$*
    49. endform. " USEREXIT_FIELD_MODIFIC_KOPF
    50. *&---------------------------------------------------------------------*
    51. *& Form USEREXIT_FIELD_MODIFICATION
    52. *&---------------------------------------------------------------------*
    53. * text
    54. *----------------------------------------------------------------------*
    55. * --> p1 text
    56. * <-- p2 text
    57. *----------------------------------------------------------------------*
    58. form userexit_field_modification.
    59. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(4)
    60. *$*$-Start: (4)---------------------------------------------------------------------------------$*$*
    61. ENHANCEMENT 4 ZSD007_SALES_PRICE. "active version
    62. INCLUDE ZSD007_SALES_PRICE01.
    63. ENDENHANCEMENT.
    64. *$*$-End: (4)---------------------------------------------------------------------------------$*$*
    65. endform. " USEREXIT_FIELD_MODIFICATION
    66. "--------------------@斌将军--------------------

    ZSD007_SALES_PRICE01

     代码如下

    1. "--------------------@斌将军--------------------
    2. IF screen-name = 'FCODE'.
    3. CLEAR:old_komk.
    4. auth_subrc = 4.
    5. ENDIF.
    6. IF screen-name = 'RV61A-SELKZ'
    7. OR screen-name = 'KOMV-KAWRT'
    8. OR screen-name = 'RV61A-AWEIN'
    9. OR screen-name = 'KOMV-KBETR'
    10. OR screen-name = 'RV61A-KOEIN'
    11. OR screen-name = 'KOMV-KPEIN'
    12. OR screen-name = 'KOMV-KMEIN'
    13. OR screen-name = 'KOMV-KWERT'
    14. OR screen-name = 'KOMV-KUMZA'
    15. OR screen-name = 'RV61A-MEINS'
    16. OR screen-name = 'KOMV-KUMNE'
    17. * OR screen-name = 'KOMP-NETWR' "净值
    18. * OR screen-name = 'KOMK-WAERK' "货币
    19. * OR screen-name = 'KOMP-MWSBP' "税收
    20. OR screen-name = 'RV61A-KMEI1'.
    21. "增强开关
    22. CALL FUNCTION 'ZXX01_USER_EXITS'
    23. EXPORTING
    24. i_encode = 'SD007'
    25. EXCEPTIONS
    26. close = 1
    27. OTHERS = 2.
    28. IF sy-subrc = 0.
    29. IF komk-kalsm NE old_komk-kalsm OR komv-stunr NE old_komv-stunr.
    30. AUTHORITY-CHECK OBJECT 'Z_KONH_KLS'
    31. ID 'ZKALSM' FIELD komk-kalsm
    32. ID 'ZSTUNR' FIELD komv-stunr
    33. ID 'ACTVT' DUMMY.
    34. auth_subrc = sy-subrc.
    35. old_komk = komk.
    36. old_komv = komv.
    37. ENDIF.
    38. IF auth_subrc = 0.
    39. screen-active = 0.
    40. MODIFY SCREEN.
    41. ENDIF.
    42. ENDIF.
    43. ENDIF.
    44. "--------------------@斌将军--------------------

    效果如下

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

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

    1. "--------------------@斌将军--------------------
    2. FORM tctrl_konditionen_init.
    3. DATA: da_tfill LIKE sy-tabix.
    4. * Refresh table control if screen number has changed
    5. STATICS: last_dynnr TYPE dynnr.
    6. IF sy-dynnr NE last_dynnr AND gf_called_by_lord IS INITIAL.
    7. last_dynnr = sy-dynnr.
    8. REFRESH CONTROL 'tctrl_konditionen' FROM SCREEN sy-dynnr.
    9. ENDIF.
    10. DESCRIBE TABLE xkomv LINES da_tfill.
    11. ......
    12. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1)
    13. *$*$-Start: (1)---------------------------------------------------------------------------------$*$*
    14. ENHANCEMENT 6 ZSD007_SALES_PRICE. "active version
    15. "增强开关
    16. CALL FUNCTION 'ZXX01_USER_EXITS'
    17. EXPORTING
    18. i_encode = 'SD007'
    19. EXCEPTIONS
    20. close = 1
    21. OTHERS = 2.
    22. IF sy-subrc = 0.
    23. LOOP AT SCREEN.
    24. IF screen-name = 'KOMP-NETWR' "净值
    25. OR screen-name = 'KOMK-WAERK' "货币
    26. OR screen-name = 'KOMP-MWSBP'. "税收.
    27. AUTHORITY-CHECK OBJECT 'Z_KONH_KLS'
    28. ID 'ZKALSM' FIELD komk-kalsm
    29. ID 'ZSTUNR' DUMMY
    30. ID 'ACTVT' DUMMY.
    31. IF sy-subrc = 0.
    32. screen-active = 0.
    33. MODIFY SCREEN.
    34. ENDIF.
    35. ENDIF.
    36. ENDLOOP.
    37. ENDIF.
    38. ENDENHANCEMENT.
    39. *$*$-End: (1)---------------------------------------------------------------------------------$*$*
    40. ENDFORM. "tctrl_konditionen_init
    41. "--------------------@斌将军--------------------

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

    定期更文,欢迎关注

  • 相关阅读:
    06-vue-routers.js的基本使用,路由从定向,router-link代替a标签及样式,路由嵌套,路由动画
    Oracle/PLSQL: Avg Function
    【深度学习】yolov5 tag7.0 实例分割 从0到1的体会
    (免费领源码)php#Thinkphp#MYSQL校园二手交易app 99211-计算机毕业设计项目选题推荐
    【ECMAScript6】代理与反射
    centos开机自检及开机自启服务-Dash.shell及Systemd方法
    2024年04月在线IDE流行度最新排名
    分布式缓存
    【如何使用Medooze 实现多方视频会议】
    JavaWeb开发之——MySQL数据库软件(03)
  • 原文地址:https://blog.csdn.net/BinGeneral/article/details/133925809