SF-HCI-SAP问题收集19:自定义MDF不生效 开始时间与结束日期映射逻辑
导读
INTRODUCTION
时间映射:原来做自定义MDF与SAP信息类型的时候比较担心的是effectiveStartDate与effectiveEnDate与HCM的begda与endda之间如何关联,今天遇到一个case,就是自定义的mdf无法传输到SAP系统,经过一天反复debug,终于找到问题,也顺便把这两个系统的时间如何mapping的逻辑也过一遍。effectiveStartDate与effectiveEnDate这两个日期一定要SFAPI底层存的是什么,有的前面会加MDFeffectiveStartDate,所以一定要看sf的log。
作者:vivi,来源:osinnovation。
一、故事背景:
SuccessFactors新增一个自定义MDF对象,SAP新增一个信息类型,数据同步,但是开始导入SuccessFactors的元数据,发现一直缺少一个字段,字段名称是effectiveEnDate,开始也没注意,以为sap的标准逻辑不过有没有这两个字段,都会默认写,但是后来传输数据的时候,一直发现自定义的mdf无法传输到SAP系统。先说下结论,其实就是SuccessFactors在配置对象定义的时候effectiveEnDate字段有个属性visibilty设置隐藏,所以在导出元数据的时候,就没有这个字段。所以系统在找时间的时候无法effectiveEnDate与sap的endda匹配,所以后面就放弃映射。
二、从代码分析逻辑:
代码从这个类开始,前面省去我一天无效的debug逻辑:cl_ecpao_in_ec_object-cook_i_ec_object最开始是直接把sf自定的mdf对象的effectiveStartDate与effectiveEnDate抓取。注意下图的时间是effectiveStartDate与effectiveEnDate,而不是HCM的begda与endda,所以需要早一次转换。
转换逻辑在31行到34行,注意31行,如果上图中的ec_fld_name=ecpao_ectmpl-ec_fld_startdate,effectiveStartDate名字就会变成begda,因为c_begda=固定值begda。所以这里完成effectiveStartDate=begda,effectiveEnDate=endda
三、总结:
所以如果是自定义的MDF传输,一定在HCM中配置的地方,需要注意红色框的地方,注意在下图中配置的ec开始日期与ec结束日期,即使这个地方配置effectiveenddate,如果在导入元数据的时候,没有把effectiveenddate导入到SAP系统,也是不会映射成功。所以以后传递自定义的MDF,一定要注意下图中的两点。