PDA

Ver la Versión Completa : Grabar en fichero ejecutando de fondo un programa Z


Leandro Scaiano
02/06/08, 20:30:16
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...

isratol
02/06/08, 23:15:27
Revisa las funciones que usas para crear el archivo, hay algunas que no soportan el proceso de fondo.

Saludos.

bisonye
03/06/08, 07:50:17
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

nasly alexandra correa
04/08/08, 17:23:20
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.

sconoredhot
04/08/08, 19:26:32
Te aconsejaria que no busques funciones y lo hagas directamente con open dataset...close dataset.

bisonye
05/08/08, 06:42:04
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.
Revisa las excepciones de las funciones. Si tienen una excepción NO_BATCH no puede ejecutarse en fondo.

Saludos

nasly alexandra correa
11/08/08, 22:14:53
Resulta que ya mire las transacciones y ninguna de las dos maneja en las excepciones el NO_BATCH. Que hacer? ...

bisonye
12/08/08, 06:47:29
Hola nasly,

Mi sistema no tiene estas funciones. ¿Puede que sean Forms de un report? Pasa el programa al que estas llamando a ver que tiene.

Saludos

nasly alexandra correa
21/08/08, 20:23:05
Este es el codigo principal del reporte

report zbsb_depurar_gas line-size 126.

* Declaración de tablas
tables: agr_users.


* Declaración de estructuras
types: begin of str_users.
include structure agr_users.
types: borrar type c, " Indicador de borrado
causa type zbs_gas, " Causa de borrado
msg1(2) type c, " Resultado de la eliminación
msg2(2) type c, " Resultado del ajuste
integridad type c, " Indicador de Integridad
end of str_users.


* Declaración de tablas internas y áreas de trabajo
data: ti_users type standard table of str_users,
ti_reply type standard table of str_users,
wa_users like line of ti_users,
wa_reply like line of ti_reply.

data: jobname like tbtcjob-jobname,
jobcount like tbtcjob-jobcount.

data: begin of t occurs 0. " Tabla interna para batch input
include structure bdcdata.
data: end of t.


* Declaración de variables globales
data: vn_tabix type sy-tabix, " Indice actual de un registro en el recorrido a una tabla interna
vn_dbcnt type sy-dbcnt, " Cantidad de registros encontrados en una consulta
vc_row(3) type n, " Número de posicion en pantalla del registro para el Batch
vc_filas(3) type n, " Cantidad de filas en pantalla para el Batch
vc_mark type string, " Variable para marcar y seleccionar el registro en el Batch
errtext(200) type c, " Variable que contiene el mensaje de error en caso de existir alguno
vc_msg1(2) type c, " Resultado obtenido luego de eliminar los registros
vc_msg2(2) type c, " Resultado obtenido luego de comparar los usuarios del rol
loc_led_color(20) type c, " Indicador de Rol Ajustado
vn_deptotal type i, " Total de registros depurados
vn_depcausa1 type i, " Total de registros depurados por causa 1
vn_depcausa2 type i, " Total de registros depurados por causa 2
vn_depcausa3 type i, " Total de registros depurados por causa 3
vn_depcausa4 type i, " Total de registros depurados por causa 4
vn_depcausa9 type i, " Total de registros depurados por causa 9
vc_errcausa1 type c, " Variable que indica si ocurrió algun error por causa 1
vc_errcausa2 type c, " Variable que indica si ocurrió algun error por causa 2
vc_errcausa3 type c, " Variable que indica si ocurrió algun error por causa 3
vc_errcausa4 type c, " Variable que indica si ocurrió algun error por causa 4
vc_errcausa9 type c, " Variable que indica si ocurrió algun error por causa 9
vc_fromdat(10) type c, " Fecha From para el ingreso de registros
vc_todat(10) type c. " Fecha To para el ingreso de registros


* Declaracion de Rangos
ranges: r_agrnam for agr_users-agr_name.


* Declaración de parámetros de entrada
selection-screen begin of block b1 with frame title text-001.
select-options: s_agrnam for agr_users-agr_name no intervals, " Rol
s_causa for wa_users-causa no intervals. " Causa
selection-screen end of block b1.

* Declaración de parámetros de ejecución
selection-screen begin of block b2 with frame title text-002.
parameters: p_mode type c default 'A', " Modo de ejecución
p_test type c as checkbox default 'X'. " Modo de prueba
selection-screen end of block b2.


* Inicio de la selección.
start-of-selection.

perform get_data.

* Fin de la selección
end-of-selection.
perform set_data.

*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* Toma todos los registros de la tabla AGR_USERS y los compara
* entre ellos para asi definir que registros se deben borrar.
*----------------------------------------------------------------------*
form get_data .

clear: ti_users, ti_reply.
refresh: ti_users, ti_reply.

