在MSEG取物料凭证的时候,很多时候需要排除已经被冲销的凭证和冲销凭证,比如有一个PO收货凭证5000004086,冲销后产生了凭证5000004087。这个时候,用户认为冲销错了,需要将5000004087继续冲销掉,产生凭证5000004154
所以,针对此类来回冲销凭证的情况,如果要排除这些无效凭证,可以使用下面的程序:
"非冲销/被冲销凭证
DATA:BEGIN OF lt_nrev OCCURS 0,
mblnr LIKE mseg-mblnr,
mjahr LIKE mseg-mjahr,
zeile LIKE mseg-zeile,
END OF lt_nrev.
SELECT-OPTIONS: s_ebeln FOR ekpo-ebeln.
"根据采购订单获取有效的凭证(排除已冲销和被冲销的成对凭证)
CLEAR:lt_nrev[].
SELECT mblnr mjahr zeile INTO TABLE lt_nrev
FROM matdoc
WHERE ebeln IN s_ebeln
AND cancelled = ''
AND cancellation_type IN ( '','1' )
AND NOT EXISTS ( SELECT * FROM m_mbmps
WHERE m_mbmps~sjahr = matdoc~mjahr AND
m_mbmps~smbln = matdoc~mblnr AND
m_mbmps~smblp = matdoc~zeile ).
以上子查询语句足够满足大部分情况下的使用。
关键表:M_MBMPS