SAP 变更记录表 : CDHDR / CDPOS - 说明及使用

2023-11-03

From: 

1, http://blog.sina.com.cn/s/blog_7dce1fac01014yp2.html

2, http://www.cnblogs.com/cnlmjer/archive/2012/04/18/4099808.html

3,http://www.sap123.com/a/47/

目的:

一、sap的更改记录的保存

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

2、表CDHDR

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

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

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

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

如需查看文档对象,可使用事务代码SCDO,相关表为TCDOB/TCDOBT

CHNGIND(修改标识符)输入:D(U表示更新,I表示插入,E表示删除单个字段,D表示删除整行或整个单据)

二、更改记录的报查询

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

如何使用

简单指引:
1, 将 Key Doc No. ( 如: SO No. / PO No. 等)作为 Object_ID 在 CDHDR 中查询出相关的Object Class 及 CHANGENR 变更号码及日期等信息;
2,基于已知或查出的 Object Class 及 Changenr 及 Table Name / Field Name 即可查询历史记录,如要细化,则需使用 TableKey 过行组合查询;
3,其中 Table Name 有时会和实际的表名不一致,需使用一些方法查出。

Change SAP documents -- tables CDHDR and CDPOS

This notes relates to SAP ECC (ERP Central Component) 5.0 

Changes to a lot of SAP documents are stored in table CDHDR and table CDPOS. This include changes such as: change data in Material Master, changes to Purchase Req (PR), Purch Orders, Contracts, Sales Orders, and many more. 

Lets look at an example where an existing purchase order (PO) is changed. 
  • Create a PO (number 4500000616) 
  • Now lets make a change to the PO. Lets change the Short text in item 10 from "FLOWERS" to "SAP123".
 


The change information can be see in Purchase Order. Menu:  Environment > Item Changes 

 


This changed information are stored in table CDHDR and table CDPOS. Lets see if we can find it by displaying the table using transaction se16 (display table): 

 


 

The detail of what was changed is in table CDPOS. The link is via the document number, field CHANGENR. Lets look at table CDPOS 

 


 


These tables contains not just PO changes but changes to most SAP documents (accross all functional areas). So, as you can imagine these tables get huge. Entries in tables are grouped by Object Class (field OBJECTCLAS -- Change doc object). Some of these options include: 


OBJECTCLAS - transaction (fields in CDHDR) 
  • ADRESSE - xk01 
  • ADRESSE3 - su01 
  • BANF - me54n 
  • BELEG - vf21 
  • BETRIEB - vd02 
  • COND_A - me31k 
  • DEBI - xd01, xd02 
  • EINKBELEG - me22n <<< example above 
  • ENTRYSHEET - ml85 
  • FEATURE - ct04 
  • INCOMINGINVOICE - mrbr 
  • INFOSATZ - me13 
  • KLASSE - cl02 
  • KRED - xk02 
  • LIEFERUNG - vl03n 
  • MATERIAL - mm01 
  • MM_SERVICE - me22n 
  • MRP_AREA - mm01 
  • NRINTERVAL - omh6 
  • PFCG - pfcg 
  • REVISION - me32k 
  • SACH - fs00 
  • SPEC_TMP - ml10 
  • STLV - ml02 
  • VASMD - ac03 
  • VERKBELEG - va02 
  • .... etc


提取旧值方法



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


CALL FUNCTION 'CHANGEDOCUMENT_READ_POSITIONS' "Change document: Read change document items 
EXPORTING 
*   archive_handle = 0          " sy-tabix      Handle on Open Archive Files 
    changenumber =              " cdpos-changenr  Change document number 
*   tablekey = SPACE            " cdpos-tabkey  Object class table key 
*   tablename = SPACE           " cdpos-tabname  Object class table name 
*   tablekey254 = SPACE         " cdpos_uid-tabkey  Table Key for CDPOS in Character 254 
*   keyguid = SPACE             " cdpos_uid-keyguid  UUID in Character Format 
*   keyguid_str = SPACE         " cdpos_str-keyguid  UUID in Character Format 
IMPORTING 
    header =                    " cdhdr   Change document header (structure CDHDR) 
   et_cdred_str =              " cdred_str_tab  Additional Change Document - Table for STRINGs 
