‎2006 Aug 30 7:45 AM
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...
‎2006 Aug 30 7:53 AM
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
‎2006 Aug 30 7:53 AM
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
‎2006 Aug 30 8:06 AM
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...
‎2006 Aug 30 8:20 AM
‎2006 Aug 30 8:01 AM
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.
‎2006 Aug 30 8:20 AM
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