壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1598|回复: 5

[ABAP] CDHDR和CDPOS系统日志表有没有函数写入的?

[复制链接]
发表于 2012/10/15 16:52:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 4328028 于 2012/10/15 16:55 编辑

如题:CDHDR和CDPOS系统日志表有没有函数写入的?
          我想把不是SAP标准程序更改的数据日志写入这二个表中。
发表于 2012/10/15 16:57:56 | 显示全部楼层
SAP保存操作记录CDHDR和CDPOS表sap的字段和对象的修改都会保存旧值,数据保存在CDHDR和CDPOS表中,提取旧值可以采用两种方法
1)使用sap的标准函数CHANGEDOCUMENT_READ_HEADERS 和CHANGEDOCUMENT_READ_POSITIONS
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.

发表于 2012/10/16 12:27:49 | 显示全部楼层
学习
发表于 2012/10/16 13:53:32 | 显示全部楼层
学习           
发表于 2012/10/26 14:42:11 | 显示全部楼层
哥很强啊,谢谢,常学常新
发表于 2012/11/24 00:09:18 | 显示全部楼层
纵横老大,你是做啥的啊?什么都会?资料还这么多?

点评

我作Oracle ERP的,SAP的这个回复我是百度后贴上去的;  发表于 2012/11/24 07:45
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 06:05 , Processed in 0.020954 second(s), 21 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表