表映射-源对象更改

2020-09-19 15:01发布

         点击此处--->   EasySAP.com群内免费提供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)

         点击此处--->   EasySAP.com群内免费提供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)
付费偷看设置
发送
2条回答
nice_wp
1楼-- · 2020-09-19 15:28

要使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

下一个

下一个

存储映射信息,创建列映射。

微wx笑
2楼-- · 2020-09-19 15:29

嗨,菲利普,

感谢您的反应。 您是否100%确定,要使ChangeTargetObject工作,我必须在图上显示源表的快捷方式的符号?

我知道,我总是可以手动重新创建/复制映射 (当然,按脚本),但这是我最后的操作方法,因为发生错误的可能性很高,否则我将在重新创建映射时忽略某些内容。

Ondrej

一周热门 更多>