10-20-2008 6:25 PM
Hello,
We got a strange problem when transfering a txt file.
The file looks like this before transfering it with a program that uses FTP commands:
410-00000 | ABBOCATH-T N°18 | 9057.000 | ST | 16.35 | 1301
410-00005 | ABBOCATH-T N°18 ABC | 56068.000 | ST | 28.41 | 1301
....
Once the file is transfered, it looks like this in the FTP folder:
410-00000 | ABBOCATH-T N°18 | 9057.000 | ST | 16.35 | 1301 □ 410-00005 | ABBOCATH-T N°18 ABC | 56068.000 | ST | 28.41 | 1301...
The problem is that breaklines are not recognized in this file, they have been changed by this strange character □ after 1301 (it's not exactly that character, but it looks like a square).
I was not able to copy the exact txt file, because that character was converted to a breakline, so I supose that this character means a breakline that is not recognized after transfer.
The code we're using is this:
*----------------------------------------------------------------------*
***INCLUDE LZHR_RFC_MOVFILEF01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form INICIALIZAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM inicializar .
DATA zvalor1 LIKE zgetdconst-valor1.
* SELECT SINGLE valor1 INTO gv_filename
* FROM zgetdconst WHERE modulo EQ 'HR' AND
* proyec EQ 'SISSALUD' AND
* aplica EQ 'FTP' AND
* campo EQ 'FILENAME' AND
* correl EQ '0001'.
* Construir
*Begin RVP17102008
* Concatenate 'STOCK_' sy-datum+6(2) sy-datum+4(2) sy-datum(4) '.TXT'
* into gv_filename.
CONCATENATE 'STOCK' sy-datum(4) sy-datum+4(2) sy-datum+6(2) '.TXT'
INTO gv_filename.
*End RVP17102008
IF sy-subrc NE 0.
ENDIF.
SELECT SINGLE valor1 INTO gv_user
FROM zgetdconst WHERE modulo EQ 'HR' AND
proyec EQ 'SISA' AND
aplica EQ 'FTP' AND
campo EQ 'USER' AND
correl EQ '0001'.
IF sy-subrc NE 0.
ENDIF.
SELECT SINGLE valor1 INTO gv_pwd
FROM zgetdconst WHERE modulo EQ 'HR' AND
proyec EQ 'SISA' AND
aplica EQ 'FTP' AND
campo EQ 'CLAVE' AND
correl EQ '0001'.
IF sy-subrc NE 0.
ENDIF.
SELECT SINGLE valor1 INTO gv_host
FROM zgetdconst WHERE modulo EQ 'HR' AND
proyec EQ 'SISA' AND
aplica EQ 'FTP' AND
campo EQ 'SERVER' AND
correl EQ '0001'.
IF sy-subrc NE 0.
ENDIF.
SELECT SINGLE valor1 INTO zvalor1
FROM zgetdconst WHERE modulo EQ 'HR' AND
proyec EQ 'SISA' AND
aplica EQ 'FTP' AND
campo EQ 'RFC_DEST' AND
correl EQ '0001'.
IF sy-subrc EQ 0.
gv_rfc_dest = zvalor1.
ELSE.
ENDIF.
SELECT SINGLE valor1 INTO gv_path
FROM zgetdconst WHERE modulo EQ 'HR' AND
proyec EQ 'SISA' AND
aplica EQ 'FTP' AND
campo EQ 'PATH' AND
correl EQ '0001'.
IF sy-subrc NE 0.
ENDIF.
ENDFORM. " INICIALIZAR
*&---------------------------------------------------------------------*
*& Form PROCESAR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM procesar .
DATA: BEGIN OF tbl_ftp_return OCCURS 0,
line(100) TYPE c,
END OF tbl_ftp_return.
DATA: zstrlen TYPE i,
zhandle TYPE i,
zftp_cmd(100) TYPE c,
zftp_err(100) TYPE c.
* ztext = gv_host. CONDENSE ztext.
* CONCATENATE text-i14 ztext text-i11 INTO ztext SEPARATED BY space.
* PERFORM sapgui_progress_indicator USING ztext.
SET EXTENDED CHECK OFF.
zstrlen = STRLEN( gv_pwd ).
TRANSLATE gv_user TO LOWER CASE.
TRANSLATE gv_pwd TO LOWER CASE.
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
SOURCE = gv_pwd
sourcelen = zstrlen
key = gc_http_key
IMPORTING
destination = gv_pwd.
.
* Open FTP
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
user = gv_user
password = gv_pwd
host = gv_host
rfc_destination = gv_rfc_dest
IMPORTING
handle = zhandle
EXCEPTIONS
not_connected = 1
OTHERS = 2.
IF sy-subrc NE 0.
* MESSAGE i117 DISPLAY LIKE 'E' WITH reg_ftp_data-host .
EXIT.
ENDIF.
* ztext = v_filename. CONDENSE ztext.
* CONCATENATE text-i12 ztext text-i13 INTO ztext SEPARATED BY space.
* PERFORM sapgui_progress_indicator USING ztext.
TRANSLATE gv_path TO LOWER CASE.
* CONCATENATE gv_path gv_filename
* INTO gv_filename.
CONCATENATE 'cd' gv_path
INTO gv_path SEPARATED BY space.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = zhandle
command = gv_path
compress = 'N'
TABLES
data = tbl_ftp_return
EXCEPTIONS
command_error = 1
tcpip_error = 2.
CONCATENATE 'put' gv_filename
INTO zftp_cmd SEPARATED BY space.
CALL FUNCTION 'FTP_COMMAND'
EXPORTING
handle = zhandle
command = zftp_cmd
compress = 'N'
TABLES
data = tbl_ftp_return
EXCEPTIONS
command_error = 1
tcpip_error = 2.
READ TABLE tbl_ftp_return INDEX 2.
TRANSLATE tbl_ftp_return TO UPPER CASE.
IF NOT tbl_ftp_return CS 'COMMAND SUCCESSFUL'.
LOOP AT tbl_ftp_return.
CONCATENATE zftp_err tbl_ftp_return-line
INTO zftp_err SEPARATED BY space.
ENDLOOP.
* MESSAGE e116 DISPLAY LIKE 'E' WITH zftp_err.
* p_ret = 4.
ENDIF.
* ztext = v_host. CONDENSE ztext.
* CONCATENATE text-i07 ztext text-i11 INTO ztext SEPARATED BY space.
* PERFORM sapgui_progress_indicator USING ztext.
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
handle = zhandle.
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
destination = gv_rfc_dest
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
* MESSAGE i118 DISPLAY LIKE 'E' WITH reg_ftp_data-rfc_dest.
EXIT.
ENDIF.
ENDFORM. " PROCESAR
Could you please help us to get the exact txt file after transfering it?
Thanks in advance.
10-20-2008 6:33 PM
Hi Demis,
Its a guess in my point of view i would have tried with REPLACE keyword.
Cheers!!
Balu
10-20-2008 8:18 PM
Hi Balu, thanks for your answer, but I didn't understand at all.
You recommend using REPLACE instead of...??
Thanks!
Demis