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

2020-09-28 08:11发布

         点击此处--->   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)

         点击此处--->   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
1楼 · 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。

我是小鹏鹏啊
2楼-- · 2020-09-28 09:10

是的,这是拼写错误! 我在impex标头中指定了code属性。

callcenter油条
3楼-- · 2020-09-28 08:47

嗨,

在上面的impex标头中,您忘记提供代码 attribute.so ,它应该像这样的" approvalStatus(code) "。

请查看下面的impex标头INSERT_UPDATE Product; code [unique = true]; approvalStatus(code)[translator = com.sap.CustomTranslator]; 123; 1

宇峰Kouji
4楼-- · 2020-09-28 08:49

是的,同意。 我知道了。 我不太了解OOTB转换器,这就是我要弄清楚的。 在调试了标准流程之后,我对它们有所了解。 就我而言,使用装饰器就足够了。 谢谢您的回复。

SAP砖家
5楼-- · 2020-09-28 09:10

您好,能否请您将返回行更改为枚举" return ArticleApprovalStatus.APPROVED;"。

一周热门 更多>