点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试通过Datahub将数据导入Hybris,并且遇到了以下问题:我们的Hybris模型中的必填字段(电子邮件地址)之一来自另一个系统,但可由用户更改 。 因此,当首次导入用户数据时,将正确插入电子邮件地址。 但是,如果用户随后在Hybris中更改其电子邮件地址,并且该用户再次从后端系统中导出,则该电子邮件地址将被原始值覆盖。 在impex文件中,是否可以在列上指定仅在INSERT而不是UPDATE期间使用其值?
史蒂芬
PS。 我已经简化了这种情况,所以请不要讨论要求:-)
我们在语言方面也面临类似的情况。 导入新语言时,active的值是强制性的,并且首次导入时该值必须为false。 在为其他字段更新语言时,我们不希望更新active的值,因为它对于平台内的实现方案是可维护的。 如果禁止使用某种语言,则必须使用主动false来重新导入它,就像第一次一样。
解决方案是构建一个impex文件,该文件作为可选INSERT 行,然后是 UPDATE 。
请参阅beforeEach的用法,该操作会擦除数据库中已存在的行。 代码中的 line 字段是Map。
嗨,
您找到了解决此问题的任何方法吗?
您可以创建两个单独的impex,一个 用于初始加载,另一个用于更新。 在更新文件中,省略电子邮件地址,现有值将不会被覆盖。
您需要的功能是impex文件中INSERT和UPDATE之间的区别。
我认为忽略值不起作用,因为在这种情况下,电子邮件地址是必填字段。
从面向服务的角度来看,您应该定义哪个系统是领先的。 就您而言,这听起来像是后端系统。 因此,更新不应由hybris处理。
您可以将请求发送到后端以进行更改,而不是立即将电子邮件更改保留在hybris中。 然后,杂波将通过现有的DataHub通道进行更新。
正如我在原始问题中提到的那样,我正在使用Datahub,因此对生成的实际impex语句几乎没有控制。 例如,当前不可能让datahub生成UPDATE语句,它将始终使用INSERT或INSERT_UPDATE。 而且,只能通过覆盖执行实际impex生成的bean来更改此行为。 不幸的是,包含实际逻辑的方法是私有的,因此不易被覆盖。
一周热门 更多>