Ver Mensaje Individual
  #2  
Viejo 08/09/14, 18:28:37
Ripper87 Ripper87 is offline
Member
 
Fecha de Ingreso: dic 2011
Mensajes: 37
Para ejecutar un programa en proceso de fondo, es decir en un job, puedes usar estos módulos de funciones:

Primero se crea un job nuevo, le pasas un nombre cualquiera para identificarlo y el te devuelve en el parametro jobcount el id interno del job que vas a necesitar.

CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = lv_jobname "Este es el nombre del job
IMPORTING
jobcount = lv_jobcount "ID interno
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.

Puedes ejecutar el programa que quieras por medio de la sentencia SUBMIT junto con el nombre del job y su id.

SUBMIT <NOMBRE_DEL_PROGRAMA> AND RETURN
WITH <PARAMETROS...>
USER sy-uname
VIA JOB lv_jobname NUMBER lv_jobcount.

Con esto ya esta preparada la ejecucion del job, ahora falta que se ejecute. Esto se hace con la siguiente sentencia:

CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = lv_jobcount
jobname = lv_jobname
strtimmed = 'X'
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
invalid_target = 8
OTHERS = 9.

El parametro strtimmed = 'X' hace que se ejecute el job inmediatamente. Si es necesario colocar una fecha u hora, puedes revisar el resto de los parametros por la SE37.

Ahora, a que te refieres con ejecutarlo como dialogo? Tienes que ejecutar el programa por dialogo Y de fondo? Las transacciones de Dialogo son ejecuciones de una secuencia de pantallas o dynpros... no se si el SUBMIT funcione de esa forma...
Responder Con Cita