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

问题描述:

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

e3957256bd17a035194e462a1f8fd943.png

3b151d7d0305db177601726e6be7be1a.png

问题分析:

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

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

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

28402190cb35cf2b923f45ab1c861535.png

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

4dbeb964c3e9a1319f235752affaadf4.png

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

b1bbeee4c5e98996ed8bf75a82bf3dd3.png

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

4371b446b37f3d48d1e84bd031f60126.png

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

8b301be24c0c74de930714597baf98ac.png

1edc9db69a7465697e8c6ccf938c7c6d.png

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

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

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

283e737f516331f6e5b7c8ae8a2f7464.png

d4c1f1a400a2cc633554dab9ead7e9ad.png

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

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

通过在主程序中搜索。

c92d0e80705fd2ac941a704948ad6f06.png

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

129f3cc08a5ae3e5df8e7c0974e52aaf.png

5aa66a07a714803aaccbdf39ad9556cb.png

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427097.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信公众平台-杂项:小程序导航

ylbtech-微信公众平台-杂项:小程序导航1.返回顶部 1、小程序导航 微导航 http://www.we123.com/xcx/ 91udhttp://www.91ud.com/app/ 微信主页 http://www.weixinzhuye.com/app.html 2、2.返回顶部3.返回顶部4.返回顶部5.返回顶部 6.返回顶部1、公众号导航 微小宝 ht…

jenkins安装环境搭建(3)

1安装环境搭建 yum -y install java安装java环境 2安装git用于存储和管理源代码 yum -y install git 3安装并配置git git config --global user.name “yao666” git config --global user.email 1327629137qq.com ssh-keygen -t rsa -C 1327629137qq.com cd ~/.ssh 证书正确 …

php中冒号是什么,在PHP中:(双冒号)和-(箭头)有什么区别?

当左侧部分是对象实例时,可以使用->..否则,您将使用::.这意味着->主要用于访问实例成员(尽管它也可用于访问静态成员,但不鼓励这种使用),而::通常用于访问静态成员(尽管在一些特殊情况下,它用于访问实例成员)。总…

seo伪原创工具_文章伪原创工具哪个好用(伪原创工具有哪些)

从事网站seo优化的工作基本上每天都会和文章打交道,因为网站的排名与网站的收录关系是非常大的,网站的收录又和文章息息相关,搜索引擎的胃口是比较喜欢新的内容、原创的内容,而对于一些文案功底比较没那么好的SEOer来说&#xff0…

Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析【转】...

Android系统的运行时库层代码是用C来编写的,用C 来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统崩溃。不过系统为我们提供了智能指针,避免出现上述问题,本文将系统地分析…

Jenkins安装(Maven安装)(4)

Maven安装 //进入一个目录 cd /usr/local //创建一个文件夹 mkdir maven //下载maven的tar包 wget https://mirrors.cnnic.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz //解压tar包 tar -xf apache-maven-3.5.4-bin.tar.gz mv apache-maven-3.5.4 /…

php7 nts,php7.0.24-nts配置步骤

php-cgi.exe文件运行php-cgi.exe -b 127.0.0.1:9000 -c D:/myphp2017/php7-nts/php.ininginx命令启动 start nginx关闭 ngnix -s stopphp.ini中CGI信息配置enable_dl Oncgi.force_redirect 0cgi.fix_pathinfo1fastcgi.impersonate 1cgi.rfc2616_headers 1nginx.conf的配置#…

函数调用关系图如何画_彩铅画入门植物教程 | 如何用彩铅画一株多肉?多肉彩铅画教程步骤图详细...

画画不难,难的是不拿起手中的笔去画。彩铅画入门植物教程 | 如何用彩铅画一株多肉?多肉彩铅画教程步骤图详细多肉的质感如何表达呢?还是那句话:艺术来源于生活,要仔细观察。拿我们今天画的多肉来说,首先要观…

jenkins安装 新建节点(5)

