SAP HCM HR_INFOTYPE_OPERATION效率提升20倍的解决方案

 项目背景


 最近遇到一个棘手的问题,就是数据批量更新问题,批量更新信息类型2010,数据10W+,HR_INFOTYPE_OPERATION执行时间大约需要5小时+而且还丢失数据,数据无法导入系统,项目存在延期风险。

初步思路

  记得十几年前在国网遇到一个问题,就是导入数据会有覆盖,后来发现是因为buffer问题,所以记得在写信息类型之前每次都调用一次清理buffer的操作,HR_PSBUFFER_INITIALIZE,还有一个note忘记号码,里面说增加清理buffer函数可以提升效率

图片

第一次失败

满怀希望的开始,最后被现实洗礼,失败,提升效率微乎其微,5小时估计也最多提升到4.8小时>>>>>>>>>>>>>>>>>>>>>>>>,这时候回想18年能源项目导入0007很慢,数据才3万条。正当百思不得其解的时候,ECP-PTP遇到一个问题,关于主数据同步的一个BUG,和SAPdebug几天,找到BUG原因,SuccessFactor主数据同步到ECP,数据也有好几千人,而且涉及到过个信息类型,SAP也就十来分钟。采取的就是异步机制,同时开启多个线程。

图片

思维联想

下图是successfactor主数据同步到SAP的同步逻辑,TCODE:SRTUTIL能监控每次数据传输的记录,而且是拆包分批传输,所以SAP的框架是支持多线程存储的,所以就要把HR_INFOTYPE_OPERATION程序拆分成多个包并行,不能提升效率。

图片

 新思路

       Parallel Processing Technique in SAP using SPTA框架

原理很简单,同时能启动多个线程并行跑,但是ECP有个和其他模块区别的是,每次编辑员工需要加锁,所以并行跑的时候,要把一个人的数据放入到一个包,以防同一个人进入两个不同的包,相互锁的问题。

核心就是这个方法SPTA_PARA_PROCESS_START_2,启动线程

图片

然后有三个回调方法F_BEFORE_RFC,F_IN_RFC,F_AFTER_RFC

F_BEFORE_RFC方法是主数据收集分发器,比如我有100条数据,10条一个包,分发一次我就要删除10条。

F_IN_RFC方法是业务逻辑处理层,HR_INFOTYPE_OPERATION函数就在这实现。

F_AFTER_RFC方法是处理返回信息及结果。

图片

                                 F_BEFORE_RFC逻辑

图片

                                             F_IN_RFC逻辑

图片

                                             F_AFTER_RFC

因为时间比较赶,代码比较乱,只是完成功能。

图片

开始15个线程,大约13分钟,如果开启20个线程大约10分钟。

图片

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值