点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) sapcustomer原始xm...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) sapcustomer原始xm...
加入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转换不能被忽略吗? 如果可以改写,那怎么办?
您好,我们检查了数据库模式,相应的旧spel属性Transformation是不活动的,而我们的新spel属性Transformation是活动的。 并且也交叉验证了功能,新表达式被选中。 不确定该消息是否是令人困惑的消息,因为仍然会使用有效的spel表达式并将其与新表达式进行比较。
一周热门 更多>