MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 17/04/08, 11:01:46
Avatar de Er-ee-Re
Er-ee-Re Er-ee-Re is offline
Member
 
Fecha de Ingreso: may 2006
Mensajes: 68
Crear Report en Tiempo de Ejecución

Hola a todas/os,

¿Alquién me podría indicar como se puede crear un report en tiempo de ejecución (y no hacien un BI a la SE38)?,

Se acepta cualquier ayuda,

Muchas Gracias.!!
Responder Con Cita
  #2  
Viejo 17/04/08, 11:19:16
Avatar de Floren
Floren Floren is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Localización: Málaga/Barcelona/Madrid
Mensajes: 209
Hola,

¿Te refieres a llamar a un report? En tal caso puedes hacer un call transaction a la TX que tenga asociada el report o a la se38.

Si te he entendido mal, díme.

Un saludo
__________________
Florentín Navarrete Moya
SAP HCM Consultant
Mail:
Blog:
Responder Con Cita
  #3  
Viejo 17/04/08, 11:37:33
Avatar de Er-ee-Re
Er-ee-Re Er-ee-Re is offline
Member
 
Fecha de Ingreso: may 2006
Mensajes: 68
Crear report en tiempo de ejecución

Hola,

Gracias por la respuesta, pero no me refiero a llamar a un report, sino a crearlo, es decir, por ejemplo, tener en una tabla interna todas las líneas de código de un report, y con alguna función, o metodo, u otra cosa,...,generar ese report (y ejecutar) en el sistema,

Gracias!!
Responder Con Cita
  #4  
Viejo 17/04/08, 13:32:57
Sergious Sergious is offline
Junior Member
 
Fecha de Ingreso: nov 2007
Mensajes: 22
Buenas, a continuacion te pego elñ código de un report que pide como parametro de entrada el codigo de un programa en TXT (el que podes obtener desde utilidades>mas utilidades>download), y este lo que hace es compilar el codigo del txt y ejecutarlo... espero que te sirva: ...si este programa esta subido en PR0 o RK0 se pueden ejecutar otros programas que no han sido transportados a estos ambientes

REPORT ZTOOL_XX_0002 LINE-SIZE 132 LINE-COUNT 80
NO STANDARD PAGE HEADING.

*REPORT SAPMZ2002 LINE-SIZE 132 LINE-COUNT 80
* NO STANDARD PAGE HEADING.

INCLUDE <ICON>.
INCLUDE <SYMBOL>.

Tables: Dd03l, DD04t.

Data: Begin of I_Tabla Occurs 0,
Selec(1) Type C,
TabName Like Dd03l-TabName,
Position Like Dd03l-Position,
FieldName Like Dd03l-FieldName,
KeyFlag Like Dd03l-KeyFlag,
DataType Like Dd03l-DataType,
Leng Like Dd03l-Leng,
Decimals Like Dd03l-Decimals,
RollName Like Dd03l-RollName,
Descript Like Dd04t-Ddtext,
End of I_Tabla.

Data: Begin of I_Limpia Occurs 0.
Include Structure I_Tabla.
Data: End of I_Limpia.

Data: Begin of I_Prog Occurs 0,
Linea(72) Type C,
End of I_Prog.


Data: Largo(6) Type P,
Decimal(6) Type P.
Data: W_Linea(72) Type C,
W_Lineas Like Sy-Tabix.

Data: W_JobName Like TBTCO-JOBNAME,
LINE(1) Type C,
BATCH(1) Type C.

selection-screen begin of block 0001 with frame title text-001.
parameters: fichero like RLGRAP-FILENAME.
selection-screen end of block 0001.
selection-screen begin of block 0002 with frame title text-t02.
parameters: p_direc radiobutton group 0001 default 'X',
p_fondo radiobutton group 0001.
parameters: p_nombre like TBTCO-JOBNAME lower case.
selection-screen end of block 0002.

data: begin of t_prog occurs 0,
campo(72).
data: end of t_prog.

data: begin of t_prog2 occurs 0,
campo(72).
data: end of t_prog2.


At selection-screen on value-request for fichero.
Perform buscar_programa.

