Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

SENDING DATA USING FTP

Former Member
0 Likes
971

I HAVE TO SEND A FILE FROM OUR SAP TO REMOTE UNIX SERVER.

FOR THIS PURPOSE I AM USING FTP, BUT STILL I AM NOT ABLE TO DO THAT..

PLEASE HELP ME OUT ON THIS..

BELOW I AM GIVING MY CODE PLEASE HAVE A LOOK AT IT AND TELL ME WHATS WRONG.

**

REPORT ZIZSFPB001 .

TABLES : ZISFP03.

CONSTANTS: C_DELIMETER(1) TYPE C

VALUE '#'.

TYPES: BEGIN OF TY_FREIGHT,

VENDOR TYPE ZISFP03-VENDOR,

LR_NO TYPE ZISFP03-LR_NO,

EBELN TYPE ZISFP03-EBELN,

LR_DATE TYPE ZISFP03-LR_DATE,

PO_DATE TYPE ZISFP03-PO_DATE,

PO_BRANCH TYPE ZISFP03-PO_BRANCH,

TRK_NO TYPE ZISFP03-TRK_NO,

DISP_TIME TYPE ZISFP03-DISP_TIME,

SCAN_NO TYPE ZISFP03-SCAN_NO,

ACTU_QTY TYPE ZISFP04-ACTU_QTY,

MATERIAL TYPE ZISFP04-MATERIAL,

GR_BRANCH TYPE ZISFP04-GR_BRANCH,

STDTIME TYPE ZISFP14-STDTIME,

EST_ARRV_DT TYPE ZISFP04-ARRV_DT,

END OF TY_FREIGHT.

TYPES: BEGIN OF TY_FTP,

FIELD(90) TYPE C,

END OF TY_FTP.

DATA: IT_FREIGHT TYPE STANDARD TABLE OF TY_FREIGHT,

IT_OUTPUT TYPE STANDARD TABLE OF TY_FREIGHT,

IT_FTP TYPE STANDARD TABLE OF TY_FTP.

DATA : BEGIN OF TABL OCCURS 0,

LINE(560),

END OF TABL.

DATA: WA_FREIGHT TYPE TY_FREIGHT,

WA_OUTPUT TYPE TY_FREIGHT,

WA_FTP TYPE TY_FTP.

DATA: W_DSN TYPE SXPGCOLIST-PARAMETERS,

W_FTP_DSN TYPE SXPGCOLIST-PARAMETERS,

W_PARCOM_LOC(150) TYPE C,

W_FNAME(16) TYPE C,

W_ERROR_FLAG(1) TYPE C.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS : S_LR_DT FOR ZISFP03-LR_DATE.

SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.

PERFORM GET_DATA.

PERFORM TRANSFER_DATA_TO_FILE.

PERFORM FTP_TRANSFER.

&----


*& Form GET_DATA

&----


  • text

----


FORM GET_DATA.

SELECT A~VENDOR

A~LR_NO

A~EBELN

A~LR_DATE

A~PO_DATE

A~PO_BRANCH

A~TRK_NO

A~DISP_TIME

A~SCAN_NO

B~ACTU_QTY

B~MATERIAL

B~GR_BRANCH

C~STDTIME

INTO TABLE IT_FREIGHT

FROM ( ( ZISFP03 AS A

INNER JOIN ZISFP04 AS B

ON AVENDOR = BVENDOR

AND ALR_NO = BLR_NO

AND AEBELN = BEBELN )

INNER JOIN ZISFP14 AS C

ON AVENDOR = CVENDOR

AND APO_BRANCH = CFROM_LOC

AND BGR_BRANCH = CTO_LOC

AND AZMODE = CEXPRES_TY )

WHERE A~LR_DATE IN S_LR_DT.

IF SY-SUBRC EQ 0.

SORT IT_FREIGHT BY VENDOR LR_NO EBELN.

DELETE ADJACENT DUPLICATES FROM IT_FREIGHT.

ENDIF.

IT_OUTPUT[] = IT_FREIGHT[].

ENDFORM. " GET_DATA

&----


*& Form TRANSFER_DATA_TO_FILE

&----


  • text

----


FORM TRANSFER_DATA_TO_FILE.

MOVE 'createnew.txt' TO W_FNAME.

CONCATENATE '/usr/sap/trans/mmpp/' W_FNAME INTO W_DSN.

OPEN DATASET W_DSN FOR OUTPUT IN TEXT MODE.

IF SY-SUBRC NE 0.

WRITE : 'File open error occured.'.

STOP.

ENDIF.

LOOP AT IT_OUTPUT INTO WA_OUTPUT.

TRANSFER WA_OUTPUT TO W_DSN.

CLEAR WA_OUTPUT.

ENDLOOP.

IF SY-SUBRC NE 0.

WRITE : 'File write error occured.'.

EXIT.

ENDIF.

CLOSE DATASET W_DSN.

ENDFORM. " TRANSFER_DATA_TO_FILE

&----


*& Form FTP_TRANSFER

&----


  • text

----


FORM FTP_TRANSFER.

PERFORM BUILD_FTP_FILE.

PERFORM TRANSFER_FTP_FILE.

*

ENDFORM. " FTP_TRANSFER

&----


*& Form BUILD_FTP_FILE

&----


  • text

----


FORM BUILD_FTP_FILE.

W_FTP_DSN = '/usr/sap/trans/mmpp/createcheck.txt'.

