点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
sapcustomer原始xml中CanonicalPartySales的OOTB映射如下。
CanonicalPartySales
<属性>
<属性>
partyId
<转换>
<转换>
RawDEBMAS
#root.getField('E1KNA1M-KUNNR')+'_KNA1'
<属性>
现在,我需要在自定义扩展程序中使用特殊表达式,如下所示。
CanonicalPartySales
<属性>
<属性>
partyId
<转换>
RawDEBMAS
{'FF','ZZ','YY','XX'}。contains(#root.getField('E1KNA1M-E1KN ***-E1KNXXX-PAR **'))吗? #root.getField('E1KNA1M-KUN **')+'_KNA1':null
但是当我使用datahub.autoInitMode = create-drop进行datahub retsart时,在服务器启动期间不会出错,但是使用datahub.autoInitMode = create或datahub.autoInitMode = ignore时则会收到以下错误。
com.hybris.datahub.validation.ValidationException:[ValidationFailure {FATAL,rawAttribute:"无法修改规范属性转换CanonicalPartySales,partyId,RawDEBMAS"}},位于com.hybris.datahub.validation.AbstractValidator.validate( AbstractValidator.java:32)〜[datahub-service-6.3.0.7-RC1.jar:6.3.0.7-RC1] at com.hybris.datahub.facade.metadata.DefaultTransformationItemClassFacade.createNewAttribute(DefaultTransformationItemClassFacade.java:42)〜[datahub -service-6.3.0.7-RC1.jar:6.3.0.7-RC1]
在检查CanonicalTransformationDataValidator中的代码时,将完成以下验证。
私有void validateThatTransformationCanBeCreated(ValidationContext ctx,CanonicalTransformationData数据,
已存在CanonicalAttributeDefinition){
如果(!data.isDisabled()&&!data.isOverride()){
this.validateTransformationDoesNotAlreadyExistForAttribute(数据,ctx,现有);
}
}
私有无效validateTransformationDoesNotAlreadyExistForAttribute(CanonicalTransformationData dataObject,
ValidationContext上下文,CanonicalAttributeDefinition存在){
if(existing!= null){
如果(this.isTransformationBeingUpdated(existing,dataObject)){
context.addFailure(new ValidationFailure(" rawAttribute",
"无法修改规范属性转换" + dataObject.getItemType()+","
+ dataObject.getName()+"," + dataObject.getRawItemType(),
ValidationFailureType.FATAL));
}其他{
context.addFailure(new ValidationFailure(" rawAttribute",
"规范属性转换已存在:" + dataObject.getItemType()+","
+ dataObject.getName()+"," + dataObject.getRawItemType(),
ValidationFailureType.EXISTING_ITEM));
}
}
私有布尔值isTransformationBeingUpdated(CanonicalAttributeDefinition currDef,
CanonicalTransformationData newDef){
字符串newTransformationExpression = SpelUtils.resolveTransformationExpression(newDef.getExpression(),
newDef.isSpel());
字符串oldTransformationExpression = currDef.getReferenceAttribute();
return!Objects.equal(oldTransformationExpression,newTransformationExpression);
}
因此,每次如果属性in未被禁用(即isDisabled为false)且override为false,则它将进入循环检查是否存在具有新转换的SPEL转换。 如果两者都匹配,则规范属性转换已经存在:抛出了消息,否则引发了"规范属性转换无法修改"。
有人可以确认spEL转换不能被忽略吗? 如果可以改写,那怎么办?
嗨,这听起来像是个错误。 我继续前进并与团队记录下来。 您能否提供以下详细信息?
您使用的-
-
Data Hub版本
在看到异常后扩展是否无法加载,还是记录了异常但扩展仍可以正确加载?
是否有更新? 我们在数据库模式中进行了检查,相应的旧spel属性Transformation已停用,而新的spel属性Transformation已启用。 并且也交叉验证了功能,新表达式被选中。 不确定该消息是否是令人困惑的消息,因为仍然会使用有效的拼写表达并将其与新的表达比较。
您好,我们检查了数据库模式,相应的旧spel属性Transformation是不活动的,而我们的新spel属性Transformation是活动的。 并且也交叉验证了功能,新表达式被选中。 不确定该消息是否是令人困惑的消息,因为仍然会使用有效的spel表达式并将其与新表达式进行比较。
嗨,由于这不是功能错误,因此已被标记为无法修复。 您可以简单地忽略日志中的异常,而知道转换表达式的值已被正确覆盖。
您好,对此有任何更新吗? 我们在Datahub 6.3.0.0中也遇到了同样的问题。
是否有错误报告或解决方法? 哪个版本可以解决此问题(假设它已全部解决)?
一周热门 更多>