Вы находитесь на странице: 1из 7

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

-*
*& 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.

Вам также может понравиться