如何重新声明属性以更改其修饰符?

2020-09-16 13:45发布

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

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


嗨,

我们要使用以下定义和重新声明使某些属性可写(用于hmc中的更改)

  
 
                  <属性>
 
                      
                          <修饰符read =" true" write =" true"
                                     optional =" true"/>
                          
                      
                      
                          <修饰符read =" true" write =" true"
                                     optional =" false"/>
                          
                      
  ...

  

但是在构建时会抛出以下异常:

  [复制]将1个文件复制到C:\ hybris \ bin \ custom \ prj \ prjstorefront \ resources
  [ycodegenerator] 13:04:41,952 [main] INFO CodeGenerator-开始代码生成...
 
  建立失败
  C:\ hybris \ bin \ platform \ build.xml:24:执行此行时发生以下错误:
  C:\ hybris \ bin \ platform \ resources \ ant \ compiling.xml:80:exec时发生以下错误
  说这行:
  C:\ hybris \ bin \ platform \ resources \ ant \ antmacros.xml:700:exe时发生以下错误
  剪掉这条线:
  C:\ hybris \ bin \ platform \ resources \ ant \ antmacros.xml:703:java.lang.IllegalArgumentException:ca
  由于属性'Consignment.namedDeliveryDate(java.u)重复,因此未将名称空间((prjcore))合并到(())中
  til.Date):(((prjcore)):: YAttributeDescriptor [prjcore-items.xml:1424(AttributeTagListener)] [null]'vs'Consignme
  nt.namedDeliveryDate(java.util.Date):((basecommerce)):: YAttributeDescriptor [basecommerce-items.xml:858(AttributeTagListe
  ner)] [PROPERTY]'
          在de.hybris.bootstrap.typesystem.YNamespace.mergeNamespace(YNamespace.java:286)
          在de.hybris.bootstrap.typesystem.YTypeSystem.mergeNamespaces(YTypeSystem.java:86)
          在de.hybris.bootstrap.typesystem.YTypeSystem.finalizeTypeSystem(YTypeSystem.java:77)
          在de.hybris.bootstrap.typesystem.YTypeSystemLoader.finish(YTypeSystemLoader.java:583)
          在de.hybris.bootstrap.typesystem.YTypeSystemSource.readTypeSystem(YTypeSystemSource.java:125)
          在de.hybris.bootstrap.typesystem.YTypeSystemSource.getTypeSystem(YTypeSystemSource.java:55)
          在de.hybris.bootstrap.codegenerator.jalo.JaloClassGenerator.generateClasses(JaloClassGenerator.java:50)
          在de.hybris.bootstrap.codegenerator.CodeGenerator.generateJaloClasses(CodeGenerator.java:210)
          在de.hybris.bootstrap.codegenerator.CodeGenerator.generate(CodeGenerator.java:182)
          在de.hybris.bootstrap.codegenerator.CodeGenerator.generate(CodeGenerator.java:332)
          在de.hybris.ant.taskdefs.compiling.CodeGeneratorTask.execute(CodeGeneratorTask.java:31)
          在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
          在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          在java.lang.reflect.Method.invoke(Method.java:606)
          在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
          在org.apache.tools.ant.Task.perform(Task.java:348)
          在org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
          在net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
          在sun.reflect.GeneratedMethodAccessor23.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          在java.lang.reflect.Method.invoke(Method.java:606)
          在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
          在org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
          在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
          在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          在java.lang.reflect.Method.invoke(Method.java:606)
          在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
          在org.apache.tools.ant.Task.perform(Task.java:348)
          在org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
          在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
          在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          在java.lang.reflect.Method.invoke(Method.java:606)
          在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
          在org.apache.tools.ant.Task.perform(Task.java:348)
          在org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
          在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
          在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  

如果有一个简单的解决方案来完成这项工作,那将是很好的。

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

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


嗨,

我们要使用以下定义和重新声明使某些属性可写(用于hmc中的更改)

  
 
                  <属性>
 
                      
                          <修饰符read =" true" write =" true"
                                     optional =" true"/>
                          
                      
                      
                          <修饰符read =" true" write =" true"
                                     optional =" false"/>
                          
                      
  ...

  

但是在构建时会抛出以下异常:

  [复制]将1个文件复制到C:\ hybris \ bin \ custom \ prj \ prjstorefront \ resources
  [ycodegenerator] 13:04:41,952 [main] INFO CodeGenerator-开始代码生成...
 
  建立失败
  C:\ hybris \ bin \ platform \ build.xml:24:执行此行时发生以下错误:
  C:\ hybris \ bin \ platform \ resources \ ant \ compiling.xml:80:exec时发生以下错误
  说这行:
  C:\ hybris \ bin \ platform \ resources \ ant \ antmacros.xml:700:exe时发生以下错误
  剪掉这条线:
  C:\ hybris \ bin \ platform \ resources \ ant \ antmacros.xml:703:java.lang.IllegalArgumentException:ca
  由于属性'Consignment.namedDeliveryDate(java.u)重复,因此未将名称空间((prjcore))合并到(())中
  til.Date):(((prjcore)):: YAttributeDescriptor [prjcore-items.xml:1424(AttributeTagListener)] [null]'vs'Consignme
  nt.namedDeliveryDate(java.util.Date):((basecommerce)):: YAttributeDescriptor [basecommerce-items.xml:858(AttributeTagListe
  ner)] [PROPERTY]'
          在de.hybris.bootstrap.typesystem.YNamespace.mergeNamespace(YNamespace.java:286)
          在de.hybris.bootstrap.typesystem.YTypeSystem.mergeNamespaces(YTypeSystem.java:86)
          在de.hybris.bootstrap.typesystem.YTypeSystem.finalizeTypeSystem(YTypeSystem.java:77)
          在de.hybris.bootstrap.typesystem.YTypeSystemLoader.finish(YTypeSystemLoader.java:583)
          在de.hybris.bootstrap.typesystem.YTypeSystemSource.readTypeSystem(YTypeSystemSource.java:125)
          在de.hybris.bootstrap.typesystem.YTypeSystemSource.getTypeSystem(YTypeSystemSource.java:55)
          在de.hybris.bootstrap.codegenerator.jalo.JaloClassGenerator.generateClasses(JaloClassGenerator.java:50)
          在de.hybris.bootstrap.codegenerator.CodeGenerator.generateJaloClasses(CodeGenerator.java:210)
          在de.hybris.bootstrap.codegenerator.CodeGenerator.generate(CodeGenerator.java:182)
          在de.hybris.bootstrap.codegenerator.CodeGenerator.generate(CodeGenerator.java:332)
          在de.hybris.ant.taskdefs.compiling.CodeGeneratorTask.execute(CodeGeneratorTask.java:31)
          在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
          在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          在java.lang.reflect.Method.invoke(Method.java:606)
          在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
          在org.apache.tools.ant.Task.perform(Task.java:348)
          在org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
          在net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
          在sun.reflect.GeneratedMethodAccessor23.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          在java.lang.reflect.Method.invoke(Method.java:606)
          在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
          在org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
          在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
          在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          在java.lang.reflect.Method.invoke(Method.java:606)
          在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
          在org.apache.tools.ant.Task.perform(Task.java:348)
          在org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
          在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
          在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          在java.lang.reflect.Method.invoke(Method.java:606)
          在org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
          在org.apache.tools.ant.Task.perform(Task.java:348)
          在org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)
          在org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
          在sun.reflect.GeneratedMethodAccessor4.invoke(未知来源)
          在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

  

