#1
|
|||
|
|||
Problema con conexión FTP
Hola,
Tengo un problema con el que llevo ya un montón de tiempo.. Me pidieron que coja unos ficheros de un directorio en concreto (por el que puedo navegar sin problemas desde la AL11) y dejarlos a través de una conexión FTP en un directorio del cliente. Esto es lo que he hecho yo en mi programa: Primero obtengo los ficheros a descargar del directorio que me han dado: FORM obtener_ficheros . * Obtengo la lista de ficheros de la AL11 w_dirnam = '\\172.24.140.21\Overlim\idoc\salida\'. CALL FUNCTION 'EPS_GET_DIRECTORY_LISTING' EXPORTING dir_name = w_dirnam TABLES dir_list = w_itab EXCEPTIONS invalid_eps_subdir = 1 sapgparam_failed = 2 build_directory_failed = 3 no_authorization = 4 read_directory_failed = 5 too_many_read_errors = 6 empty_directory_list = 7 OTHERS = 8. ENDFORM. " OBTENER_FICHEROS --------- Luego ya hago la conexión y descargo (o eso intento jeje) los ficheros: FORM conectar_ftp . DATA: file TYPE string, blob_length TYPE i, lin TYPE i, bin TYPE c VALUE 'X', cnt(8) TYPE n, lines TYPE i VALUE 1000, docid LIKE sysuuid-c, bline(80) TYPE x, texto TYPE string. DATA: BEGIN OF itab OCCURS 0, linea(400), END OF itab. TYPES: BEGIN OF text, line(400) TYPE c, END OF text. TYPES: BEGIN OF blob, line(80) TYPE x, END OF blob. DATA: bindata TYPE TABLE OF blob WITH HEADER LINE, result TYPE TABLE OF text WITH HEADER LINE, chardata TYPE TABLE OF text WITH HEADER LINE. DATA: fname(150). * pwd = 'xxxxx'. * user = 'xxxx'. * host = '80.35.132.67'. slen = STRLEN( pwd ) . * SAP Application Server -> FTP Server * dest = 'SAPFTPA'. * Gui Frontend Machine -> FTP Server dest = 'SAPFTP'. * La contraseña hay que formatearla CALL FUNCTION 'HTTP_SCRAMBLE' EXPORTING SOURCE = pwd sourcelen = slen key = key IMPORTING destination = pwd. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING text = 'Connect to FTP Server'. * Conectamos al directorio FTP CALL FUNCTION 'FTP_CONNECT' EXPORTING user = user password = pwd host = host rfc_destination = dest IMPORTING handle = hdl EXCEPTIONS not_connected = 1 OTHERS = 2. IF sy-subrc = 0. * Ponemos modo pasivo CALL FUNCTION 'FTP_COMMAND' EXPORTING handle = hdl command = 'set passive off' TABLES data = result EXCEPTIONS OTHERS = 1. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING text = 'Create file on FTP Server'. REFRESH result. CALL FUNCTION 'FTP_COMMAND' EXPORTING handle = hdl command = 'ascii' TABLES data = result EXCEPTIONS tcpip_error = 1 command_error = 2 data_error = 3. * Nos movemos a la carpeta PILSA CALL FUNCTION 'FTP_COMMAND' EXPORTING handle = hdl * command = 'cd pilsa' command = 'cd 1111' TABLES data = result EXCEPTIONS tcpip_error = 1 command_error = 2 data_error = 3. * Cada fichero que obtenga en el directorio indicado se descarga vía FTP LOOP AT w_itab WHERE name(6) = 'ORDERS'. CLEAR itab. REFRESH itab. * Ruta del fichero que se coge del directorio CONCATENATE '\\172.24.140.21\Overlim\idoc\salida\' w_itab-name INTO file. * Nombre del fichero que se descargará. CONCATENATE w_itab-name '.txt' INTO fname. * Se sube el fichero a una tabla interna OPEN DATASET file FOR INPUT IN TEXT MODE ENCODING DEFAULT. READ DATASET file INTO itab. IF sy-subrc IS INITIAL. APPEND itab. CLEAR itab. READ DATASET file INTO itab-linea. IF sy-subrc IS INITIAL. APPEND itab. CLEAR itab. DO. READ DATASET file INTO itab-linea. IF sy-subrc IS INITIAL. APPEND itab. CLEAR itab. ELSE. EXIT. ENDIF. ENDDO. ENDIF. ENDIF. CLOSE DATASET file. DESCRIBE TABLE itab LINES lin. blob_length = lin * 80. * Se descarga el archivo al servidor CALL FUNCTION 'FTP_R3_TO_SERVER' EXPORTING handle = hdl fname = fname blob_length = blob_length character_mode = 'X' TABLES text = itab EXCEPTIONS tcpip_error = 1 command_error = 2 data_error = 3 OTHERS = 4. IF sy-subrc = 0. * Borramos del directorio local cada uno de los ficheros * DELETE DATASET file. CLEAR texto. CONCATENATE 'Se descarga el archivo' fname INTO texto SEPARATED BY space. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING text = 'Descargando fichero'. IF sy-subrc EQ 0. WRITE: / texto, 'al servidor'. SKIP 1. ENDIF. CLEAR texto. CONCATENATE 'Se borra el archivo' fname INTO texto SEPARATED BY space. CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING text = 'Eliminando fichero del servidor'. IF sy-subrc EQ 0. WRITE: / texto, 'del servidor'. SKIP 1. ENDIF. ENDIF. ENDLOOP. ELSE. WRITE: / 'Error al conectar al servidor FTP'. SKIP 1. ENDIF. CALL FUNCTION 'FTP_DISCONNECT' EXPORTING handle = hdl. IF sy-subrc EQ 0. WRITE: / 'Desconectado del servidor FTP'. SKIP 1. ENDIF. ENDFORM. " CONECTAR_FTP Vale, por otro lado me he descargado el Filezilla server y Filezilla Cliente para probar con mi máquina. Si ejecuto el programa online funciona correctamente poniendo el host SAPFTP pero si pongo SAPFTPA no funciona (por lo que he leido SAPFTPA es para procesos en fondo). La cuestión es que me creo un job que lance mi programa (conectándome a mi máquina) y ya no funciona. Pongo la dirección del cliente (la que viene ahí de 80...) y no me funciona. Hoy en concreto se les ha caido el servicio FTP pero bueno, yo nunca he conseguido conectar con ello. Desde sistemas me dicen que está todo ok, que ellos hacen un ftp 80.... desde una ventana de msdos y que se conectaba (hoy no), pero yo desde el report nunca lo he conseguido. Algiuen ha tenido alguna vez un problema similar o se le ocurre qué puede ser ??? Muchas gracias !!! María |
Herramientas | Buscar en Tema |
Desplegado | |
|
|