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


*********************************************************************
******取采购申请项目修改日期、修改时间、修改标志
  "唯一申请号列表
  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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/698201/viewspace-557278/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值