无法从动态类型中删除枚举值

2020-09-03 09:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我试图从HMC/I...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我试图从HMC/Impex/Code中删除一种动态类型的枚举值,但出现以下错误,

替代文字

如果我通过hmc创建一些值,则可以删除它们,但不能删除items.xml文件中定义的值。当我尝试调试时,我理解DB editable 列中的值为null EnumerationValues 表中,我不确定为什么动态枚举保持为空。 如果直接从数据库将editable更改为true,则可以删除项目。

有什么适当的方法可以删除它吗? 通过代码还是HMC或Impex?

注意:我正在使用Hybris 5.7版本。

谢谢

(134.9 kB)
付费偷看设置
发送
5条回答
spaceman01
1楼-- · 2020-09-03 09:34

嗨,

感谢您的快速回复,我能够找到其他解决方案,

 最终EnumerationValueModel enumerationValueModel = typeService.getEnumerationValue(enumerationService.getEnumerationValue(" LeadStatus"," NEGOTIATION_REVIEW")));;
  final Item item =(EnumerationValue)getModelService()。getSource(enumerationValueModel);
  (((EnumerationValueEJBImpl)item.getImplementation())。remove(JaloSession.getCurrentSession()。getSessionContext());

  

不建议使用jalo层代码,但这是部署后的一次性数据校正活动。

谢谢, 法尼

clasier
2楼-- · 2020-09-03 09:54

嘿,

不幸的是,从5.1.X版本开始,OOTB枚举的可编辑标志似乎默认为空(而不是1),因此无法删除OOTB枚举的值。

解决方法是创建一个没有多余值的新枚举,并用新创建的枚举替换对原始枚举的引用。

希望有帮助,

callcenter油条
3楼-- · 2020-09-03 09:34

:请提供完整的实现类供我参考。 我需要做同样的事情。 提前致谢。

骆驼绵羊
4楼-- · 2020-09-03 09:44

我相信这将是完整的实现...

导入de.hybris.platform.core.model.enumeration.EnumerationValueModel
 导入de.hybris.platform.enumeration.impl.DefaultEnumerationService
 导入de.hybris.platform.jalo.Item
 导入de.hybris.platform.jalo.JaloSession
 导入de.hybris.platform.jalo.enumeration.EnumerationValue
 导入de.hybris.platform.persistence.enumeration.EnumerationValueEJBImpl
 导入de.hybris.platform.servicelayer.model.ModelService
 导入de.hybris.platform.servicelayer.type.TypeService


 最终的ModelService modelService = spring.getBean('modelService')
 最终的TypeService typeService = spring.getBean('typeService')
 最后的DefaultEnumerationService枚举Service = spring.getBean('enumerationService')


 最后的EnumerationValueModel enumerationValueModel = typeService.getEnumerationValue(enumerationService.getEnumerationValue(" LeadStatus"," NEGOTIATION_REVIEW")));
 final Item item =(EnumerationValue)modelService.getSource(enumerationValueModel);
 (((EnumerationValueEJBImpl)item.getImplementation())。remove(JaloSession.getCurrentSession()。getSessionContext());
 
我是小鹏鹏啊
5楼-- · 2020-09-03 09:48

我使用此策略从Hybris中删除了自定义的ProductReferenceTypeEnum值。

一周热门 更多>