• CDHDR & CDPOS


    一、sap的更改记录的保存

    1、所有的修改记录在CDHDR and CDPOS

    2、CDHDR

    CDHDR记录了用户于什么时间点用什么样的事务代码修改了什么样的对象

    CDHDR字段:Change doc. Object代了修改的对象

    常见的一些Change doc. Object如下

    Change doc. object

    描述

    AENNR

    ECM

    EINKBELEG

    采购订单

    INFOSATZ

    采购信息记录

    ADRESSE

    地址主数据

    ADRESSE3

    地址主数据

    LIEFERUNG

    发货单

    KRED

    供应商主数据

    COND_A

    价格条件

    DEBI

    客户主数据

    MATERIAL

    物料

    VERKBELEG

    销售凭证

    BOM的更改記錄, objectclas = 'STUE'

    3、CDPOS 是更改记录的行项目

    记录了具体是哪个中的哪个字段,从什么值修改为了什么值

    二、更改记录的报查询

    1、可以在t-code中点击changes,来进行查询;

    2、通过专门的t-code查询某个具体Change Object

    如OV51 查看:Display of Changes for Customer

        ME14 查看 changes to Purchasing Info Record

    3、通过事务代码AUT10 可以查询所有的Change Object,实际上就是针对上述2个做了一个报

    三、CDHDR and CDPOS更新原则

    1、创建时,系统的更新原则与更新内容。

    可以通过创建主数据、业务数据、创建业务数据项目来测试

    基本的结论是

    创建时一般不保存记录,即使保存,也只是简单记录一下,能够在上述2个"新建一条数据"

    2、修改数据时,系统的更新原则与更新内容。

    基本原则:以下类型的字段不会查看到更改记录

    •   不能够修改的字段,例如创建日期、创建者;
    •     在可以通过其他途径可以看到的字段(在其他中可以看到更改的东西);如在销售订单中,对行项目的数量、金额更改在VBEP(数量更改)、KONA(金额更改)中
    •       其他一些特殊情况

    具体的控制点是sap会对中的每一个字段都会有一个标记LOGFLAG,该字段控制Indicator for writing change documents

    具体案例如下:

        SAP的字段和对象的修改都会保存旧值,数据保存在CDHDR和CDPOS表中,对于提取旧值你可以采用两种方法

        1)使用sap的标准函数CHANGEDOCUMENT_READ_HEADERS 和CHANGEDOCUMENT_READ_POSITIONS

        2)使用select语句直接从表中读取。

        直接使用SELECT语句读取数据的示例:

        *提取信用额度字段修改的抬头信息
              select  cdhdr~changenr cdhdr~udate cdhdr~utime
                into  corresponding fields of table p_cdhdr
                from cdhdr
                where cdhdr~objectclas = 'KLIM' and
                  cdhdr~objectid = wa_customerinfo-kunnr.
              if sy-subrc = 0.
        *提取信用额度字段修改的字段值
                select cdpos~changenr cdpos~value_old cdpos~value_new
                  into corresponding fields of table  p_cdpos
                  from cdpos
                    for all entries in p_cdhdr
                  where cdpos~objectclas = 'KLIM' and
                    cdpos~objectid = wa_customerinfo-kunnr and
                    cdpos~changenr = p_cdhdr-changenr and
                    cdpos~tabname = 'KNKK' and
                    cdpos~fname = 'KLIMK'.
                if sy-subrc = 0.
               endif.
        endif.

        可以在CHANGEDOCUMENT_READ_HEADERS 中设置中断获得对象类型。

  • 相关阅读:
    OSEK简介
    线性代数-矩阵-【5】矩阵化简 C和C++实现
    线性代数-矩阵-转置 C和C++的实现
    线性代数-矩阵-【3】矩阵加减 C和C++实现
    线性代数-矩阵-【1】矩阵汇总 C和C++的实现
    线性代数-矩阵-【4】点乘 C和C++的实现
    线性代数-矩阵-【2】矩阵生成 C和C++实现
    数据结构-环形队列 C和C++的实现
    数据结构-二叉树 C和C++实现
    数据结构-单向链表 C和C++的实现
  • 原文地址:https://www.cnblogs.com/cnlmjer/p/4099808.html
Copyright © 2020-2023  润新知