SAP HCM HR_ABS_ATT_TIMES_AT_ENTRY 跨夜班不生效问题
导读
跨夜班标准函数不生效:今天客户提出一个问题,计算请假时长不生效的问题(微信小程序调用SAP接口),但是在PA30中能正确计算,所以问题肯定就是在调用标准函数的时候,参数设置问题,今天给就来分析下次问题发生的情况,以后大家避免踩坑。
作者:vivi,来源:osinnovation
背景
1 今天客户提出一个问题,在小程序请假,SAP返回的接口数据不正确,例如员工排班是20.45-第二天,按道理系统计算是8小时,但是系统计算出来的不是8小时,但是在PA30中手工维护却能计算出8小时。所以初步断定调用的标准程序没有问题,出问题肯定是参数输入不正确。
出现这样的问题,最便捷的解决方案就是PA30执行调用标准函数,与自己开发程序调用标准函数的参数,每个对比查找差异。但是发现这两个地方没什么差异,百思不得其解。
2 因为在调用接口的时候,就找的是pa30的标准函数,所以PA30没问题,自定义开发的有问题,所以肯定是自定义代码的问题,但是对比HR_ABS_ATT_TIMES_AT_ENTRY函数的出入条件,但是没发现任何问题,遇到这样的问题,有几种可能性,①输入的参数和标准函数输入的参数估计还有有差异,只是没仔细看,②可以调用这个函数的时候,有全局变量的参数,在调用标准函数的时候,有传递全局参数。后来发现本次案例还是①的问题没认真查看。经过分析代码105行这个地方有问题,beguz标准程序传过来的是空,但是自己开发的接口默认是6个0,所以105行的会进去112行的代码。
3 代码修改
在85行中新增判断如果是6个0,那么系统就清空数据,这样系统就不会走上图105行下面的代码。