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

作者:ABAP技巧与实战 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Basis, Data Engineering, SD, 开发, 数据工程, 系统管理, 销售分销
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

**点击蓝字** 关注我们

前言

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

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

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

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

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486886&idx=1&sn=e96b3c6c4c51666c1b67e158c48ccbb5&chksm=cf5dd090f82a5986be6ed87aede703ee5c901c8cdce384ec141a98ae4d3cebd33626fa6ce5d3&token=2142941217&lang=zh_CN#rd)

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

SAPMSYST语法错误

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

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

方式一 拯救

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

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

_**01** _

**正常系统导出程序**

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

打开表 REPOSRC的编辑器

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

点击下图的导出按钮

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

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

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

执行SQL 创建新的Z表

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

'SAPMSYST'

把新表导出

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

_**02** _

**代码导入到目标系统**

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

则无需使用SYSTEM账号)

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

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

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

_**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 **

**约定**

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

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

拯救 SAP 系统系列恢复系统登录 - 封面图
拯救 SAP 系统系列恢复系统登录 - 封面图

**公众号 : syjf1976_abap**

**ABAP开发技巧**

**微信号 : 392077**

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

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

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「拯救SAP系统系列恢复系统登录.md」整理生成,仅用于内部技术分享与学习交流。