使用默认属性初始化实体

2020-09-15 14:02发布

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

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


大家好,

我正在尝试创建一个扩展,以向我创建的每个实体自动添加两个属性%Name%+" Id"和%Name%+" Name"。 但是我没有做到,我怀疑这是由于缺乏知识,也许有人可以提供帮助。 我正在使用的脚本,遵循 https://archive.sap.com/discussions/thread/3558516 ,是

昏暗的我的小狗
 设置myattr = obj.Attributes.CreateNew
 myattr.name = obj.Name +" ID"
 myattr.code = obj.Code +" _ ID"
 myattr.comment = Now()
 myattr.datatype ="整数"
 暗淡的myattr2
 设置myattr2 = obj.Attributes.CreateNew
 myattr2.name = obj.Name +"名称"
 myattr2.code = obj.Code +" _ NAME"
 myattr2.comment = Now()
 myattr2.datatype ="整数" 

我已经创建了扩展,并且最初在Profile/Entity/Event Handlers中使用了Initialize事件处理程序。 这两个属性被创建为" Entity17 Id"和" Entity17 Name"。 然后我尝试了事件处理程序Validate,它以某种方式起作用。 问题在于,当我打开属性对话框时,不包含属性,但是当我关闭属性对话框时,不包含属性。 因此,我必须打开它,进行一些愚蠢的更改,例如在注释中添加一个空格,然后将其关闭,然后它才起作用。 但是,下次我打开属性对话框并再次关闭它时,它将尝试再次创建属性,因此失败。

有什么办法可以更好地做到这一点? 理想情况下,最佳方案是创建一个实体,然后更改默认名称,然后转到"属性"选项卡,找到已经创建的属性" myEntity Id"和" myEntitity Name"。

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

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


大家好,

我正在尝试创建一个扩展,以向我创建的每个实体自动添加两个属性%Name%+" Id"和%Name%+" Name"。 但是我没有做到,我怀疑这是由于缺乏知识,也许有人可以提供帮助。 我正在使用的脚本,遵循 https://archive.sap.com/discussions/thread/3558516 ,是

昏暗的我的小狗
 设置myattr = obj.Attributes.CreateNew
 myattr.name = obj.Name +" ID"
 myattr.code = obj.Code +" _ ID"
 myattr.comment = Now()
 myattr.datatype ="整数"
 暗淡的myattr2
 设置myattr2 = obj.Attributes.CreateNew
 myattr2.name = obj.Name +"名称"
 myattr2.code = obj.Code +" _ NAME"
 myattr2.comment = Now()
 myattr2.datatype ="整数" 

我已经创建了扩展,并且最初在Profile/Entity/Event Handlers中使用了Initialize事件处理程序。 这两个属性被创建为" Entity17 Id"和" Entity17 Name"。 然后我尝试了事件处理程序Validate,它以某种方式起作用。 问题在于,当我打开属性对话框时,不包含属性,但是当我关闭属性对话框时,不包含属性。 因此,我必须打开它,进行一些愚蠢的更改,例如在注释中添加一个空格,然后将其关闭,然后它才起作用。 但是,下次我打开属性对话框并再次关闭它时,它将尝试再次创建属性,因此失败。

有什么办法可以更好地做到这一点? 理想情况下,最佳方案是创建一个实体,然后更改默认名称,然后转到"属性"选项卡,找到已经创建的属性" myEntity Id"和" myEntitity Name"。

付费偷看设置
发送
5条回答
hengyuye
1楼 · 2020-09-15 14:13.采纳回答

这里有几个选项。

  1. 您可以将脚本添加为方法,对其进行增强以确保它不会尝试添加那些已经存在的属性。 现在将方法添加到菜单,以便您可以右键单击实体以添加属性
  2. 让模型验证为您完成。 添加一个自定义检查,如果缺少其中一个或两个属性,则该检查失败,并使用自动修复脚本将属性添加到属性集合中正确的位置(如果它们不存在的话)
SAP浪
2楼-- · 2020-09-15 14:14

非常感谢! 完美运作。

My梦
3楼-- · 2020-09-15 14:30

谢谢George McGeachie的回复。 但是,我对扩展PD的了解并不深。 我不知道如何实现选项2,但是至少我发现了如何创建代码

所建议的方法
 Sub%Method%(obj)
    '在上实现您的方法
 将我调暗为整数= 0
 对于obj.Attributes中的每个attr
 如果attr.name = attr.name = obj.Name +" Id",则
 我=我+ 1
 万一
 下一个属性
 如果我= 0
 暗淡的黑衣
 设置myattr = obj.Attributes.CreateNew
 myattr.name = obj.Name +" ID"
 myattr.code = obj.Code +" _ ID"
 myattr.comment = Now()
 myattr.datatype ="整数"
 万一
 设置我= 0
 对于obj.Attributes中的每个attr
 如果attr.name = attr.name = obj.Name +"名称",则
 我=我+ 1
 万一
 下一个属性
 如果= 0
 暗淡的myattr2
 设置myattr2 = obj.Attributes.CreateNew
 myattr2.name = obj.Name +"名称"
 myattr2.code = obj.Code +" _ NAME"
 myattr2.comment = Now()
 myattr2.datatype =" Varchar(50)"
 万一
 结束

但是我不怎么从右键单击菜单项中调用该方法。 我已经检查了元类实体的所有可能选项,但是我没有找到任何可以添加的右键菜单元素。 我浏览了文档,但这并不是很好,TBH。 你能给我一个提示吗? 我真的很感激。

追夢秋陽
4楼-- · 2020-09-15 14:23

也许您可以使用更好的Initialize事件处理程序。 它应该在实体创建期间创建您的属性。 而且,如果您想确保,您的属性会赢得

DafaDDDa
5楼-- · 2020-09-15 14:11

也许您可以使用更好的Initialize事件处理程序。 它应该在实体创建期间创建您的属性。 而且,如果您想确保以后不会删除您的属性,请将其与Validate处理程序结合使用(该操作如您正确编写的那样,在每次愚蠢的更改之后执行)。

Ondrej

一周热门 更多>