`
- 浏览:
786982 次
- 性别:
- 来自:
上海
-
SAP中本地文件的upload和download的方法
无论是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_UPLOAD
CLASS cl_gui_frontend_services的静态方法gui_upload与此功效相同。重要参数有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 内表,包含要下载成文件的数据
…
另注:当要上传在excel中存放的数据时,要注意sap系统中前导0的问题,解决方法可在excel文件中把0补全(调整单元格格式),或者在使用此类数据前,程序做alpha转换,
使用FM: CONVERSION_EXIT_ALPHA_INPUT, 相反作用的FM: CONVERSION_EXIT_ALPHA_OUTPUT
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
这是因为SAP系统和本地文件编码不一致导致的。一旦出现这种情况,你需要手动打开XML文件,修正乱码问题,然后再上传。在编辑XML文件时,确保使用支持Unicode的文本编辑器,以避免字符显示错误。 除了基本的下载和...
upload and download from bps
它有两种主要方法:EXCEL_FILE_UPLOAD 和 EXCEL_FILE_DOWNLOAD。 在我看来,这是迄今为止我遇到的最灵活、最稳定、速度最快的一种。 特别有用的是该类能够正确处理包含 CR、LF 和 TAB 的字符字段的上传和下载。 我...
在SAP系统中,经常需要进行数据的上传(Upload)和下载(Download)。上传是指将外部系统的数据导入到SAP系统,而下载则是将SAP系统内的数据导出到外部系统。 1. **上传(UPLOAD)**:通常,数据被转换为文本文件...
Performance:Upload/Download 事务码用于系统性能数据的上传和下载,帮助管理人员分析系统性能。 EarlyWatchReport 事务码用于生成系统早期检查报告,即系统健康状况的快速概览,对于预防系统问题十分有用。 ...
6. **AL06 - Performance: Upload/Download**:提供上传和下载性能数据的功能,有助于进行性能分析。 7. **AL07 - Early Watch Report**:早期监视报告,可以自动收集系统状态数据,并生成报告,帮助诊断问题。 8. *...
ERP系统信息化资料:SAP专业培训教材UM_FI32_VAT_Download_Upload222.docx
图形用户界面服务类中的上传和下载方法,用于文件传输,增强了应用程序的文件管理能力。 ### 22. SSF_FUNCTION_MODULE_NAMESMARTFORMS 调用SmartForms功能模块,用于生成复杂文档和报表,提升报表设计的灵活性和...
1. **获取上传文件的信息**:通过`N_UPLOAD`节点获取文件名、文件类型和文件内容。 2. **将文件信息保存至数据库**:使用`MODIFY`语句将文件的相关信息存入之前创建的`ZFILE_UPLOAD1`表中。 3. **刷新Table控件的...
CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD:下载到本地。 这些函数可以帮助开发者更方便地实现文件上传下载操作。 4. 报表输出函数 SSF_FUNCTION_MODULE_NAME:根据form名取得对应的函数名(SmartForm)。 MESSAGE_...
总之,这段代码提供了一个基础的ABAP程序示例,演示了如何使用ABAP在SAP系统中处理本地文件与服务器之间的上传和下载操作。实际应用中,可能需要根据具体的业务需求进行更复杂的错误处理和功能扩展。
15. cl_gui_frontend_services:这是一个类,包含如GUI_UPLOAD和GUI_DOWNLOAD这样的方法,分别用于从服务器上传文件和下载到本地。 16. ABAP_DOCU_DOWNLOAD:允许以HTML格式下载ABAP文档,便于离线查阅或存档。 17...
SAP PS模块是SAP R/3系统中的一部分,主要负责项目管理和计划。TCODE是SAP系统中的事务码,用于执行特定的业务操作。本文档将对SAP PS模块中的TCODE进行详细的介绍和说明。 PS项目系统是SAP R/3系统中的一部分,...
文件上传是指将本地文件上传到SAP系统中。此过程主要包括选择屏幕设置和上传操作的实现。 ##### 1. 选择屏幕设置 - **定义参数**:使用`PARAMETERS P_FNAME1 TYPE RLGRAP-FILENAME.`定义一个接收文件名的参数。 - *...
- 在文件管理系统中,提供文件和目录的基本信息。 - 支持用户对文件和目录的操作需求。 #### 36. F4_DATE / F4IF_SHLP_EXIT_EXAMPLE 这两个函数分别用于日期的选择框和示例的帮助信息。 **应用场景:** - 在用户...
### ABAP练习题知识点概述 #### 1. 学习ABAPDOCU的所有例程 - **知识点**:ABAPDOCU是SAP系统中用于示例和文档的一部分,包含了大量示例代码来帮助开发者...如何使用命令`DOWNLOAD`和`UPLOAD`进行文件的上传和下载。
4. GUI_UPLOAD 和 GUI_DOWNLOAD: 这两个函数模块分别用于上传文件到服务器和下载文件到本地机器,提供文件传输的功能。 5. FILE_GET_NAME, FILENAME_GET, 和 SO_SPLIT_FILE_AND_PATH: 这些函数模块处理文件路径...
17. cl_gui_frontend_services=>gui_upload 和 gui_download:分别用于上传文件到服务器和从服务器下载文件到本地。 18. ARFC_GET_TID:获取终端的IP地址,用于网络通信和调试。 19. BAL_*:一组与SAP应用程序日志...
21. cl_gui_frontend_services=>gui_upload / gui_download:这两个全局类的方法分别用于文件上传到服务器和从服务器下载到本地。 22. ARFC_GET_TID:获取终端的IP地址,以十六进制形式表示。 23. BAL_*:一组与...