查看ABAP Dictionary表字段值修改历史记录

在ABAP Dictionary 中如果一个Table 的 Technical Settings 中的 Log data changes 选项被选中, 那么这张表的数据修改情况将会被记录, 通过 t-code: SCU3 可以查看修改日志.

SAP会对系统中的很多对象的修改做记录, 记录数据放在CDHDR和CDPOS表中, 我们有两种方式可以获得这些数据:
1. FM: CHANGEDOCUMENT_READ_HEADERS and CHANGEDOCUMENT_READ_POSITIONS
2. Custom Selection. For example:
* Select update record about VBUK-CMGST from CDPOS table.
* CDPOS:Change document items
  c_objectclas = 'VERKBELEG'.
  SELECT objectid changenr tabname fname value_new value_old
    FROM cdpos
    INTO CORRESPONDING FIELDS OF TABLE it_cdpos_cr
    WHERE  objectclas = c_objectclas
           AND objectid = it_data-vbeln
           AND tabname IN ('VBUK')
           AND  fname  IN ('CMGST')
           AND  chngind  = 'U'.
 
  SORT it_cdpos_cr.
*The release time is stored in CDHDR table ,focus on corresponding record.
  DELETE ADJACENT DUPLICATES FROM it_cdpos_cr COMPARING ALL FIELDS.
  DESCRIBE TABLE it_cdpos_cr LINES sy-tmaxl.

  IF sy-tmaxl > 0.
    SELECT changenr udate utime objectid FROM cdhdr
         INTO CORRESPONDING FIELDS OF TABLE it_cdhdr_cr
         FOR ALL ENTRIES IN it_cdpos_cr
         WHERE objectclas = c_objectclas
                AND objectid     = it_cdpos_cr-objectid
                AND changenr  = it_cdpos_cr-changenr.
  ENDIF.
另外一个以前用到的场景:
根据objectclass, ojbectid到CDHDR中找到某个时间对object的修改, 再到CDPOS中找到oject被修改的新旧值.

这里有两点不是很清楚了:
1. 什么样的对象被修改数据会被存到这两张表? (一些主数据, ...好像有个什么设定)
2. 表对应的object class怎么得到? 根据Table name 到 CDPOS中来找当然是种办法,
其实这两个问题我以前是研究过的, 可现在碰到了又想不起来了.

你可能感兴趣的:(C++,c,C#)