MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Ayuda !!! (foro/showthread.php?t=15444)

Edd_401 04/08/08 14:57:41

Ayuda !!!
 
1 Adjunto(s)
Tengo la siguiente funcion, la cual ejecuta comados externos de sistema operativo. (Los que se encunetran en SM49).

La pregunta es:

Como hacer que la ultima parte del comando sea variable. Les comento mas.

Se trata de enviar un archivo mediante un .exe

el comando seria : trans -h a c:\envio -i <nombre del archivo> ......

La parte del nombre del archivo es la que tendria que ser variable... para envia 'n' numero de archivos.

Ojala y alguien pueda ayudarme...

Gracias...

CALL FUNCTION 'SXPG_COMMAND_EXECUTE'
EXPORTING
COMMANDNAME = COMMAND_LIST-NAME
TABLES
EXEC_PROTOCOL = EXEC_PROTOCOL
EXCEPTIONS
NO_PERMISSION = 1
COMMAND_NOT_FOUND = 2
PARAMETERS_TOO_LONG = 3
SECURITY_RISK = 4
WRONG_CHECK_CALL_INTERFACE = 5
PROGRAM_START_ERROR = 6
PROGRAM_TERMINATION_ERROR = 7
X_ERROR = 8
PARAMETER_EXPECTED = 9
TOO_MANY_PARAMETERS = 10
ILLEGAL_COMMAND = 11
WRONG_ASYNCHRONOUS_PARAMETERS = 12
CANT_ENQ_TBTCO_ENTRY = 13
JOBCOUNT_GENERATION_ERROR = 14
OTHERS = 15.

ibecerra 04/08/08 15:54:54

hola, q tal no te compliques con comando q no conoces , te doy una solucion facil, porque tambien hago lo mismo para imprimir en impresoras especiales.
1. Create un archivo tipo .bat ejemplo COPIAINFO.BAT
2. Dentro del archivo bat create la sentencia que necesitas
trans -h a c:\envio -i %1
*ojo %1 es el parametro variable..
3. pruebalo ejecutandolo desde el sistema operativo
ejemplo COPIAINFO.BAT TUARCHIVO.TXT
Si funciona por hay entonces ya estas preparado para ejecutarlo desde sap
4. utiliza la siguiente funcion que sirve para ejecutar comandos externos en sap..
CONCATENATE 'C:\COPIAINFO.BAT' VARIABLE INTO ARCHIVO
SEPARATED BY SPACE.


CALL METHOD cl_gui_frontend_services=>execute
EXPORTING
document = archivo
EXCEPTIONS
OTHERS = 1.

Edd_401 04/08/08 16:40:40

Gracias por tu ayuda
 
Precisamente estaba haciendo lo que dices....

Solo que si es obligatorio el uso de la funcion, puesto que la funcion me devuelve un log, que sera usado por WORK FLOW....

Te muesto lo que llevo....

PRIMERO LLEVO EL ARCHIVO A PC (Como prueba)...

* Method Export file to PC
CALL METHOD r_gui->gui_download
EXPORTING
filename = c_file
filetype = 'ASC'
write_field_separator = 'X'
CHANGING
data_tab = it_txt[]
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
OTHERS = 24.
IF sy-subrc NE 0.
MESSAGE s166 WITH 'Error.Archivo no pudo ser generado'(e01).
ELSE.
MESSAGE s166 WITH 'Archivo ha sido generado'(e02) c_file.
ENDIF.






DESPUES CREO EL ARCHIVO .BAT



REFRESH itab.

CONCATENATE 'CD' w_path INTO itab-doscmd SEPARATED BY space.
APPEND itab.

TRANSLATE w_direc TO LOWER CASE.
MOVE w_direc TO itab-doscmd.
APPEND itab.
IF NOT w_inst1 IS INITIAL.
itab-doscmd = w_inst1.
APPEND itab.
ENDIF.
IF NOT w_inst2 IS INITIAL.
itab-doscmd = w_inst2.
APPEND itab.
ENDIF.

CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = 'C:\OPEN_ORDER.BAT'
filetype = 'DAT'
TABLES
data_tab = itab
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.




Y AHORA.......... Por lo que me indicas puedo ejecutar el archivo bat en la funcion correcto????

ibecerra 04/08/08 16:44:29

Asi es.. esa funcion es para ejecutar el archivo bat desde SAP

ibecerra 04/08/08 16:45:33

perdon este metodo es para ejecuta un archivo bat , exe...
CALL METHOD cl_gui_frontend_services=>execute
EXPORTING
document = archivo
EXCEPTIONS
OTHERS = 1.


Husos Horarios son GMT. La hora en este momento es 09:41:11.

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