* TABLES 
*   editpos =                  " cdshw     Table with edited change document items 
EDITPOS_WITH_HEADER =               "CDRED  更改文档,显示结构 
 EXCEPTIONS 
NO_POSITION_FOUND = 1       "               No item foun 
 WRONG_ACCESS_TO_ARCHIVE = 2  "              incorrect access to archive 
 


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 中设置中断获得对象类型。


ex.


提取有变动的 Acc. changes
SELECT SINGLE tabkey value_new INTO (cdpos-tabkey,ikoinh)
FROM cdpos
WHERE objectclas = 'KRED'
AND objectid = itab-lifnr
AND changenr = itab-changenr
AND tabname = 'LFBK'
AND fname = 'KOINH'.


提取有变动的vendor最新日期


SELECT MAX( udate ) INTO itab-cndate FROM cdhdr
WHERE objectclas = 'KRED' AND objectid = itab-lifnr.


--------------------------------------------------------------------------------


抓取所有有变动的程序


report ztest001.
TYPE-POOLS slis.
DATA : cdhdr TYPE cdhdr.
SELECT-OPTIONS :
s_objcls FOR cdhdr-objectclas OBLIGATORY,
s_objtid FOR cdhdr-objectid,
s_chngnr FOR cdhdr-changenr,
s_usrnam FOR cdhdr-username DEFAULT sy-uname,
s_udate FOR cdhdr-udate DEFAULT sy-datum,
s_time FOR cdhdr-utime,
s_tcode FOR cdhdr-tcode,
s_plncnr FOR cdhdr-planchngnr,
s_chngno FOR cdhdr-act_chngno,
s_wsplnd FOR cdhdr-was_plannd,
s_chngid FOR cdhdr-change_ind.


SELECTION-SCREEN SKIP.
PARAMETERS p_max TYPE numc3 OBLIGATORY DEFAULT '200'.


*---------------------------------------------------------------------*
TYPES :
BEGIN OF ty_s_cdhdr.
INCLUDE STRUCTURE cdhdr.
TYPES : checkbox,
END OF ty_s_cdhdr,


BEGIN OF ty_s_cdpos.
INCLUDE STRUCTURE cdpos.
TYPES : checkbox,
END OF ty_s_cdpos.


*---------------------------------------------------------------------*
DATA :
* Layout for ALV
gs_layout TYPE slis_layout_alv,
* Change document header
t_cdhdr TYPE TABLE OF ty_s_cdhdr.


*---------------------------------------------------------------------*
START-OF-SELECTION.


* Read Change document header
SELECT * INTO TABLE t_cdhdr
UP TO p_max ROWS
FROM cdhdr
WHERE objectclas IN s_objcls
and objectid in s_objtid
and changenr in s_chngnr
AND username IN s_usrnam
AND udate IN s_udate
AND utime IN s_time
AND tcode IN s_tcode
AND planchngnr IN s_plncnr
AND act_chngno IN s_chngno
AND was_plannd IN s_wsplnd
AND change_ind IN s_chngid.


gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.
gs_layout-box_fieldname = 'CHECKBOX'.


* Display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'CDHDR'
is_layout = gs_layout
TABLES
t_outtab = t_cdhdr.


*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
FORM user_command USING u_ucomm TYPE syucomm
us_selfield TYPE slis_selfield. "#EC CALLED


* Macro definition
DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
ls_sort-up = 'X'.
append ls_sort to lt_sort.
END-OF-DEFINITION.


DATA :
ls_cdhdr TYPE ty_s_cdhdr,
ls_sort TYPE slis_sortinfo_alv,
lt_sort TYPE slis_t_sortinfo_alv,
* Change document items
lt_cdpos TYPE TABLE OF ty_s_cdpos.


CASE u_ucomm.
WHEN '&IC1'.
PERFORM check_marked USING us_selfield.


* Read Change document items
LOOP AT t_cdhdr INTO ls_cdhdr WHERE checkbox = 'X'.
SELECT * APPENDING TABLE lt_cdpos
FROM cdpos
WHERE objectclas = ls_cdhdr-objectclas
AND objectid = ls_cdhdr-objectid
AND changenr = ls_cdhdr-changenr.
ENDLOOP.


m_sort 'CHANGENR'.


