文章目录
- 1.封装思路
- 2.参数
- 2.1.参数解析
- 3.代码
- 4.调用案例
- 5.该类中的其他方法截图
1.封装思路
直接复制粘贴激活直接用
首先,需要你在SE11中创建一个和你Excel中的字段相同的结构,然后把这个结构名字以字符串的形式传给方法.几乎可以实现任意扁平结构的Excel转到内表.
2.参数
2.1.参数解析
上面的图片可以比较清晰的说明各个参数的用法,以下字段详细介绍个别字段.
FILENAME 这个字段是你导入Excel文件的路径名称
IV_STRUCTURE_NAME 这个是你在SE11
创建的结构名, 结构名要以字符串的形式传,比如我的结构名叫 ZTEST_S
,你在传输的时候不能直接 IV_STRUCTURE_NAME = ZTEST_S
,要给他加上单引号!!
ET_TABLE 这个就是把Excel储存到内表了 ,要用你上面创建的结构为参考的内表去接收.
3.代码
代码具体实现逻辑相对简单不在阐述,自己去研究.
METHOD EXCEL_TO_INTERNAL_TABLE.FIELD-SYMBOLS: <fv_value> TYPE any.DATA: es_intern TYPE alsmex_tabline,lv_index LIKE sy-tabix,lo_structure TYPE REF TO cl_abap_structdescr,lr_data TYPE REF TO data.CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGfilename = filenamei_begin_col = i_begin_coli_begin_row = i_begin_rowi_end_col = i_end_coli_end_row = i_end_rowTABLESintern = et_internEXCEPTIONSinconsistent_parameters = 1upload_ole = 2OTHERS = 3.IF sy-subrc <> 0.MESSAGE 'Excel parsing failed' TYPE 'S' DISPLAY LIKE 'E' .LEAVE LIST-PROCESSING.ENDIF.lo_structure ?= cl_abap_structdescr=>describe_by_name( p_name = iv_structure_name ).CREATE DATA lr_data TYPE HANDLE lo_structure.ASSIGN lr_data->* TO FIELD-SYMBOL(<lfs_structure>).LOOP AT et_intern INTO es_intern.lv_index = es_intern-col.UNASSIGN <fv_value>.ASSIGN COMPONENT lv_index OF STRUCTURE <lfs_structure> TO <fv_value>.MOVE es_intern-value TO <fv_value>.AT END OF row.APPEND <lfs_structure> TO et_table.ENDAT.ENDLOOP.ENDMETHOD.
4.调用案例
*&---------------------------------------------------------------------*
*& Report ZDEMO_REPORT006
*&--------