Ver Mensaje Individual
  #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