sap的字段和对象的修改都会保存旧值,数据保存在CDHDR和CDPOS表中,提取旧值可以采用两种方法这两个表,第一个表类似于表头(HEADER),第二个是具体内容(ITEM)通过表CDHDR的字段tcode,可以找到指定事务的所有更改记录(更改的T-CODE),如事务:MM02,找到的记录中的OBJECTID就是存放物料ID,然后根据记录到表到CDPOS就可以查找到具体哪些字段的值发生变化,而且还记录了字段发生前后的值

TABLENAME 和 FNAME 可以记录具体的表的具体的字段的更改的记录。也通过这种方法修改字段,可以找表和字段。

tabname = 'LFBK'  fname = 'KOINH'.

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

SAP保存操作记录CDHDR和CDPOS表,通过修改屏幕字段,查找SAP字段表和字段相关推荐

  1. SAP保存操作记录CDHDR和CDPOS表

    转载自http://hi.baidu.com/derrial/item/4eb7c5da614ed83c49e1dd0b (在此基础上做了修改) sap的字段和对象的修改都会保存旧值,数据保存在CDH ...

  2. 查看历史操作记录(.bash_history)、修改文件时间

    查看历史操作记录: 1.more  ~/.bash_history 修改文件时间: 1.stat XXX.txt 查看文件时间状态: 2.vi XXX.txt 修改文件内容,保存: 3.touch - ...

  3. linux服务器查看历史,Linux服务器记录并查询历史操作记录

    Linux服务器在使用过程中,经常会有除自己之外的其他人员使用.并不是每个人都对Linux服务器特别熟悉,难免会有一些操作导致服务器报错. 因此,监控Linux服务器的操作并记录下来,是非常有必要的! ...

  4. Mycat 读写分离、主从切换、分库分表的操作记录

    Mycat 读写分离.主从切换.分库分表的操作记录 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等 ...

  5. Mycat读写分离、主从切换、分库分表的操作记录 https://www.cnblogs.com/kevingrace/p/9365840.html

    [此篇文章写得不错] 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问 ...

  6. 利用Oracle GoldenGate记录源系统所有表的操作

    通过goldengate,可以实现目标表和源表不同结构之间的实时复制,包括记录源系统所有表的变更操作,供ETL或其它审计系统使用. 记录信息包括表名.操作时间.操作SCN,事务标记,操作类型到一个流水 ...

  7. 数据库概念 MySQL 库操作 表操作 记录操作

    什么是数据(Data)? 数据就是描述事物的符号记录称为数据 什么是数据库(DB)? 数据库就是存放数据的仓库,不过这个仓库是在计算机存储设备上的,而且数据是按一定的格式存放的 数据库管理系统(DBM ...

  8. oracle中查找某用户执行某张表的操作操作记录

    1,首先查找表的操作记录 select * from v$sqlarea a where a.SQL_TEXT like '%TB_ACCT_SYSDATE%'; 2,从上面的记录中找到update语 ...

  9. ubuntu 保存命令行操作记录

    ubuntu 保存命令行操作记录 前言 开始 结束 前言 最近学习使用linux比较多,但是好多东西在输入过之后需要保存过程,很是苦恼,特别是遇到一些bug的时候没有及时记录,马上就不知的被甩到哪里了 ...

最新文章

  1. [VC++入门]指针一
  2. Mysql 死锁过程及案例详解之记录锁与间隔锁Record Lock Gap Lock
  3. 网站外链查询接近100%精确的方法
  4. ConcurrentHashMap的源码分析-高低位原理分析
  5. Thread.sleep还是TimeUnit.SECONDS.sleep
  6. 前端学习(1300)报错:无法加载文件 D:\nodejs\node_global\webpack.ps1,因为在此系统上禁止运行脚本...
  7. 怎样查看电脑系统版本_用什么软件查维修记录 思域HATCHBACK怎样查询维保记录_汽车事故车查询...
  8. python逐行写入文件_python逐行读写txt文件的实例讲解
  9. Stacked injection--堆叠注入--堆查询注入
  10. Springboot项目中Pom.xml报错
  11. doubango TURN Data Indication报文代码
  12. C++11线程安全的单例模式
  13. 遥感原理与应用总结——第三章:遥感传感器及成像原理
  14. debug 技巧 包括各种场景的debug方法
  15. 2022西工大网络安全知识竞赛赛后回顾资料
  16. 十、网络编程(高琪java300集+java从入门到精通笔记)
  17. Java 查询企业基本信息接口实现(企查查)
  18. 牛!程序媛一口气拿下BAT、美团、vivo、爱奇艺等公司Offer面经总结
  19. qt实现扫雷游戏一:算法实现
  20. 交换机远程连接(eNsp)

热门文章

  1. Git学习笔记05--git stash
  2. 委托、事件与Observer设计模式
  3. 如何系统地理解「交易平台」?
  4. PMCAFF微课堂 | 阿里资深运营揭秘电商运营与纯互联网运营的区别与互通
  5. LeetCode - Medium - Validate IP Addres
  6. 项目文档管理的一些想法
  7. JS获取URL中GET的参数
  8. 升级 ServeRADI-8i控制器,使用IBM 3650 9797 老服务器支持2T 硬盘
  9. 关于[UITableView setEditing:YES animated:YES] 没有animation
  10. SDUT_2012省赛热身赛1