FTP, Carga y Descarga de archivos.

posted under by Antonio Lopez
Este es el reporte para subir y bajar un archivo de texto desde una ubicacion ftp,

Es importante mencionar que el ftp tiene que estar protegido con contraseña, ya que esta se manda a encriptar primero mediante CALL 'AB_RFC_X_SCRAMBLE_STRING' y despues se conecta al ftp, si no lleva contraseña, este nuca se conecta o muestra mensaje de error de privilegios no validos.


DATA:
* VARIABLES PARA CONECCION FTP
USER(64) TYPE C value 'usuario',
PWD(64) TYPE C value 'password',
HOST(64) TYPE C value 'host',
FILENAME(80) TYPE C value 'carga/archivo।txt',
DEST LIKE RFCDES-RFCDEST VALUE 'SAPFTP',
HDL TYPE I,
KEY TYPE I VALUE 26101957,
DSTLEN TYPE I,
BLOB_LENGTH TYPE I,
BND1(18) TYPE C,
BND2(1) TYPE C,

* TABLAS INTERNAS
BEGIN OF BLOB OCCURS 0,
LINE(82) TYPE c,
END OF BLOB,

BEGIN OF IT_TABLE OCCURS 0,
PROVEEDOR(10),
MATERIAL(18),
ORG(4),
END OF IT_TABLE.


*--- Inicio de Programa
PERFORM TRY_UPLOAD_FILE.
PERFORM TRY_DOWNLOAD_FILE.
*--- Fin de Programa


*&---------------------------------------------------------------------*
*& Form TRY_UPLOAD_FILE
*&---------------------------------------------------------------------*
FORM TRY_UPLOAD_FILE.

DESCRIBE FIELD PWD LENGTH DSTLEN.
CALL 'AB_RFC_X_SCRAMBLE_STRING'
ID 'SOURCE' FIELD PWD ID 'KEY' FIELD KEY
ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD PWD
ID 'DSTLEN' FIELD DSTLEN.

*BLOB_LENGTH = 77.
*este campo es el que le dice al sap de que longuitud es cada renglon que traeremos del ftp


CALL FUNCTION 'FTP_SERVER_TO_R3'
EXPORTING
HANDLE = HDL
FNAME = FILENAME
IMPORTING
BLOB_LENGTH = BLOB_LENGTH
TABLES
BLOB = BLOB.

CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
HANDLE = HDL.

*como el archivo lo insertamos en una cadena, loopeamos la tabla y la separamos.
loop at blob.
IT_TABLE-proveedor = blob-line+0(10).
IT_TABLE-material = blob-line+10(18).
IT_TABLE-org = blob-line+28(4).
append IT_TABLE.
endloop.
ENDFORM. " TRY_UPLOAD_FILE


*&---------------------------------------------------------------------*
*& Form TRY_DOWNLOAD_FILE
*&---------------------------------------------------------------------*
FORM TRY_DOWNLOAD_FILE.
DESCRIBE FIELD PWD LENGTH DSTLEN.
CALL 'AB_RFC_X_SCRAMBLE_STRING'
ID 'SOURCE' FIELD PWD ID 'KEY' FIELD KEY
ID 'SCR' FIELD 'X' ID 'DESTINATION' FIELD PWD
ID 'DSTLEN' FIELD DSTLEN.

CALL FUNCTION 'FTP_CONNECT'
EXPORTING
USER = USER
PASSWORD = PWD
HOST = HOST
RFC_DESTINATION = DEST
IMPORTING
HANDLE = HDL.

DESCRIBE TABLE it_datos1 LINES lines.
blob_length = lines * 75 .
CALL FUNCTION 'FTP_R3_TO_SERVER'
EXPORTING
HANDLE = HDL
FNAME = FILENAME2
BLOB_LENGTH = BLOB_LENGTH
TABLES
BLOB = IT_TABLE.

CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
HANDLE = HDL.
ENDFORM. " TRY_DOWNLOAD_FILE

0 comentarios

Make A Comment
Google
 
top