* Display ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = 'CDPOS'
is_layout = gs_layout
it_sort = lt_sort
TABLES
t_outtab = lt_cdpos.


ENDCASE.


ENDFORM. " USER_COMMAND
*--------------------------------------------------------------------


FORM check_marked USING us_selfield TYPE slis_selfield.


FIELD-SYMBOLS :
<cdhdr> TYPE ty_s_cdhdr.


READ TABLE t_cdhdr TRANSPORTING NO FIELDS WITH KEY checkbox = 'X'.
IF NOT sy-subrc IS INITIAL AND
NOT us_selfield-tabindex IS INITIAL.
READ TABLE t_cdhdr INDEX us_selfield-tabindex ASSIGNING <cdhdr>.
<cdhdr>-checkbox = 'X'.
ENDIF.


ENDFORM.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SAP 变更记录表 : CDHDR / CDPOS - 说明及使用 的相关文章

  • sap上传excel文档字符限制处理

    abap中有多个函数处理上传的excel文档中的数据 xff0c 记录数据的信息 xff08 行 列 值 xff09 如 xff0c 函数KCD EXCEL OLE TO INT CONVERT xff1a data lt data in
  • SAP接口设计的扩展性考虑

    由于现在的系统和SAP的接口出现了几次变更 xff0c 因此需要对系统进行设计改造 由于系统中和SAP交互的接口不止一处 xff0c 而且也是在不同的时间段进行开发 xff0c 并由不同的人员来完成的 xff0c 因此我在维护升级的过程中
  • SAP smartforms 打印失败 消息类型:SSFCOMPOSER 消息号:601 (货币和数字字段设置参考及格式)

    首先先感谢大佬 上连接 SAP smartforms 打印失败 首先说一下问题 在全局给的变量 在表中找不到 就是这两个参数 类型QUAN 报错信息 消息类型 SSFCOMPOSER 消息号 601 然后渠道se91查找该消息表示并搜索消息
  • SAP-PI/PO ICO中增加过滤条件

  • SAP HR模块配置假期日历和缺勤类型

    目录 一 配置假期日历 二 配置缺勤信息类型 2 1 定义缺勤类型 2 2 定义缺勤的计算规则 2 3 分配缺勤计算规则到缺勤类型 一 配置假期日历 SAP的HR模块中 xff0c 业务顾问在实施的时候一般会配置未来10年的假期日历 xff
  • SAP创建webservice

    目录 一 创建webservice 二 更改webservice 三 SoapUI测试webservice 四 查看webservice日志及排错 一 创建webservice 以用户相关的函数User为例创建webservice xff0
  • sap系统ftp服务器下文件,SAP中如何使用FTP传递文件

    1 FTP介绍 FTP File transfer protocol 是一种标准的网络协议 xff0c 可以用于在互联网上传递文件 SAP系统中提供了一些标准函数 xff0c 放在函数组SFTP中 xff0c 除此之外 xff0c sap还
  • ABAP 关于BAPI的EXTENSIONIN 一点解释

    其实EXTENSIONIN 相当于BAPI的一种增强 可以这样理解 要传一下BAPI本身没有的数据 比如 自己增加的 或者是关联过来的数据 BAPI没有给提供这样的字段 那么就要自己去找了 首先要找到增强的结构 比如 BAPI REQUIS
  • ABAP对excel的操作(为单元格设置公式)

    文章目录 前言 一 效果 二 代码 前言 给单元格设置公式 一 效果 运行程序 执行 excel效果 二 代码 代码如下 示例 Report ZDEMO EXCEL6
  • JAVA与RFID,技术改变世界

    Sun Java系统RFID软件已经发布 并做出了若干重要改进 与SAP Auto ID架构集成 与Java 综合应用平台套件 Java Composite Application Platform Suite 集成 支持JAVA平台 微版
  • 创建利润中心在利润中心组选择时提示不存在利润中心组

    已经KCH1创建好利润中心组的情况下KE51选刚才创建好的利润中心组依然会有如题这样的提示 原因是没有0KE5进行成本控制范围设置 如图下图 设置好后再KE51创建利润中心就可以了
  • 一段程序:SAP使用ODI方法为WORD填充数据

    未做测试 仅记备查 原文地址 http blog sina com cn s blog 3eefd36c01008cmz html 原理 通过 CALL METHOD DOCUMENT gt GET MAIL MERGE INTERFACE
  • ABAP BAPI_ACC_DOCUMENT_POST创建会计凭证

    记录下项目过程中用到BAPI ACC DOCUMENT POST时的问题 1 凭证货币与本币 不一致时 在curr type 里区分本币金额和凭证金额 汇率会自己换算 如果不区分本币和凭证货币 在处理外币时 报错消息如下 Inconsist
  • SAP创建采购申请 报错MEPO082

    原因是系统标准功能要求手工创建PR需要有评估价格 将此字段屏幕格式设置为显示可避免此问题
  • SAP MM学习笔记31 - 已割当供给元的购买依赖

    上次学习了未割当供给元的购买依赖 未分配供应商采购申请 咱们本章来学习一下 已割当供给元的购买依赖如何处理 SAP MM学习笔记30 未割当供给元的购买依赖 东京老树根的博客 CSDN博客 如下图所示 利用 购买依赖割当一览 手动 从购买依
  • sap doi技术操作excel的方法

    OLE是和微软OFFICE做接口 比较老的技术 DOI是SAP自己搞的 相对是后出来的技术 同样可以操作EXCEL 有一些方法 get sheets select range cell format set ranges format 等等
  • FB02编辑Coding Block字段

    默认情况下FB02是不允许更改coding block的增强字段的 需要实现可编辑需要进行两个步骤 1 实施note 3067143 2 SM30在视图TCOBX中对增强字段添加以下配置 前台效果
  • FICO F.27 Customer statement 打印

    需求 定制化打印 替换标准的F 27打印 类似于采购订单的打印 但是略有不同 查阅资料之后步骤如下 T code F 27 is SAP standard program to produce customer vendor corresp
  • SAP创建采购申请的时候供货源信息不完整

    如图所示 原先该物料的对应的供应商的采购信息记录已经维护好 货源清单也已经创建 但是在ME51N创建采购申请的时候发现红色框的供应商是没显示出来的 首先检查货源清单ME01 数据维护完整 然后返回到ME11采购信息记录中发现 有必填项没有维
  • 配置SAP用户密码策略(不用重启服务器的方法)

    最近公司审计 给我们提出了要优化密码策略的建议 原因是我们的密码策略太简单了 我稍稍研究了一下 之前是通过RZ10来配置 但是这种方法需要重启服务器 这就比较麻烦 其实有一种方法是通过配置密码策略 不要要重启的方法 事务代码 SECPOL

