0% encontró este documento útil (0 votos)
259 vistas7 páginas

Exportar Datos a Excel con ABAP

Este documento describe un reporte que crea un libro de Excel con 3 hojas. La primera hoja muestra datos de la tabla MARA. La segunda hoja muestra datos de la tabla SFLIGHT. La tercera hoja muestra datos de la tabla T134. El reporte usa objetos OLE para crear y configurar el libro de Excel.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
259 vistas7 páginas

Exportar Datos a Excel con ABAP

Este documento describe un reporte que crea un libro de Excel con 3 hojas. La primera hoja muestra datos de la tabla MARA. La segunda hoja muestra datos de la tabla SFLIGHT. La tercera hoja muestra datos de la tabla T134. El reporte usa objetos OLE para crear y configurar el libro de Excel.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

*&--------------------------------------------------------------------

-*
*& Report Y01_EXCEL_OLE04
*&
*&--------------------------------------------------------------------
-*
*&
*&
*&--------------------------------------------------------------------
-*

REPORT Y01_EXCEL_OLE04.

Tables: mara, sflight,t134.

TYPE-POOLS: ole2incl.
*&--------------------------------------------------------------------
-*
* CONSTANTES
*&--------------------------------------------------------------------
-*
CONSTANTS: row_max TYPE i VALUE 256.

*&--------------------------------------------------------------------
-*
* ESTRUCTURAS
*&--------------------------------------------------------------------
-*
TYPES: BEGIN OF TY_DATA,
matnr like mara-matnr,
ersda like mara-ersda,
mtart like mara-mtart,
meins like mara-meins,
laeda like mara-laeda,
END OF TY_DATA.
TYPES: ty_sflight TYPE SFLIGHT,
ty_mara TYPE MARA,
ty_t134 TYPE t134.
*&--------------------------------------------------------------------
-*
* DATA
*&--------------------------------------------------------------------
-*

DATA: lo_application TYPE ole2_object,


lo_workbook TYPE ole2_object,
lo_workbooks TYPE ole2_object,
lo_range TYPE ole2_object,
lo_worksheet TYPE ole2_object,
lo_worksheets TYPE ole2_object,
lo_column TYPE ole2_object,
lo_row TYPE ole2_object,
lo_cell TYPE ole2_object,
lo_font TYPE ole2_object,
lo_borders TYPE ole2_object,
lo_background TYPE ole2_object,
lo_we TYPE ole2_object.
DATA: lo_cellstart TYPE ole2_object,
lo_cellend TYPE ole2_object,
lo_selection TYPE ole2_object,
lo_validation TYPE ole2_object.

DATA: lv_selected_folder TYPE string,


lv_complete_path TYPE char256,
lv_titulo TYPE string,
it_mara TYPE STANDARD TABLE OF TY_DATA,
it_sflight TYPE STANDARD TABLE OF TY_SFLIGHT,
it_t134 TYPE STANDARD TABLE OF TY_T134.

DATA: lv_index TYPE i,


lv_lines TYPE i,
lv_columna TYPE i,
lv_fila TYPE i,
lv_contador TYPE i.

*&--------------------------------------------------------------------
-*
* FIELD SYMBOLS
*&--------------------------------------------------------------------
-*

FIELD-SYMBOLS: <FS_DATA> LIKE LINE OF IT_MARA,


<FS_SPFLIGHT> LIKE LINE OF IT_SFLIGHT,
<FS_T134> LIKE LINE OF IT_T134.

START-OF-SELECTION.

CALL METHOD cl_gui_frontend_services=>directory_browse


EXPORTING
window_title = lv_titulo
initial_folder = 'D:\'
CHANGING
selected_folder = lv_selected_folder
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
OTHERS = 3.
CHECK NOT lv_selected_folder IS INITIAL.

SELECT * INTO TABLE IT_SFLIGHT FROM sflight


WHERE connid EQ '17'.
IF SY-SUBRC <> 0.
message e888(sabapdocu) WITH 'error 1'.
ENDIF.

SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_MARA FROM mara


WHERE ernam EQ 'WMOLERO'.
IF SY-SUBRC <> 0.
Message e888(sabapdocu) WITH 'error2'.
ENDIF.
SELECT * INTO TABLE IT_T134 FROM T134
WHERE MBREF EQ'ROH'.
IF SY-SUBRC <> 0.
Message e888(sabapdocu) WITH 'error3'.
ENDIF.

*CREANDO EL OBJETO EXCEL


CREATE OBJECT lo_application 'EXCEL.APPLICATION'.
*SE HACE VISIBLE LA APLICACION
SET PROPERTY OF lo_application 'VISIBLE' = 1.
*LLAMA AL METODO WORKSBOOKBS PARA CREAR EL LIBRO
*CALL METHOD OF lo_application 'WORKBOOKS' = lo_workbook.
CALL METHOD OF lo_application 'WORKBOOKS' = lo_workbooks.
CALL METHOD OF lo_workbooks 'ADD' = lo_workbook.
**AGREGA UNA HOJA
*CALL METHOD OF lo_application 'WORKSHEETS' = lo_worksheet.
*CALL METHOD OF lo_worksheet 'ADD'.
******************************************************************
GET PROPERTY OF lo_application 'ACTIVESHEET' = lo_worksheet.
SET PROPERTY OF lo_worksheet 'NAME' = 'MARA'.
*} AGREGAR HOJA
******************************************************************
CLEAR lv_lines.
DESCRIBE TABLE it_mara LINES lv_lines.

