啥都不说,直接上代码
******* 如果无法链接FTP,可能需要往表SAPFTP_SERVERS加入IP地址和端口(21)即可 DATA:p_host TYPE char64 VALUE 'IP', "IP p_uname TYPE char30 VALUE 'username' , "用户名称 p_pwd TYPE char30 VALUE 'password' . "用户密码 DATA:dest LIKE rfcdes-rfcdest VALUE 'SAPFTP', compress TYPE c VALUE 'N'. DATA:hdl TYPE i, key TYPE i VALUE 26101957, slen TYPE i, cmd(80) TYPE c VALUE 'cd /文件夹/', "ftp的操作 具体可以百度 blen TYPE i. DATA:lv_file(40). "存放文件名 DATA:BEGIN OF result OCCURS 0, line(100) TYPE c, END OF result. DATA:BEGIN OF ls_line, line(2000), END OF ls_line, lt_line LIKE TABLE OF ls_line. DATA:i_bintab TYPE w3mimetabtype . slen = strlen( p_pwd ). * "获取加密密码 保存到P_PWD CALL FUNCTION 'HTTP_SCRAMBLE' EXPORTING source = p_pwd sourcelen = slen key = key IMPORTING destination = p_pwd. * 连接ftp服务器 CALL FUNCTION 'FTP_CONNECT' EXPORTING user = p_uname password = p_pwd host = p_host rfc_destination = dest IMPORTING handle = hdl. "连接的句柄 CALL FUNCTION 'FTP_COMMAND' EXPORTING handle = hdl command = cmd "进入指定ftp目录 compress = compress TABLES data = result EXCEPTIONS command_error = 1 tcpip_error = 2. ******* LOOP AT result. ******* WRITE AT / result-line. ******* ENDLOOP. lv_file = '*******.txt'. "ftp目录下的文件名(只支持*.txt OR *.dat) * 解析*.txt 文件 "1.在代码中由于有中文,所以需先得到BIN的内表 "2.使用SCMS_BINARY_TO_TEXT把BIN的二进制值转换为GB2312 CALL FUNCTION 'FTP_SERVER_TO_R3' EXPORTING handle = hdl fname = lv_file * character_mode = 'X' IMPORTING blob_length = blen TABLES blob = i_bintab * text = lt_line EXCEPTIONS tcpip_error = 1 command_error = 2 data_error = 3 OTHERS = 4. "转换BIN内表数据 CALL FUNCTION 'SCMS_BINARY_TO_TEXT' EXPORTING input_length = blen encoding = '8400' "4110:UTF8,8400:GB2312 IMPORTING output_length = blen TABLES binary_tab = i_bintab text_tab = lt_line EXCEPTIONS failed = 1 OTHERS = 2. CALL FUNCTION 'FTP_DISCONNECT' EXPORTING handle = hdl. CALL FUNCTION 'RFC_CONNECTION_CLOSE' EXPORTING destination = dest EXCEPTIONS OTHERS = 1.
标签:FUNCTION,FTP,内表,DATA,ABAP,EXPORTING,line,TYPE From: https://www.cnblogs.com/seven1314pp/p/16722942.html