在 CDHDR 和 CDPOS 表中留下跟踪的表列表

List of tables that leave traces in CDHDR and CDPOS tables

提问人:Vishal Garg 提问时间:8/28/2019 最后编辑:Boghyon HoffmannVishal Garg 更新时间:10/15/2020 访问量:7847

问:

我想捕获所有可能的 SAP 表的更改。

我发现了这一点,表格捕获了更改文档,但不清楚它针对哪些所有表格都这样做。CDHDRCDPOS

我有几个问题要问:

  1. 获取其捕获的所有表的列表 更改文档。CDHDRCDPOS
  2. 由于表仅包含更改的字段,我需要将其映射到 表的主键。如何使用主键映射更改的记录 一张桌子?CDPOS
AAP HANA SAP-ERP SAP-CLOUD-CONNECTOR

评论


答:

3赞 AecorSoft 8/29/2019 #1

为了纯粹回答你的问题,我当然可以告诉你查看 t 代码以获得你需要什么的线索,但我会选择挑战你的推理方法。因此,您需要捕获所有可能的 SAP 表的更改。出于什么目的?和 跟踪了数以千计的 SAP 表,其中的大多数表不会立即为您带来业务价值。每当表列具有类似 和 的数据元素时,它就会出现在 中,因为该元素被标记为“更改文档”标志(t 代码):SCDOCDHDRCDPOSBELNR_DGJAHRCDHDRSE11enter image description here

SAP对标志的解释是:

变更文档的标志指定在涉及变更文档对象时,是否记录对引用此数据元素定义的数据库表中字段的更改。

因此,由于跟踪了数千个表,纯粹从技术方面解决问题并不是一个好主意,我们甚至还没有开始研究性能问题。CDHDRCDPOS

如果你的需求是数据仓库项目的一部分,那么没有处理和的麻烦,你可以通过透明表或标准提取器来分析增量插入、删除和更新。如果您可以使用数据库触发器,那么 SLT 也可以是一个选项,可以几乎实时地获取您感兴趣的表上的更改记录(默认设置为 5 秒延迟)。CDPOSCDHDR

总而言之,要获得所需的内容,您可以导航到 SAP 菜单 - 工具 - ABAP Workbench - 其他工具 - 更改文档,或者只是 t 代码 。但是,我上面对业务需求的评论是我真正想要表达的。SCDO

评论

0赞 Vishal Garg 8/29/2019
感谢您的回复。我的用例是捕获用于分析目的的更改,我需要自动化此过程,因此我使用的是 JDBC。我对你的回答还有一些疑问:1.正如你所说,CDHDR中出现的表格中有像BELNR_D和GJAHR这样的标志,我怎样才能得到所有这些标志的列表?我不认为这些标志是表列的一部分。2. 我是否需要手动启用表格的更改文档标志,或者默认情况下启用它?3. 您对使用主键映射记录有什么建议吗,这是我在原始问题中的第二个查询?
0赞 AecorSoft 8/29/2019
当你使用 SE11 或 SE12 打开表模式(例如 BKPF)时,请在“数据元素”列下查看,你会发现像 BELNR_D.您不应手动启用或禁用它。这是一个系统设置,告诉您该表可能已更改 CDHDR 和 CDPOS 中的记录。如果我们仍然以会计文档为例,根据经验,您会知道它的变更文档是 BELE*,就像 BELEG 一样(可以在 SCDO 中确认)。然后,在 CDHDR 中,使用 OBJECTCAS 中的“BELEG”来获取 OBJECTID 列表,您可以使用 CDPOS 对其进行筛选以获取更改的详细信息。
0赞 AecorSoft 8/29/2019
我仍然认为您应该研究源表级别的增量加载。例如,如果您处理会计凭证,则增量已经被提取器0FI_GL_4很好地跟踪,这比 BKPF/BSEG 提取更易于使用。对于销售订单,表比物流提取器更容易访问。我在我们公司网站的博客区域写了一些关于这个主题的主题。
1赞 Sandra Rossi 8/30/2019 #2

为什么不运行以获取所有表的实际列表?我想这应该足够了,因为您的 SAP 系统已经运行了一段时间。如果你自己做不到,那就问别人,一劳永逸。SELECT DISTINCT tabname FROM cdpos

在表 中,从列 中获取对象的 ID。如果主键由多列组成,则为字符值的串联,其对齐方式基于每列大小。我不确定,但我想主键列(由 CDPOS 的 TABNAME 引用的表)总是具有字符类型。CDPOSTABKEYTABKEY

可以使用以下 SQL 查询从 ABAP 字典中提取一个表的主键列:(以点开头的列名用于内部内容)。SELECT fieldname, leng FROM dd03l WHERE tabname = 'one_table' AND fieldname LIKE '.%' AND keyflag = 'X' ORDER BY position

评论

0赞 AecorSoft 8/30/2019
桑德拉,感谢您对我回复的编辑!关于主键数据类型的一个小评论:我在 DD03L 表中进行了搜索,发现主键类型可以包括十六进制 (x)、字符串 (g)、浮点 (F) 等非字符类型,以及 N、D、T 等常见类型,它们实际上是底层数据库中的字符。
0赞 Sandra Rossi 8/30/2019
@AecorSoft我的意思是[CDPOS的TABNAME引用的表列]“始终具有字符类型”。答案已更新。