1部署程序,tomcat部署不多说 2新建节点 系统管理—管理节点—新建节点 3完成 4这一点要注意 进行验证任务 创建任务—构建一个自由风格的软件—确定 限制项目的运行节点 选择testenv 构建 执行脚本 输入ifconfig验证 构建成功

php设置cookie值,PHP如何设置和取得Cookie值

PHP函数setcookie()用来设置cookie.setcookie()函数必须在标签之前调用,语法是setcookie (name, value, expire, path, domain) 例如:setcookie(“user”, “Alex Porter”, time()3600);?>setcookie(“url”, “http://www.mianwww.com”, time()36…

关于onclick点击无效问题

当要点击的标签在form标签内时&#xff0c;onclick无效。在这个问题上困了好长时间&#xff0c;一项一项排查&#xff0c;自学尤其是遇到问题时&#xff0c;真是麻烦。 还有删除节点报错问题&#xff1a; li.innerHTML content"<span>删除<span>";就是因…

工厂方法模式_1天1个设计模式——工厂方法模式

意图工厂方法模式是一种创建型设计模式&#xff0c; 其在父类中提供一个创建对象的方法&#xff0c; 允许子类决定实例化对象的类型。问题假设你正在开发一款物流管理应用。1.0版本只能支持处理卡车运输&#xff0c;因此大部分的代码都位于名为Truck的类中。随着业务越来越广泛…

hadoop简介(大数据技术)

Hadoop可运行于一般的商用服务器上&#xff0c;具有高容错、高可靠性、高扩展性等特点 特别适合写一次&#xff0c;读多次的场景 适合 大规模数据 流式数据&#xff08;写一次&#xff0c;读多次&#xff09; 商用硬件&#xff08;一般硬件&#xff09; 不适合 低延时的数据访问…

session与cokkie区别

刚刚转载于:https://www.cnblogs.com/igoodful/p/9511773.html

如何创建php文件,PHP如何生成.php程序文件

前台程序不少情况下需要生成.php文件&#xff0c;诸如多用户的在线日记程序、留言簿以及自助网站程序等等&#xff0c;都不可避免地在与用户的交互中生成.php程序文件。一般的&#xff0c;所生成的.php文件内容并不复杂&#xff0c;但麻雀虽小五脏俱全&#xff0c;完整的.php文…

python 字符串比较忽略大小写的方法_python实现忽略大小写对字符串列表排序的方法...

本文实例讲述了python实现忽略大小写对字符串列表排序的方法&#xff0c;是非常实用的技巧。分享给大家供大家参考。具体分析如下&#xff1a;先来看看如下代码&#xff1a;string the stirngHas manyline InTHE fIlejb51 netlist_of_string string.split()print list_of_str…

storm简介(大数据技术)

Apache Storm简介 由 chalex 创建&#xff0c;小路依依 最后一次修改 2016-12-12 什么是Apache Storm&#xff1f; Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架&#xff0c;具有最高的摄取率。虽然St…

python无法对存在交叉部分的图片进行识别_Python异常样本识别 交叉验证出现错误?...

源码&#xff1a;fromsklearn.model_selectionimportKFoldfromsklearn.metricsimportrecall_scorefoldKFold(5,shuffleFalse)recall_accs[]c_param_range[0.01,0.1,1,10,100]results_tablep...源码&#xff1a;from sklearn.model_selection import KFoldfrom sklearn.metrics …

hive简介(大数据技术)

背景和概念 Hive是一个依赖于分布式存储的查询和管理大型数据集的数据仓库。传统的非大数据行业一般都是基于表进行数据存储和管理的&#xff0c;如果由于业务扩张或者其他原因迁移到HDFS平台上&#xff0c;那么需要将传统的SQL查询语句全部翻译成Map-reduce的程序实现&#xf…

返回顶部

html代码&#xff1a; <button style"position: fixed;right: 30px;bottom:20px" id"back" onclick"back()">返回顶部</button> javascript代码&#xff1a; for(var i 0; i < 100; i){ document.write("<li>"…