问题描述:

在使用F-53进行供应商付款清账操作时,模拟凭证(包括保存凭证)时出现如下的ABAP Down错误:

问题分析:

从报错内容看,我们首先看到报错的程序为SAPMF05A,这个程序财务顾问都熟悉,是财务模块的主程序,大部分的财务过账(如F-02)操作都是调用的这个程序。

另外,就是报错的原因是因为index小于等于0了,这对于数据库来说是不允许的,因为index只能大于0。

关于SAPMF05A这个程序,我们可以使用SE80查看开发对象,截图如下:

在这里我们也能看到这个程序会被哪些使用代码用到,如下图:

反过来,我们也可以通过SE93或者执行事务代码时来查看对应的程序,比如SE93查看F-02所对应的程序:

下图则是通过执行事务代码F-02,对任意一个字段按F1按钮,再点击“技术信息”按钮,从而查看事务代码所使用的程序。

接下来,我们通过ST22再进行分析,转到具体的程序代码,如下图操作:

这里看到了具体的程序行和程序名。

在这里相应的位置打断点,并继续操作F-53进行debug时,发现是因为内表kontab的索引index变为0导致的错误,而index的值来源于变量i,而变量i则是由ld_tabix-1得到的,ld_tabix来源于系统的索引值sy-tabix。

我们再找sy-tabix为何变为1,这个时候的思路是找一个没有报错的系统对比进行debug,比较在不同的系统里内表kontab的数据是否有不一致的地方。

第一个图是没有发生错误的系统内表kontab的值,第二个图则是有错误的系统内表kontab的值,再debug发现,对于无错误的系统,在对内表kontab执行loop循环时,因为kontab-shkzg(借贷方)为H,就直接结束了第一次循环,第二次循环时,sy-tabix(系统索引)已经变为了2,再减1变为了1,就不会出现索引为0的情况了。

那接下来就是看kontab的数据来源于哪里了,为什么到了这里字段kontab-shkzg为空了。

通过在主程序中搜索。

我们发现内表kontab是由postab赋值的,如下图:

通过上图发现,有一个增强(S4H900878是增强产生的请求号)把字段shkzg的赋值代码给注释掉了。这样终于找到了最终的原因。

然后通过SE01查看请求号S4H900878,发现是在今年2月5号做的一个增强。

总结:最近发现年纪大了,反而更想钻研技术了,说到底,程序还是一堆堆代码组成的,如果我们想用系统解决业务问题,对代码以及底层程序逻辑的理解是不可或缺的,不过这个时候查找程序的速度快了很多,这个过程和刚开始接触系统的时候去看程序有所不同,此时看系统代码会结合业务,更多的去研究系统的设计思路。毕竟不是专业的开发人员,这个过程写出来大家看到没多少时间,实际花费了2个多小时才搞定。标准程序还是尽量少写增强吧,一个是影响面太广,一旦出问题,就是比较大的问题,另外是出现问题也不好排查,基本就是靠debug(或者有比较完备的文档)去发现,然后去调整。

发生系统错误53_SAP那些事-推理剧-36-奇怪的付款清账(F-53)报错“TABLE_INVALID_INDEX”...相关推荐

  1. mysql安装常见问题(系统找不到指定的文件、发生系统错误 1067 进程意外终止)

    在安装mysql时总是会遇到这样那样的问题,每次重新安装都会花很多时间来排查.在网上其实有很多相关的文章,但很多都只讲了方法,但没讲具体细节问题,导致无法解决问题.其实有时候知道问题的原因,但总是因为 ...

  2. 解决:服务正在启动 . RabbitMQ 服务无法启动。 系统出错。 发生系统错误 1067。 进程意外终止。

    问题描述 服务正在启动 . .RabbitMQ 服务无法启动. 系统出错. 发生系统错误 1067.进程意外终止. 解决方法 运行 RabbitMQ Service -(re)install 重新安装 ...

  3. 发生系统错误 5 拒绝访问

    2019独角兽企业重金招聘Python工程师标准>>> 问题:使用命令net start *开启一个服务的时候,出现发生系统错误5,拒绝访问. 解决:以管理员身份运行命令即可 转载于 ...

  4. net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法

    net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法 参考文章: (1)net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法 (2) ...

  5. win10解决Mysql net start mysql启动,提示发生系统错误 5 拒绝访问

    出现这样的问题主要是是因为当前用户的操作权限太低了,出了问题 出错问题截屏如下: 解决问题方法如下: 在dos下运行net start mysql 不能启动mysql!提示发生系统错误 5:拒绝访问! ...

  6. cmd中net start mysql发生系统错误5

    问题描述 发生系统错误5 问题分析 由于用户权限太低,需要使用管理员权限进入cmd,启动成功 管理员权限进入cmd可以使用 1.搜索框搜索cmd 2.按住Ctrl+Shift+Enter进入管理员模式

  7. webstorm里stylus代码报错_发生甚莫事了?我的程序为啥又报错了!

    点击上方Python知识圈,设为星标 回复100获取100题PDF 阅读文本大概需要 6 分钟 近期精彩文章:Python100例(附PDF下载地址) 作者:pk哥 原创公众号:Python知识圈 刚 ...

  8. mysql5.7 启动报发生系统错误2

    1. http://dev.mysql.com/downloads/mysql/        下载mysql5.7   zip包 2. 下载好后解压文件,解压的内容如图,您可以把内容解压到想要的位置 ...

  9. net start mysql 发生系统错误 5。 拒绝访问。

    昨天在Windows 安装的mysql-5.7.19 后,今天想重启一下系统,所以想先关闭mysql在重启主机 结果在cmd里面关闭的时候报这个错 >net start mysql 发生系统错误 ...

最新文章

  1. 解决Android 编译出错 找不到android.databinding.ViewDataBinding的类文件
  2. Spring Cloud Alibaba - 18 Nacos Config配置中心加载相同微服务的不同环境下的通用配置
  3. JAVA 常用对话框
  4. html指定ie内核,指定Webbrowser控件所用IE内核版本
  5. 你当真了解count(*)count(id)count(1)吗?
  6. pandas之表格样式
  7. Spring Cloud 配置中心客户端读取配置
  8. 怎样看win10是不是永久激活的?
  9. 微言Netty:分布式服务框架
  10. java.lang.UnsupportedOperationException WebView is not allowed in privileged processes
  11. 转载的发现对自己非常有用,来分享给大家
  12. 计算机技术对股市的影响,cpi上涨对股市影响有哪些?CPI如何影响股市涨跌
  13. Window7使用虚拟桌面
  14. 香槟分校计算机研究生专业,伊利诺伊大学香槟分校计算机科学专业各大方向介绍...
  15. 如何在visio中画立体图形
  16. 物流管理扫码器识别不了条码怎么办
  17. 花了10分钟,终于弄懂了特征值和特征向量到底有什么意义
  18. 区块链运作机制_什么是区块链及其运作方式?
  19. tools:ignore=“MissingConstraints“属性
  20. 数据结构头歌实验梳理

热门文章

  1. 查看linux的用户
  2. NSTimer 与 Run loop Modes
  3. Docker中安装Jenkins实时发布.net core 项目(二)
  4. linux ftp配置chroot,vsftp chroot 设置
  5. mysql触发器不起作用 navicat的bug?
  6. PostgreSQL创建数据库报错
  7. Bootstrap FileInput(文件上传)中文API整理
  8. 18-Flutter移动电商实战-首页_火爆专区商品接口制作
  9. Android 实现选中与非选中样式效果
  10. Oracle数据导入要多久,oracle数据库备份导入要注意的几个问题