如果有一个简单的解决方案来完成这项工作,那将是很好的。

付费偷看设置
发送
11条回答
大圣 - sap领域执行人,9年sap运营经验
1楼 · 2020-09-16 14:40.采纳回答

大家好!

我尝试在5.2混合环境中重现此内容。 是的,如Wiki链接所述 https://wiki.hybris。 com/display/release5/items.xml#items.xml-创建子类型并为子类型添加属性

redeclaring属性不能在基础项目类型上使用,只能在扩展项目类型上应用。

通过声明,我设法使" namedDeliveryDate"属性可编辑(我在HMC中创建了一个实例)

  
          
                <属性>
                   
                   <修饰符read =" true" write =" true"可选=" true"初始=" false"/>
                   
                  
               
          
  

  

注意:我修改了initial =" false"使其成为非初始属性。

  1. 必须在项目创建期间设置初始属性,稍后可以设置非初始值。 根据 https://wiki.hybris.com/display/release5/Type+System +文档"覆盖默认创建机制"部分。

  2. 也不要忘记在定义扩展项目类型的自定义扩展中添加extensioninfo.xml。 希望它有用。

亲切的问候

Lily

渐行渐远_HoldOn
2楼-- · 2020-09-16 14:28

我对这个主题非常感兴趣,因为我们遇到了同样的问题。 我还需要从寄售中覆盖标准属性,但是属性上的'redeclare =" true"'不会改变任何内容。

我们注意到GeneratedConsignment类对初始修饰符进行了一些控制,并且由于该修饰符带有jar资源,因此不会通过Ant clean all process进行重新生成。

请帮助我们找到解决方案。 那会很有帮助。 谢谢。

compass1988
3楼-- · 2020-09-16 14:39

我也非常感兴趣如何重新声明"初始"值。 我正在做这样的事情:

  
      <属性>
          
          
          <修饰符read =" true" write =" true" search =" true"可选=" false"初始=" false"/>
      
  

  

但不起作用。 因为在PointOfService中'name'被声明为initial =" true",所以在MyPointOfService中保持不变。

您能给我一些如何做的见解吗?

野沐沐
4楼-- · 2020-09-16 14:40

嘿莉莉,

实际上是个好消息-感谢您的努力!/p>

因此看来,原始帖子中的所有错误都是缺少

  initial = false
  

在修饰符标签中...

吹牛啤
5楼-- · 2020-09-16 14:32

嗨,

我们可以更改属性的持久性类型吗? 我无法在扩展项目类型中将其从"属性"类型更改为"动态"。 有什么建议吗?

谢谢阿比舍克

一周热门 更多>