REPORT YFTP1 .
* FTP by abap.
* This program passses host, user, source/target
* directory and file parameters to a UNIX script which
* in turn gets the required file from the host by ftp.
* The unix script should look like this:
*
* #! /bin/sh
* ftp -n $1 << !!
* user $2 $3
* cd .. <-- only for mainframe ftp
* get $4 $5
* quit
* !!
*
* placed in the adm path, preferably under
* /sapmnt//exe. In order to make this program
* work please create sapcpic/manager cpic user and
* apply note no. 41770.
*
PARAMETERS: HOST(10) OBLIGATORY LOWER CASE,
USER(8) OBLIGATORY LOWER CASE,
PASSWORD(8) OBLIGATORY LOWER CASE,
SRC_FILE(45) OBLIGATORY LOWER CASE,
TRG_FILE(45) DEFAULT '/usr/sap/trans/data/??????' OBLIGATORY LOWER CASE,
BIN AS CHECKBOX.
DATA: JC(8), FLG(1), B(128), PRNAME(128), LOGFILE(30), AAA(40).
DATA: BEGIN OF A,
1(12), 2(10), 3(10), 4(47), 5(47),
END OF A.
IF HOST = 'zxaq'.
IF BIN = 'X'.
PRNAME = 'ftp_bin_vms'.
ELSE.
PRNAME = 'ftp_asc_vms'.
ENDIF.
ELSE.
IF BIN = 'X'.
PRNAME = '/usr/sap/trans/bin/ftp_bin_unix'.
ELSE.
PRNAME = '/usr/sap/trans/bin/ftp_asc_unix'.
ENDIF.
ENDIF.
A-1 = HOST.
A-2 = USER.
A-3 = PASSWORD.
A-4 = SRC_FILE.
A-5 = TRG_FILE.
CONDENSE A.
B = A.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBNAME = 'FTP'
IMPORTING
JOBCOUNT = JC.
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
AUTHCKNAM = SY-UNAME
EXTPGM_NAME = PRNAME
EXTPGM_PARAM = B
EXTPGM_SYSTEM = 'jupiter'
JOBCOUNT = JC
JOBNAME = 'FTP'.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = JC
JOBNAME = 'FTP'
STRTIMMED = 'X'
TARGETSYSTEM = 'jupiter'
IMPORTING
JOB_WAS_RELEASED = FLG.
LOGFILE = '/tmp/ftp.log'.
DO.
OPEN DATASET LOGFILE FOR INPUT IN TEXT MODE.
IF SY-SUBRC = 0. EXIT. ENDIF.
ENDDO.
DO.
READ DATASET LOGFILE INTO AAA.
IF SY-SUBRC = 0. WRITE / AAA. ENDIF.
IF AAA = 'FTP completed'. EXIT. ENDIF.
ENDDO.
CLOSE DATASET LOGFILE.
delete dataset logfile.
* FTP by abap.
* This program passses host, user, source/target
* directory and file parameters to a UNIX script which
* in turn gets the required file from the host by ftp.
* The unix script should look like this:
*
* #! /bin/sh
* ftp -n $1 << !!
* user $2 $3
* cd .. <-- only for mainframe ftp
* get $4 $5
* quit
* !!
*
* placed in the adm path, preferably under
* /sapmnt//exe. In order to make this program
* work please create sapcpic/manager cpic user and
* apply note no. 41770.
*
PARAMETERS: HOST(10) OBLIGATORY LOWER CASE,
USER(8) OBLIGATORY LOWER CASE,
PASSWORD(8) OBLIGATORY LOWER CASE,
SRC_FILE(45) OBLIGATORY LOWER CASE,
TRG_FILE(45) DEFAULT '/usr/sap/trans/data/??????' OBLIGATORY LOWER CASE,
BIN AS CHECKBOX.
DATA: JC(8), FLG(1), B(128), PRNAME(128), LOGFILE(30), AAA(40).
DATA: BEGIN OF A,
1(12), 2(10), 3(10), 4(47), 5(47),
END OF A.
IF HOST = 'zxaq'.
IF BIN = 'X'.
PRNAME = 'ftp_bin_vms'.
ELSE.
PRNAME = 'ftp_asc_vms'.
ENDIF.
ELSE.
IF BIN = 'X'.
PRNAME = '/usr/sap/trans/bin/ftp_bin_unix'.
ELSE.
PRNAME = '/usr/sap/trans/bin/ftp_asc_unix'.
ENDIF.
ENDIF.
A-1 = HOST.
A-2 = USER.
A-3 = PASSWORD.
A-4 = SRC_FILE.
A-5 = TRG_FILE.
CONDENSE A.
B = A.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
JOBNAME = 'FTP'
IMPORTING
JOBCOUNT = JC.
CALL FUNCTION 'JOB_SUBMIT'
EXPORTING
AUTHCKNAM = SY-UNAME
EXTPGM_NAME = PRNAME
EXTPGM_PARAM = B
EXTPGM_SYSTEM = 'jupiter'
JOBCOUNT = JC
JOBNAME = 'FTP'.
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
JOBCOUNT = JC
JOBNAME = 'FTP'
STRTIMMED = 'X'
TARGETSYSTEM = 'jupiter'
IMPORTING
JOB_WAS_RELEASED = FLG.
LOGFILE = '/tmp/ftp.log'.
DO.
OPEN DATASET LOGFILE FOR INPUT IN TEXT MODE.
IF SY-SUBRC = 0. EXIT. ENDIF.
ENDDO.
DO.
READ DATASET LOGFILE INTO AAA.
IF SY-SUBRC = 0. WRITE / AAA. ENDIF.
IF AAA = 'FTP completed'. EXIT. ENDIF.
ENDDO.
CLOSE DATASET LOGFILE.
delete dataset logfile.