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

点击蓝字 关注我们

前言

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

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

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

详见链接

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

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

SAPMSYST语法错误

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

853b3cca8763250c11895b98b5647b26.png

f7506d80615b0725e07336ac04786305.png

方式一 拯救

针对 无意删除了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

99f34acb8576a76aa3353617d84f29f4.png

01

正常系统导出程序

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

打开表 REPOSRC的编辑器

27d4c7b940b2a822dd9f78704bb58aca.png

点击下图的导出按钮

efc3b728615583420cb46835e68f5e15.png

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

ee8e618a7f28443c10bdfd5c46e40a62.png

执行SQL 创建新的Z表

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

把新表导出

923294e37224a7e9f568e6ebc04ebe0f.png

02

代码导入到目标系统

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

ab02408d72fccae426f58bcd16590a19.png

6b2ed375685b80b0efaf139d4b61ee64.png

8cae9a2c1812a52e03cc88d52825d954.png

a1232e07e455532a924308297b5ed283.png

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

8ac1b704817e270b25801f38b14584f6.png

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

约定

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

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

768e2fac1449eccf281b1ffc629df11b.png

公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值