Я работаю над программой, которая считывает указанные текстовые файлы с FTP-сервера в таблицу данных.FM FTP_SERVER_TO_R3
, кажется, вполне подходит для моего случая.
Я использую RFC SAPFTPA
в качестве пункта назначения.FTP_CONNECT
всегда работает нормально, но программа иногда зависает, когда дело доходит до FTP_SERVER_TO_R3
.
Иногда в цикле многократных вызовов FM FTP_SERVER_TO_R3
первый и второй интервал хороши, затем в следующем интервале он зависает.
Иногда он даже зависает в первый раз.
Мой вопрос: Кто-нибудь может сказать мне, почему эта ошибка может произойти при использовании SAPFTPA
?
Мой код ниже:
"Connect to FTP server
********************************************************************
CALL FUNCTION 'HTTP_SCRAMBLE'
EXPORTING
SOURCE = FTP_SERVERINFO-PWD
SOURCELEN = LW_SRCLEN
KEY = 26101957
IMPORTING
DESTINATION = SCRAMBLED_PW.
CONCATENATE FTP_SERVERINFO-FTP_SERVER_NAME FTP_SERVERINFO-FTP_SERVER_PORT
INTO LW_HOST SEPARATED BY SPACE.
CALL FUNCTION 'FTP_CONNECT'
EXPORTING
USER = FTP_SERVERINFO-USER_NAME
PASSWORD = SCRAMBLED_PW " Password
HOST = LW_HOST " FTP server
RFC_DESTINATION = DEST " RFC Destination
IMPORTING
HANDLE = HANDLER
EXCEPTIONS
NOT_CONNECTED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT READ_FILES ASSIGNING FIELD-SYMBOL(<FILE>).
"Read file to IT *****************************************************************
CALL FUNCTION 'FTP_SERVER_TO_R3'
EXPORTING
HANDLE = HANDLER
FNAME = <FILE>-FILE_NAME
CHARACTER_MODE = 'X'
TABLES
TEXT = IT_TEXT[]
EXCEPTIONS
TCPIP_ERROR = 1
COMMAND_ERROR = 2
DATA_ERROR = 3 " Internal Error
OTHERS = 4.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
"After reading into IT, load to transparent table and log the transaction. ***************************************************
DATA: FILE_NAME(200) TYPE C.
FILE_NAME = <FILE>-FILE_NAME.
PERFORM MAP_DATA TABLES IT_TEXT USING FILE_NAME.
REFRESH IT_TEXT[].
ENDLOOP.
"Disconnect FTP Connection *****************************************************************************************************
CALL FUNCTION 'FTP_DISCONNECT'
EXPORTING
HANDLE = HANDLER.
"Close RFC Connection
CALL FUNCTION 'RFC_CONNECTION_CLOSE'
EXPORTING
DESTINATION = DEST " Name of the RFC destination
EXCEPTIONS
DESTINATION_NOT_OPEN = 1 " Specified destination is not open.
OTHERS = 2.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
Было бы замечательно, если бы кто-нибудь мог дать мне подсказку.
Большое спасибо и наилучшие пожелания!
TuanNQ