导读
簇目录 (表 RGDIR) 不包含任何记录:今天遇到一个很奇怪的问题,簇目录 (表 RGDIR) 不包含任何记录,而且出现的问题没有具体到员工编号,所以处理问题非常棘手。今天分享下我的处理方式,以便大家遇到这类的问题不知道如何下手。
1 报错提示
下图是具体的报错,我们可以看出这个地方没有任何的员工编号的提示
2 解决问题思路
遇到此类问题,最关键的还是解决思路,否者需要很长的时间才能排错,我今天总结下我的解决思路:
①首先是尝试法,先找到核算范围内的员工,如果核算范围有200人,就用二分叉法去尝试,100人跑一次工资核算,如果不在这100人,那就跑另外100人,这样去减少尝试的错误
②可惜上述方法不生效,单独输入员工编号并不会出现错误,只有输入工资核算范围才会错误,所以我们思路要改成debug思维,就是根据弹出的错误,看看消息号,然后用消息号去定位代码的位置,反推错误的原因。
③可惜这个方法也不生效,因为我找到错误的人,但是执行这个人还是不报错,所以估计这个消息号可能有好几个位置,最后想到一个性能分析的工具SAT,这个程序能分析程序的运行堆栈,还能分析性能。
④下图就是SAT的截图界面,在事务码输入工资核算的程序,然后点execute程序,当程序报错的时候,我们点返回按钮
⑤ 切换到TIMES的页签,鼠标向下划到最下面,看到一个messageE710的错误,这个和我们②的那个消息错误号一致,所以定位就是这个地方有问题,系统停止运行。
⑥双击上图中的message可以看到下面的代码,15行就是错误的代码,现在知道错误的具体位置,现在剩下的就是在执行下工资核算,是不是停留在此处。
⑦很幸运,在程序执行的时候,代码停在15行,此处只需要在右边变量的地方输入P0001,我们就能从这个内表找到错误的员工编号
⑧认真观察这个内表的数据,发现两个问题,一个问题是时间不连续,一个是一个月内有两个工资核算范围,所以问题就出现在这个位置。
3 总结
HCM工资核算的时候有很多错误其实是很难理解的,需要你对系统有一定的认识才能更好的解决问题,有时候考经验很难发现错误的原因,这个时候就要结合debug方法去处理,debug方法前面总结过几篇文章,有兴趣的人可以认真看下,今天这个是debug的另外一种方法,也是希望通过不同的方法去解决复杂的问题。