SF-HCI-SAP问题收集20:Metadata导入的时间格式错误问题
导读
INTRODUCTION
日期格式:每个系统都有自己的日期格式,Successfactors的日期格式和HCM的日期格式就不一样,所以此次出现问题就是时间格式的问题。effectiveEnDate导入HCM系统中出现问题,导致主数据同步失效。
作者:vivi,来源:osinnovation。
一、传输配置大致流程:
SuccessFactors与SAP做数据集成,主要分几个步骤:
①从SuccessFactors中导出metadate数据,这个也叫元数据,记录successfactors的字段名称,长度等内容。
②在SAP中上传metadata数据格式,此次出现问题就是这个地方,因为effectiveEnDate字段在元数据中没有,所以手工加入,手工加的时候是复制上一条数据的格式,当时没注意。
③导出SuccessFactors的picklist清单。
④导入到HCM系统中。
⑤开始配置映射Successfactors与HCM字段的映射关系。
二、错误提示:
在tcode:SLG1中发现这个错误,这个好奇怪,把9999-12-31拆出这样的格式,当时没反应过来是元数据格式的问题。
三、解决问题思路:(通用思路)
因为开始没想到是元数据的问题,猜想系统肯定是有转换,因为原来遇到过一次系统中间转换的案例,可以参考下:
布尔类型转换
vivi rsl,公众号:osinnovationSF-HCI-SAP问题收集17:值映射布尔型EC数据
我的解决思路就是找到SAP有个信息类型保存增强的地方,看看在增强的这个地方的数据格式是什么样,如果这个时候有错误,就往前去找问题的原因,因为有的信息没有增强,所以我下图是调用这个增强的地方。这样看调用这个badi的方法,具体的类是CL_ECPAO_IN_INFOTYPE,里面有个call_badi的方法。所以我只要看这个地方的内表中,发现在这个地方内表值的填充数据就错乱。这个badi是循环调用,因为sf的一个表可能对应sap多个表,所以在调用这个baidi之前已经把sf的表转换成一个个信息类型,有10个信息类型,那么这个badi就会调用十次,如果有些业务比较难搞定,就可以用这个badi增强去实现。其实sap在做这个数据集成的时候,有很多特定的规则我们可以使用,比如SAP银行信息的银行账号在SAP是两个字段,SF是一个字段,原来我使用过增强去解决问题,但是后来发现SAP有一个转换规则,他能写正则表达式,那这样很多问题就简单啦,
通过反推代码的方式,后来发现数据格式的问题,在导入元数据的时候,其实sf每个字段类型也会带进来,这个effectiveEndate的数据格式不是datatime的格式,导致数据在赋值的时候,出现数据的差异偏差。