Pasar orden de spool a PDF

6 12 2007

Es común que nos pidan hacer un resguardo de un formulario. Y probablemente tengamos que hacer el backup a PDF.
Con este código vamos a poder tomar una orden de spool, por ejemplo de un formulario, para luego crear el PDF.


  DATA: IT_TSP01 LIKE TSP01 OCCURS 0 WITH HEADER LINE.
  DATA: NUMBYTES TYPE I,
             PDFSPOOLID LIKE TSP01-RQIDENT,
             IT_PDF LIKE TLINE OCCURS 0.

*Lo primero es buscar el número de la orden de spool en la tabla  TSP01. *En este caso le paso el nombre del usuario y el mandante.
  SELECT RQIDENT
     INTO (IT_TSP01-RQIDENT)
     FROM TSP01
     WHERE RQOWNER EQ SY-UNAME
       AND RQCLIENT EQ SY-MANDT.
    APPEND IT_TSP01.
  ENDSELECT.

*Ordeno en forma descendente para quedarme con el último formulario *generado
  SORT IT_TSP01 DESCENDING.

*Al siguiente módulo de función le paso el número de la orden para que *me devuelva el formulario dentro de la tabla IT_PDF
  CALL FUNCTION ‘CONVERT_OTFSPOOLJOB_2_PDF’
    EXPORTING
      SRC_SPOOLID              = IT_TSP01-RQIDENT
    IMPORTING
      PDF_BYTECOUNT            = NUMBYTES
    TABLES
      PDF                      = IT_PDF
    EXCEPTIONS
      ERR_NO_OTF_SPOOLJOB      = 1
      ERR_NO_SPOOLJOB          = 2
      ERR_NO_PERMISSION        = 3
      ERR_CONV_NOT_POSSIBLE    = 4
      ERR_BAD_DSTDEVICE        = 5
      USER_CANCELLED           = 6
      ERR_SPOOLERROR           = 7
      ERR_TEMSEERROR           = 8
      ERR_BTCJOB_OPEN_FAILED   = 9
      ERR_BTCJOB_SUBMIT_FAILED = 10
      ERR_BTCJOB_CLOSE_FAILED  = 11
      OTHERS                   = 12.

  IF SY-SUBRC EQ 0.

*Una vez que tengo el formulario en la tabla hago el download 
    CALL FUNCTION ‘GUI_DOWNLOAD’
      EXPORTING
        BIN_FILESIZE            = NUMBYTES
        FILENAME                = P_FILE
        FILETYPE                = ‘BIN’
      TABLES
        DATA_TAB                = IT_PDF
      EXCEPTIONS
        FILE_WRITE_ERROR        = 1
        NO_BATCH                = 2
        GUI_REFUSE_FILETRANSFER = 3
        INVALID_TYPE            = 4
        NO_AUTHORITY            = 5
        UNKNOWN_ERROR           = 6.

    IF SY-SUBRC EQ 0.
      MESSAGE I014(ZSM) WITH P_FILE
           ‘ .Nombre de archivo creado’
           ‘ con Nro. Doc. Interno Sap.’.
    ELSE.
      MESSAGE I014(ZSM) WITH P_FILE.
      DELETE FROM TSP01 WHERE RQIDENT EQ T_TSP01-RQIDENT.
    ENDIF.

  ENDIF.


Technorati tags:


Acciones

Information

6 responses

16 01 2008
Helios

Buenoas dias tengo una pregunta, si usa la funcion GUI_DOWNLOAD sobreescribe el fichero que baja?, es decir si ya tengo un fichero llamado documento.pdf y lo intento descargar de nuevo me lo sobreescribiria???, gracias

19 01 2008
Daniel Panaro

Que tal, te comento que lo que decis es correcto.
Fijate que la función tiene la opción FILENAME = P_FILE. Donde P_FILE lo podés utilizar como un filtro de selección (parameter o select-option). Y de esta manera no te pise el fichero.
Saludos!

12 01 2010
ANDRES MENARES

ESTIMADOS HAY ALGUNA FORMA DE GENERAR EL DOC PDF Y DEJARLO EN UN DIRECTORIO DEL SERVIDOR???

GRACIAS…

13 01 2010
Daniel Panaro

Que tal Andres,
Deberías repetir los pasos de este post salvo el último de GUI_DOWNLOAD.
En su lugar tendrías que utilizar las sentencias DATASET (open, close, etc). Con esto estarás guardando el doc pdf en el servidor.

Saludos,
Daniel.

18 08 2010
Janeth MG

Hola !

Estoy obteniendo el numero de spool y bajando el formulario a pdf, no tengo ningun problema con esto, sin embargo al abrir el pdf el formato no es correcto. Cuando se baja del spool a pdf de manera manual le pasan un tipo de formato de edicion hay alguna forma de indicar el formato de edicion del formulario en la funcion de abap que lo convierte a pdf ? o existe alguna funcion que una vez convertido en pdf le aplique el formato ya definido ?

Gracias.
Saludos.

31 08 2010
Daniel Panaro

Hola,
Recordá que la elección del formato de edición es al momento de crear la orden de spool. Acá desconozco si estas utilizando una transacción estandard o algún desarrollo Z.
Ahí es donde deberías verificar el formato de edición.

Por otro lado podrías chequear si la función ‘CONVERT_OTFSPOOLJOB_2_PDF’ tiene algún parámetro especial para configurar el formato en que se genera el PDF.

Ojalá te sirva.
Saludos,
Daniel.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: