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'. 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'. 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表中抬头和行项目的净值字段,就可以隐藏价格
定期更文,欢迎关注
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