At Selection-Screen on P_Nombre.
Perform Quieto_Parao.

Initialization.
Perform EstaLibre?.

Start-of-Selection.

Perform EstaLibre?.

Perform Cargar_Hojas.
Perform CargarTextos.
Perform Comprobar_Errores.



*&---------------------------------------------------------------------*
*& Form CARGARPROGRAMA
*&---------------------------------------------------------------------*
FORM CARGARPROGRAMA.
DATA : NOMBRE_JOB LIKE BTCH1170-JOBNAME.
DATA : CONTADOR_JOB LIKE TBTCJOB-JOBCOUNT.

Insert Report 'SAPMZBUTT' From I_Prog.
Check Sy-Subrc = 0.
Generate Report 'SAPMZBUTT'.
Check Sy-Subrc = 0.
If Sy-Ucomm = 'EJEC'.
Submit SAPMZBUTT And Return.
Else.
Concatenate 'SAPMZBUTT_' Sy-Datum '_' Sy-Uzeit Into Nombre_Job.
PERFORM Abrir_job USING nombre_job contador_job.
SUBMIT SAPMZBUTT
VIA JOB nombre_job NUMBER contador_job
AND RETURN.
PERFORM cerrar_job USING contador_job nombre_job.
Commit Work.
Perform PopUpJob Using Nombre_Job.
Set Screen 0.

EndIf.


ENDFORM. " CARGARPROGRAMA
*&---------------------------------------------------------------------*
*& Form CARGARTEXTOS
*&---------------------------------------------------------------------*
Form CargarTextos.


Data: Programa like Sy-Repid,
Campo1(10),
Campo2(50),
Tab Like TextPool Occurs 50 With Header Line.

Read TextPool Sy-Repid Into Tab Language Sy-Langu.
Delete TextPool 'SAPMZBUTT' Language Sy-Langu.
Insert TextPool 'SAPMZBUTT' From Tab Language Sy-Langu.

Endform. " CARGARTEXTOS

*&---------------------------------------------------------------------*
*& Form INSERTARESPACIOS
*&---------------------------------------------------------------------*
FORM INSERTARESPACIOS.

I_Prog-Linea = Space. Append I_Prog.
I_Prog-Linea = Space. Append I_Prog.

ENDFORM. " INSERTARESPACIOS


*&---------------------------------------------------------------------*
*& Form LLENARTABLAINTERNA
*&---------------------------------------------------------------------*
FORM LLENARTABLAINTERNA.

Loop At I_Tabla Where Selec = 'X'.
Concatenate 'I_Limpia-Selec =' '''' I_Tabla-Selec '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
Concatenate 'I_Limpia-TabName =' '''' I_Tabla-TabName '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
Concatenate 'I_Limpia-Position =' '''' I_Tabla-Position '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
Concatenate 'I_Limpia-FieldName =' '''' I_Tabla-FieldName '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
Concatenate 'I_Limpia-KeyFlag =' '''' I_Tabla-KeyFlag '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
Concatenate 'I_Limpia-DataType =' '''' I_Tabla-DataType '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
Concatenate 'I_Limpia-Leng =' '''' I_Tabla-Leng '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
Concatenate 'I_Limpia-Decimals =' '''' I_Tabla-Decimals '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
Concatenate 'I_Limpia-RollName =' '''' I_Tabla-RollName '''.'
Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
I_Prog-Linea = 'I_Limpia-Descript ='. Append I_Prog. Clear I_Prog.
Translate I_Tabla-Descript Using '''"'.
Concatenate '''' I_Tabla-Descript '''.' Into I_Prog-Linea.
Append I_Prog. Clear I_Prog.
I_Prog-Linea = 'Append I_Limpia. Clear I_Limpia.'.
Append I_Prog. Clear I_Prog.

EndLoop.

ENDFORM. " LLENARTABLAINTERNA
*&---------------------------------------------------------------------*
*& Form ABRIR_JOB
*&---------------------------------------------------------------------*
FORM abrir_job USING p_nombre_job
p_contador_job.


