SAP保存操作记录CDHDR和CDPOS表,通过修改屏幕字段,查找SAP字段表和字段
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字段表和字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【重复制造精讲】REM Pull Lis
- 下一篇: 【重复制造精讲】REM Pull Lis