背景:
请假申提交时,校验在途quota时有误。
在请假申请提交时,已有其它请假申请将quota使用完毕,且其它请假申请的生效时间在当前请假申请生效时间之后,则当前请假申请quota校验可能会通过。
如quota剩余1天, 在1月1号申请1月31号的请假一天,此时quota全部被占用,在该申请未审批结束时,再提交申请1月15号的请假,quota 校验可能会通过,即能提交成功;如果另外再提交申请1月31号之后的请假,quota校验会报错。
组件版本:SAP_HR Release 608, SP 21
API:
CL_HCM_ATTABS_REQUEST_API
异常原因:
1. 在function HR_BLP_MAINTAIN_TIMEDATA 159行调用的form main_loop中,会循环校验当前人员所有在途申请
2. 校验时,按照请假期间的先后顺序进行校验,并在校验完后更新缓存中的quato已用天数
3. 返回消息会根据recuid关联到申请
4. api 消息处理IF_EX_PT_ABS_REQ~PROCESS_MESSAGES (CL_PT_ARQ_REQ_EXIT)
中,如果当前申请对应的recuid有关联的消息,则只处理当前申请关联的消息,否则处理所有申请返回的消息。
5. 由于是按照申请生效日期排序校验,所以quato不足的消息不会关联到当前申请,此时当前申请只要有一条I类型或者W类型的消息,则quato不足的消息将被无视。
消息追踪:
1. 根据消息文本查找对应消息ID及number
2. 查看消息mapping配置表HRWEB_TRANS_MESS是否有映射关系
3. 直接使用所用处清单查找消息校验位置(api处理消息时一般有如下语句,建议自定义消息返回时参考,以便消息追踪)
4. 消息处理方法及function可以设置断点跟踪
HR_APPEND_ERROR_LIST
CL_PT_REQ_MESSAGE_HANDLER - ADD_MESSAGE