PDA

Ver la Versión Completa : FTP desde Sap


mekachu
26/09/07, 19:35:37
Hola :

Estoy haciendo un programa que debe traer un fichero desde un servidor externo al servidor Sap, mediante FTP.

Sé que se puede ejecutar un comando de SO desde la tr. SM49, pero no tengo ni idea de cómo funciona. También me han contado que se puede ejecutar un script de Unix que haga eso pero con más comando ( estoy pensando en cd, mget ... ) y me gustaría saber cómo.

Gracias.

nenuke
28/09/07, 15:51:46
Hola,

tenía este código por ahi....echale un vistazo a ver si te da una idea.

REPORT ZFTP .
DATA : HDL TYPE I.
DATA : V_DSTLEN TYPE I, X_PWD(64) TYPE C.
DATA: V_CMD(80) TYPE C.
DATA: V_PATH LIKE SXPGCOLIST-PARAMETERS.
DATA: V_FILE LIKE RLGRAP-FILENAME.
DATA: V_ERROR(1) TYPE C.
DATA: I_MESSAGES LIKE SOLI OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF IT_RESULT OCCURS 0,
LINE(100) TYPE C.
DATA: END OF IT_RESULT.
DATA: KEY TYPE I VALUE 26101957.

CONSTANTS: V_HOST(64) TYPE C VALUE 'ftp.yahoo.es'.
CONSTANTS: V_USER(64) TYPE C VALUE 'user'.
CONSTANTS: V_PWD(64) TYPE C VALUE 'password'.

START-OF-SELECTION.
V_PATH = '\\APP_SERVER\INTERFACE\TEMP\'.
V_FILE = '1.txt'.


PERFORM FTP_TO_OBE.

LOOP AT I_MESSAGES.
WRITE :/ I_MESSAGES-LINE.
ENDLOOP.

***************************
* FTP CONNECTION
***************************
FORM FTP_TO_OBE.
CLEAR: V_DSTLEN, X_PWD.
DESCRIBE FIELD V_PWD LENGTH V_DSTLEN IN CHARACTER MODE.

* To convert password into encrypted password

CALL 'AB_RFC_X_SCRAMBLE_STRING'
ID 'SOURCE' FIELD V_PWD
ID 'KEY' FIELD KEY
ID 'SCR' FIELD 'X'
ID 'DESTINATION' FIELD X_PWD
ID 'DSTLEN' FIELD V_DSTLEN.

CALL FUNCTION 'FTP_CONNECT'
EXPORTING
USER = V_USER
PASSWORD = X_PWD
HOST = V_HOST
RFC_DESTINATION = 'SAPFTP' " create using report program RSFTP002
IMPORTING
HANDLE = HDL
EXCEPTIONS
NOT_CONNECTED = 1
OTHERS = 2.

WRITE : / ' sy-subrc ' , SY-SUBRC.
WRITE : / 'hdl' , HDL.

IF SY-SUBRC = 0.
CLEAR V_CMD.
CONCATENATE 'lcd' V_PATH INTO V_CMD SEPARATED BY SPACE.
PERFORM FTP_COMMAND USING V_CMD.
CLEAR V_CMD.
CONCATENATE 'put' V_FILE INTO V_CMD SEPARATED BY SPACE.
PERFORM FTP_COMMAND USING V_CMD.
ELSE.
V_ERROR = 'X'.
CONCATENATE 'Not connected to ftp: world finest '
'user:'
INTO I_MESSAGES SEPARATED BY SPACE.
APPEND I_MESSAGES.
CLEAR I_MESSAGES.
ENDIF.

ENDFORM. " FTP_TO_OBE

***************************
* FTP COMMAND
***************************

FORM FTP_COMMAND USING V_CMD.
CLEAR IT_RESULT.
REFRESH IT_RESULT.

CALL FUNCTION 'FTP_COMMAND'
EXPORTING
HANDLE = HDL
COMMAND = V_CMD
TABLES
DATA = IT_RESULT
EXCEPTIONS
TCPIP_ERROR = 1
COMMAND_ERROR = 2
DATA_ERROR = 3
OTHERS = 4.

IF SY-SUBRC = 0.
CONCATENATE 'FTP command:'
'executed on host:'
INTO I_MESSAGES SEPARATED BY SPACE.
APPEND I_MESSAGES.
CLEAR I_MESSAGES.
loop at it_result.
I_MESSAGES = IT_RESULT.
APPEND I_MESSAGES.
CLEAR I_MESSAGES.
endloop.
CLEAR IT_RESULT.
REFRESH IT_RESULT.
ELSE.
V_ERROR = 'X'.
CONCATENATE 'Command:'
'not run for host:'
INTO I_MESSAGES SEPARATED BY SPACE.
APPEND I_MESSAGES.
CLEAR I_MESSAGES.
ENDIF.
ENDFORM. " FTP_COMMAND

Un saludo.

Raymundo_fl
28/09/07, 18:24:20
Hola:

Tengo el mismo problema necesito pasar un archivo de un sistema SAP a otro que no tiene SAP solo unix y esa funcion que ponen ahi como que a fuerza requiere una rfc destino osea otro sistema SAP, me podria decir como puedo hacerlo, no se tal vez usando comandos del sistema operativo desde ABAP?? saludos y gracias.

mekachu
01/10/07, 07:15:19
Hola :

Me pasa lo mismo que a él.

El sistema destino es Sap, pero los ficheros que tengo que traer están en una máquina Unix.Mi idea era hacerlo con un comando de sistema operativo, pero dado que no es solo comando , sino un script lo que tengo que ejecutar, no sé cómo hacerlo desde Sap.

Pero gracias por el código.

julk32
03/03/15, 12:20:34
Cordial saludo,

Saen como solucionarlo?
LA verdad me encuentro en la misma situación tengo que importar desde un servidor sftp externo unix unos archivos xml a sap, me han dicho que con estas funciones:
HTTP_SCRAMBLE
FTP_CONNECT
FTP_COMMAND
FTP_DISCONNECT

Agradezco cualquier ayuda!

Saludos.