CALL FUNCTION 'JOB_OPEN'
EXPORTING
jobname = p_nombre_job
IMPORTING
jobcount = p_contador_job
EXCEPTIONS
cant_create_job = 1
invalid_job_data = 2
jobname_missing = 3
OTHERS = 4.




ENDFORM.

*&---------------------------------------------------------------------*
*& Form CERRAR_JOB
*&---------------------------------------------------------------------*
FORM cerrar_job USING p_contador_job
p_nombre_job.

CALL FUNCTION 'JOB_CLOSE'
EXPORTING
jobcount = p_contador_job
jobname = p_nombre_job
strtimmed = 'X'
EXCEPTIONS
cant_start_immediate = 1
invalid_startdate = 2
jobname_missing = 3
job_close_failed = 4
job_nosteps = 5
job_notex = 6
lock_failed = 7
OTHERS = 8.



ENDFORM. " CERRAR_JOB
*&---------------------------------------------------------------------*
*& Form POPUPJOB
*&---------------------------------------------------------------------*
FORM POPUPJOB Using P_Nombre.

CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
titel = text-tit
textline1 = text-job
textline2 = P_Nombre
start_column = 25
start_row = 6.

ENDFORM. " POPUPJOB
*&---------------------------------------------------------------------*
*& Form Quieto_Parao
*&---------------------------------------------------------------------*
FORM Quieto_Parao.
If P_Fondo = 'X' And P_Nombre is Initial.
MESSAGE E068(Z0) WITH Text-002.
Endif.
ENDFORM. " Quieto_Parao
*&---------------------------------------------------------------------*
*& Form BUSCAR_PROGRAMA
*&---------------------------------------------------------------------*
FORM BUSCAR_PROGRAMA.

Call Function 'KD_GET_FILENAME_ON_F4'
Changing
File_Name = fichero.



ENDFORM. " BUSCAR_PROGRAMA
*&---------------------------------------------------------------------*
*& Form CARGAR_hojas
*&---------------------------------------------------------------------*
form cargar_hojas.

CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = fichero
FILETYPE = 'ASC'
TABLES
DATA_TAB = t_prog
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10.


endform. " CARGAR_hojas

*&---------------------------------------------------------------------*
*& Form comprobar_errores
*&---------------------------------------------------------------------*
form comprobar_errores.

DATA : NOMBRE_JOB LIKE BTCH1170-JOBNAME.
DATA : CONTADOR_JOB LIKE TBTCJOB-JOBCOUNT.

READ REPORT 'SAPMZBUTT' INTO t_prog2.

insert report 'SAPMZBUTT' from t_prog.
generate report 'SAPMZBUTT'.
if sy-subrc <> 0.
exit.
endif.

If P_Direc = 'X'.
Submit SAPMZBUTT VIA SELECTION-SCREEN and return.
ElseIf P_Fondo = 'X'.
MOVE p_nombre TO nombre_job.
PERFORM Abrir_job USING nombre_job contador_job.
SUBMIT SAPMZBUTT
VIA JOB nombre_job NUMBER contador_job
AND RETURN.
PERFORM cerrar_job USING contador_job nombre_job.
Perform PopUpJob Using Nombre_Job.
EndIf.

insert report 'SAPMZBUTT' from t_prog2.
generate report 'SAPMZBUTT'.
if sy-subrc <> 0.
exit.
endif.

EndForm.
*&---------------------------------------------------------------------*
*& Form ESTALIBRE?
*&---------------------------------------------------------------------*
FORM ESTALIBRE?.
Data: Begin of L_Info Occurs 0.
Include Structure MSXXLIST.
Data: End of L_Info.

Data: Begin of L_Servers Occurs 0.
Include Structure WPINFO.
Data: End of L_Servers.

Data: Begin of T_Servers Occurs 0.
Include Structure WPINFO.
Data: End of T_Servers.



Data: L_Cpu Like Tskh_Dummy-With_Cpu,
L_Cpu_Server Like Rfcdes-Rfcdest,
L_Mensaje Like Sm04dic-PopupMsg.


CALL FUNCTION 'TH_SERVER_LIST'
TABLES
LIST = L_Info
EXCEPTIONS
NO_SERVER_LIST = 1
OTHERS = 2 .

