文章目录
前言
要使本章中的所有示例都能正常运行,必须满足以下要求: 桌面 Office 集成 (DOI) 和对象链接与嵌入 (OLE): 本章中显示的大多数示例都需要安装 Microsoft Office 软件包。
提示:以下是本篇文章正文内容,下面案例可供参考
使用 gui_upload 从本地电脑读取文件
文件处理层面上分为两层:
在本地电脑环境工作交互:
1.一般只有两种:文件上传,文件下载
常用的FM如:
GUI_DOWNLOAD 下载
GUI_UPLOAD 上载
在SAP服务器上做文件处理:
打开数据集 命令:
OPEN DATASET 打开文件
CLOSE DATASET 关闭
DELETE DATASET 删除
READ DATASET 读
TRANSFER 写记录
AL11事务代码,可以查看SAP系统内的 文件
示例操作:
"上传文件
"首先定义一个输入口,选择屏幕创建
PARAMETERS: p_file TYPE localfile.
此时 屏幕显示效果如上图,很显然不是特别方便。因为我们在上传文件时,并不能让用户自己手输文件地址,所以这里我们需要加一个F4help 作为点击事件,
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = p_file
点击按钮
完整代码
"上传文件
TYPES: BEGIN OF lty_data,
eid(10) TYPE n,
name(40) TYPE c,
END OF lty_data.
DATA : lt_data TYPE TABLE OF lty_data.
DATA: lv_file TYPE string.
"首先定义一个输入口,选择屏幕创建
PARAMETERS: p_file TYPE localfile.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
"该函数将桌面的文件地址传给p_file
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = p_file.
START-OF-SELECTION.
lv_file = p_file.
"点击执行,上传文件
"要注意文件类型 string char
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_file
* FILETYPE = 'ASC'
has_field_separator = 'X' "是否有分隔符
* HEADER_LENGTH = 0
* READ_BY_LINE = 'X'
* DAT_MODE = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* CHECK_BOM = ' '
* VIRUS_SCAN_PROFILE =
* NO_AUTH_CHECK = ' '
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
data_tab = lt_data "根据文件,会相应生成对应的结构内表,需要定义
* changing
* isscanperformed = ' '
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
面向对象的示例代码:
CLASS lcl_demo DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main.
ENDCLASS.
CLASS lcl_demo IMPLEMENTATION.
METHOD main.
DATA: lv_filepath TYPE string.
DATA: lt_data TYPE TABLE OF string.
DATA: lt_filetable TYPE filetable.
DATA: lv_filetable TYPE file_table.
DATA: lv_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
CHANGING
file_table = lt_filetable
rc = lv_rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
RETURN.
ELSEIF lv_rc < 1.
MESSAGE 'No File choosen' TYPE 'W'.
RETURN.
ENDIF.
READ TABLE lt_filetable INTO lv_filepath INDEX 1.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = lv_filepath
CHANGING
data_tab = lt_data
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
others = 19
.
IF sy