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?