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 更新 |
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
标签:
SAP
posted on 2021-12-07 14:11 Violin_Huang 阅读(1270) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具