提问人:Vishal Garg 提问时间:8/28/2019 最后编辑:Boghyon HoffmannVishal Garg 更新时间:10/15/2020 访问量:7847
在 CDHDR 和 CDPOS 表中留下跟踪的表列表
List of tables that leave traces in CDHDR and CDPOS tables
问:
我想捕获所有可能的 SAP 表的更改。
我发现了这一点,表格捕获了更改文档,但不清楚它针对哪些所有表格都这样做。CDHDR
CDPOS
我有几个问题要问:
- 获取其捕获的所有表的列表
更改文档。
CDHDR
CDPOS
- 由于表仅包含更改的字段,我需要将其映射到
表的主键。如何使用主键映射更改的记录
一张桌子?
CDPOS
答:
为了纯粹回答你的问题,我当然可以告诉你查看 t 代码以获得你需要什么的线索,但我会选择挑战你的推理方法。因此,您需要捕获所有可能的 SAP 表的更改。出于什么目的?和 跟踪了数以千计的 SAP 表,其中的大多数表不会立即为您带来业务价值。每当表列具有类似 和 的数据元素时,它就会出现在 中,因为该元素被标记为“更改文档”标志(t 代码):SCDO
CDHDR
CDPOS
BELNR_D
GJAHR
CDHDR
SE11
SAP对标志的解释是:
变更文档的标志指定在涉及变更文档对象时,是否记录对引用此数据元素定义的数据库表中字段的更改。
因此,由于跟踪了数千个表,纯粹从技术方面解决问题并不是一个好主意,我们甚至还没有开始研究性能问题。CDHDR
CDPOS
如果你的需求是数据仓库项目的一部分,那么没有处理和的麻烦,你可以通过透明表或标准提取器来分析增量插入、删除和更新。如果您可以使用数据库触发器,那么 SLT 也可以是一个选项,可以几乎实时地获取您感兴趣的表上的更改记录(默认设置为 5 秒延迟)。CDPOS
CDHDR
总而言之,要获得所需的内容,您可以导航到 SAP 菜单 - 工具 - ABAP Workbench - 其他工具 - 更改文档,或者只是 t 代码 。但是,我上面对业务需求的评论是我真正想要表达的。SCDO
评论
为什么不运行以获取所有表的实际列表?我想这应该足够了,因为您的 SAP 系统已经运行了一段时间。如果你自己做不到,那就问别人,一劳永逸。SELECT DISTINCT tabname FROM cdpos
在表 中,从列 中获取对象的 ID。如果主键由多列组成,则为字符值的串联,其对齐方式基于每列大小。我不确定,但我想主键列(由 CDPOS 的 TABNAME 引用的表)总是具有字符类型。CDPOS
TABKEY
TABKEY
可以使用以下 SQL 查询从 ABAP 字典中提取一个表的主键列:(以点开头的列名用于内部内容)。SELECT fieldname, leng FROM dd03l WHERE tabname = 'one_table' AND fieldname LIKE '.%' AND keyflag = 'X' ORDER BY position
评论