Inicio > Reports > Programa de generación y ejecución de programas a partir de ficheros locales

Programa de generación y ejecución de programas a partir de ficheros locales

Programa que partiendo del contenido abap que se encuentra en un fichero de texto, ejecuta dinámicamente ese contenido

A veces hemos requerido el poder ejecutar en un entorno, un programa que no se encontrara en él, ya sea porque habia prisas y no se había podido transportar o por recuperar contenido del entorno objetivo o bien por ejemplo, el típico programa de borrado de contenido de alguna tabla que nos han mandado hacer deprisa y corriendo. Pues bien, ya que estamos con prisas, este programa es la solución. Lo que hace es ejecutar dinámicamente un programa virtual con el contenido de un fichero, el cual no será más que el código fuente real que queramos ejecutar.

Ejemplo:

Imaginemos que tenemos el programa Zprograma, que tiene como una instrucción write:/ ‘Hola Mundo’ y queremos ejecutarlo en producción sin necesidad de transportarlo.

1er paso: descargar el contenido de zprograma a un fichero.

2º paso: lanzar el programa zwxgene1 en el entorno donde queramos lanzar zprograma

Resultado:  ‘Hola Mundo’ en el sistema destino.

report zwxgene1.
************************************************************************
* Programa de generación y ejecución de programas a partir de          *
* ficheros locales                                                    *
************************************************************************
*
tables: trdir.
parameters: file like rlgrap-filename default ‘C:\zprograma’,
ejecutar(1) default ‘X’,
report(8) default ‘ZZZGENE1’,
p_dbna like trdir-dbna default ‘AD’,
p_dbapl like trdir-dbapl default ‘A’.

data: f1(40).
data: begin of rep occurs 1000,        ” Tabla para lectura de report
z(72),
end of rep,
texto(72).
at selection-screen on value-request for file.

call function ‘KD_GET_FILENAME_ON_F4’
changing
file_name     = file
exceptions
mask_too_long = 1
others        = 2.

start-of-selection.

call function ‘WS_UPLOAD’
exporting
filename            = file
filetype            = ‘ASC’
tables
data_tab            = rep
exceptions
conversion_error    = 1
file_open_error     = 2
file_read_error     = 3
invalid_table_width = 4
invalid_type        = 5
no_batch            = 6
unknown_error       = 7
others              = 8.
*
if sy-subrc <> 0.
write: ‘Error al leer el fichero local: ‘, file.
exit.
endif.
*
trdir-name = report.
trdir-dbapl = p_dbapl.
trdir-dbna =  p_dbna.
trdir-appl = ‘A’.
trdir-subc = ‘1’.
trdir-uccheck = ‘X’.
*   GENERACIÓN DINÁMICA DEL PROGRAMA
insert report report from rep.
*
generate report report message f1  directory entry trdir.

if sy-subrc <> 0.
write: / ‘Error al intentar crear el programa dinámicamente’.
write: / ‘*************************************************’.
loop at rep.
write:/ rep.
endloop.
else.
if not ( ejecutar is initial ).
submit (report) and return via selection-screen.
else.
loop at rep.
write:/ rep.
endloop.
endif.
endif.

delete report report.

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: