提供了跨業務交易的工作負載統計信息,但該事務代碼只能查找最近兩天的記錄,而且只能查詢24hr,超出就報錯。
定期在後臺運新STAD。可以長時間從STAD事務中獲取歷史數據。
STAD事務的默認時間段是48小時。我們只能分析該時間範圍內的數據。保存早期STAD報告的另一種方法將在這裡討論。我認為這將有助於管理員分析系統中的各種問題。
STAD程序是RSSTAT26,它在我們運行STAD事務時在後臺運行。
步驟指南
至此,創建後臺作業完成。
++++++++++++++++++++++++++
下一步是檢查創建了後臺作業的報告。
然後轉到SM37進行後臺作業。
然後單擊圖像上顯示的池圖標。
單擊「類型」列下提到的圖標。
然後,您可以查看給定期間的報告。
++++++++++++++++++++++++++++++++++++++++++++++++++++
可以為用戶,交易和更多參數欄位自定義報告。然後可以針對特定需求和歷史統計數據創建報告。
Local History and Distribution => Load History
=>TOTAL =>選擇日期
=> Analysis Views = > User and SettlementStatistics
=>User Profile
一、SAP業務更改記錄
1)、sap的欄位和對象的修改都會保存舊值,數據保存在CDHDR和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、修改數據時,系統的更新原則與更新內容。
基本原則:以下類型的欄位不會查看到更改記錄
具體的控制點是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 有時會和實際的表名不一致,需使用一些方法查出。
By Willem Hoek
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.
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)
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.
請查看連結:https://www.sapzx.com/5719.html
1.SU01中用戶變更歷史記錄
2. DBTABLOG表