#1
|
||||
|
||||
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.!! |
#2
|
||||
|
||||
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: |
#3
|
||||
|
||||
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!! |
#4
|
|||
|
|||
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? |
#5
|
||||
|
||||
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. |
#6
|
|||
|
|||
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? |
#7
|
||||
|
||||
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!! |
#8
|
||||
|
||||
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: |
#9
|
||||
|
||||
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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|