#1
|
|||
|
|||
Programa en fondo
Hola a tod@s.
Tengo que ejecutar un programa z con una dynpro creada por mi en fondo. El problema es que lo quiero ejecutar mediante la opción del menú, programa --> ejecutar en proceso de fondo. Me he dado cuneta que si la pantalla de selección está definida con parameters o select-options de lo hace automaticamente, pero si la creas tu no. He modificado el status gui pero no consigo hacer que el estandard haga esta funcionalidad. ¿Alguna idea? Gracias |
#2
|
|||
|
|||
Creo que no vas a poder encontrar una manera "standard" de hacerlo, lo que tendrias que hacer es añadir un boton, o una entrada de menu en el status gui y poner el codigo necesario para ejecutar tu programa en fondo (tendras que recuperar los datos que ha introducido el usuario en pantalla y entonces llamar a tu programa en fondo)
Te adjunto el codigo que yo tengo para lanzar un report en fondo para que te hagas una idea (este codigo lo he sacado de un metodo que cree hace tiempo que recibe como parametros iv_repid iv_nombre que estan declarados como CLIKE) En resumen es llamar a JOB_OPEN hacer un submit a tu report pasandole los parametros necesarios y con la adiccion VIA JOB llamar a JOB_CLOSE DATA: lv_nombre TYPE tbtco-jobname, lv_repid TYPE syrepid, lv_number TYPE tbtco-jobcount, lv_ret TYPE i. IF iv_nombre IS INITIAL. lv_nombre = iv_repid. ELSE. lv_nombre = iv_nombre. ENDIF. lv_repid = iv_repid. CALL FUNCTION 'JOB_OPEN' EXPORTING * DELANFREP = ' ' * JOBGROUP = ' ' jobname = lv_nombre * SDLSTRTDT = NO_DATE * SDLSTRTTM = NO_TIME * JOBCLASS = IMPORTING jobcount = lv_number CHANGING ret = lv_ret EXCEPTIONS cant_create_job = 1 invalid_job_data = 2 jobname_missing = 3 OTHERS = 4. IF sy-subrc <> 0. subrc = sy-subrc. EXIT. ENDIF. SUBMIT (lv_repid) VIA JOB lv_nombre NUMBER lv_number AND RETURN. CALL FUNCTION 'JOB_CLOSE' EXPORTING * AT_OPMODE = ' ' * AT_OPMODE_PERIODIC = ' ' * CALENDAR_ID = ' ' * EVENT_ID = ' ' * EVENT_PARAM = ' ' * EVENT_PERIODIC = ' ' jobcount = lv_number jobname = lv_nombre * LASTSTRTDT = NO_DATE * LASTSTRTTM = NO_TIME * PRDDAYS = 0 * PRDHOURS = 0 * PRDMINS = 0 * PRDMONTHS = 0 * PRDWEEKS = 0 * PREDJOB_CHECKSTAT = ' ' * PRED_JOBCOUNT = ' ' * PRED_JOBNAME = ' ' * SDLSTRTDT = NO_DATE * SDLSTRTTM = NO_TIME * STARTDATE_RESTRICTION = BTC_PROCESS_ALWAYS strtimmed = 'X' * TARGETSYSTEM = ' ' * START_ON_WORKDAY_NOT_BEFORE = SY-DATUM * START_ON_WORKDAY_NR = 0 * WORKDAY_COUNT_DIRECTION = 0 * RECIPIENT_OBJ = * TARGETSERVER = ' ' * DONT_RELEASE = ' ' * TARGETGROUP = ' ' * DIRECT_START = * IMPORTING * JOB_WAS_RELEASED = CHANGING ret = lv_ret 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. subrc = sy-subrc. |
#3
|
|||
|
|||
Muchas gracias ballan por el codigo.
Veré a ver que hago al final. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|