文件上传下载总结
2011-04-15 10:33
246 查看
无论是upload还是download,首先要确定文件的路径和名字。下面介绍几种使用文件选择框的方法: 一、使用FM F4_FILENAME call function ‘F4_FILENAME’ importing file_name = filename. 二、使用FM KD_GET_FILENAME_ON_F4 call function ‘KD_GET_FILENAME_ON_F4′ changing file_name = p_pcfile. 三、使用FM TB_LIMIT_WS_FILENAME_GET 此FM可以指定默认选择路径,默认文件名,文件的打开目的(MODE,O为读,S为写)以及文件类型等,返回值FILENAME为文件的全路径。 四、使用FM WS_FILENAME_GET 功能同上。例子: call function ‘WS_FILENAME_GET’ exporting def_filename = ‘invoice.txt’ def_path = ‘c:/windata/’ mask = ‘,*.TXT.’ mode = ‘0′ title = ‘Find the input file’ importing filename = t_filename exceptions inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 others = 5. 五、使用Class cl_gui_frontend_services的静态方法file_open_dialog. 此方法功能强大,可以修饰文件选择框,指定默认选择路径,设置文件类型过滤,同时打开多个文件,返回用户操作等,例子: call method cl_gui_frontend_services=>file_open_dialog exporting window_title = ‘Select File’ default_extension = ‘xls’ file_filter = cl_gui_frontend_services=>filetype_excel multiselection = ‘ ‘
changing file_table = it_tab rc = gd_subrc.
文件UPLOAD方法(转成内表): 一、最常用FM的是:GUI_UPLOAD 有同等作用的是CLASS cl_gui_frontend_services的静态方法gui_upload,文件可以按二进制或文本格式上传,数值和日期等依赖于用户的设置。 上传二进制文件时,内表通常定义为只含一个数据类型为X的field,如: data:begin of itab occurs 0, raw(255) type X, end fo itab. CALL FUNCTION ‘GUI_UPLOAD’ exporting filetype = ‘BIN’ filename = ‘C:/DOWNLOAD.BIN’ tables data_tab = itab. 主要参数:输入有filename 要上传文件的完成路径, filetype 包括’BIN’ ‘DAT’ ‘ASC’等,codepage 以数字编号的字符集,如8400是简体中文 输出有data_tab 储存文件中数据的内表 二、对上传excel数据可用FM TEXT_CONVERT_XLS_TO_SAP 因为输出的I_TAB_CONVERTED_DATA类型为任意的standard table,所以此FM能方便的把excel中内容转化成格式相同的内表中。 field-symbols: <s_table> type standard table. call function ‘TEXT_CONVERT_XLS_TO_SAP’ exporting * I_FIELD_SEPERATOR = * I_LINE_HEADER = i_tab_raw_data = raw_data i_filename = excel_file tables i_tab_converted_data = <s_table> exceptions conversion_failed = 1 others = 2. 参数i_tab_raw_data虽为改办field,但好像没什么作用,传入一个空数据也可正常使用。 三、以另外途径上传excel文件:ALSM_EXCEL_TO_INTERNAL_TABLE call function ‘ALSM_EXCEL_TO_INTERNAL_TABLE’ exporting filename = p_file i_begin_col = p_scol i_begin_row = p_srow i_end_col = p_ecol i_end_row = p_erow tables intern = i_intern exceptions inconsistent_parameters = 1 upload_ole = 2 others = 3. 此FM可以限制从excel文件中第几行第几列开始,一次上传多少行多少列,但一次上传的最大行数为9999,是由接收数据的内表intern的定义来限制的。 所以如果要上传多于9999行的数据,要编码分批上传实现的。而intern不是直接与excel数据格式相符的内表,是系统定义好的,包含了行号、列号、数据值等,具体的 请参照系统定义,因此要想转成自己定义符合格式的内表,可用下面代码实现: field-symbols : <$fs>. data exception type ref to cx_root. sort i_intern by row col. try. loop at i_intern. move i_intern-col to index. assign component index of structure i_table to <$fs>. move i_intern-value to <$fs>. at end of row. append i_table. “user defined internal table to store excel data clear i_table. endat. endloop. catch cx_root into exception. message ‘Excel data format is wrong,please check’ type ‘E’. endtry.
文件DOWNLOAD方法(内表转成文件): 一、最常用FM的是:GUI_DOWNLOAD CLASS cl_gui_frontend_services的静态方法gui_download与此功效相同。重要参数有BIN_FILESIZE FILENAME FILETYPE APPEND CODEPAGE DATA_TAB等,正确传入这些参数即可满足大多常见的需求。 参数简述:BIN_FILESIZE 当要创建二进制的文件进,必须指定文件长度,但要下载成文本文件时,传入此参数会报 FILESIZE_NIT_ALLOWED 错误的。 FILENAME 要存放文件的完整路径,要保证路径有效并且如果文件存在的话没有被打开,否则会报错。 FILETYPE ‘ASC’ ASCII格式文件,此参数会受到CODEPAGE, TRUNC_TRAILING_BLANKS, 和 TRUNC_TRAILING_BLANKS_EOL等参数的影响。 ‘IBM’ ASCII文件,但只能包含IBM字符集的字符(CODEPAGE = ‘1103′),这种格式的文件通常用在软盘上。 ‘DAT’ 具有单元格形式的文本文件,但直接用excel打开的话,文本内容会受单元格格式影响(如自动会去前导零等)。这种文件可直接再用gui_upload上传到SAP程序中。 ‘DBF’ dBase格式,对于要用excel打开的数据,此种格式更能保持数据原型,不受excel单元格格式的影响。 ‘WK1′ Lotus 1-2-3格式。 ‘BIN’ 二进制格式文件,没有格式和字体集的限制。 APPEND ’X'以追加模式写文件,SPACE 当文件已存在时,以覆盖模式写文件。 CODEPAGE 指定写文件时用的字符集 DATA_TAB 内表,包含要下载成文件的数据
相关文章推荐
- JavaWeb学习总结——文件上传和下载
- JavaWeb学习总结(五十)——文件上传和下载
- JavaWeb学习总结(五十)——文件上传和下载
- C#中对文件的上传下载操作总结(下载后点击删除按钮总是提示进程被占用)
- JavaWeb学习总结(五十)——文件上传和下载
- android 网络文件上传下载工具类总结
- webwork上传下载文件的问题总结
- JavaWeb学习总结(五十)——文件上传和下载
- [SAP ABAP开发技术总结]客户端文本文件、Excel文件上传下载
- winform用httpclient模拟文件上传下载到webapi端总结
- JavaWeb学习总结—文件上传和下载
- PHP实现文件上传与下载实例与总结
- PHP实现文件上传与下载实例与总结
- JavaWeb学习总结(五十)——文件上传和下载
- 文件上传下载总结
- JavaWeb学习总结——文件上传和下载
- JavaWeb学习总结(五十)——文件上传和下载
- 【转载】Asp.NET大文件上传组件开发总结_NET2.0源码下载。
- Struts2总结---文件上传(单文件/多文件)、下载 (13)
- JavaWeb学习总结(五十)——文件上传和下载