Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - ADGP

Páginas: [1]
1
Programación ABAP / Re: Excel con diferentes hojas
« en: 28 de Diciembre de 2007, 12:42:15 pm »
Anexo una imagen con las tablas Z a las que se hace referencia (si es que me sale).



Repito que es BETA, a si que está expuesta a mejoras. Si veis algo raro no dudéis en comentarlo.

Estoy trabajando para hacer la inversa y generar un excel con múltiples hojas a partir de una tabla. Tengo un problema para dar formato a los campos numéricos y para ejecutarse en fondo, cuando consiga solucionarlo la publico.


Uvidime sa,
ADGP

2
Interfaces / Objeto OLE
« en: 28 de Diciembre de 2007, 12:05:18 pm »
Buenos días,

Lanzo dos preguntas a ver si me podeis ayurdar.

  • ¿Sabéis donde se puede sacar los métodos que se usan para generar objetos ole, y qué parametros se les puede pasar?.
    Me explico, por ejemplo, para crear un excel se ha de llamar al objeto 'Workbooks' para crear el libro, pero qué más funciones hay?

  • Se puede llamar a objeto 'Excel.Application' en fondo, y si se puede..¿cómo?.
    Tengo un programa que me genera un excel cuando se lanza en online usando dicho objeto, pero en fondo no funciona

Muchas Gracias.

Uvidime sa,
ADGP



3
Programación ABAP / Re: Excel con diferentes hojas
« en: 28 de Diciembre de 2007, 11:46:15 am »
Buenos días,

Os incluyo una función para leer datos de un Excel con varias hojas

Código: [Seleccionar]
function zbc_open_excel .
*"----------------------------------------------------------------------
*"*"Interfase local
*"  IMPORTING
*"     REFERENCE(FILENAME) TYPE  RLGRAP-FILENAME
*"     REFERENCE(I_BEGIN_COL) TYPE  I
*"     REFERENCE(I_BEGIN_ROW) TYPE  I
*"     REFERENCE(I_END_COL) TYPE  I
*"     REFERENCE(I_END_ROW) TYPE  I
*"  TABLES
*"      T_EXCEL TYPE  ZTB_BC_EXCEL
*"  EXCEPTIONS
*"      INCONSISTENT_PARAMETERS
*"      UPLOAD_OLE
*"----------------------------------------------------------------------

* Variables Locales
  data: l_excel  type ole2_object,
        l_libro  type ole2_object,
        l_hoja   type ole2_object,
        l_cont   type i,
        l_celli  type ole2_object,
        l_cellf  type ole2_object,
        l_cell   type ole2_object,
        lt_tabla type table of zes_bc_excel_ln.
  field-symbols: <lf_aux>.

* Abrimos el Excel
  if l_excel-header = space or l_excel-handle = -1.
    create object l_excel 'Excel.Application'.
  endif.
  call method of l_excel 'Workbooks' = l_libro.
  call method of l_libro 'Open'
    exporting
    #1 = filename.

  check sy-subrc is initial.

* Recorremos las Hojas del Excel
  do.

*-- Incrementamos el Contador
    add 1 to l_cont.

*-- Limpiamos los objetos
    free object: l_cell, l_celli, l_cellf, l_hoja.
    clear lt_tabla[].

*-- Leemos la Hoja
    call method of l_excel 'Worksheets' = l_hoja
      exporting #1 = l_cont.

*-- Si no existe la hoja Salimos del Bucle
    if not sy-subrc is initial. "OR l_cont EQ 3.
      exit.
    endif.

*-- Recogemos la Primera Celda
    call method of l_hoja 'Cells' = l_celli
      exporting
      #1 = i_begin_row
      #2 = i_begin_col.
    commit work and wait.

*-- Recogemos la Ultima Celda
    call method of l_hoja 'Cells' = l_cellf
      exporting
      #1 = i_end_row
      #2 = i_end_col.
    commit work and wait.

*-- Recogemos las celdas comprendidas entre la Primera y la Ultima
*-- y lo copiamos a la memoria intermedia
    call method of l_hoja 'RANGE' = l_cell
      exporting
      #1 = l_celli
      #2 = l_cellf.
    commit work and wait.
    call method of l_cell 'SELECT'.
    commit work and wait.
    call method of l_cell 'COPY'.

*-- Recogemos los Valores
    call method cl_gui_frontend_services=>clipboard_import
      importing
        data                 = lt_tabla
      exceptions
        cntl_error           = 1
        error_no_gui         = 2
        not_supported_by_gui = 3
        others               = 4.

*-- Limpiamos los valores en blanco
    sort lt_tabla.
    delete lt_tabla where line eq space.
    clear: sy-subrc.

*-- Recogemos los datos a la tabla de Salida
    check not lt_tabla[] is initial.
    assign lt_tabla[] to <lf_aux>.
    check sy-subrc is initial.
    move <lf_aux> to t_excel-tabla.
    append t_excel. clear t_excel.

  enddo.

* Cerramos el Excel
  call method of l_excel 'QUIT'.

*-- Limpiamos los objetos
  free object l_libro.
  free object l_hoja.


endfunction.

La tabla ZTB_BC_EXCEL es de "Tipo Tabla" con tipo de linea una estructura con un campo de formato char4092.

Está montada asi para crear una tabla con todo el contenido del excel, con múltiples "subtablas", tantas como hojas contenga el excel.

Es una función beta, pero funciona.

Uvidime sa,
ADGP

Páginas: [1]