ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 通过 cdhdr 和 cdpos表, 查找采购申请更改日志

通过 cdhdr 和 cdpos表, 查找采购申请更改日志

原创 Linux操作系统 作者:liu5644 时间:2009-02-21 14:27:09 0 删除 编辑

*********************************************************************
******取采购申请项目修改日期、修改时间、修改标志
  "唯一申请号列表
  DATA:BEGIN OF itab_objectid OCCURS 0,
        objectid LIKE cdhdr-objectid,            "申请号
        udate    like cdhdr-udate,
       END OF itab_objectid.
* 更改凭证抬头内表
  DATA: BEGIN OF itab_cdhdr OCCURS 0,
          objectid   LIKE cdhdr-objectid,    "修改的订单号
          changenr   LIKE cdhdr-changenr,    "修改的订单号
          change_ind LIKE cdhdr-change_ind,"修改标志
          udate      LIKE cdhdr-udate,     "修改日期
          utime      LIKE cdhdr-utime,     "修改时间
        END OF itab_cdhdr.
* 更改凭证项目内表
  DATA: BEGIN OF itab_cdpos OCCURS 0,
         objectid   LIKE cdpos-objectid,  "修改的申请号
         changenr   LIKE cdhdr-changenr,  "修改的流水号
         change_ind LIKE cdhdr-change_ind,"修改标志
         tabkey     LIKE cdpos-tabkey,    "申请号加行项目编号
         udate      LIKE cdhdr-udate,     "修改日期
         utime      LIKE cdhdr-utime,     "修改时间
         bnfpo      LIKE eban-bnfpo,      "采购申请的项目编号
       END OF itab_cdpos.
  REFRESH itab_cdhdr.
  REFRESH itab_cdpos.
* 取唯一采购申请号
  CLEAR itab_objectid.
  LOOP AT t_pr.
    itab_objectid-objectid = t_pr-banfn.
    itab_objectid-udate    = t_pr-udate.
    COLLECT itab_objectid.
  ENDLOOP.
* 根据采购申请号和最近更改日期,取 更改凭证抬头数据
  SELECT  objectid changenr change_ind  udate utime
         INTO CORRESPONDING FIELDS OF TABLE  itab_cdhdr
         FROM cdhdr
         FOR ALL ENTRIES IN itab_objectid
         WHERE   objectclas    =     'BANF'
         AND     objectid      =     itab_objectid-objectid
         AND     udate         =     itab_objectid-udate .
  IF NOT itab_cdhdr[] IS INITIAL.
*   取 更改凭证项目数据
    SORT itab_cdhdr BY  objectid changenr .
    SELECT  objectid changenr tabkey
          INTO CORRESPONDING FIELDS OF TABLE  itab_cdpos
          FROM cdpos
          FOR ALL ENTRIES IN itab_cdhdr
          WHERE   objectclas    =     'BANF'
          AND     objectid      =     itab_cdhdr-objectid
          AND     changenr      =     itab_cdhdr-changenr .
    LOOP AT itab_cdpos.
      READ TABLE itab_cdhdr WITH KEY
                              objectid = itab_cdpos-objectid
                              changenr = itab_cdpos-changenr
                              BINARY SEARCH .
      IF sy-subrc = 0.
        itab_cdpos-udate        =  itab_cdhdr-udate.     "修改日期
        itab_cdpos-utime        =  itab_cdhdr-utime.     "修改时间
        itab_cdpos-change_ind   =  itab_cdhdr-change_ind .  "修改标志

        MODIFY itab_cdpos.
      ENDIF.
    ENDLOOP.
    "删除重复的采购申请项目( 保留最近修改的采购申请项目 )
    SORT itab_cdpos BY  tabkey udate  DESCENDING utime DESCENDING.
    DELETE ADJACENT DUPLICATES FROM  itab_cdpos COMPARING tabkey  .

    data: l_len type i.
    LOOP AT itab_cdpos.
      l_len = strlen( itab_cdpos-tabkey ) - 5 .
      MOVE itab_cdpos-tabkey+l_len(5) TO itab_cdpos-bnfpo. "采购申请的项目编号
      MODIFY itab_cdpos  TRANSPORTING bnfpo.
    ENDLOOP.

  ENDIF.
**************************************************************************

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/698201/viewspace-557278/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-02-21

  • 博文量
    1
  • 访问量
    3199