点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
当我使用自定义的impex转换器时,不会自动转换为PK。
请参见下面的两个impex语句。
INSERT_UPDATE产品;代码[unique = true]; approvalStatus(代码)
; 123;已批准
INSERT_UPDATE产品;代码[unique = true]; approvalStatus(代码)[translator = com.sap.CustomTranslator]
; 123; 1
公共类CustomTranslator扩展了AbstractValueTranslator {
@Override
public Object importValue(final String valueExpr,final Item toItem)引发JaloInvalidParameterException
{
if(valueExpr ==" 1")
{返回"已批准"};
}
@Override
公共字符串exportValue(最终对象值)引发JaloInvalidParameterException
{
返回值== null? "":value.toString();
}
}
使用翻译器时出现此错误:java.lang.IllegalArgumentException:
尝试为属性de.hybris.platform.catalog.enums.ArticleApprovalStatus设置值" approved"的参数不匹配
(获取了java.lang.String,预期为de.hybris.platform.catalog.enums.ArticleApprovalStatus)
专家您好,
经过研究,我找到了答案。
在ImpEx声明中,当我们使用" approvalStatus(code)"时-提供类型的任何属性值(此处为类型'approvalStatus'提供了'code'属性-OOTB转换器会将其转换为实际PK(ItemExpressionTranslator将 在这种情况下进行翻译-嗯,根据OOTB场景,可以使用不同的翻译器。
就我而言,我使用的是自定义转换器,因此,我本人必须从"代码"属性中得出PK。
在需要更改属性值的情况下的解决方案,可以使用装饰器。 例如 :INSERT_UPDATE产品;代码[unique = true]; approvalStatus(代码)[cellDecorator = com.sap.CustomDecorator]
在CustomDecorator中,应用与我先前在CustomTranslator中提到的逻辑相同的逻辑。 装饰器将首先被调用,这将按照CustomDecorator中的逻辑更改属性值。 稍后,将调用翻译程序,将其翻译为PK。
是的,这是拼写错误! 我在impex标头中指定了code属性。
嗨,
在上面的impex标头中,您忘记提供代码 attribute.so ,它应该像这样的" approvalStatus(code) "。
请查看下面的impex标头INSERT_UPDATE Product; code [unique = true]; approvalStatus(code)[translator = com.sap.CustomTranslator]; 123; 1
是的,同意。 我知道了。 我不太了解OOTB转换器,这就是我要弄清楚的。 在调试了标准流程之后,我对它们有所了解。 就我而言,使用装饰器就足够了。 谢谢您的回复。
您好,能否请您将返回行更改为枚举" return ArticleApprovalStatus.APPROVED;"。
一周热门 更多>