Hola, te cuento lo que vi una vez en otro foro y me sirvió a mi.
En la nast se almacena para la orden de compra los mensajes creados.
1º - Buscas el ultimo mensaje creado, y obtienes el campo CMFPNR.
2º - Luego vas a la tabla CMPF con los campos... APLID = 'WMFC' y NR = nast-cmfpnr.
3º - De los resultados buscas aquel que tenga el nº spool, en español buscas por APLID = 'WFMC' y NR = nast-cmfpnr y ARBGB = 'ME' y MSGNR = '320'.
:: EJEMPLO ::
* Recuperamos la orden Spool de la siguiente manera.
* Vamos a la tabla NAST con el Doc. de Compras y ordenamos por
* la última orden lanzada.
CLEAR gt_nast. REFRESH gt_nast.
SELECT * FROM nast INTO TABLE gt_nast
WHERE kappl = gf_kappl
AND objky = ebeln
AND kschl = gf_kschl.
SORT gt_nast BY erdat eruhr DESCENDING.
* Con el campo NAST-CMFPNR (Número de control de error) vamos a la
* tabla CMFP, en el campo MSGV1 está la orden Spool.
LOOP AT gt_nast.
IF gt_nast-vstat = '1'.
SELECT SINGLE * FROM cmfp
WHERE aplid = 'WFMC'
AND nr = gt_nast-cmfpnr
AND arbgb = 'ME'
AND msgnr = '320'.
MOVE: cmfp-msgv1 TO tsp01-rqident.
SELECT SINGLE * FROM tsp01 WHERE rqident = cmfp-msgv1
AND ( rqcretime <> space OR
rq2name <> space ).
IF sy-subrc = 0.
*------ En cuanto encontremos la primera orden de Spool válida. EXIT.
EXIT.
ENDIF.
ENDLOOP.