IF LV_LINES <> 0.
*CREA LA PRIMERA HOJA
CALL METHOD OF lo_application 'WORKSHEETS' = lo_worksheet
EXPORTING #1 = 1.

* SETEA NOMBRE DE LA HOJA


SET PROPERTY OF lo_worksheet 'NAME' = 'MARA'.
CALL METHOD OF lo_worksheet 'ACTIVATE'.

* RECORRER LA TABLA INTERNA


LOOP AT it_mara ASSIGNING <FS_DATA>.

lv_contador = SY-TABIX + 1.

* POR CADA CAMPO DE LA TABLA INTERNA MUESTRA 4

CALL METHOD OF lo_worksheet 'CELLS' = lo_cell


EXPORTING #1 = lv_contador
#2 = 1.
SET PROPERTY OF lo_cell 'VALUE' = <FS_DATA>-MATNR.

* FORMATO DE CELDA
CALL METHOD OF lo_cell 'FONT' = lo_font.
SET PROPERTY OF lo_font 'BOLD' = 2.
SET PROPERTY OF lo_font 'SIZE' = '12'.
FREE OBJECT lo_font.

* FORMATO COLOR DE CELDA


CALL METHOD OF lo_cell 'INTERIOR' = lo_background.
SET PROPERTY OF lo_background 'COLORINDEX' = '34'.
SET PROPERTY OF lo_background 'PATTERN' = 1.
FREE OBJECT lo_background.

* BORDES
* BORDE IZQUIERDO
CALL METHOD OF lo_cell 'BORDERS' = lo_borders
EXPORTING #1 = '1'.
SET PROPERTY OF lo_borders 'LINESTYLE' = 1.
SET PROPERTY OF lo_borders 'WEIGHT' = lo_we.
FREE OBJECT lo_borders.
* BORDE DERECHO
CALL METHOD OF lo_cell 'BORDERS' = lo_borders
EXPORTING #1 = '2'.
SET PROPERTY OF lo_borders 'LINESTYLE' = 2.
SET PROPERTY OF lo_borders 'WEIGHT' = lo_we.
FREE OBJECT lo_borders.

* BORDE ARRIBA
CALL METHOD OF lo_cell 'BORDERS' = lo_borders
EXPORTING #1 = '3'.
SET PROPERTY OF lo_borders 'LINESTYLE' = 3.
SET PROPERTY OF lo_borders 'WEIGHT' = lo_we.
FREE OBJECT lo_borders.

* BORDE ABAJO
CALL METHOD OF lo_cell 'BORDERS' = lo_borders
EXPORTING #1 = '4'.
SET PROPERTY OF lo_borders 'LINESTYLE' = 4.
SET PROPERTY OF lo_borders 'WEIGHT' = lo_we.
FREE OBJECT lo_borders.

**********************************************************************
**********
ADD 1 TO lv_index.

CALL METHOD OF lo_worksheet 'CELLS' = lo_cell


EXPORTING #1 = lv_contador
#2 = 2.

SET PROPERTY OF lo_cell 'VALUE' = <fs_data>-MTART.

* FORMATO DE CELDA
CALL METHOD OF lo_cell 'FONT' = lo_font.
SET PROPERTY OF lo_font 'BOLD' = 1.
SET PROPERTY OF lo_font 'SIZE' = '10'.
FREE OBJECT lo_font.

* COLOR DE FONDO
CALL METHOD OF lo_cell 'INTERIOR' = lo_background.
SET PROPERTY OF lo_background 'COLORINDEX' = '35'.
SET PROPERTY OF lo_background 'PATTERN' = 1.
FREE OBJECT lo_background.

ADD 1 TO lv_index.

CALL METHOD OF lo_worksheet 'CELLS' = lo_cell


EXPORTING #1 = lv_contador
#2 = 3.

SET PROPERTY OF lo_cell 'VALUE' = <fs_data>-LAEDA.


* FORMATO DE CELDA
SET PROPERTY OF lo_cell 'FONT' = lo_font.
SET PROPERTY OF lo_font 'BOLD' = 1.
SET PROPERTY OF lo_font 'SIZE' = '8'.
FREE OBJECT lo_font.
* COLOR DE FONDO
CALL METHOD OF lo_cell 'INTERIOR' = lo_background.
SET PROPERTY OF lo_background 'COLORINDEX' = '36'.
SET PROPERTY OF lo_background 'PATTERN' = 1.
FREE OBJECT lo_background.

ADD 1 TO lv_index.

CALL METHOD OF lo_worksheet 'CELLS' = lo_cell


EXPORTING #1 = lv_contador
#2 = 4.
SET PROPERTY OF lo_cell 'VALUE' = <fs_data>-MEINS.

