点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好
有什么方法可以更改表映射的源对象? 我需要将现有映射的源对象切换到新的源表(具有完全相同的列集)。 使用我的模型(见图01)
我尝试以下操作:
仅在目标模型中更改表示源表的快捷方式的TargetObject是不够的(请参见图02,缺少行,映射中的源表不可用)。
sourceTab.ChangeTargetObject NewSourceTable
因此,我尝试先将新的源模型插入到适当的DataSource的SourceModels集合中(在TargetModels集合中创建新的源模型),然后手动将新的源表的快捷方式创建到目标模型中。 结果是相同的,所有这些都没有帮助(参见图02)。
ds.SourceModels.Insert -1,newSourceMdl 设置newShortcut = newSourceTable.CreateShortcut(Mapping.Package) sourceTab.ChangeTargetObject NewSourceTable
所以我的问题是,是否可以将TableMapping的源表从一个源表更改为另一个(在不同模型中)? 还是我必须用新的源复制TableMapping,然后删除原始映射? 如果我成功完成TableMapping,如何处理ColumnMappings? 当我修改父对象时,它们将/应该消失。
预先感谢您的任何建议,
Ondrej
01-starting-point.jpg (37.1 kB)
要使changeTargetObject起作用,您需要确保从映射创建的快捷方式显示在当前模型中。默认情况下,该符号是隐藏的。 转到符号->显示/隐藏符号。 检查符号。
或者您可以运行以下脚本:(表_1是映射创建的快捷方式)
对于activeModel.tables中的每个tbl
如果tbl.name =" Table_1"和tbl.IsShortCut()则
如果activeDiagram.findSymbol(tbl)则为
activeDiagram.attachObject (tbl)
否则,对于tbl.symbols
symbol.hidden = false
中的每个符号
如果
tbl.ChangeTargetObject NewSourceTab,则假
结束
结束
下一个
ChangeTargetObject有两个参数。 我想第二个应该允许保留列映射,如果值是false,但是不可以。
工作。 因此,您必须编写代码才能进行列映射。
幸运的是,这并不难。 在执行以上代码之前,您可以运行以下代码以获取列映射信息
ActiveModel.GetCollectionByKind PdPdm.cls_TableMapping,TableMappings
对于TableMappings中的每个tabMap
设置columnMaps = tabMap.columnMaps
对于columnMaps中的每个colMap
输出colMap.Column.name&"映射到"&colMap.mappedTo
下一个
下一个
存储映射信息,创建列映射。
嗨,菲利普,
感谢您的反应。 您是否100%确定,要使ChangeTargetObject工作,我必须在图上显示源表的快捷方式的符号?
我知道,我总是可以手动重新创建/复制映射 (当然,按脚本),但这是我最后的操作方法,因为发生错误的可能性很高,否则我将在重新创建映射时忽略某些内容。
Ondrej
一周热门 更多>