转载自http://hi.baidu.com/derrial/item/4eb7c5da614ed83c49e1dd0b
sap的字段和对象的修改都会保存旧值,数据保存在CDHDR和CDPOS表中,提取旧值可以采用两种方法
1)
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
提取有变动的vendor最新日期
--------------------------------------------------------------------------------
抓取所有有变动的程序
report ztest001.
TYPE-POOLS slis.
DATA : cdhdr TYPE cdhdr.
SELECT-OPTIONS :
SELECTION-SCREEN SKIP.
PARAMETERS p_max TYPE numc3 OBLIGATORY DEFAULT '200'.
*---------------------------------------------------------------------*
TYPES :
TYPES : checkbox,
TYPES : checkbox,
*---------------------------------------------------------------------*
DATA :
* Layout for ALV
* Change document header
*---------------------------------------------------------------------*
START-OF-SELECTION.
* Read Change document header
* Display ALV
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
FORM user_command USING u_ucomm
* Macro definition
*
*
*
ENDFORM.
*--------------------------------------------------------------------FORM check_marked USING us_selfield TYPE slis_selfield.
ENDFORM.