点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我只想覆盖OOB can...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我只想覆盖OOB can...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我只想覆盖OOB canonicalitem(CanonicalPricingSalesAreaMapping)属性(distributionchannel-true)。
我收到以下错误。
2018-06-26 01:22:24,547 [WARN] [c.h.d.s.s.i.DefaultItemResolver]对CanonicalPricingSalesAreaMapping的引用不完整。 com.hybris.datahub.composition.key.IncompleteKeyException:规范项CanonicalPricingSalesAreaMapping的属性distributionChannel的值为空白或null。 在com.hybris.datahub.composition.key.DefaultIntegrationKeyGenerator.calculateIntegrationKey(DefaultIntegrationKeyGenerator.java:75)处com.hybris.datahub.composition.key.AlphabeticalIntegrationKeyGenerationStrategy.generateKeyValue(AlphabeticalIntegrationKeyGenerationStrategy.java:37)处。 com.hybris.datahub.service.spel.impl.DefaultItemResolver.calculateIntegrationKey(DefaultItemResolver.java:96)上的.key.DefaultIntegrationKeyGenerator.calculateIntegrationKey(DefaultIntegrationKeyGenerator.java:56)在com.hybris.datahub.service.spel.impl.DefaultItemResolver com.hybris.datahub.service.spel.impl.DefaultItemResolver.resolveReference(DefaultItemResolver.java:76)上的.lookupReferencedItemByMatchingKey(DefaultItemResolver.java:88)在com.hybris.datahub.service.spel.impl.DefaultItemResolver.resolve(Default .java:57)com.hybris.datahub.service.spel.impl.ResolveMethodExecutor.execute(ResolveMethodExecutor.java:48)org.springframework.expression.spel.a org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.org)上的org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:86)处的st.MethodReference.getValueInternal(MethodReference.java:130) org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:87)处org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:121)处的java:51) com.hybris.datahub.service.spel.impl.CompilableSpelExpressionProcessor.transform(CompilableSpelExpressionProcessor.java:84)的.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:262),com.hybris.datahub.service.publication .impl.DefaultCanonicalToTargetItemConverterService.populateAttributeFromCanonicalItem(DefaultCanonicalToTargetItemConverterService.java:101)at com.hybris.datahub.service.publication.impl.DefaultCanonicalToTargetItemConverterService.lambda $ populateTargetItem $ 0(DefaultCanonic alToTargetItemConverterService.java:89)at java.util.stream.ForEachOps $ ForEachOp $ OfRef.accept(ForEachOps.java:184)at java.util.stream.ReferencePipeline $ 2 $ 1.accept(ReferencePipeline.java:175)at java.util.stream。 Java处的.HashMap $ KeySpliterator.forEachRemaining(HashMap.java:1548)在java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)在java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)在Java。 java.util.stream.ForEachOps $ ForEachOp $ OfRef.evaluateSequential(ForEachOps.java:174)处util.stream.ForEachOps $ ForEachOp.evaluateSequential(ForEachOps.java:151)在java.util.stream.AbstractPipeline.evaluate(AbstractPipeline。 com.hybris.datahub.service.publication.impl.DefaultCanonicalToTargetItemConverterService.populateTargetItem(DefaultCanonicalToTargetItemConverterService.java:89)处java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)处的Java:234) .service.publication.impl.DefaultCanonicalToTargetItemConverterService.convert(Def aultCanonicalToTargetItemConverterService.java:60)位于sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)位于sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIjava) .lang.reflect.Method.invoke(Method.java:498)
首先,
CanonicalPricingSalesAreaMapping
的distributionChannel
属性是primaryKey
,因此它不能为null
,并且在搜索时 具有此规范项的关键属性,您不能给null
值作为参数。 这是当您不使用IDoc发送分发渠道时收到错误的原因(Data Hub在找不到对应的段时将此值解释为null
)。其次,您无法覆盖规范项属性的定义,当您尝试执行此操作时,Data Hub在启动过程中会出错。 但是您可以在自定义扩展中使用以下代码片段来覆盖此属性的转换,该代码片段依赖于所需的扩展(在本例中为" sappricing-raw"):
此代码段覆盖
distributionChannel
属性,并且在SpEL表达式中,它检查要在其中发送分发渠道值的IDoc字段(E1KOMG-VTWEG
) 如果它不为null,则使用该值,否则使用值NDC(无分配信道的短路)。 现在,您需要在Hybris中为我们为空值(NDC)定义的分发渠道定义映射到适当的值。 之后,您将不会收到上述错误,因为您将空值替换为非空值(在这种情况下为NDC)。希望这会有所帮助,
Mansur
一周热门 更多>