如何覆盖OOB canonicalItem CanonicalPricingSalesAreaMapping?

2020-09-13 18:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入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)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入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)

付费偷看设置
发送
8条回答
Bunny_CDM
1楼 · 2020-09-13 19:04.采纳回答

首先, CanonicalPricingSalesAreaMapping distributionChannel 属性是 primaryKey ,因此它不能为 null ,并且在搜索时 具有此规范项的关键属性,您不能给 null 值作为参数。 这是当您不使用IDoc发送分发渠道时收到错误的原因(Data Hub在找不到对应的段时将此值解释为 null )。

其次,您无法覆盖规范项属性的定义,当您尝试执行此操作时,Data Hub在启动过程中会出错。 但是您可以在自定义扩展中使用以下代码片段来覆盖此属性的转换,该代码片段依赖于所需的扩展(在本例中为" sappricing-raw"):

  
  规范价格
  <属性>
      <属性>
           distributionChannel 
          <转换>
              
                   RawCOND_A 
                  #root.getField('E1KOMG-VTWEG')是否为null?  #root.getField('E1KOMG-VTWEG'):'NDC'
              
          
      
  
  

  

此代码段覆盖 distributionChannel 属性,并且在SpEL表达式中,它检查要在其中发送分发渠道值的IDoc字段( E1KOMG-VTWEG ) 如果它不为null,则使用该值,否则使用值NDC(无分配信道的短路)。 现在,您需要在Hybris中为我们为空值(NDC)定义的分发渠道定义映射到适当的值。 之后,您将不会收到上述错误,因为您将空值替换为非空值(在这种情况下为NDC)。

希望这会有所帮助,
Mansur

葫芦娃快救爷爷
2楼-- · 2020-09-13 18:57

您想要实现什么目标? 当您遇到此错误时?

bbpeas
3楼-- · 2020-09-13 18:51

请分享配置步骤。

关于,高拉夫

SKY徐
4楼-- · 2020-09-13 18:55

嗨,曼苏尔,

在我即将到来的IDOC定价中,我正在从细分中读取分销渠道,该细分可能会出现也可能不会出现,因此我必须组成一个用户群,例如(UG-salesorg-distributionchannel)。 在IDOC中运行正常,但在IDOC中不存在时,出现上述错误。

浮生未央
5楼-- · 2020-09-13 19:03

错误:-com.hybris.datahub.service.spel.TransformationExpressionException:无法通过com.hybris.datahub.service上的表达式resolve('CanonicalPricingSalesAreaMapping','SAPCONFIGURATION_POOL')。c进行转换 .spel.impl.CompilableSpelExpressionProcessor.transform(CompilableSpelExpressionProcessor.java:89)位于com.hybris.datahub.service.publication.impl.DefaultCanonicalToTargetItemConverterService.populateAttributeFromCanonicalItem(DefaultCanonicalToTargetItemConverte at com.hybris.datahub。 populateTargetItem $ 0(DefaultCanonicalToTargetItemConverterServic 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.HashMap $ KeySpliterator.forEachRemaining(HashMap.java:1548)at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)at java.util.stream.AbstractPipeline.wrapAndCopyInto(Abst java.util.stream.ForEachOps $ ForEachOp.evaluateSequential(ForEachOps.java:151)处的ractPipeline.java:471)java.util.stream.ForEachOps $ ForEachOp $ OfRef.evaluateSequential(ForEachOps.java:174)处的ractPipeline.java:471) .stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)在com.hybris.datahub.service.publication.impl.DefaultCanonicalToTargetItemConverterService.populateTargetItem(DefaultCanonicalToTargetItemConverterService.java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) :89 at com.hybris.datahub.service.publication.impl.DefaultCanonicalToTargetItemConverterService.convert(DefaultCanonicalToTargetItemConverterService.java:60)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethod) 62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

亦是此间程序员
6楼-- · 2020-09-13 19:03

您好,Mansur,感谢您的快速回复。 我做了你所解释的同样的事情,在这种情况下错误得以解决。但是我遇到了一个新的错误,请查看下面的错误,并让我知道我是否错过了任何事情或需要做其他事情 。 com.hybris.datahub.service.spel.TransformationExpressionException:无法通过表达式resolve('CanonicalPricingSalesAreaMapping','SAPCONFIGURATION_POOL')。c转换为com.hybris.datahub.service.spel.impl.CompilableSpelExpressionProcessor.transform(CompilableSpelExpression 89)

lukcy2020
7楼-- · 2020-09-13 18:39

哪个配置步骤?

一周热门 更多>

点击此处---> EasySAP.com 一起学习S4 HANA ...

相关问答