Autor Tema: Reimpresion de Pedidos de Compras  (Leído 13336 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado molaci

  • Usuario Sr.
  • ****
  • Mensajes: 113
    • Ver Perfil
Reimpresion de Pedidos de Compras
« en: 20 de Enero de 2010, 05:43:27 pm »
Hola,

quiero reimprimir unos formularios de pedidos de compras, para ello voy a la transacción ME9F, pero tengo el problema que cuando ya ha sido lanzada la impresión no me deja volver a imprimirla.

Hay alguna otra transacción, o alguna idea para poder re-imprimirlas de nuevo?.

Un saludo y gracias.

Desconectado Carlos

  • Usuario Sr.
  • ****
  • Mensajes: 177
    • Ver Perfil
Re: Reimpresion de Pedidos de Compras
« Respuesta #1 en: 20 de Enero de 2010, 06:28:26 pm »
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 ::

Código: [Seleccionar]
* 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.