Extracción de información a partir de jobs

domingo, 7 de agosto de 2011

On the beach

En más de una ocasión deseamos extraer información de SAP para analizarla externamente por ejemplo con Microsoft Excel. Sin embargo, debido al tiempo que ocupa la ejecución de la transacción no podemos hacerlo on-line.



Si nos fijamos en el parámetro abap/timeout fijado en el sistema, éste es demasiado bajo como para lanzar el programa en un proceso diálogo. Podemos visualizar este parámetro en nuestro sistema en la transacción

Herramientas / CCMS / Configuration / RZ10 – System profile

Entonces, ¿cómo podemos consultar información en SAP si la ejecución de una transacción consume mucho tiempo? La respuesta es programando un job de fondo para la transacción.

Crear un job de fondo

Imaginemos que queremos consultar la lista de saldos de entradas de mercancías

Logística / Gestión de materiales / Gestión de stocks / Entorno / Visualización de saldos / MB5S – Lista de saldo MSRF
  • En primer lugar debemos conocer el programa que se esconde detrás de la transacción. Para ello vamos a la transacción y pulsamos el menú Sistema / Status. En el ejemplo el programa se llama RM07MSAL.
  • Seguidamente vamos a la transacción que nos permitirá definir nuestro job y damos nombre a nuestro job.

    Herramientas / CCMS / Background processing / SM36 - Define job
  • Pulsamos en el botón ‘Paso’ y escribimos el nombre del programa y la variante con la que lo lanzaremos.

    Creacion del job
     
  • Seguidamente pulsamos el botón ‘Parámetros de impresión’ y luego ‘Atributos’. Nos aseguramos de que no se imprima automáticamente el resultado, sino que el listado quede en el spool.

    Parametros impresion
     
  • Grabamos y volvemos a la pantalla anterior.
  • Pulsamos el botón ‘Condición inicio’ e indicamos cuándo queremos que se inicie. Podemos indicar que se lance inmediatamente, en una fecha y hora concretas, cuando finalice otro job, etc. En este caso voy a indicar que se lance inmediatamente. Y grabamos.

    Fecha inicio
     
  • Volvemos a la pantalla anterior y grabamos el conjunto.

Extraer la información de una orden de spool

Una vez ha finalizado la ejecución del job podemos ir a recuperar la información de salida.
  • Vamos al spool controller.
Herramientas / CCMS / Print / SP01 – Output controller
  • Buscamos una orden de spool que debe contener el nombre del programa que hemos lanzado.
  • Marcamos esta orden y el botón ‘Lista ABAP’.

    Spool controller
     
  • Vamos al menú Orden spool / Transmitir / Grabar en fichero local.
  • Nos abrirá una ventana e indicaremos el formato en que queremos guardar el listado. Ya la tenemos para tratar fuera de SAP.

Enviar la información de un job a una cuenta de mail

Otra opción es que a la finalización del job, éste envíe el resultado directamente a nuestra cuenta de correo electrónico. Para ello hay que incluir la dirección de correo electrónico a la hora de crear el job en el botón ‘Destino listas spool’. La forma detallada de hacerlo la tenéis en el siguiente enlace.

Podéis enviar la información:
  • A una cuenta de correo individual.
Herramientas / CCMS / Background processing / SM36 - Define job / Destino listas spool
  • A un grupo de usuarios creando una lista de distribución mediante la transacción SO28


Éste es el último post de la temporada. El blog volverá en breve. Os deseo que paséis unas buenas vacaciones si las tenéis. Nos vemos a la vuelta.

12 comentarios:

  1. Gracias por este ejemplo, ahora bien cuando el reporte ya se descargo y esta en el SPOOL cuando lo descarga, los datos están pero faltan columnas y registros necesarios. Como hacer para que despliega exactamente igual a como se ejecuta en proceso visto.

    ResponderEliminar
    Respuestas
    1. Al montar tu job debes revisar los atributos de spool y utilizar una edición de columnas lo más amplia posible.

      Eliminar
  2. en parametrizaciones debes agregar todas las paginas.. si el job dice que tiene 200 y solo muestra 1 al 10 , debes agregar el resto manualmente.

    ResponderEliminar
  3. Oscar, existirá una forma de extraer esta información automáticamente desde el job , osea que me envié la información al termino a un fichero local??

    ResponderEliminar
    Respuestas
    1. Sí, en este mismo post se explica cómo.

      Eliminar
    2. Pero automaticamente?? algo parecido al envió del mail , cuando el job termina automaticamente envia el correo cierto?, quiero algo parecido ,pero con un archivo txt o excel , al termino del job envie el SPOOL a un fichero (automaticamente).

      Eliminar
    3. Sí, automáticamente lo puedes enviar a una dirección de correo electrónico con el resultado del spool adjunto en un fichero txt. Para ello cuando creas tu job tienes que indicar el destinatario de correo (o lista de distribución) en el apartado "Destino listas spool". Es lo que en el post se indica en el apartado "Enviar la información de un job a una cuenta de mail".

      Eliminar
    4. Hola Oscar,

      Realice todos los pasos, me llego el correo pero cuando abro el adjunto me muestra hasta 16 hojas de las 106 que deberían ser.
      No encuentro donde cambiar esto. Mi adjunto es en formato HTM.
      Muchas gracias.

      Eliminar
    5. Al introducir los parámetros para impresión de fondo le has indicado que sólo te imprima las 16 primeras páginas. Tienes que indicar que te imprima todo.

      Eliminar
  4. Buenas Tardes, quisiera saber si se ejecuta un JOB el no tiene por que aceptar duplicar una orden: en estos momentos ese tema me esta pasando por favor su ayuda indicando que debo hacer en caso de que se me dupliquen ordenes

    ResponderEliminar
  5. Buen día, tengo un spool muy grande de 10,908 páginas, como puedo descargarlo? ya que me indica un mnsj que puede haber desbordamiendo de memoria, hay alguna otra manera de descargarlo y que se pueda visualizar toda la información?

    ResponderEliminar
    Respuestas
    1. Doble Click en el SPOOL, vas a la Opción "Orden SPOOL" --> Transmitir-->Exportar como texto.
      Para que no se te cierre o cancele, tienes que tener otra ventana abierta de SAP.

      Eliminar