ECC6 7.00系统能否用cl_gui_frontend_services=>gui_upload加载XLSX到内表?
ECC6 7.00中使用
cl_gui_frontend_services=>gui_upload加载XLSX文件的可行性 结论:无法直接通过cl_gui_frontend_services=>gui_upload加载XLSX格式文件到内表
原因说明
cl_gui_frontend_services=>gui_upload在ECC6 7.00版本中仅支持解析文本类格式(如CSV、TXT)以及旧版二进制Excel格式(XLS)。XLSX是基于Open XML的压缩格式,该方法没有内置的解析逻辑,强行上传会得到乱码或无法识别的二进制数据,无法正确映射到内表结构。
替代解决方案
- 转换文件格式(推荐):让用户将XLSX文件另存为CSV格式,再通过
cl_gui_frontend_services=>gui_upload读取。CSV为纯文本格式,兼容性强,易于解析到内表。 - 使用
ALSM_EXCEL_TO_INTERNAL_TABLE函数:该函数支持读取XLS格式,部分兼容保存为XLS兼容模式的XLSX文件,但稳定性较差,不建议用于生产环境。 - 借助Office COM接口:通过
cl_gui_excel类调用本地Excel应用读取XLSX内容,此方案需要客户端安装Excel,且性能依赖客户端环境。
CSV读取示例代码
DATA: lt_internal_table TYPE TABLE OF string, lv_file_path TYPE string VALUE 'C:\example.csv'. CALL METHOD cl_gui_frontend_services=>gui_upload EXPORTING filename = lv_file_path filetype = 'ASC' has_field_separator = abap_true " 按分隔符拆分字段 CHANGING data_tab = lt_internal_table EXCEPTIONS file_open_error = 1 file_read_error = 2 gui_refuse_filetransfer = 4 OTHERS = 19. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
内容的提问来源于stack exchange,提问作者ekekakos
相关产品推荐
相关产品推荐