Check Sy-Subrc = 0.

Loop At L_Info.

Clear L_Servers. Refresh L_Servers.
CALL FUNCTION 'TH_WPINFO'
EXPORTING
SRVNAME = L_Info-Name
WITH_CPU = L_Cpu
TABLES
WPLIST = L_Servers
EXCEPTIONS
SEND_ERROR = 1
OTHERS = 2 .

Loop At L_Servers.
Move-Corresponding L_Servers to T_Servers.
Append T_Servers. Clear T_Servers.
EndLoop.

EndLoop.


Loop At T_Servers.
If T_Servers-Wp_Report(8) = 'SAPMZBUTT'.
* Concatenate T_Servers-Wp_BName Text-004 T_Servers-Wp_Typ
* Into L_Mensaje Separated By Space.
L_Mensaje = 'Quieto parao que ya lo estan ejecutando'.
CALL FUNCTION 'TH_POPUP'
EXPORTING
CLIENT = Sy-Mandt
USER = Sy-Uname
MESSAGE = L_Mensaje
EXCEPTIONS
USER_NOT_FOUND = 1
OTHERS = 2 .
EndIf.
EndLoop.

ENDFORM. " ESTALIBRE?
Responder Con Cita
  #5  
Viejo 17/04/08, 14:32:27
Avatar de Er-ee-Re
Er-ee-Re Er-ee-Re is offline
Member
 
Fecha de Ingreso: may 2006
Mensajes: 68
Creación a traves de una tabla interna?

Hola,

Gracias por tu respuesta, pero no es lo que busco exactamente, lo que neceistaria es poder crear el report a traves de una tabla interna sin tener que utilizar ficheros de texto, ¿conoces alguna forma?,

Gracias por tu ayuda.
Responder Con Cita
  #6  
Viejo 17/04/08, 14:47:23
Sergious Sergious is offline
Junior Member
 
Fecha de Ingreso: nov 2007
Mensajes: 22
Si en la tabla interna ya tenes las lineas del programa que queres crear, tenes que obiar la subida del archivo porque ya lo tenes en la tabla interna y luego seguir el proceso como en el codigo del programa que te pase...

¿igual no te sirve?
Responder Con Cita
  #7  
Viejo 17/04/08, 15:08:02
Avatar de Er-ee-Re
Er-ee-Re Er-ee-Re is offline
Member
 
Fecha de Ingreso: may 2006
Mensajes: 68
No directorios y ficheros termporales

Hola,

Lo que me propones sería una forma de hacerlo, lo que ocurre es que no quiero tener que utilizar directorios y ficheros temporales para crearme el fichero de texto,

¿Alguna idea más?,

Muchas Gracias!!
Responder Con Cita
  #8  
Viejo 17/04/08, 15:47:24
Avatar de Floren
Floren Floren is offline
Senior Member
 
Fecha de Ingreso: abr 2006
Localización: Málaga/Barcelona/Madrid
Mensajes: 209
Una duda es de donde quieres que se almacenen las líneas de texto del report que quieres crear on-line, es decir, quieres que se lean de una tabla del diccionario, que se introduzcan por pantalla ...
__________________
Florentín Navarrete Moya
SAP HCM Consultant
Mail:
Blog:
Responder Con Cita
  #9  
Viejo 18/04/08, 07:54:28
Avatar de Er-ee-Re
Er-ee-Re Er-ee-Re is offline
Member
 
Fecha de Ingreso: may 2006
Mensajes: 68
Thumbs up Parcialmente Solucionado!!

Hola,

Ante todo gracias a Floren y Sergious por sus respuesta;

Con respecto a la generación del report en tiempo de ejecución voy a implementarlo a partir de las siguientes sentencias

[...]
v_prog = 'NOMBRE_REPORT'.
SYNTAX-CHECK FOR itab MESSAGE f LINE g WORD h.
IF sy-subrc IS INITIAL.
INSERT REPORT v_prog FROM itab.
SUBMIT (v_prog).
ENDIF.
[...]

Por si pueden servir de ayudar a cualquier otro
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 22:52:37.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web