* FORMATO DE CELDA
CALL METHOD OF lo_cell 'FONT' = lo_font.
SET PROPERTY OF lo_font 'BOLD' = 1.
SET PROPERTY OF lo_font 'SIZE' = '8'.
FREE OBJECT lo_font.

* COLOR DE FONDO
CALL METHOD OF lo_cell 'INTERIOR' = lo_background.
SET PROPERTY OF lo_background 'COLORINDEX' = '36'.
SET PROPERTY OF lo_background 'PATTERN' = 1.
FREE OBJECT lo_background.

ENDLOOP.
ENDIF.

CLEAR lv_lines.
CLEAR lv_contador.
*CLEAR SY-TABIX.

DESCRIBE TABLE IT_SFLIGHT LINES lv_lines.


IF lv_lines <> 0.

* CREA LA SEGUNDA HOJA


CALL METHOD OF lo_application 'WORKSHEETS' = lo_worksheet
EXPORTING #1 = 2.
SET PROPERTY OF lo_worksheet 'NAME' = 'SPFLIGHT'.
CALL METHOD OF lo_worksheet 'ACTIVATE'.

LOOP AT IT_SFLIGHT ASSIGNING <fs_spflight>.

* LV_INDEX = ROW_MAX * ( SY-TABIX - 1 ) + 1.


LV_CONTADOR = SY-TABIX + 1.
CALL METHOD OF lo_worksheet 'CELLS' = lo_cell
EXPORTING #1 = LV_CONTADOR
#2 = 1.
SET PROPERTY OF lo_cell 'VALUE' = <fs_spflight>-CONNID.

ADD 1 TO LV_INDEX.

CALL METHOD OF lo_worksheet 'CELLS' = lo_cell


EXPORTING #1 = LV_CONTADOR
#2 = 2.
SET PROPERTY OF lo_cell 'VALUE' = <fs_spflight>-CARRID.

ADD 1 TO LV_INDEX.
CALL METHOD OF lo_worksheet 'CELLS' = lo_cell
EXPORTING #1 = LV_CONTADOR
#2 = 3.
SET PROPERTY OF lo_cell 'VALUE' = <fs_spflight>-FLDATE.

ADD 1 TO LV_INDEX.
CALL METHOD OF lo_worksheet 'CELLS' = lo_cell
EXPORTING #1 = LV_CONTADOR
#2 = 4.
SET PROPERTY OF lo_cell 'VALUE' = <fs_spflight>-PAYMENTSUM.

* FREE OBJECT lo_cell.


ENDLOOP.

ENDIF.

* CREA LA TERCERA HOJA


CLEAR LV_LINES.
CLEAR LV_CONTADOR.

DESCRIBE TABLE IT_T134 LINES LV_LINES.


IF LV_LINES <> 0.
CALL METHOD OF lo_application 'WORKSHEETS' = lo_worksheet
EXPORTING #1 = 3.
SET PROPERTY OF lo_worksheet 'NAME' = 'T134'.
CALL METHOD OF lo_worksheet 'ACTIVATE'.

LOOP AT IT_T134 ASSIGNING <FS_T134>.

LV_CONTADOR = SY-TABIX + 1.

CALL METHOD OF lo_worksheet 'CELLS' = lo_cell


EXPORTING #1 = LV_CONTADOR
#2 = 1.
SET PROPERTY OF lo_cell 'VALUE' = <FS_T134>-ARDEL.

ADD 1 TO LV_INDEX.

CALL METHOD OF lo_worksheet 'CELLS' = lo_cell


EXPORTING #1 = LV_CONTADOR
#2 = 2.
SET PROPERTY OF lo_cell 'VALUE' = <FS_T134>-ARANZ.

ADD 1 TO LV_INDEX.

CALL METHOD OF lo_worksheet 'CELLS' = lo_cell


EXPORTING #1 = LV_CONTADOR
#2 = 3.
SET PROPERTY OF lo_cell 'VALUE' = <FS_T134>-CLASS.
ENDLOOP.

ENDIF.

*GUARDAR EXCEL
CALL METHOD OF lo_worksheet 'SAVEAS'
EXPORTING
#1 = lv_complete_path
#2 = 1.
*CIERRA LA VENTANA.
SET PROPERTY OF lo_application 'VISIBLE' = 0.

*LIBERA EL OBJETO
CALL METHOD OF lo_application 'QUIT'.
FREE OBJECT lo_application.

*
*GET PROPERTY OF lo_application 'ACTIVESHEET' = lo_worksheet.

*
*CONCATENATE lv_selected_folder 'TEST' INTO lv_complete_path.
*
*CALL METHOD OF lo_workbook 'SAVEAS'
*EXPORTING
*#1 = lv_complete_path.
*IF sy-subrc EQ 0.
*MESSAGE 'File downloaded successfully' TYPE 'S'.
*ELSE.
*MESSAGE 'Error downloading the file' TYPE 'E'.
*ENDIF.
*
*CALL METHOD OF lo_application 'QUIT'.
*FREE OBJECT lo_worksheet.
*FREE OBJECT lo_workbook.
*FREE OBJECT lo_application.

También podría gustarte