随机推荐

  • 探索Vue组件通信的秘密:打破隔阂,实现数据共享

    一 Vue组件通信 每个组件都有自己的数据 提供在data中 每个组件的数据是独立的 组件数据无法互相直接访问 合理的 但是如果需要跨组件访问数据 就需要用到组件通信 要是有一万个商品 就要写一万个吗 函数调用 看起来调用时用一个函数 执行
  • js new Promise的基本用法

    function easyShare config return new Promise resolve reject gt try if config true console log 11 config setTimeout gt re
  • 2021秋招复习——CSS

    目录 文章目录 选择器 float布局 position定位 flex布局 水平垂直居中 水平居中 行内元素 块级元素 垂直居中 行内元素 块级元素 BFC 盒模型 CSS3动画 回流 重排 和重绘 响应式布局 选择器 选择器主要包括 选择
  • matlab求解正负因子目标规划,matlab学习系列27多目标规划.docx

    matlab学习系列27多目标规划 docx 27多目标规划一 线性规划的局限性1线性规划要求所求解问题必须满足全部的约束 而实际问题中并非所有约束都需要严格的满足 2线性规划只能处理单目标的优化问题 从而对一些次目标只能转化为约束处理 而
  • AngularJS 截取字符串

    In HTML Template Binding 在HTML的模板绑定中 limitTo expression limitTo limit begin In JavaScript filter limitTo input limit beg
  • 计算机开机键盘屏幕无反应,电脑开机后键盘显示器无反应怎么解决

    电脑开机后主机灯正常 有风扇和机器声音 但是键盘显示器都没有反应 这是怎么回事呢 电脑开机后键盘显示器无反应怎么解决呢 下面学习啦小编就为大家带来了解决电脑开机后键盘显示器无反应的方法 电脑开机后键盘显示器无反应解决方法一 开机状态下把鼠标
  • 机器学习(五):高斯朴素贝叶斯(基础篇)

    机器学习 五 高斯朴素贝叶斯 基础篇 在高斯朴素贝叶斯中 每个特征都是连续的 并且都呈高斯分布 高斯分布又称为正态分布 图画出来以后像一个倒挂的钟 以均值为轴对称 如下图所示 GaussianNB 实现了运用于分类的高斯朴素贝叶斯算法 特征
  • SQLyog出现错误代码1045

    直接修改mysql的密码即可
  • Elasticsearch 常见的 8 种错误及最佳实践

    Elasticsearch 社区有大量关于 Elasticsearch 错误和异常的问题 深挖这些错误背后的原因 把常见的错误积累为自己的实战经验甚至是工具 不仅可以节省我们的开发和运维时间 而且可以帮助确保 Elasticsearch 集
  • matlab批量读入dat数据,并将dat数据转换为tiff格式

    将dat数据 序号1 1500 读入matlab 并将其转换为 png格式 代码参考如下 clear close all num 1500 待读入的dat数量 addpath K 科目2 2 train dat dat 文件夹 cd K 科
  • Nginx 使用---拒绝指定IP访问

    一 问题描述 服务器可能会受到攻击者的恶意访问 攻击者IP会不断的猜测路径 上传文件 木马 或者进行短信消耗 或者破解密码 等等行为 我们要做的是 对这些恶意的访问IP进行拦截 二 Nginx的日志格式 因为首先一定是要查看日志的 所以首先
  • Oracle入门笔记(六)——多表查询

    多表查询 1 多表查询概览 2 基础多表查询 3 SQL99标准的外连接 4 Oracle自定义的外连接 5 SQL99标准的交叉连接 6 SQL99标准的自然连接 7 SQL99标准的内连接 8 子查询 9 union和intersect
  • 刷爆 LeetCode 双周赛 100,单方面宣布第一题最难

    上周末是 LeetCode 第 100 场双周赛 你参加了吗 这场周赛整体没有 Hard 题 但是也没有 Easy 题 第一题国服前百名里超过一半人 wa 很少见 小彭的技术交流群 02 群来了 公众号回复 加群 加入我们 周赛概览 259
  • Python学习32:计算圆周率——无穷级数法

    描述 是个超越数 圆周率的超越性否定了化圆为方这种尺规作图精确求解问题的可能性 有趣的是 可以用无穷级数表示 左边的展式是一个无穷级数 被称为莱布尼茨级数 Leibniz 这个级数收敛到 4 它通常也被称为格雷戈里 莱布尼茨级数 用以纪念莱
  • RabbitMQ的简单使用、轮询

    视频地址 首先创建一个工程 首先创建一个空的工程 在空的工程里面创建一个maven工程 加入依赖
  • 工具详解-sqlmap使用详解

    sqlmap使用详解 简介 sqlmap是一款基于python编写的渗透测试工具 在sql检测和利用方面功能强大 支持多种数据库 一 SQLMap拖库 SQLMap可以完成注入点的发现 数据库类型的确认 WebShell权限和路径的确认 拖
  • JAVA异常详解

    异常的定义 异常就是有异于常态 和正常情况不一样 有错误出现 在java中 阻止当前方法或作用域的情况 称之为异常 异常的分类 Error 是程序中无法处理的错误 表示运行应用程序中出现了严重的错误 此类错误一般表示代码运行时JVM出现问题
  • java中Collection(集合)

    文章目录 集合 Collection 一 集合的分类 二 集合的特点 三 集合的访问 四 List 1 List 接口方法 2 List的实现方式 1 List接口提供的of 方法 2 ArrayLIst 3 LinkList 3 遍历Li
  • 汇编语言(王爽第三版)实验八

    实验八 题目与个人思路 分析下面的程序 在运行前思考 这个程序可以正确返回吗 运行后再思考 为什么是这种结果 通过这个程序加深对相关内容的理解 assume cs codesg codesg segment mov ax 4c00h int
  • SAP 变更记录表 : CDHDR / CDPOS - 说明及使用

    From 1 http blog sina com cn s blog 7dce1fac01014yp2 html 2 http www cnblogs com cnlmjer archive 2012 04 18 4099808 html