EXCEL数据导入到内表中的处理
CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_upload
i_begin_col = 2
i_begin_row = 7
i_end_col = 50
i_end_row = 3000
sheet_name = '财务视图'
TABLES
intern = lt_tab[].
LOOP AT lt_tab.
CONDENSE lt_tab-value.
ASSIGN COMPONENT lt_tab-col OF STRUCTURE gs_upload_fi TO <fs>. "动态方法将值传到相应的内表
IF <fs> IS ASSIGNED.
MOVE lt_tab-value TO <fs>.
UNASSIGN <fs>.
ENDIF.
AT END OF row.
APPEND gs_upload_fi TO gt_upload_fi.
CLEAR gs_upload_fi.
ENDAT.
ENDLOOP.
有几个提醒的地方:
一、首先我们要建一个与EXCEL列一模一样的结构,比如上面的gs_upload_fi.
二、上面我把标准的函数拷贝了一个自定义的出来,为的是能够读取多个SHEET页,这里面
* open file in Excel
if APPLICATION-HEADER = SPACE or APPLICATION-HANDLE = -1.
create object APPLICATION 'Excel.Application'.
M_MESSAGE.
endif.
call method of APPLICATION 'Workbooks' = WORKBOOK.
M_MESSAGE.
call method of WORKBOOK 'Open'
exporting
#1 = FILENAME.
M_MESSAGE.
*->BEGIN OF ADD-ON BY EY_SGQ
** set property of application 'Visible' = 1.
** m_message.
if SHEET_NAME = SPACE."用默认模式
get property of APPLICATION 'ACTIVESHEET' = WORKSHEET.
M_MESSAGE.
else.
*-->可以实现读取多个sheet
call method of APPLICATION 'WORKSHEETS' = WORKSHEET
exporting
#1 = SHEET_NAME.
call method of WORKSHEET 'Activate'.
M_MESSAGE.
endif.
*---END OF------------------------------------------------
* mark whole spread sheet
call method of WORKSHEET 'Cells' = H_CELL
exporting
#1 = I_BEGIN_ROW
#2 = I_BEGIN_COL.
M_MESSAGE.
call method of WORKSHEET 'Cells' = H_CELL1
exporting
#1 = I_END_ROW
#2 = I_END_COL.
M_MESSAGE.
注意在主程序里添加代码如上,BEGIN OF ADD ON 中间就是需要添加的代码
三、字段符号一定要UNASIGN,因为在AT END OF语句的影响下,会发生有的字符变成*****而无法写入的情况。