发生系统错误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 证书正确 …

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

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

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

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

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

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

jenkins安装 新建节点(5)

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

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

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

hadoop简介(大数据技术)

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

hive简介(大数据技术)

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

kafka简介(大数据技术)

kafka是用于构建实时数据管道和流应用程序。具有横向扩展,容错,wicked fast(变态快)等优点,并已在成千上万家公司运行。 简单说明什么是kafka Apache kafka是消息中间件的一种,我发现很多人不知道消息中间件…

matlab晶闸管整流电路,采用Matlab/Simulink对三相桥式全控整流电路的仿真分析

本文利用Simulink对三相桥式全控整流电路进行建模,对不同控制角、桥故障情况下进行了仿真分析,既进一步加深了三相桥式全控整流电路的理论,同时也为现代电力电子实验教学奠定良好的实验基础。1 电路的构成及工作特点三相桥式全控整流电路原理…

flume简介(大数据技术)

1 .背景 flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富&#…

python开发学习笔记之六(面向对象)

面向对象引入: 现在有一个这样的需求:做汽水。 在之前的学习中,我们怎样处理这种类似的问题呢?思考一下,哦,不就是分步骤做嘛,把复杂的问题简单化,分成一个一个的步骤,就…

NAT地址转换

2017年1月12日, 星期四NAT地址转换SNAT:源地址转换DNAT:目标地址转换null转载于:https://www.cnblogs.com/jxhd1/p/9521173.html

修改小程序swiper 点的样式_高质量的微信小程序样式模板应该长什么样?

现在不懂技术的小白若想快速制作自己的小程序,一般是通过小程序模板来实现。通过在模板上添加自己的图片、文字、商品等等,可以很简单地生成一个小程序。不过要想把小程序做得好看,你得找高质量的小程序样式模板才行。那么高质量的微信小程序…

impala简介(大数据技术)

一、Impala概述 什么是Impala? Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C 和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。 换句话说&#xf…

猎豹网matlab视频百度云,猎豹网校C++ Primer初级全套视频教程

1_CppPrimer_快速入门2_CppPrimer_基本内置类型3_CppPrimer_习题解答_2-34_CppPrimer_字面值常量5_CppPrimer_变量6_CppPrimer_变量名7_CppPrimer_定义对象8_CppPrimer_声明和定义9_CppPrimer_名字的作用域10_CppPrimer_const限定符11_CppPrimer_引用12_CppPrimer_typedef13_Cp…

Linux 监控数据库资源占用

1.用xshell连接远程服务器,登录用户名和密码 2.进入远程服务器 3.输入top,回车,显示如下图所示 4.Cpu states: cpu状态 0,2,4,6 说明cpu是四核的 IDLE 代表闲置CPU百分比 百分号前面数字越大&#xff…

windows下python安装

第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64位的,请选择64位的安装包&am…

ssdp协议_Cotopaxi:使用指定IoT网络协议对IoT设备进行安全测试

cotopaxi是用于IoT设备安全测试的工具集。你可以指定IoT网络协议(如CoAP,DTLS,HTCPCP,mDNS,MQTT,SSDP)进行测试。安装只需从git克隆代码即可:https://github.com/Samsung/cotopaxi要求目前Cotopaxi仅适用于…