Monday, November 15, 2010

Exporta excel OLE

http://saplab.org/2009/03/abap-to-excel/
http://saplab.org/wp-content/ZHCM_ABAP_TO_EXCEL.txt

http://www.richardsantos.net/2009/08/28/sap-export-alv-to-excel-file/

1.TOP
TYPE-POOLS ole2.
DATA: v_excel   TYPE ole2_object.
2.F01
FORM exportar_xls.
  DATA: v_wrkbkl  TYPE ole2_object,
        v_wrkbk   TYPE ole2_object,
        v_row  TYPE i.
  DATA: ls_path TYPE string,
        lc_rpta TYPE c.
  PERFORM obtener_ruta_guardar_archivo USING  'Lista de Aspirantes'
                                              'xls'
                                     CHANGING ls_path
                                              lc_rpta.
  CHECK lc_rpta = 'T'.
  DATA lwa_aspirante_alv TYPE gty_aspirante_alv.
  CREATE OBJECT v_excel 'EXCEL.APPLICATION'.
  PERFORM manejar_error_excel.
  SET PROPERTY OF v_excel  'Visible' = 1.
  CALL METHOD OF v_excel 'Workbooks' = v_wrkbkl.
  PERFORM manejar_error_excel.
  CALL METHOD OF v_wrkbkl 'Add' = v_wrkbk.
  PERFORM manejar_error_excel .
* Insertar cabecera
  PERFORM insertar_datos_excel USING 1 1 1 'Num. Asp.'.
  PERFORM insertar_datos_excel USING 1 2 1 'Ape. Paterno'.
  PERFORM insertar_datos_excel USING 1 3 1 'Ape. Materno'.
  PERFORM insertar_datos_excel USING 1 4 1 'Nombre'.
  PERFORM insertar_datos_excel USING 1 5 1 'Estado'.
  PERFORM insertar_datos_excel USING 1 6 1 'Fec. Nac.'.
  PERFORM insertar_datos_excel USING 1 7 1 'Lugar. Nac.'.
  PERFORM insertar_datos_excel USING 1 8 1 'Pais. Nac.'.
  PERFORM insertar_datos_excel USING 1 9 1 'Est. Civ.'.
  PERFORM insertar_datos_excel USING 1 10 1 'Posicion Per.'.
  PERFORM insertar_datos_excel USING 1 11 1 'Division Per.'.
  PERFORM insertar_datos_excel USING 1 12 1 'Grupo Per.'.
  PERFORM insertar_datos_excel USING 1 13 1 'Fec. Reg'.
* Insertar detalle
  LOOP AT gtd_aspirante_alv INTO lwa_aspirante_alv.
    v_row = sy-tabix + 1.
    PERFORM insertar_datos_excel USING v_row 1 0 lwa_aspirante_alv-numas.
    PERFORM insertar_datos_excel USING v_row 2 0 lwa_aspirante_alv-appat.
    PERFORM insertar_datos_excel USING v_row 3 0 lwa_aspirante_alv-apmat.
    PERFORM insertar_datos_excel USING v_row 4 0 lwa_aspirante_alv-nombr.
    PERFORM insertar_datos_excel USING v_row 5 0 lwa_aspirante_alv-estad.
    PERFORM insertar_datos_excel USING v_row 6 0 lwa_aspirante_alv-fnaci.
    PERFORM insertar_datos_excel USING v_row 7 0 lwa_aspirante_alv-lnaci.
    PERFORM insertar_datos_excel USING v_row 8 0 lwa_aspirante_alv-pnaci.
    PERFORM insertar_datos_excel USING v_row 9 0 lwa_aspirante_alv-estci.
    PERFORM insertar_datos_excel USING v_row 10 0 lwa_aspirante_alv-poper.
    PERFORM insertar_datos_excel USING v_row 11 0 lwa_aspirante_alv-diper.
    PERFORM insertar_datos_excel USING v_row 12 0 lwa_aspirante_alv-grper.
    PERFORM insertar_datos_excel USING v_row 13 0 lwa_aspirante_alv-fereg.
  ENDLOOP.
  CALL METHOD OF v_wrkbk 'SAVEAS'
    EXPORTING
      #1 = ls_path.
  CALL METHOD OF v_wrkbk 'CLOSE'.
  CALL METHOD OF v_excel 'QUIT'.
  FREE OBJECT v_excel.
  PERFORM manejar_error_excel.
ENDFORM.         "exportar_xls

*&---------------------------------------------------------------------*
*&      Form  insertar_datos_excel
*&---------------------------------------------------------------------*
*   PERFORM insertar_datos_excel USING rows columns boldfont valor
*----------------------------------------------------------------------*
*      -->X          text
*      -->Y          text
*      -->Z          text
*      -->VAL        text
*----------------------------------------------------------------------*
FORM insertar_datos_excel USING x y z val.
  DATA: v_cell    TYPE ole2_object,
        v_font    TYPE ole2_object.
  CALL METHOD OF v_excel 'Cells' = v_cell
    EXPORTING
    #1 = x
    #2 = y.
  PERFORM manejar_error_excel.
  SET PROPERTY OF v_cell 'Value' = val.
  PERFORM manejar_error_excel .
  GET PROPERTY OF v_cell 'Font' = v_font.
  PERFORM manejar_error_excel.
  SET PROPERTY OF v_font 'Bold' = z .
  PERFORM manejar_error_excel.
ENDFORM.                    "insertar_datos_excel

*&---------------------------------------------------------------------*
*&      Form  manejar_error_excel
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM manejar_error_excel.
  IF sy-subrc <> 0.
    CALL METHOD OF v_excel 'QUIT'.
    FREE OBJECT v_excel.
    v_excel-handle = -1.
    MESSAGE: 'No se pudieron exportar los datos.' TYPE 'E'.
    EXIT.
  ENDIF.
ENDFORM.                    "manejar_error_excel

No comments:

Post a Comment