SAP-ABAP 批量查詢SAP標准日志(更改歷史記錄)


常用對象名:

描述

OBJECTCLAS對象

物料主數據變更查詢(MM03) MATERIAL
采購信息記錄變更查詢(ME1L) INFOSATZ
采購申請(PR) BANF
采購訂單變更查詢(PO) EINKBELEG
銷售憑證(含合同、訂單等) VERKBELEG
客戶 DEBI
供應商 KRED
信用(FD32) KLIM

 

如何查找對象

1.對象表:TCDOB TCDOBT(SE11,根據表查詢對象)/SCDO(根據對象查詢表)
2.用單號,編碼模糊查詢
3.限定時間與用戶進行測試

批量查詢標准日志

方法一:事務代碼(SE38):RSSCD100 / (RC1CD100\RSSCD1TS)

方法二:后台表(SE11):CDHDR 和 CDPOS

 CDHDR -抬頭表

OBJECTCLAS 對象類
OBJECTID 對象值
CHANGENR 文檔更改編號
CHANGE_IND

U 更新
I 插入
E 刪除 (單字段文檔)
D 刪除
J 插入 (單字段文檔)

 

CDPOS-項目表
OBJECTCLAS 對象類 
OBJECTID 對象值 
CHANGENR 文檔更改編號
TABNAME 表名
TABKEY 已更改的表記錄碼
FNAME 字段名
CHNGIND 修改類型 (U, I, E, D)
TEXT_CASE 標識:X=文本更改
UNIT_OLD 更改文檔,參照的單位
UNIT_NEW 更改文檔,參照的單位
CUKY_OLD 更改文檔,參照貨幣 
CUKY_NEW 更改文檔,參照貨幣 
VALUE_NEW 更改字段的新內容
VALUE_OLD 更改字段的新內容
   

 

*&---------------------------------------------------------------------*
*& Report  ZCDHDR_CDPOS
*&
*&---------------------------------------------------------------------*
*&
*& 標准程序:RSSCD100
*&---------------------------------------------------------------------*
REPORT zcdhdr_cdpos NO STANDARD PAGE HEADING .

TYPE-POOLS: slis.
TABLES: cdhdr,cdred,tcdob.
DATA: fldct TYPE slis_t_fieldcat_alv,
      slayt TYPE slis_layout_alv ,
      varnt LIKE disvariant,
      repid LIKE sy-repid .

DATA: itab TYPE TABLE OF cdred WITH HEADER LINE.
DATA: it_cdhdr TYPE TABLE OF cdhdr WITH HEADER LINE.
DATA: it_cdred TYPE TABLE OF cdred WITH HEADER LINE.

SELECT-OPTIONS :
        s_clas   FOR tcdob-object OBLIGATORY ,
        s_objtid FOR cdhdr-objectid,
        s_usrnam FOR cdhdr-username ,
        s_udate  FOR cdhdr-udate DEFAULT sy-datum,
        s_time   FOR cdhdr-utime,
        s_tcode  FOR cdhdr-tcode,
        s_tab    FOR cdred-tabname,
        s_fname  FOR cdred-fname,
        s_tabkey FOR cdred-tabkey .

AT SELECTION-SCREEN OUTPUT.
  %_s_clas_%_app_%-text   = '對象類'.
  %_s_objtid_%_app_%-text = '對象值'.
  %_s_usrnam_%_app_%-text = '用戶名'.
  %_s_udate_%_app_%-text  = '日期'.
  %_s_time_%_app_%-text   = '時間'.
  %_s_tcode_%_app_%-text  = '事務碼'.
  %_s_tab_%_app_%-text    = '修改的表名'.
  %_s_fname_%_app_%-text  = '字段名'.
  %_s_tabkey_%_app_%-text = 'KEY值'.

START-OF-SELECTION.
  PERFORM getdata.
  PERFORM outdata.

*&---------------------------------------------------------------------*
*&      Form  getdata
*&---------------------------------------------------------------------*
FORM getdata.
  CLEAR: itab,itab[],it_cdhdr,it_cdhdr[].

  SELECT * INTO TABLE it_cdhdr
     FROM cdhdr
     WHERE objectclas IN s_clas   AND
           objectid   IN s_objtid AND
           username   IN s_usrnam AND
           udate      IN s_udate  AND
           utime      IN s_time   AND
           tcode      IN s_tcode  .

  LOOP AT it_cdhdr.
    CLEAR: it_cdred,it_cdred[].
    CALL FUNCTION 'CHANGEDOCUMENT_READ'
      EXPORTING
        changenumber               = it_cdhdr-changenr
        objectclass                = it_cdhdr-objectclas
        objectid                   = it_cdhdr-objectid
      TABLES
        editpos                    = it_cdred
      EXCEPTIONS
        no_position_found          = 1
        wrong_access_to_archive    = 2
        time_zone_conversion_error = 3
        OTHERS                     = 4.
    IF sy-subrc = 0.
      LOOP AT it_cdred WHERE fname   IN s_fname AND
                             tabname IN s_tab AND
                             tabkey  IN s_tabkey .
        APPEND it_cdred TO itab.
      ENDLOOP.
    ENDIF.
  ENDLOOP.
ENDFORM. "getdata

*&---------------------------------------------------------------------*
*&      Form  outdata
*&---------------------------------------------------------------------*
FORM outdata.
  DATA lines(10).

  slayt-colwidth_optimize = 'X'.
  slayt-zebra             = 'X'.
  slayt-detail_initial_lines = 'X'.   "&ETA 空單元格也顯示
  repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program      = repid
      i_structure_name        = 'CDRED'
      i_save                  = 'A'
      is_layout               = slayt
      i_callback_user_command = 'USER_COMMAND'
    TABLES
      t_outtab                = itab
    EXCEPTIONS
      program_error           = 1
      OTHERS                  = 2.
ENDFORM. "outdata

*&--------------------------------------------------------------------*
*&      Form  user_command
*&--------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
                        rs_selfld TYPE slis_selfield.

  CASE r_ucomm.
    WHEN '&IC1'.
      READ TABLE itab INDEX rs_selfld-tabindex.
      CHECK sy-subrc = 0.
    WHEN 'REFRESH'.
      PERFORM getdata.
  ENDCASE.

  rs_selfld-row_stable = 'X'.
  rs_selfld-col_stable = 'X'.
  rs_selfld-refresh    = 'X'.
ENDFORM. "user_command

*&--------------------------------------------------------------------*
*&      Form  set_status
*&--------------------------------------------------------------------*
FORM set_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD' EXCLUDING rt_extab .
ENDFORM. "set_status
ZCDHDR_CDPOS

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM