删除"不可编辑"的EnumerationValues

2020-09-04 04:09发布

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

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


我正在尝试更新RefundReason枚举值列表,以供CS座舱和前端使用,包括删除在basecommerce中定义的值。 例如,不需要" DamagedInTransit"和" PriceMatch"之类的值。

我的问题是,如何配置我的系统,使我拥有一个RefundReason枚举,该枚举仅包含自定义值,而不包含在basecommerce中定义的值?

在扩展程序的items.xml中声明RefundReason枚举类型可让我们添加值,但不能删除它们。 论坛上讨论的方法是在系统更新期间通过impex或TypeService/ModelService API以编程方式删除现有值-由于出现错误,我无法使这种方法起作用:

无法删除不可编辑的EnumerationValue DamagedInTransit

如果我只是尝试通过hMC删除此值,也会收到此错误,因此我看不到删除现有值的方法。 有什么建议?

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

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


我正在尝试更新RefundReason枚举值列表,以供CS座舱和前端使用,包括删除在basecommerce中定义的值。 例如,不需要" DamagedInTransit"和" PriceMatch"之类的值。

我的问题是,如何配置我的系统,使我拥有一个RefundReason枚举,该枚举仅包含自定义值,而不包含在basecommerce中定义的值?

在扩展程序的items.xml中声明RefundReason枚举类型可让我们添加值,但不能删除它们。 论坛上讨论的方法是在系统更新期间通过impex或TypeService/ModelService API以编程方式删除现有值-由于出现错误,我无法使这种方法起作用:

无法删除不可编辑的EnumerationValue DamagedInTransit

如果我只是尝试通过hMC删除此值,也会收到此错误,因此我看不到删除现有值的方法。 有什么建议?

付费偷看设置
发送
12条回答
spaceman01
1楼 · 2020-09-04 04:26.采纳回答

嗨, 我想出了一个对我有用的解决方案, 您必须使用SQL查询从hac

中删除
 从枚举值item_t0中删除(item_t0.code ='yourenumValue')
 
 




  
土豆飞人
2楼-- · 2020-09-04 04:20

我刚刚用过

 dataSource = Registry.getApplicationContext()。getBean(" dataSource");
 connection = dataSource.getConnection(); 
hongfeng1314
3楼-- · 2020-09-04 04:25

这是我们用来解决此问题的ImpEx脚本

 #%impex.enableCodeExecution(true);
 
  "#%
  导入de.hybris.platform.core.Registry;
  导入de.hybris.platform.util.Config;
  导入java.sql.DriverManager;
 
  url = Config.getParameter("" db.url"");
  driver = Config.getParameter("" db.driver"");
  userName = Config.getParameter("" db.username"");
  密码= Config.getParameter("" db.password"");
  尝试
  {
      print(""正在从YourEnumType枚举中删除'您的ENUM VALUE'值..."");
      c = getClass(驱动程序);
      连接= DriverManager.getConnection(URL,用户名,密码);
      语句= connection.createStatement();
      sql =""从枚举值中删除" WHERE代码"为"您的枚举值"并且TypePkString =(选择类型。PKFROM组成类型为WHERE类型。
      print(statement.executeUpdate(sql)+""的行已被删除。"");
      Registry.getCurrentTenant()。getCache()。clear();
  }
  抓住(e)
  {
      print(""删除'ENUM VALUE'值时引发错误。\ n"" + e);
  }
  "
  
能不能别闹
4楼-- · 2020-09-04 04:28

是的,我可以成功将其删除。 但是我不是4.8.14,所以可能会有不同的行为。 很奇怪。

小灯塔
5楼-- · 2020-09-04 04:22

我不确定为什么您无法从该枚举中删除值。 在 basecommerce-items.xml

中将其定义为动态

您的hMC中的定义是什么样的? 例如。 我的看起来像下面的动态设置为"是"。 您在任何地方都重新定义过吗? 替代文字

6楼-- · 2020-09-04 04:40

我也面临Hybris 5.3.0.2中ReplacementReason Enum的相同问题 除了手动从列表中删除以外,任何可能的建议。

Tong__Ming
7楼-- · 2020-09-04 04:41

您好,谢谢您的答复。

我们在扩展名中重新定义了枚举。 这是相关的XML代码段:

  
      
      
  

  

它仍然被定义为动态的:

替代文本

如果我尝试删除DamagedInTransit值并保存,则会出现以下错误(我已经在本地环境和测试环境中检查了此行为):

替代文本

您能够成功删除此值吗? 我们正在使用hybris 5.1.1。

一周热门 更多>