ABAP 随笔 EXCEL 笔记2批量导入

作者:SAPTAB 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, 开发, 数据工程
ABAP 随笔 EXCEL 笔记2批量导入 - 封面图
ABAP 随笔 EXCEL 笔记2批量导入 - 封面图

Tab Zhu [ SAP TAB ](javascript:void\(0\);)

**点击蓝字关注我们**

富强 民主 文明 和谐

自由 平等 公正 法制

爱国 敬业 诚信 友善

_**01** _

Excel简单导入

**不念过** **去**

**START**

**不畏将来**

大概写了一个如下图程式:今天给一下ALSM_EXCEL_TO_INTERNAL的使用方法

ABAP 随笔 EXCEL 笔记2批量导入 - 封面图
ABAP 随笔 EXCEL 笔记2批量导入 - 封面图

Excel 导入的功能是项目实施中很常见的功能。主要用于批导的功能,期初数据上传,批量维护等。

首先在选择屏幕:

TYPES:BEGIN OF ty_zmmt001,

matnr TYPE zmmt001-matnr,

id TYPE zmmt001-id,

f1 TYPE zmmt001-f1,

f2 TYPE zmmt001-f2,

f3 TYPE zmmt001-f3,

END OF ty_zmmt001.

DATA lt_zmmt001 TYPE TABLE OF ty_zmmt001.

PARAMETERS p_file TYPE localfile MODIF ID gp2 . “文件路径

---

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file .

CALL METHOD zcl_document_jxzhu => set_document_from_frontend

CHANGING

et_file_table = file_table

file_path = p_file

EXCEPTIONS

file_open_dialog_failed = 1

cntl_error = 2

error_no_gui = 3

not_support_by_gui = 4

other_reasons = 5

OTHERS = 6 .

zcl_document_jxzhu => set_document_from_frontend 的方法代码如下: 同学们可以根据自己的喜好进行修改,

SE24 创建可以一直使用

DATA it_tab TYPE filetable .

DATA returncode TYPE i .

DATA extension TYPE string .

CASE doc_type .

WHEN 'EXCEL' .

IF iv_window_title IS INITIAL .

iv_window_title = |SELECT EXCEL FILE , E . G . * . XLSX| .

ENDIF .

extension = '.XLSX|.XLS' .

IF iv_file_filter IS INITIAL .

iv_file_filter = 'Excel(*.xlsx)|*.xlsx|Excel(*.xlsm)|*.xlsm|Excel

97-2003(*.xls)|*.xls' .

ENDIF .

WHEN OTHERS .

ENDCASE . CALL METHOD cl_gui_frontend_services => file_open_dialog

EXPORTING

window_title = iv_window_title

default_extension = extension * default_filename =

file_filter = iv_file_filter

• with_encoding =

• initial_directory =

multiselection = iv_multiselection

CHANGING

file_table = et_file_table

rc = ev_rc

• user_action =

• file_encoding =

EXCEPTIONS

file_open_dialog_failed = 1

cntl_error = 2

error_no_gui = 3

not_supported_by_gui = 4

OTHERS = 5 .

IF sy \- subrc <> 0 .

CASE sy \- subrc .

WHEN 1 . RAISE file_open_dialog_failed .

WHEN 2 . RAISE cntl_error .

WHEN 3 . RAISE error_no_gui .

WHEN 4 . RAISE not_support_by_gui .

WHEN OTHERS . RAISE other_reasons .

ENDCASE . ENDIF .
IF ev_rc < 1 .

RETURN .

ENDIF .
READ TABLE et_file_table ASSIGNING FIELD \- SYMBOL ( <selectedfilename>

) INDEX 1 .

IF sy \- subrc = 0 . DATA ( lv_len_s ) = strlen ( <selectedfilename> \- filename ).

DESCRIBE FIELD file_path LENGTH DATA ( lv_len_d ) IN CHARACTER MODE .

IF lv_len_s > lv_len_d .

MESSAGE i398 ( 00 ) WITH 'The filename length is too long' ( 003 ).

RETURN .

ENDIF .

file_path = <selectedfilename> \- filename .

ENDIF . ENDMETHOD .

下面从excel中导入数据到内表中:

你以为我会用ALSM_EXCEL_TO_INTERNAL_TABLE ? 好吧今天代码如下 DATA lt_excel TYPE TABLE OF

alsmex_tabline .

_ * _ _ 这个是 _ _ SAP _ _ 标准常用的函数,通过 _ _ OLE _ _ 来操作 _ _ excel _

_ * _ ** _ 缺点 _ _ : _ _ 速度略慢,只能接收 _ _ 9999 _ _ 行数据 _ **

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_file "路径

i_begin_col = '1' “从第几列开始读取

i_begin_row = '2' ”从第几行开始读取

i_end_col = '20' "读到第几列

i_end_row = '9999' "读到第几行

TABLES

intern = lt_excel[] “excel返回的内表

EXCEPTIONS

inconsistent_parameters = 1

s_file_ole = 2

OTHERS = 3 .

CHECK sy \- subrc EQ 0 .

DATA ls_zmmt001 TYPE ty_zmmt001 .

LOOP AT lt_excel INTO DATA ( ls_excel ).

AT NEW row .

APPEND INITIAL LINE TO lt_zmmt001 ASSIGNING FIELD \- SYMBOL ( <fs> ). ENDAT .

ASSIGN COMPONENT ls_excel \- col OF STRUCTURE <fs> TO FIELD \- SYMBOL

( <fs_filed> ).

IF sy \- subrc EQ 0 . <fs_filed> = ls_excel \- value . ENDIF . ENDLOOP .
cl_demo_output => display ( lt_zmmt001 ).

---

执行效果如下:

ABAP 随笔 EXCEL 笔记2批量导入 - 封面图
ABAP 随笔 EXCEL 笔记2批量导入 - 封面图

-Tab Zhu

**不念过** **去**

**END**

**不畏将来**

ABAP 随笔 EXCEL 笔记2批量导入 - 封面图
ABAP 随笔 EXCEL 笔记2批量导入 - 封面图

**SAP ABAP TAB**

微信号 : TAB_JXZHU

后台回复'ABAP'免费领取学习资料

长按二维码关注我们

SAPTAB

关于作者:SAPTAB

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP随笔EXCEL笔记2批量导入.md」整理生成,仅用于内部技术分享与学习交流。