首页 > SAP > ABAP > ABAP历险记
2023
03-21

ABAP历险记

1.本文操作有很大风险,请把文章看完整再进行测试操作

2.背景

这几天在研究FIORI的登陆问题,想从微信公从号打开FIORI APP,然后用公众号的安全验证来验证SAP用户的有效性,比如 SICF设置FIORI APP默认用A账号(低权限,读取数据都不行),从公众号中打开此APP地址,在ABAP中通过公从号传来的验证code连接公众号验证有效,并得到用户微信信息(微信号,手机号等),此时可通过这些信息来做处理,比如登陆紧急用户访问(/GRCPI/GRIA_EAM)来切换更大权限的不同的账号来实际操作,

总体来说就是研究SAP的登陆逻辑,结果在网络上找到一文章说,登陆逻辑在程序SAPMSYST中,而我用SE38打开此程序查看时,报“受保护”,不能打开,而我也没细看文章的后文,刚好我自己有一个可以随意查看程序的程序(Z_EDIT代码后附),结果悲剧了,Z_EDIT打开SAPMSYST,原来想着只要不保存,也不会有问题,但Z_EDIT没有考虑到受保护的情况,SAPMSYST被清空了,SAP GUI无法登录,ST22产生大量DUMP,情况紧急。

ABAP历险记 - 第1张  | 优通SAP

3.修改程序的程序Z_EDIT

我只用此程序查看了一下SAPMSYST,没有保存,但系统 就登陆不上了。吓得我心跳100下,在网上各种找资料,才找到的解决办法,

4.解决办法

我出问题的系统 是DEV,所以前三步是在QAS上执行,最后一步是在DEV上执行

  • 1.创建一个空程序 ZSAPMSYST
  • 2.通过DB02 的SQL语句把SAPMSYST的代码写入到 ZSAPMSYST .
  • UPDATE REPOSRC SET DATA = ( SELECT DATA FROM REPOSRC WHERE PROGNAME = ‘SAPMSYST’ ) WHERE PROGNAME = ‘ZSAPMSYST’
  • 3.用SE38 查看ZSAPMSYST 代码就可以看到标准程序SAPMSYST的代码了.
  • 4.把ZSAPMSYST的代码复制到Z_EDIT中,覆盖回去。

不幸中的万幸是,我出问题后没有退出DEV,第四步,我还能在DEV中执行,如果 我退出了DEV,那第四步,我要如何 在DEV中执行呢?

5.SAPMSYST程序的代码

顺便也把我从QAS上获取的SAPMSYST程序的代码放一下,我的SAP版本是SAP S/4HANA 2020(SAPK-75502INSAPBASIS),