SAP的一些代码是隐藏的,SE38不能打开,比如程序 SAPMSYST(整合了SAP的登录处理逻辑)。SE38打开时,提示“受SAP保护”,
跟踪SE38的过程发现, REPORT SOURCE 语句无法获取这个程序的内容. 估计SAP在底层通过特殊方式屏蔽了这个程序代码的读取.
解决办法.如下:
- 创建一个程序 ZSAPMSYST
- 通过DB02 的SQL语句把SAPMSYST的代码写入到 ZSAPMSYST .
- UPDATE REPOSRC SET DATA = ( SELECT DATA FROM REPOSRC WHERE PROGNAME = ‘SAPMSYST’ )WHERE PROGNAME = ‘ZSAPMSYST’
这样用SE38 查看ZSAPMSYST 代码就可以看到标准程序SAPMSYST的代码了.
这个技巧也可以解决一些因为SAPMSYST代码丢失(可以是因为使用了 READ REPORT ‘SAPMSYST’ INTO INT_TAB.INSERT REPORT ‘SAPMSYST’ FROM INT_TAB.之类的语句,因为之前的READ REPORT 语句读取不到这个程序的内容, 所以导致写入了一个空代码到SAPMSYST中.) 这样导致的后果是整个系统无法登陆了.
此时可以登录HANA数据库, 用SQL语句把另外一个SAP系统的SAPMSYST代码内容 REPOSRC-DATA 写入到无法登录的SAP系统. 从而解决这个问题.
最后慎重提示一下: SAPMSYST是系统很核心的程序,所以SAP要隐藏该代码,避免用户编辑. 大家可以通过这个技巧查看它的内容. 理解一些SAP的标准登录逻辑. 但一定不要尝试修改它. 因为你可能面对无法登录系统的风险.
本文摘录入公众号:syjf1976_abap