PDA

Ver la Versión Completa : Programa con ALV lanzado en fondo


cramr
13/12/10, 16:39:15
Buenas tardes,

Veréis, tengo un programa que hace una carga/modificación de equipos. Debo mostrar al final de la ejecución un log indicando el equipo, si ha ido bien, si ha surgido un error, descripción del error.

La cuestión es que como se desea que el log tenga el formato en cuestión, con esos campos en concreto, me veo obligado a utilizar un ALV y no una estructura del tipo BAPIRET2, por ejemplo.

Si lo lanzo online, me lo muestra correctamente. Si lo lanzo en fondo, me genera una orden spool, pero en un campo me muestra correctamente sus datos, pero en otro campos, ambos definidos igual, de tipo CHAR, no se por que, pero no me muestra ningún valor.

Alguna idea de como solucionar esto? He leido que con el GRID no sale, pero con el LIST si, pero yo ejecuto con el ALV_LIST_DISPLAY y nada. En la llamada a la función le indico los siguientes parámetros:

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = lv_repid
IS_LAYOUT = wa_layout
IT_FIELDCAT = wt_fieldcat
TABLES
t_outtab = table_log
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.

También he leido de asignar el valor 'A' al parámetro de salvar (SAVE) pero nada.


Muchas gracias

ppchico
14/12/10, 11:17:36
Me da a mi, que esto es un tema de la ejecución en fondo. Estás seguro que la tabla tiene informados estos campos... imaginemos que estamos creando el equipo, igual te está dando error, y no devuelve el dato de número de equipo, y por eso no lo muestra. Has probado a poner un break point de sistema y debbugear en fondo el punto donde muestras el ALV, y ver si está informado el campo??

Me da a mi que ese dato no va a estar relleno!!

Ya me cuentas!
Un Saludo,
Javier.

cramr
14/12/10, 15:29:07
El campo se esta informando seguro ya que es una lógica muy sencilla.

Me estoy fijando que al pintarlo con un WRITE me pasa lo mismo. Pierde el valor de dicho campo en la tabla interna. Al lanzar online tanto con write como por alv list, me lo pinta bien, pero en fondo nada...

Que leches puede ser?


Gracias

Tu amo
14/12/10, 15:37:09
Yo tambien pienso igual que ppchico, suena a otra cosa
Intenta un debug del job con /jdbg y ve si se llenan los campos o no

cramr
14/12/10, 15:51:15
vale, teneis razón...no sabía eso de debuguear un job, muchas gracias.

Veréis, estoy intentado leer un fichero que está en local, con al función GUI_UPLOAD. Y no lo cargo. He leido que todas las funciones GUI no funcionan en fondo, o todas las que tienen la excepción NO BATCH.

Entonces ahora tengo el dilema, si quiero leer un fichero en local, pero no puedo utilizar esta funcion en fondo, cuandos se ejecute en fondo que hago??? o entonces debería el usuario poner el fichero en cuestión siempre en el servidor?


Muchas gracias

DCErick
14/12/10, 17:18:27
vale, teneis razón...no sabía eso de debuguear un job, muchas gracias.

Veréis, estoy intentado leer un fichero que está en local, con al función GUI_UPLOAD. Y no lo cargo. He leido que todas las funciones GUI no funcionan en fondo, o todas las que tienen la excepción NO BATCH.

Entonces ahora tengo el dilema, si quiero leer un fichero en local, pero no puedo utilizar esta funcion en fondo, cuandos se ejecute en fondo que hago??? o entonces debería el usuario poner el fichero en cuestión siempre en el servidor?


Muchas gracias

Yo cuando quieor cargar archivos planos en un job uso OPEN DATASET y pues los archivos los tengo en una carpeta compartida '\\IP\CarpetaCompartida\FileName.txt'

Saludos,

ppchico
14/12/10, 17:35:32
vale, teneis razón...no sabía eso de debuguear un job, muchas gracias.

Veréis, estoy intentado leer un fichero que está en local, con al función GUI_UPLOAD. Y no lo cargo. He leido que todas las funciones GUI no funcionan en fondo, o todas las que tienen la excepción NO BATCH.

Entonces ahora tengo el dilema, si quiero leer un fichero en local, pero no puedo utilizar esta funcion en fondo, cuandos se ejecute en fondo que hago??? o entonces debería el usuario poner el fichero en cuestión siempre en el servidor?


Muchas gracias

Efectivamente, el proceso en fondo no puede interactuar con el equipo del usuario. Si los datos provienen de un fichero, este deberá guardarse en el servidor, o como mucho almacenarlo en una tabla... aunque es preferible el tema del servidor!

Un Saludo,
Javier.

cramr
20/12/10, 08:01:25
pues nada, segun veo que se hace con otros, como es para una unica carga, pues si se hace en fondo, se subira el fichero al servidor y listo

Gracias