*********************************************************************
******取采购申请项目修改日期、修改时间、修改标志
"唯一申请号列表
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/