Impex转换器-PK转换未发生,参数类型不匹配错误

2020-09-28 08:11发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 当我使用自定义的im...

         点击此处--->   EasySAP.com群内免费提供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)

5条回答
clever101
2020-09-28 08:59 .采纳回答

专家您好,

经过研究,我找到了答案。

在ImpEx声明中,当我们使用" approvalStatus(code)"时-提供类型的任何属性值(此处为类型'approvalStatus'提供了'code'属性-OOTB转换器会将其转换为实际PK(ItemExpressionTranslator将 在这种情况下进行翻译-嗯,根据OOTB场景,可以使用不同的翻译器。

就我而言,我使用的是自定义转换器,因此,我本人必须从"代码"属性中得出PK。

在需要更改属性值的情况下的解决方案,可以使用装饰器。 例如 :INSERT_UPDATE产品;代码[unique = true]; approvalStatus(代码)[cellDecorator = com.sap.CustomDecorator]

在CustomDecorator中,应用与我先前在CustomTranslator中提到的逻辑相同的逻辑。 装饰器将首先被调用,这将按照CustomDecorator中的逻辑更改属性值。 稍后,将调用翻译程序,将其翻译为PK。

一周热门 更多>