首页 > 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),

6.关于FIORI登陆的思考

  • FIORI登陆可以在SICF中配置自定登陆的一些信息,并配置使用自定类登陆,类:/UI2/CL_FIORI3_LOGIN,可以网上找到相关的信息
  • 当FIORI登陆后,刷新数据时,第一步调用类/IWFND/CL_SODATA_HTTP_HANDLER,方法:IF_HTTP_EXTENSION~HANDLE_REQUEST,当执行263行mo_rest_handler->if_http_extension~handle_request( server ).后变量lo_transaction_handler,的-MT_ALL_REQUEST_PARAMS[7]-NAME = referer时,值 会是完整的URL,其中可能包含传的参数(如:https://*****:1443/sap/bc/ui5_ui5/sap/zconsign_sale/index.html?sap-client=130&sap-language=ZH&code=AAAAAAAAAAAAAAAAA)
  • 考虑前一步方法结束时,判断referer的值 如参数中包含code参数,则连接微信公从号判断 此code,是否有效,有效时并使用 GRC EAM应急账号登陆(事务码:/N/GRCPI/GRIA_EAM)
  • 登陆参数/grcpi/gria_cl_remote_login=>remote_login,里面有创建SM59连接,修改,删除连接功能,还有打开连接的功能。但这个感觉是在GUI中新开一个窗口用新账号登陆,不知这能不能在当前窗口把登陆账号换成新账号登陆,有待验证
  • 或者是在这里验证CODE,并记录微信相关系统到自定义,并在后面的取数,或者更新数据时使用远程RFC(先判断是微信URL并有效)的方式操作数据,
最后编辑:
作者:yangsen
本站为个人博客网站,全由我个人维护,我从事SAP开发13年,其它ERP开发7年,基本都是零售行业。本站记录工作学习的过程, 有SAP相关询问专、兼职工作可随时联系我。 有网站相关的问题可直接在文章下方留言,或者联系我。 邮件:yan252@163.com给我。 QQ:415402519

留下一个回复

你的email不会被公开。