问题:

dev上,程序SAPLSKEY下子程序LSKEYF00被修改(此为开发的ACCESS KEY 程序).笔者是通过一个自写的开发程序进行修改,此开发程序也不存在(程序见下列代码),导致现在在dev上,用se38所有的程序都不能正常修改,通过SE95也无法还原回去,程序LSKEYF00也恢复不回去,在程序LSKEYF00 92行中多出了这一行(如图)。


如果LSKEYF00出了问题,那么这个程序是不能做修改的,正常情况下要改系统程序会要OBJECT ACCESS KEY的。但是该程序出问题后不会再提示这样的信息的。

 

第一步、我们要强行修改这个程序,那就要把这个程序设为可以修改的状态。

进入 类对象 程序(如定义ALV类)CL_WB_PGEDITOR 找到 CHANGE_MODE 对象,进入该程序,

(在程序 CL_WB_PGEDITOR================CM00H 中设断点

 

这里的L_MODE值是DISPLAY,把它改为EDIT。这样这个程序不用OBJECT ACCESS KEY的情况下可以做修改。 

改后要激活就出出错。

 进入 SE37,进函数 TRINT_OBJECTS_CHECK_AND_INSERT

(在下面的FUNCTION程序TRINT_OBJECTS_CHECK_AND_INSERT里这个断点:

 

正常情况下,LS_S-CHECK_LICENSES_X的值都是X,这样它们就会等式成立,然后会执行下面的CHECK_ACCESS_KEYS程序。把它们两个中的任何一个值改一下,使它们的值不相等,那么就可以跳过CHECK_ACCESS_KEYS.重复改三次就可以激活这个程序,一切问题都OK了。