Jueves, 05 Junio 2014 00:00

SPOOL : La cola de impresión en SAP

Escrito por 
Valora este artículo
(2 votos)

El Sistema SAP distingue dos partes en un trabajo de impresión :

Orden de Spool: Es un documento para el que se ha seleccionado una función de impresión. Sin embargo, aún no ha salido por una impresora u otro dispositivo. Los datos de salida del documento se almacenan temporalmente hasta que se crea una petición de salida, es decir, hasta que se envía a un dispositivos de salida en particular.

● Petición de salida : Desde el punto de vista del sistema SAP, una petición de salida contiene los parámetros de impresión de una orden de spool. Pueden existir múltiples peticiones de salida para una única orden de spool. Cada una representa una instancia de la salida de la misma orden de spool, y cada una de estas peticiones de salida pueden tener diferentes atributos, como la impresora de destino o el número de copias.

El sistema utiliza una orden SPOOL para almacenar los datos de impresión temporalmente, y para acceder a ellos mientras esté disponible la orden de spool. Se puede acceder a un documento directamente, ya que el sistema asigna automáticamente un número de 10 dígitos que lo identifica.

Al diferenciar entre la petición de salida y orden de spool, el sistema proporciona un medio para almacenar los datos temporalmente, y gestionar su salida de forma independiente. Para administrar las salidas de datos, tanto órdenes de spool como órdenes de salida, usaremos la transacción SP01.

 

La sentencia NEW-PAGE PRINT permite generar un trabajo de impresión, creandose una nueva orden de spool, y usando la petición de salida configurada previamente mediante la estructura PRI_PARAMS.

DATA: print_parameters TYPE pri_params.

DATA: valid_flag TYPE LENGTH 1.
DATAvl_cadena  TYPE syplist,
      vl_num(2).

* Asignamos los parametros de impresión
  CALL FUNCTION 'GET_PRINT_PARAMETERS'
    EXPORTING
      expiration     '1'                " borrado en un día
      immediately    space              " no imprimir de forma inmediata
      in_parameters  print_parameters   " datos por defecto
      new_list_id    'X'                " asigna un nuevo identificador de spool
      no_dialog      'X'                " sin popup de impresión
    IMPORTING
      out_parameters print_parameters
      valid          valid_flag
    EXCEPTIONS
      OTHERS         4.

  CLEAR vl_cadena.
  MOVE p_cont TO vl_num.
  CONCATENATE 'SPOOL_' vl_num INTO vl_cadena.

* Cero impresiones con nombre SPOOL_01, ... (Ver en trans. SP01)
  print_parameters-prcop 0.
  print_parameters-plist vl_cadena.

 

Esto nos permitirá almacenar la orden de spool temporalmente, sin que salga por ningún dispositivo, ni genere un error de impresión.

 * Generamos la spool del ALV sin imprimirla
  NEW-PAGE PRINT ON PARAMETERS print_parameters NO DIALOG.
  gr_table->display).
  NEW-PAGE PRINT OFF.

* Almacenamos los datos de la spool generada
  MOVE sy-spono             TO wa_spools-id.
  MOVE it_intervalos-inicio TO wa_spools-begda.
  MOVE it_intervalos-fin    TO wa_spools-endda.
  APPEND wa_spools TO it_spools.


Si no indicamos en el campo print_parameters-prcop, que no deseamos ninguna impresión, al hacer la llamada a la sentencia NEW-PAGE PRINT ON, o NEW-PAGE PRINT ON NO DIALOG, tomará los parámetros de impresión por defecto, y se realizará una petición de salida automática.

En cambio, si le indicamos que no queremos ninguna copia se almacenará solamente la orden de spool, y podremos rescatar los datos almacenados a través de la función RSPO_DISPLAY_SPOOLJOB.

 

 Ejemplo de la utilidad de este artículo: Ejemplo Práctico

 

En caso de que estemos trabajando con SMARTFORMS, también podremos generar órdenes de spool en lugar de visualizaciones por pantalla, y podremos evitar su impresión, de modo que almacenaremos distintos lanzamientos de documentos, y posteriormente gestionaremos su salida por impresora u otro dispositivo. Para ello deberemos parametrizar los siguientes atributos de salida y control:

 

 DATAoutput_options TYPE ssfcompop,
      control_options TYPE ssfctrlop.

DATAfuncion TYPE rs38l_fnam.

* Parámetros para lanzar el smartform generando una spool               
control_options-no_dialog 'X'.      " Quitar ventana de diálogo
output_options-tdnewid  'X'.      " Crear nueva spool
output_options-tdimmed   ' '.      " Salida inmediata
output_options-tddest    'LOCL'.   " Impresora destino

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
  EXPORTING
    formname    'ZSMARTFORM_NOMBRE'
    variant     ' '
  IMPORTING
    fm_name     funcion.

CALL FUNCTION funcion
  EXPORTING
    control_parameters         control_options
    output_options             output_options
    user_settings              ' '
* IMPORTING
*   DOCUMENT_OUTPUT_INFO       =
*   JOB_OUTPUT_INFO            =
*   JOB_OUTPUT_OPTIONS         =
  TABLES
    tdatos                     it_datos.

 

Posteriormente se puede enviar a impresión cualquier spool almacenada en el sistema, mediante la función RSPO_OUTPUT_SPOOL_REQUEST.

 

Visto 630364 veces Modificado por última vez en Lunes, 19 Octubre 2015 15:08