点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
我需要在每个非关键列之后插入一个后缀__BI(在iage之前)的新列。 该列和相应的__BI列需要在一起。 我对Powerdesigner宏比较陌生。 我尝试了以下代码,但在末尾插入了__BI列。 此外,它还会为键列创建__BI。
有什么建议吗?
谢谢。
[代码]
dim mdl,col,ggCol,选项卡集mdl = ActiveModel设置选项卡= ActiveSelection.Item(0)(tab)列'1)复制列集ggCol = tab.Columns.CreateNew ggCol.Code = col .Code&" __BI" ggCol.Name ="图像之前"和col.Name ggCol.DataType = col.DataType ggCol.Mandatory = col.Mandatory ggCol.Comment = col。在tab.Columns列中注释下一个'col
[/code]
Sunil
您可能有几种方法可以做不同的事情。
嗨苏尼尔,
此问题有两个部分。 您显然设法完成了第一个步骤,即创建了列。 您只需要避免键列。 您将在下面的示例脚本中找到操作方法。
第二部分是对列进行排序。 因此,一旦在表末尾插入了所有带有" __BI"后缀的列,就需要将这些列移到每个表的Columns集合中的适当位置/索引。 索引以0开头,因此具有5列的表的索引范围为0..4。 您可以使用下面随附的示例脚本。 问题在于,在同时浏览此集合的同时更改Columns集合成员(即Columns)的位置不是很好。 这意味着,仅当所有__BI列都位于每个表的最后时(如果使用当前脚本),才可以使用我的脚本。 如果您的__BI列分散在整个表中,则需要在每次移动后添加一些逻辑或破坏循环,然后一次又一次地运行直到所有列都被排序为止。
HTH,
Ondrej
您好 OndrejDiviš和乔治·麦基奇(George McGeachie),
感谢您的回复。 很高兴得知已经内置了诸如CreateNewAt等功能。!
使用您两个逻辑的片段,我能够构建一个初稿,该初稿跳过了PK和一些标准的SCD Type列,并进行了快速测试,发现它在首次创建时效果很好。 我的下一个目标是将来为任何新添加的列调整脚本,以便仅那些新列添加了__BI而不是已经添加__BI的那些。 如果您知道脚本编写中的NOT IN(list)等效项,这样我也可以在下面的代码中代替uCase(col.code)NOT IN(....)
(顺便说一句,您如何以格式化的方式粘贴代码?)
dim mdl,col,BICol,tab,j set mdl = ActiveModel j = j + 2
结束set tab = ActiveSelection.Item(0)j = 0
对于i = 0到tab.Columns.Count-1
输出" -------"
设置col = tab.Columns.Item(j)
'跳过为PK列和标准SCD类型列添加__BI列
如果col.Primary = false,并且uCase(col.code)<>" ROW_ACTIVE_IND"和uCase(col.code)<>" ROW_EFFECTIVE_DT"和uCase(col.code)<>" ROW_EXPIRATION_DT"然后'是否存在NOT IN(列表)等价于
设置BICol = tab.Columns.CreateNewAt(j + 1)
BICol.Code = col.Code和" __BI"
BICol.Name ="图像之前"&col.Name
BICol.DataType = col.DataType
BICol.Comment = col.Comment
'跳过刚刚添加的__BI列,否则它将为下一次迭代选择__BI
else < br>'无需跳过,因为未添加任何内容
j = j + 1
如果
next
感谢您的帮助!
致谢
Sunil
一周热门 更多>