在做项目的时候发现,别人创建的include 或者修改的include ,并且勾选了程序属性的 EDIT LOCK(INCLUDE 程序默认勾选)。如果使用费最后修改用户的用户修改,系统则会有如下提示:
变更到XXXXXXXXX被禁止
1. 经过一段时间的煎熬,调试发下 这个提示是在LS38EF00 这个include的 FORM AUTHORITIES_AND_CORR下面代码提示的:
CASE SUBRC.
WHEN 0.
WHEN 1.
DISPLAY_ONLY = 'Z'. "Abbruch-Kennzeichen
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
WHEN 7. "keine Anzeigeberechtigung
DISPLAY_ONLY = 'Z'. "Abbruch-Kennzeichen
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
WHEN 12.
DISPLAY_ONLY = TRUE.
* 膎derung (18.05.94 Hupbach): Nachricht doch ausgeben, weil die
* Nachricht TK122 vom Korrekturwesen nicht ausgegeben wird
* MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
WHEN OTHERS.
DISPLAY_ONLY = TRUE.
IF SY-SUBRC NE 12.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDCASE.
如果你有debug修改权限,在IF SY-SUBRC NE 12. 设置断点 将 DISPLAY_ONLY(设置仅显示不活动) 设置为‘ ’ 将SY-SUBRC 设置为 0(不提示此信息)。
2.
在类 CL_WB_PGEDITOR 中的 CHANGE_MODE 方法的代码:
IF L_MODE = SWBM_C_OP_DISPLAY.
NEW_MODE = 'SHOW'.
IF MODE-DISPLAYMOD NE SPACE.
EXIT.
ENDIF.
ELSEIF L_MODE = SWBM_C_OP_END.
EXIT.
ELSE.
IF MODE-DISPLAYMOD = SPACE.
EXIT.
ENDIF.
NEW_MODE = 'EDIT'.
ENDIF.
在 IF L_MODE = SWBM_C_OP_DISPLAY处设置断点,将L_MODE的值改为:EDIT,也可以编辑 (没有取下提示,由于提示为‘S’类型 顾不影响)