#2
|
|||
|
|||
Ejemplo
estructura zx
MANDT MANDT CLNT 3 0 Mandante SOURCE LOCALFILE CHAR 128 0 Fichero local para upload/download DESTINATION LOCALFILE CHAR 128 0 Fichero local para upload/download FILENAME LOCALFILE CHAR 128 0 Fichero local para upload/download ________________ ______________________________ __________ ______ ______ ____________________________________________________________ *"---------------------------------------------------------------------- *"*"Interfase local *" IMPORTING *" REFERENCE(HOST) TYPE C *" REFERENCE(USERID) TYPE C *" REFERENCE(PASSWORD) TYPE C *" REFERENCE(USAGE) TYPE C *" REFERENCE(RFC_DESTINATION) LIKE RFCDES-RFCDEST *" TABLES *" COMMANDS *" RESULTS *" FILES STRUCTURE Zx *" EXCEPTIONS *" INVALID_USAGE *" NO_FILES_TO_TRANSFER *" NO_FTP_COMMANDS_TO_EXECUTE *" FTP_CONNECTION_FAILED *" FTP_COMMAND_FAILURE *"---------------------------------------------------------------------- *Function Z_x * *Purpose: This function module simplifies implementation of FTP *functionality by reducing the setup required and number of calls *involved within ABAP. This function can operate by passing a table of *files with source and destination locations to be transferred or by *passing a table of FTP commands to be executed. * *Parameter Description: * *HOST The host address of the FTP server. Usually specified as *an IP address. (ex. 65.212.34.120) * *USERID The userid used to login to the FTP server * *PASSWORD The password used to login to the FTP server. Unlike the *manual implementation of FTP this function accepts only *plain text passwords. * *USAGE Determines the mode of operation for ZEASY_FTP. Valid *values are ‘S’, ‘R’, or ‘A’. * *‘S’end – When using mode ‘S’ a table of filenames (FILES) *with the corresponding source and destination locations are passed in. *The function will send all files from their source locations to the *destination locations on the FTP server. * *‘R’etrieve – When using mode ‘R’ a table of filenames (FILES) with the *corresponding source and destination locations are passed in. The *function will retrieve all files from the source locations on the FTP *server and place them in the appropriate destination locations. * *‘A’dvanced – When using mode ‘A’ a table of commands (COMMANDS) is *passed in. These commands are executed in sequential order. * *RFC_DESTINATION Determines which ‘local’ view to use during the *transfer process. Valid values are ‘SAPFTP’ or *‘SAPFTPA’. These destinations are configured in SM59 and already exist *as defaults provided by SAP. * *‘SAPFTP’ – Use this value to transfer files between *the GUI front-end machine and the FTP server. * *‘SAPFTPA’ – Use this value to transfer files between the SAP *application server and the FTP server. * * * * * * * *Table Description: * *COMMANDS Table of FTP commands for processing. When using modes ‘S’ or *‘R’ this table will be filled on successful execution of ZEASY_FTP * with* the FTP commands used to perform the file transfer. When using *mode ‘A’ this table must be filled by the calling program with valid *FTP commands to be executed by ZEASY_FTP. * *RESULTS Table containing a log of the FTP session results. * *FILES Table containing the source location, destination location, *and filename of each file to be transferred. When using *modes ‘S’ or ‘R’ this table must be filled by the calling program. * *The structure of the FILES table consists of the following: *SOURCE LIKE LOCALFILE (RLGRAP-FILENAME) *DESTINATION LIKE LOCALFILE (RLGRAP-FILENAME) *FILENAME LIKE LOCALFILE (RLGRAP-FILENAME) * *Exception Description: * *INVALID_USAGE The usage specified was not equal to a valid value *consisting of ‘S’, ‘R’, or ‘A’. * *NO_FILES_TO_TRANSFER Mode ‘S’ or ‘R’ was specified for usage; however, *the necessary table of FILES was not specified. * *NO_FTP_COMMANDS_TO_EXECUTE Mode ‘A’ was specified for usage; *however, the necessary table of COMMANDS *to be executed was not specified. * *FTP_CONNECTION_FAILED There was a problem establishing the FTP *connection. Please verify the host *address, userid, and password of the FTP *server. Also verify that the correct *RFC_DESTINATION was specified. * *FTP_COMMAND_FAILURE There was a problem executing the FTP *commands. Please check commands for *validity. *----------------------------------------------------------------------* *DOCUMENTATION/NOTES * Date: 05/2003 * * USAGE = 'S'end, 'R'etrieve, 'A'dvanced * RFC_DESTINATION = 'SAPFTP', 'SAPFTPA' - defined in SM59 * * Be aware that FTP userid's, passwords, and commands are case * sensitive! For easiest use please make sure that the FTP account has * been created with a lowercase userid and password and TRANSLATE * the userid and password parameters to lower case before calling this * function. * * Cannot test ZEASY_FTP, FTP_CONNECT, or other functions that use * FTP_CONNECT from function tester (auto converts test data to upper * case)! * * Parameters on selection screens are auto converted to upper case * during AT SELECTION-SCREEN. * * Structure of ZEASYFTP_FILES (FILES table) * SOURCE LIKE LOCALFILE * DESTINATION LIKE LOCALFILE * FILENAME LIKE LOCALFILE * *---------------------------------------------------------------------* data: l_key type i value 26101957. data: l_length type i. data: l_lines type i. data: l_ftp_handle type i. data: l_cd_src(3) type c. data: l_cd_dest(3) type c. data: l_transfer_command(3) type c. *----------------------------------------------------------------------* *ENSURE PROPER EXECUTION * *----------------------------------------------------------------------* if usage ne 'S' and usage ne 'R' and usage ne 'A'. raise invalid_usage. endif. case usage. when 'A'. describe table commands lines l_lines. if l_lines = 0. raise no_ftp_commands_to_execute. endif. when 'S' or 'R'. clear: commands. refresh: commands. describe table files lines l_lines. if l_lines = 0. raise no_files_to_transfer. endif. * build commands if usage = 'S'. l_cd_src = 'lcd'. l_cd_dest = 'cd'. l_transfer_command = 'put'. elseif usage = 'R'. l_cd_src = 'cd'. l_cd_dest = 'lcd'. l_transfer_command = 'get'. endif. sort files by source destination. loop at files. at new source. if not files-source is initial. concatenate l_cd_src files-source into commands separated by space. append commands. endif. endat. at new destination. if not files-destination is initial. concatenate l_cd_dest files-destination into commands separated by space. append commands. endif. endat. if not files-filename is initial. concatenate l_transfer_command files-filename into commands separated by space. append commands. endif. endloop. endcase. *----------------------------------------------------------------------* *ENCRYPT PASSWORD * *----------------------------------------------------------------------* l_length = strlen( password ). call 'AB_RFC_X_SCRAMBLE_STRING' id 'SOURCE' field password id 'KEY' field l_key id 'SCR' field 'X' id 'DESTINATION' field password id 'DSTLEN' field l_length. *----------------------------------------------------------------------* *ESTABLISH FTP CONNECTION * *----------------------------------------------------------------------* call function 'FTP_CONNECT' exporting user = userid password = password host = host rfc_destination = rfc_destination importing handle = l_ftp_handle exceptions not_connected = 1 others = 2. if sy-subrc <> 0. raise ftp_connection_failed. endif. *----------------------------------------------------------------------* *PROCESS FTP COMMANDS * *----------------------------------------------------------------------* call function 'FTP_COMMAND_LIST' exporting handle = l_ftp_handle tables data = results commands = commands exceptions tcpip_error = 1 command_error = 2 data_error = 3 others = 4. if sy-subrc <> 0. raise ftp_command_failure. endif. *----------------------------------------------------------------------* *CLOSE FTP CONNECTION * *----------------------------------------------------------------------* call function 'FTP_DISCONNECT' exporting handle = l_ftp_handle. endfunction. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|