|
#1
|
|||
|
|||
Grabar en fichero ejecutando de fondo un programa Z
Estimados, buenas tardes, tengo un inconveniente con lo siguiente, creé un programa que en su ejecución debería generar y grabar un archivo .txt en un fichero, al ejecutarlo online el programa lo genera perfectamente, pero al ejcutarlo de fondo no realiza dicha función, mi problema está en que la cantidad de datos que tengo que ejecutar, tira error de time out si lo ejecuto online, por lo que si o si tengo que ejecutarlo de fondo, pero de este modo no me genera el archivo y no lo graba en el fichero. Puede ser que el problema esté en el task bar? que debo agregar a mi programa para arreglar esto?
desde ya muchas gracias... Scaiano Leandro... |
#2
|
|||
|
|||
Revisa las funciones que usas para crear el archivo, hay algunas que no soportan el proceso de fondo.
Saludos.
__________________
Israel Toledo |
#3
|
|||
|
|||
En concreto las que tienen en las excepciones el NO_BATCH no pueden ejecutarse en fondo (GUI_DOWNLOAD etc) Para hacerlo en fondo utiliza los datasets
Saludos |
#4
|
|||
|
|||
me pueden hacer el favor de decirme como se que una funcion no corre en proceso de fondo ejem:
tengo este un programa con dos funciones que son estas: PRGN_ACTIVITY_GROUP_USERPRO - PRGN_CHECK_USERPROF_STATU el programa corre en en batch, pero al ejecutarlo en en proceso de fondo no funcciona. |
#5
|
|||
|
|||
Te aconsejaria que no busques funciones y lo hagas directamente con open dataset...close dataset.
__________________
Sebas Desarrollador ABAP. |
#6
|
|||
|
|||
Revisa las excepciones de las funciones. Si tienen una excepción NO_BATCH no puede ejecutarse en fondo.
Saludos |
#7
|
|||
|
|||
Resulta que ya mire las transacciones y ninguna de las dos maneja en las excepciones el NO_BATCH. Que hacer? ...
|
#8
|
|||
|
|||
¿Y donde estan estas dos funciones?????
|
#9
|
|||
|
|||
ESTE ES EL RESTO DE CODIGO DEL EL REPORTE . AQUI ESTAN LAS 2 FUNCIONES.
* Obtiene el resultado del batch, sea positiva o negativa. perform batch_geterror(zmiscl) using errtext. wa_users-msg1 = errtext(2). vc_msg1 = errtext(2). * Realiza el proceso de ajuste para el Rol depurado. * Función obtenida del programa estándar "LPRGN_TREEI0J" en la línea de código número 34 aproximadamente la * cual es ejecutada por el programa estándar al momento de ajustar el Rol por medio de la transacción "PFCG" * Se invoca esta función directamente debido a que el proceso de ajuste del Rol por medio del Batch, no * ajusta el Rol a pesar de que se ejecute el proceso correctamente. call function 'PRGN_ACTIVITY_GROUP_USERPROF' exporting activity_group = wa_users-agr_name hr_mode = 'X' delete_invalid_profiles = ' ' exceptions no_authority_for_user_compare = 1 at_least_one_user_enqueued = 2 authority_incomplete = 3 no_profiles_available = 4 too_many_profiles_in_user = 5 others = 6. if sy-subrc = 0 . call function 'PRGN_CHECK_USERPROF_STATUS' exporting activity_group = wa_users-agr_name importing led_color = loc_led_color. if loc_led_color = 'GREEN'. vc_msg2 = 'OK'. else. vc_msg2 = 'ER'. endif. else. vc_msg2 = 'ER'. endif. endif. wa_users-msg1 = vc_msg1. wa_users-msg2 = vc_msg2. modify ti_users index vn_tabix from wa_users transporting msg1 msg2. endloop. * Se forza la actualización en la Base de datos para luego verificar la integridad de los demas datos. commit work. * Verifica que si haya ingresado por lo menos en un rol. if not r_agrnam is initial. * Verifica la integridad de datos. loop at ti_users into wa_users where agr_name in r_agrnam. vn_tabix = sy-tabix. * Verifica que se haya borrado el registro indicado. if ( wa_users-borrar = 'X' ) and ( wa_users-causa in s_causa ). select single * from agr_users where agr_name = wa_users-agr_name and uname = wa_users-uname and from_dat = wa_users-from_dat and to_dat = wa_users-to_dat. if sy-subrc = 0. wa_users-integridad = 'X'. endif. * Verifica la integridad de los otros datos del rol else. select single * from agr_users where agr_name = wa_users-agr_name and uname = wa_users-uname and from_dat = wa_users-from_dat and to_dat = wa_users-to_dat. if sy-subrc <> 0. clear t. refresh t. write: wa_users-from_dat to vc_fromdat, wa_users-to_dat to vc_todat. perform batch_insdata(zmiscl) tables t using : 'X' 'SAPLPRGN_TREE' '0121', ' ' 'AGR_NAME_NEU' wa_users-agr_name, ' ' 'BDC_OKCODE' '=AEND', 'X' 'SAPLPRGN_TREE' '0300', ' ' 'BDC_OKCODE' '=TAB3', 'X' 'SAPLPRGN_TREE' '0300', ' ' 'BDC_OKCODE' '=P++', 'X' 'SAPLPRGN_TREE' '0300', ' ' 'S_USER-UNAME(01)' wa_users-uname, ' ' 'S_USER-FROM_DAT(01)' vc_fromdat, ' ' 'S_USER-TO_DAT(01)' vc_todat, ' ' 'BDC_OKCODE' '=SAVE'. * Ejecutar transacción 'PFCG' e ingresa el Rol seleccionado segun los criterios indicados call transaction 'PFCG' using t mode p_mode update 'S'. * Obtiene el resultado del batch, sea positiva o negativa. perform batch_geterror(zmiscl) using errtext. wa_users-msg1 = errtext(2). vc_msg1 = errtext(2). * Realiza el proceso de ajuste para el Rol depurado. * Función obtenida del programa estándar "LPRGN_TREEI0J" en la línea de código número 34 aproximadamente la * cual es ejecutada por el programa estándar al momento de ajustar el Rol por medio de la transacción "PFCG" * Se invoca esta función directamente debido a que el proceso de ajuste del Rol por medio del Batch, no * ajusta el Rol a pesar de que se ejecute el proceso correctamente. call function 'PRGN_ACTIVITY_GROUP_USERPROF' exporting activity_group = wa_users-agr_name hr_mode = 'X' delete_invalid_profiles = ' ' exceptions no_authority_for_user_compare = 1 at_least_one_user_enqueued = 2 authority_incomplete = 3 no_profiles_available = 4 too_many_profiles_in_user = 5 others = 6. if sy-subrc = 0 . call function 'PRGN_CHECK_USERPROF_STATUS' exporting activity_group = wa_users-agr_name importing led_color = loc_led_color. if loc_led_color = 'GREEN'. vc_msg2 = 'OK'. else. vc_msg2 = 'ER'. endif. else. vc_msg2 = 'ER'. endif. wa_users-msg1 = vc_msg1. wa_users-msg2 = vc_msg2. wa_users-causa = 9. wa_users-integridad = 'X'. endif. endif. modify ti_users index vn_tabix from wa_users transporting causa msg1 msg2 integridad. * Realiza el conteo de GA´s depurados por causa y tambien el total general. if wa_users-causa in s_causa. vn_deptotal = vn_deptotal + 1. case wa_users-causa. when '1'. vn_depcausa1 = vn_depcausa1 + 1. if ( wa_users-msg1 = 'ER' ) or ( wa_users-msg2 = 'ER' ) or ( wa_users-integridad = 'X' ). vc_errcausa1 = 'X'. endif. when '2'. vn_depcausa2 = vn_depcausa2 + 1. if ( wa_users-msg1 = 'ER' ) or ( wa_users-msg2 = 'ER' ) or ( wa_users-integridad = 'X' ). vc_errcausa2 = 'X'. endif. when '3'. vn_depcausa3 = vn_depcausa3 + 1. if ( wa_users-msg1 = 'ER' ) or ( wa_users-msg2 = 'ER' ) or ( wa_users-integridad = 'X' ). vc_errcausa3 = 'X'. endif. when '4'. vn_depcausa4 = vn_depcausa4 + 1. if ( wa_users-msg1 = 'ER' ) or ( wa_users-msg2 = 'ER' ) or ( wa_users-integridad = 'X' ). vc_errcausa4 = 'X'. endif. when '9'. vn_depcausa9 = vn_depcausa9 + 1. if ( wa_users-msg1 = 'ER' ) or ( wa_users-msg2 = 'ER' ) or ( wa_users-integridad = 'X' ). vc_errcausa9 = 'X'. endif. endcase. endif. endloop. write 'RESULTADO DE LA DEPURACIÓN DE GAs'. skip 1. write: 'CONDICIONES DE BORRADO PARA LOS GAs DEPURADOS. Total Depurados = ', vn_deptotal. new-line. if vc_errcausa1 = 'X'. format color 3. endif. write: ' 1 - GAs con diferente fecha de asignación (from), borrado el más reciente. Total Causa 1 = ', vn_depcausa1. format reset. format intensified on. new-line. if vc_errcausa2 = 'X'. format color 3. endif. write: ' 2 - GA asignado a compuesto comparado con otro GA, borrado el GA no asignado al compuesto. Total Causa 2 = ', vn_depcausa2. format reset. format intensified on. new-line. if vc_errcausa3 = 'X'. format color 3. endif. write: ' 3 - GAs con diferentes fecha de vigencia (to), borrado el de menor vigencia. Total Causa 3 = ', vn_depcausa3. format reset. format intensified on. new-line. if vc_errcausa4 = 'X'. format color 3. endif. write: ' 4 - GAs con fecha de vigencia vencida. Total Causa 4 = ', vn_depcausa4. format reset. format intensified on. new-line. if vc_errcausa9 = 'X'. format color 6. endif. write: ' 9 - GAs ingresados nuevamente después del proceso de depuración. Total Causa 9 = ', vn_depcausa9. format reset. format intensified on. skip 1. write 'Rol Usuario De A Causa Borrado Ajustado Observación'. loop at ti_users into wa_users where agr_name in r_agrnam. * Imprime los registros borrados y el resultado tanto de la eliminacion, como de la activacón del rol if ( wa_users-borrar = 'X' ) and ( wa_users-causa in s_causa ). new-line. if ( wa_users-msg1 = 'ER' ) or ( wa_users-msg2 = 'ER' ) or ( wa_users-integridad = 'X' ). format color 3. endif. write: wa_users-agr_name, wa_users-uname, wa_users-from_dat, wa_users-to_dat, wa_users-causa, ' ', wa_users-msg1, ' ', wa_users-msg2, ' '. format reset. format intensified on. * Imprime los registros reingresados y el resultado tanto del ingreso, como de la activacón del rol else. if wa_users-integridad = 'X'. new-line. format color 6. write: wa_users-agr_name, wa_users-uname, wa_users-from_dat, wa_users-to_dat, wa_users-causa, ' ', ' ', ' ', wa_users-msg2, ' ', 'Ingresado Nuevamente =', wa_users-msg1, ' '. format reset. format intensified on. endif. endif. endloop. endif. else. message e003(zbs). endif. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|