CONCATENATE 'open'

'www.info.com'

INTO WA_FTP-FIELD

SEPARATED BY SPACE.

APPEND WA_FTP TO IT_FTP.

CLEAR WA_FTP.

CONCATENATE 'user'

'myusername'

'mypassword'

INTO WA_FTP-FIELD

SEPARATED BY SPACE.

APPEND WA_FTP TO IT_FTP.

CLEAR WA_FTP.

CONCATENATE 'cd'

'/oracle01/oracle/product/iSuites/Apache/Apache/htdocs/etrans/user/upload/'

INTO WA_FTP-FIELD separated by space.

APPEND WA_FTP TO IT_FTP.

CLEAR WA_FTP.

MOVE 'put /usr/sap/trans/mmpp/createnew.txt' TO WA_FTP-FIELD.

APPEND WA_FTP TO IT_FTP.

CLEAR WA_FTP.

MOVE 'close' TO WA_FTP-FIELD.

APPEND WA_FTP TO IT_FTP.

CLEAR WA_FTP.

MOVE 'bye' TO WA_FTP-FIELD.

APPEND WA_FTP TO IT_FTP.

CLEAR WA_FTP.

OPEN DATASET W_FTP_DSN FOR OUTPUT IN TEXT MODE.

LOOP AT IT_FTP INTO WA_FTP.

TRANSFER WA_FTP-FIELD TO W_FTP_DSN.

CLEAR WA_FTP.

ENDLOOP.

CLOSE DATASET W_FTP_DSN.

ENDFORM. " BUILD_FTP_FILE

&----


*& Form TRANSFER_FTP_FILE

&----


  • text

----


FORM TRANSFER_FTP_FILE.

FREE TABL.

CONCATENATE 'ftp -v -n < 'W_FTP_DSN INTO W_PARCOM_LOC.

CALL 'SYSTEM' ID 'COMMAND' FIELD W_PARCOM_LOC

ID 'TAB' FIELD TABL-SYS.

IF W_ERROR_FLAG = '*'.

MESSAGE I036(ZIMM).

ELSEIF W_ERROR_FLAG = 'F' .

MESSAGE I139(ZIMM) WITH W_FNAME.

ELSE.

MESSAGE I038(ZIMM) WITH W_FNAME.

ENDIF.

ENDFORM. " TRANSFER_FTP_FILE

**THE ABOVE GIVEN IS THE CODE I AM WRITING FOR THE FTP TO TRANSFER DATA FROM OUR APLICATION SERVER TO

THE REMOTE UNIX SERVER.

BUT WHEN I DO THE

CALL 'SYSTEM' ID 'COMMAND' FIELD W_PARCOM_LOC

ID 'TAB' FIELD TABL-SYS.

MY SYSTEM GOT HANGED AND GVES NO RESPONSE...

PLEASE HELP ME OUT AS EARLY AS POSSIBLE...

I WILL SURE U THAT U WULL REVERT BACK WITH POINTS...

PLEASE HELP...

ARE THERE ANY AUTHORISATIONS ISSUES..OR I AM DOING SOMETHING WRONG...

1 ACCEPTED SOLUTION
Read only

uwe_schieferstein
Active Contributor
0 Likes
803

Hello Uijwal

In order to execute FTP commands you have to define external OS commands within SAP (transaction SM49, SM69).

Alternatively, have a look at the sample programs in package SFTP (SAP FTP / HTTP).

Regards

Uwe

5 REPLIES 5
Read only

uwe_schieferstein
Active Contributor
0 Likes
804

Hello Uijwal

In order to execute FTP commands you have to define external OS commands within SAP (transaction SM49, SM69).

Alternatively, have a look at the sample programs in package SFTP (SAP FTP / HTTP).

Regards

Uwe

Read only

0 Likes
803

a very thanks for ur reply but i am not able to figure out what to do in these two transactions i.e sm49/sm69..

please help..

also i am using unix commands..

please send me any sample code whcih can work.if u can..i will be really thankful to u...

Read only

0 Likes
803

Hello Uijwal

Have a look at the SDN thread

You will find additional information there.

Regards

Uwe

Read only

Former Member
0 Likes
803

Hi,

U need to use a UNIX command.and with this command call FM 'SXPG_command_execute' or if u wnat u can execute through transaction SM49/69

But before that command is maintain on application server ,u can use SXPG_COMMAND_CREATE ,SXPG_COMMAND_MAINTAIN etc.

Read only

Former Member
0 Likes
803

I am not sure on it but still sending u this.

I have created one program in which i used unix commands to zip the file and put it in a server. May be in your case you can use a copy unix command.

please check the following code.

FORM zip_file.

TYPES: BEGIN OF zwa_type,

field(1000) TYPE c,

END OF zwa_type.

DATA : lt_result TYPE STANDARD TABLE OF zwa_type,

lf_folder_z(1000) TYPE c ,

lf_unix_fnam TYPE rlgrap-filename.

lf_unix_fnam = p_ifile.

CONCATENATE 'gzip'

lf_unix_fnam

INTO lf_folder_z

SEPARATED BY space.

CALL 'SYSTEM' ID 'COMMAND' FIELD lf_folder_z

ID 'TAB' FIELD lt_result.

IF sy-subrc = '1-'.

MESSAGE 'Error Occured in Zipping the file' TYPE 'E'.

ENDIF.

ENDFORM. "zip_file