1、业务需求
针对用户使用销售订单时,根据定价和步骤顺序,判断是否有权限,没有权限时隐藏销售订单抬头和行项目的部分价格数据
要限制的定价和步骤在spro中的位置
限制的步骤
2、增强实现
2.1权限对象
创建带有定价和步骤的权限对象
分配权限
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 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. "--------------------@斌将军--------------------
效果如下
2.3、隐藏条件页签价格
还需要隐藏抬头和行项目的条件页签中的价格数据
在程序中定义变量
在出口处引用自定义代码
"--------------------@斌将军-------------------- *&---------------------------------------------------------------------* *& Form USEREXIT_FIELD_MODIFIC_LEER *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form userexit_field_modific_leer. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) *$*$-Start: (1)---------------------------------------------------------------------------------$*$* ENHANCEMENT 1 ZSD007_SALES_PRICE. "active version INCLUDE ZSD007_SALES_PRICE01. ENDENHANCEMENT. *$*$-End: (1)---------------------------------------------------------------------------------$*$* endform. " USEREXIT_FIELD_MODIFIC_LEER *&---------------------------------------------------------------------* *& Form USEREXIT_FIELD_MODIFIC_KZWI *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form userexit_field_modific_kzwi. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(2) *$*$-Start: (2)---------------------------------------------------------------------------------$*$* ENHANCEMENT 2 ZSD007_SALES_PRICE. "active version INCLUDE ZSD007_SALES_PRICE01. ENDENHANCEMENT. *$*$-End: (2)---------------------------------------------------------------------------------$*$* endform. " USEREXIT_FIELD_MODIFIC_KZWI *&---------------------------------------------------------------------* *& Form USEREXIT_FIELD_MODIFIC_KOPF *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form userexit_field_modific_kopf. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(3) *$*$-Start: (3)---------------------------------------------------------------------------------$*$* ENHANCEMENT 3 ZSD007_SALES_PRICE. "active version INCLUDE ZSD007_SALES_PRICE01. ENDENHANCEMENT. *$*$-End: (3)---------------------------------------------------------------------------------$*$* endform. " USEREXIT_FIELD_MODIFIC_KOPF *&---------------------------------------------------------------------* *& Form USEREXIT_FIELD_MODIFICATION *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form userexit_field_modification. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(4) *$*$-Start: (4)---------------------------------------------------------------------------------$*$* ENHANCEMENT 4 ZSD007_SALES_PRICE. "active version INCLUDE ZSD007_SALES_PRICE01. ENDENHANCEMENT. *$*$-End: (4)---------------------------------------------------------------------------------$*$* endform. " USEREXIT_FIELD_MODIFICATION "--------------------@斌将军--------------------
ZSD007_SALES_PRICE01
代码如下
"--------------------@斌将军-------------------- 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. "--------------------@斌将军--------------------
效果如下
这种方法做完之后,在页签跳转之后,再回到条件页签,此处的价格就又会出现,所以需要再写下边的增强
在程序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. ...... """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) *$*$-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. *$*$-End: (1)---------------------------------------------------------------------------------$*$* ENDFORM. "tctrl_konditionen_init "--------------------@斌将军--------------------
到此通过定价和步骤隐藏部分价格的增强就实现了
TRANSLATE with x English TRANSLATE with COPY THE URL BELOW Back EMBED THE SNIPPET BELOW IN YOUR SITE Enable collaborative features and customize widget: Bing Webmaster Portal Back 此页面的语言为英语 翻译为中文(简体)
- 中文(简体)
- 中文(繁体)
- 丹麦语
- 乌克兰语
- 乌尔都语
- 亚美尼亚语
- 俄语
- 保加利亚语
- 克罗地亚语
- 冰岛语
- 加泰罗尼亚语
- 匈牙利语
- 卡纳达语
- 印地语
- 印尼语
- 古吉拉特语
- 哈萨克语
- 土耳其语
- 威尔士语
- 孟加拉语
- 尼泊尔语
- 布尔语(南非荷兰语)
- 希伯来语
- 希腊语
- 库尔德语
- 德语
- 意大利语
- 拉脱维亚语
- 挪威语
- 捷克语
- 斯洛伐克语
- 斯洛文尼亚语
- 旁遮普语
- 日语
- 普什图语
- 毛利语
- 法语
- 波兰语
- 波斯语
- 泰卢固语
- 泰米尔语
- 泰语
- 海地克里奥尔语
- 爱沙尼亚语
- 瑞典语
- 立陶宛语
- 缅甸语
- 罗马尼亚语
- 老挝语
- 芬兰语
- 英语
- 荷兰语
- 萨摩亚语
- 葡萄牙语
- 西班牙语
- 越南语
- 阿塞拜疆语
- 阿姆哈拉语
- 阿尔巴尼亚语
- 阿拉伯语
- 韩语
- 马尔加什语
- 马拉地语
- 马拉雅拉姆语
- 马来语
- 马耳他语
- 高棉语