* Obtiene todos los registros de la tabla AGR_USERS
select * from agr_users
into corresponding fields of table ti_users
where agr_name in s_agrnam.

if sy-subrc = 0.
vn_dbcnt = sy-dbcnt.
sort ti_users by agr_name uname from_dat to_dat change_dat change_tim.
ti_reply[] = ti_users[].
clear wa_users.
loop at ti_users into wa_users.
vn_tabix = sy-tabix + 1.
if vn_tabix > 2.
wa_users = wa_reply.
endif.
if vn_tabix <= vn_dbcnt.
clear wa_reply.
* Lee el registro que se encuentra inmediatamente despues del actual.
read table ti_reply index vn_tabix into wa_reply.
* Si ambos registros poseen el mismo Rol
if wa_users-agr_name = wa_reply-agr_name.
* Si ambos registros poseen el mismo Usuario.
if wa_users-uname = wa_reply-uname.

* Si la vigencia es menor a la vigencia del siguiente registro
if wa_users-to_dat < wa_reply-to_dat.
* Si el registro es simple
if wa_users-col_flag <> 'X'.
wa_users-borrar = 'X'.
wa_users-causa = '3'.
* Si el registro es compuesto pero el siguiente registro es simple
elseif wa_reply-col_flag <> 'X'.
wa_reply-borrar = 'X'.
wa_reply-causa = '2'.
endif.

* Si la vigencia es igual a la vigencia del siguiente registro
elseif wa_users-to_dat = wa_reply-to_dat.
* Si la asignación es mayor a la asignación del siguiente registro
if wa_users-from_dat > wa_reply-from_dat.
* Si el registro es simple
if wa_users-col_flag <> 'X'.
wa_users-borrar = 'X'.
wa_users-causa = '1'.
* Si el registro es compuesto pero el siguiente registro es simple
elseif wa_reply-col_flag <> 'X'.
wa_reply-borrar = 'X'.
wa_reply-causa = '2'.
endif.
* Si la asignación es igual a la asignación del siguiente registro
elseif wa_users-from_dat = wa_reply-from_dat.
* Si el registro es simple
if wa_users-col_flag <> 'X'.
wa_users-borrar = 'X'.
wa_users-causa = '1'.
* Si el registro es compuesto pero el siguiente registro es simple
elseif wa_reply-col_flag <> 'X'.
wa_reply-borrar = 'X'.
wa_reply-causa = '2'.
endif.
* Si la asignación es menor a la asignación del siguiente registro
elseif wa_users-from_dat < wa_reply-from_dat.
* Si el siguiente registro es simple
if wa_reply-col_flag <> 'X'.
wa_reply-borrar = 'X'.
wa_reply-causa = '1'.
* Si el siguiente registro es compuesto y el actual es simple
elseif wa_users-col_flag <> 'X'.
wa_users-borrar = 'X'.
wa_users-causa = '2'.
endif.
endif.

* Si la vigencia es mayor a la vigencia del siguiente registro
elseif wa_users-to_dat > wa_reply-to_dat.
* Si el siguiente registro es simple
if wa_reply-col_flag <> 'X'.
wa_reply-borrar = 'X'.
wa_reply-causa = '3'.
* Si el siguiente registro es compuesto y el actual es simple
elseif wa_users-col_flag <> 'X'.
wa_users-borrar = 'X'.
wa_users-causa = '2'.
endif.

endif.

endif.
endif.
vn_tabix = vn_tabix - 1.
modify ti_users index vn_tabix from wa_users
transporting borrar causa.
endif.
endloop.

* Si la vigencia ya esta vencida
loop at ti_users into wa_users
where borrar <> 'X'
and to_dat < sy-datum
and col_flag <> 'X'.

vn_tabix = sy-tabix.
wa_users-borrar = 'X'.
wa_users-causa = '4'.
modify ti_users index vn_tabix from wa_users
transporting borrar causa.

endloop.

else.
message e002(zbs).
endif.

endform. " get_data


*&---------------------------------------------------------------------*
*& Form set_data
*&---------------------------------------------------------------------*
* Ejecuta el proceso ya sea en Modo Prueba o Modificación
*----------------------------------------------------------------------*
form set_data .

clear: vn_deptotal, vn_depcausa1, vn_depcausa2, vn_depcausa3, vn_depcausa4.
* Para cuando ejecutan el programa en Modo Prueba
if p_test = 'X'.

loop at ti_users into wa_users where borrar = 'X' and causa in s_causa.
* Realiza el conteo de GA´s depurados por causa y tambien el total general.
vn_deptotal = vn_deptotal + 1.
case wa_users-causa.
when '1'.
vn_depcausa1 = vn_depcausa1 + 1.
when '2'.
vn_depcausa2 = vn_depcausa2 + 1.
when '3'.
vn_depcausa3 = vn_depcausa3 + 1.
when '4'.
vn_depcausa4 = vn_depcausa4 + 1.
endcase.
endloop.

