拯救SAP系统系列 恢复系统登录

2021-10-28 22:40发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

点击蓝字 关注我们

前言

拯救SAP系统系列是对应与搞死SAP系统系列. (感觉就像是杀毒软件公司,先放出病毒,再搞个专杀工具).

在搞死SAP系统系列出来后, 立马就有人中招. 看来干坏事远比做好事对人的诱惑要更大一些.

本文是用于解决 搞死SAP系统系列 让系统无法登录

详见链接
无峰,公众号:ABAP 技巧与实战搞死SAP系统系列 让系统无法登录

本文中提到的"方式"来自上述链接. 请参照阅读


SAPMSYST语法错误

前文中提到方式四/方式五 导致系统无法登录. 表现形式是双击登录图标时. 系统就会报错SHORT DUMP (感谢勇敢的读者提供截图)


方式一 拯救

针对 无意删除了T000表内容

使用事务代码SCC4新增被删除的集团 (注意不能通过SE11/SE16N添加记录. 因为集团字段的特殊性. 这些工具添加的记录都是当前登录集团的).


方式二/方式三 拯救

针对 增强中的报错和语法错误. 

这个报错出现时,可能有两种情况. 已经登录系统和尚未登陆系统.

  • 已经登录系统. 此时新的登录已经无法进入了. 因为之前登录成功过. 可以找到增强程序 ZXUSRU01 注释或清空里面的代码,激活即可.

  • 尚未登录系统. 此时已经无法登录SAP系统了. 只能尝试通过数据库客户端登陆数据库系统(比如HANA STUDIO ). 使用语句清空表REPOSRC字段LOAD 

SQL语句如下:

UPDATE REPOSRC SET LOAD = '' WHERE PROGNAME = 'ZXUSRU01'

如果还不能登录, 尝试删除表REPOLOAD 中的记录 SAPMSYST

DELETE FROM REPOLOAD WHERE PROGNAME = 'SAPMSYST'

原理

SPRING

清空源代码 REPOSRC-LOAD . 

清空编译代码 REPOLOAD. 这样系统会重新编译SAPMSYST



方式四/方式五 拯救

针对标准登录程序SAPMSYST语法错误

在下面的例子中. ECC系统在HANA数据库使用的catalog是SAPHE9(出现问题的系统)/SAPHE3(正常系统),一般情况下, ECC系统在底层数据库使用的catalog都是SAPABAP1(依赖有BASIS的安装) , 无需授权操作. 实际处理时请务必注意.

如果SAPMSYST丢失或者存在语法错误. 双击系统图标后会报DUMP .无法登录

此时可以使用如下步骤从其它正常的系统获取SAPMSYST源代码(以下步骤基于HANA数据库, 如果非HANA数据库, 过程类似,具体步骤的处理方法可能有点变化)

系统的激活程序存放在表 REPOSRC 中. 对于存在语法错误的程序. 在ST22中可以看到报错的程序名称  SAPMSYST


01

正常系统导出程序


HANA工作台 登录可以正常系统,使用账号SAPHE3

打开表 REPOSRC的编辑器



点击下图的导出按钮



获得表的创建的SQL语句,修改表名,添加一个Z



执行SQL 创建新的Z表

把有问题的代码复制到新的临时表中  INSERT INTO ZREPOSRC  SELECT * FROM REPOSRC WHERE PROGNAME = 'SAPMSYST'


把新表导出


02

代码导入到目标系统


登陆目标系统(使用SYSTEM账号,出现SAPGUI登录问题的系统),导入表定义及内容. (如果源系统和目标系统的catalog一致, 则无需使用SYSTEM账号)




 


 




对SAPHE9用户授权 SAPHE3的SQL访问权限(如果catalog一致, 无需授权)


03

替换有问题的程序代码


用SAPHE9登陆

执行SQL

UPDATE "SAPHE9"."REPOSRC" SET DATA = ( SELECT DATA FROM "SAPHE3"."ZREPOSRC" WHERE PROGNAME = 'SAPMSYST' )

WHERE PROGNAME = 'SAPMSYST'


上述步骤会把源系统的正确的代码传递到目标系统


总结

方式四/五的拯救也适用于方式二/三 ,目标都是找回正常的代码.

上述解决方案中使用了两个重要的表

  • REPOSRC   存放激活的SAP程序的源代码.

  • REPOLOAD  存放了编译后的代码.

SCN网站中有一篇文章详细讲解了这两个表的用处. 有兴趣的读者可以自行阅读一下下面的链接, 以加深这这两个表作用的理解.

https://wiki.scn.sap.com/wiki/pages/viewpage.action?pageId=464686816

上述方案成立的前提是有一个能够正常登录的系统提供源代码. 如果没有,就比较麻烦了. 

终极方案是让BASIS恢复备份. 只是这样可能会丢失一段时间的工作(视备份周期而定)


THE

END


约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)



公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077


请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论

赞赏支持