FUNCTION yo_carga_excel.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(P_CAMI) TYPE CHAR50 localizacao e nome da planilha
*" REFERENCE(P_NCOLN) TYPE INT4 numero de colunas
*" REFERENCE(P_NLINE) TYPE INT4 numero de linhas
*" TABLES
*" P_TBXLS tabela de saida com os dados
*" importados
*"----------------------------------------------------------------------
************************************************************************
* Programa: YO_CARGA_EXCEL
* Objetivo: Importar planilha Excel para Tabela Interna
* Desenv. : Antonio Mosca Junior
* Data : 03/08/2007
************************************************************************
************************************************************************
* Em anexo segue o programa de exemplo para a utizacao da funcao.
************************************************************************
INCLUDE ole2incl.
INCLUDE docsincl.
DATA: BEGIN OF tbxls OCCURS 0,
line LIKE sy-tabix,
coln TYPE i,
string(1024) TYPE c,
END OF tbxls.
DATA: BEGIN OF tb_saida OCCURS 0,
cells(1024) TYPE c,
END OF tb_saida.
* Ole objects declaration
DATA: h_appl LIKE obj_record,
h_work LIKE obj_record,
h_cell LIKE obj_record,
excel_line LIKE sy-index,
excel_coln LIKE sy-index,
cell_value(132) TYPE c.
DATA: wk_count TYPE i.
******** Processa Planilha
* Start Excel
IF h_appl-header = space OR h_appl-handle = -1.
CREATE OBJECT h_appl 'EXCEL.APPLICATION'.
IF sy-subrc NE 0. MESSAGE i002(sy) WITH sy-msgli. ENDIF.
SET PROPERTY OF h_appl 'VISIBLE' = 0.
ENDIF.
* se 'VISIBLE' = 1., o programa abre o EXCEL.
* Open file
CALL METHOD OF h_appl 'WORKBOOKS' = h_work.
CALL METHOD OF h_work 'OPEN' EXPORTING #1 = p_cami.
* Ler dados da tabela Excel.
DO p_nline TIMES.
excel_line = sy-index.
* Display indicator
DO p_ncoln TIMES.
excel_coln = sy-index.
* Get cell value data
CALL METHOD OF h_appl 'CELLS' = h_cell
EXPORTING #1 = excel_line
#2 = excel_coln.
GET PROPERTY OF h_cell 'VALUE' = cell_value.
CLEAR: tbxls.
tbxls-line = excel_line.
tbxls-coln = excel_coln.
tbxls-string = cell_value.
APPEND tbxls.
ENDDO.
ENDDO.
DO p_nline TIMES.
excel_line = sy-index.
DO p_ncoln TIMES.
excel_coln = sy-index.
READ TABLE tbxls WITH KEY line = excel_line
coln = excel_coln.
CONCATENATE tb_saida-cells
tbxls-string
'|'
INTO tb_saida-cells.
ENDDO.
APPEND tb_saida.
CLEAR tb_saida.
ENDDO.
* Release Excel
CALL METHOD OF h_appl 'QUIT'.
FREE OBJECT h_appl.
h_appl-handle = -1.
* Se a primeira linha for comentários (nome dos campos)
* DELETE tbxls WHERE ( string = space ) OR
* ( line = 1 ).
SORT tbxls BY line coln.
MOVE tb_saida[] TO p_tbxls[].
ENDFUNCTION.