Sunteți pe pagina 1din 4

REPORT ZEXCEL_EXP. TABLES: mara. * Variveis para export Excel INCLUDE ole2incl.

DATA: v_xlapp v_workbook v_sheet v_cell v_font v_interior TYPE ole2_object, " Excel application OLE object TYPE ole2_object, " Excel workbook OLE object TYPE ole2_object, " pasta Excel TYPE ole2_object, " clula Excel TYPE ole2_object, " fonte (negrito) TYPE ole2_object. " cor de fundo

DATA: v_currentline TYPE i, " Current line in spreadsheet v_lin TYPE i, v_col TYPE i. * Tabela interna para seleo de DATA: BEGIN OF t_mara OCCURS 0, matnr TYPE mara-matnr, spras TYPE makt-spras, maktx TYPE makt-maktx, mtart TYPE mara-mtart, brgew TYPE mara-brgew, gewei TYPE mara-gewei, END OF t_mara. dados "n material "idioma "descrio "tipo mat "peso bruto "unidade de medida

SELECT-OPTIONS: so_matnr FOR mara-matnr. START-OF-SELECTION. SELECT m~matnr k~spras k~maktx m~mtart m~brgew m~gewei INTO TABLE t_mara FROM mara AS m INNER JOIN makt AS k ON m~matnr = k~matnr WHERE m~matnr IN so_matnr AND k~spras = sy-langu. SORT t_mara BY mtart maktx. PERFORM exporta_excel. END-OF-SELECTION. *&---------------------------------------------------------------------* *& Form exporta_excel *&---------------------------------------------------------------------* * Abre tela do Excel, exportando o relatrio corrente, permitindo * assim salvar o documento formatado *----------------------------------------------------------------------* FORM exporta_excel. DATA: v_perio(16) v_lin_loop v_cor_loop v_pos_sheet(3) v_posid v_quebra TYPE TYPE TYPE TYPE TYPE TYPE c, i, i, i VALUE 3, prps-posid, prps-posid, "perodo "linha atual do loop "cor atual do loop "planilha atual

v_aufnr x(1) y(1)

TYPE aufk-aufnr, TYPE i, TYPE i.

CLEAR: v_perio, v_lin_loop, v_cor_loop, v_posid, v_aufnr. * Criar uma aplicao Excel CREATE OBJECT v_xlapp 'Excel.Application'. * Deixar a aplicao visvel SET PROPERTY OF v_xlapp 'Visible' = 1. * Buscar a lista de Workbooks CALL METHOD OF v_xlapp 'Workbooks' = v_workbook. * Criar arquivo CALL METHOD OF v_workbook 'Add'. CALL METHOD OF v_xlapp 'Worksheets' = v_sheet. **Posiciona na ultima Worksheet LOOP AT t_mara. ON CHANGE OF t_mara-mtart. x = x + 1. IF x > 3. CALL METHOD OF v_sheet 'Add'. ENDIF. ENDON. ENDLOOP. LOOP AT t_mara. ON CHANGE OF t_mara-mtart. IF y <= x. y = y + 1. CALL METHOD OF v_xlapp 'Worksheets' = v_sheet EXPORTING #1 = y. * Mudar o nome da WorkSheet SET PROPERTY OF v_sheet 'Name' = t_mara-mtart. ***DADOS DO RELATRIO * Ttulo PERFORM preenche_cel PERFORM preenche_cel PERFORM preenche_cel PERFORM preenche_cel v_lin_loop = 2.

USING USING USING USING

1 1 1 1

1 2 3 4

'N material' 'Descrio' 'Peso Bruto' 'Unid medida'

37 37 37 37

'B' 'B' 'B' 'B'

12 12 12 12

'G'. 'G'. 'G'. 'G'.

ENDIF. ENDON. * Corpo do relatrio v_lin_loop = v_lin_loop + 1. DATA: v_i TYPE i. v_i = v_lin_loop MOD 2. IF v_i = 0. v_cor_loop = 36. "amarelo claro ELSE. v_cor_loop = 35. "verde claro ENDIF. PERFORM preenche_cel USING v_lin_loop 1 t_mara-matnr v_cor_loop 'N' 20 'G'. PERFORM preenche_cel USING v_lin_loop 2 t_mara-maktx v_cor_loop 'N' 40 'G'. PERFORM preenche_cel USING v_lin_loop 3 t_mara-brgew v_cor_loop 'N' 12 'N'. PERFORM preenche_cel USING v_lin_loop 4 t_mara-gewei v_cor_loop 'N' 12 'G'. * Ativa a Pasta gerada CALL METHOD OF v_sheet 'Activate'. ENDLOOP. ENDFORM. " exporta_excel

*&---------------------------------------------------------------------* *& Form preenche_cel *&---------------------------------------------------------------------* * Preenche e formata as clulas *----------------------------------------------------------------------* * v_lin - posio da linha * v_col - posio da coluna * v_val - contedo da clula * v_cor - cor de fundo da clula * v_bold - N (normal) / B (negrito) * v_tam - tamanho da largura da clula (coluna) * v_num - N (nmerico com separadores) / 'G' (geral) *----------------------------------------------------------------------* FORM preenche_cel USING v_lin v_col v_val v_cor v_bold v_tam v_num. * Atribui clula CALL METHOD OF v_sheet 'Cells' = v_cell EXPORTING #1 = v_lin #1 = v_col.

* Preenche SET PROPERTY OF v_cell 'Value' = v_val no flush. * Tamanho da coluna SET PROPERTY OF v_cell 'ColumnWidth' = v_tam no flush. *Formato numrico, com pontos separadores (ex: 12.325.125,00) IF v_num = 'N'. SET PROPERTY OF v_cell 'NumberFormat' = '#,##0.00' no flush. ELSEIF v_num = 'G'. SET PROPERTY OF v_cell 'NumberFormat' = 'General' no flush. ENDIF. * Cor fundo da clula CALL METHOD OF v_cell 'Interior' = v_interior NO FLUSH. SET PROPERTY OF v_interior 'ColorIndex' = v_cor. * Fonte CALL METHOD OF v_cell 'Font' = v_font NO FLUSH. * Negrito da fonte IF v_bold = 'B'. "fonte bold SET PROPERTY OF v_font 'Bold' = 1 no flush. ELSE. SET PROPERTY OF v_font 'Bold' = 'FALSE' no flush. ENDIF. ENDFORM. " preenche_cel

S-ar putea să vă placă și