write 'EJECUCIÓN EN MODO PRUEBA - RESULTADO DE LA DEPURACIÓN DE GAs'.
skip 1.
write: 'CONDICIONES DE BORRADO PARA LOS GAs DEPURADOS. Total Depurados = ', vn_deptotal.
new-line.
write: ' 1 - GAs con diferente fecha de asignación (from), borrado el más reciente. Total Causa 1 = ', vn_depcausa1.
new-line.
write: ' 2 - GA asignado a compuesto comparado con otro GA, borrado el GA no asignado al compuesto. Total Causa 2 = ', vn_depcausa2.
new-line.
write: ' 3 - GAs con diferentes fecha de vigencia (to), borrado el de menor vigencia. Total Causa 3 = ', vn_depcausa3.
new-line.
write: ' 4 - GAs con fecha de vigencia vencida. Total Causa 4 = ', vn_depcausa4.
skip 1.
write 'Rol Usuario De A Causa'.
loop at ti_users into wa_users where borrar = 'X' and causa in s_causa.
new-line.
write: wa_users-agr_name,
wa_users-uname,
wa_users-from_dat,
wa_users-to_dat,
wa_users-causa.
endloop.
* Para cuando ejecutan el programa normalmente.
else.
clear: ti_reply, wa_reply, r_agrnam.
refresh: ti_reply, r_agrnam.
ti_reply[] = ti_users[].

* Entro a la transaccion para consultar la cantidad de filas que esta genera.
if not ti_users is initial.
read table ti_users index 1 into wa_users.

clear t.
refresh t.

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' '=BACK',
'X' 'SAPLPRGN_TREE' '0121',
' ' 'BDC_OKCODE' '=BACK'.

* Ejecutar transacción 'PFCG' y depura el Rol seleccionado segun los criterios indicados
call transaction 'PFCG' using t mode p_mode update 'S'.
* Establece la cantidad de filas que salen en pantalla en la lista de usuarios por Rol
vc_filas = sy-srows - 10.
endif.

* Verifica que la cantidad de filas que salen en pantalla sea mayor o igual a 2.
if sy-srows >= 13.

loop at ti_users into wa_users where borrar = 'X' and causa in s_causa.
vn_tabix = sy-tabix.

* Lleno un rango con los roles en los cuales se realizo algun proceso de borrado para luego verificar
* la integridad de los registros que no se deben borrar.
r_agrnam-sign = 'I'.
r_agrnam-option = 'EQ'.
r_agrnam-low = wa_users-agr_name.
collect r_agrnam.

clear t.
refresh t.

if wa_users-agr_name <> wa_reply-agr_name.
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'.

clear: vc_row, wa_reply.
loop at ti_reply into wa_reply where agr_name = wa_users-agr_name.
vc_row = vc_row + 1.
if vc_row >= vc_filas.
vc_row = '002'.
perform batch_insdata(zmiscl) tables t using :
'X' 'SAPLPRGN_TREE' '0300',
' ' 'BDC_OKCODE' '=P+'.
endif.
if wa_reply-borrar = 'X'.
concatenate 'MARK_COL(' vc_row ')' into vc_mark.
perform batch_insdata(zmiscl) tables t using :
'X' 'SAPLPRGN_TREE' '0300',
' ' vc_mark 'X',
' ' 'BDC_OKCODE' '=DBLK'.
endif.
endloop.
perform batch_insdata(zmiscl) tables t using :
'X' 'SAPLPRGN_TREE' '0300',
' ' 'BDC_OKCODE' '=DELL',

'X' 'SAPLPRGN_TREE' '0300',
' ' 'BDC_OKCODE' '=SAVE'.

* call transaction 'PFCG' using t mode p_mode update 'S'.

bisonye
22/08/08, 06:09:51
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.
¿Y donde estan estas dos funciones?????

nasly alexandra correa
22/08/08, 15:29:23
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.

bisonye
25/08/08, 06:41:57
Pues no parece que sea un problema de las funciones. Intenta hacer una nueva grabación pero marcando el flag de proceso de fondo a ver si te funciona.

Saludos

nasly alexandra correa
27/08/08, 21:28:36
hola,

Ejecute por la sm35 el bacth en proceso de fondo para PFCG y funciona pero cuando voy a la pestaña Usuario el comparar usuario no se me activa.

bisonye
28/08/08, 06:50:39
Lo que tienes es una grabación de un proceso. Vuelve a hacer la grabación mediante la SHDB pero marcando el flag de proceso de fondo para que las pantallas sean iguales.

Saludos