Problema con Alv OO pasando a excel

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • cosagaucha
    Member
    • ago
    • 64

    #1

    Problema con Alv OO pasando a excel

    hola a todos!

    Gente, estoy haciendo un alv -el primero con objetos...- y si bien ya pude mostrar mi tabla interna, cabecera, pie de pagina y demás, ahora intento que mi tabla interna pueda pasar a un archivo Excel.

    Preguntas:
    1.)Veo que en la barra de botones estándar de mi alv, hay un botón Excel (Ctrl+Shift-F7) pero al pulsarlo, si bien me abre un Excel embebido, me lo abre en blanco.. no debería mostrarme el contenido de mi alv?

    2.)De no ser asi, alguien podría darme alguna punta sobre como llevar la tabla interna al Excel -ejemplo de código-

    gracias!!!!!
  • Mauricio Hidalgo
    Senior Member
    • may
    • 481

    #2
    Lejos lo mejor para olvidarte de la transferencia de datos a excel y la otras funcionalidades es que tu catalogo lo obtengas a partir de una estructura de datos.

    El catálogo lo obtienes con la función LVC_FIELDCATALOG_MERGE.

    Saludos

    Comentario

    • cosagaucha
      Member
      • ago
      • 64

      #3
      hola Mauricio, gracias por responder antes que nada!! Podrías explicar un poquito mas lo que decís? Porque en mi código, no formo el catalogo de esa manera..

      Gracias de antemano!!

      Pego lo que tengo a continuación:

      "For ALV {
      DATA: "it_layout TYPE lvc_s_layo,
      gr_table TYPE REF TO cl_salv_table,
      gr_functions TYPE REF TO cl_salv_functions,
      gr_columns TYPE REF TO cl_salv_columns_table,
      gr_column TYPE REF TO cl_salv_column_table,
      gr_display TYPE REF TO cl_salv_display_settings,
      lr_grid TYPE REF TO cl_salv_form_layout_grid,
      lr_gridx TYPE REF TO cl_salv_form_layout_grid,
      lr_logo TYPE REF TO cl_salv_form_layout_logo,
      lr_label TYPE REF TO cl_salv_form_label,
      lr_text TYPE REF TO cl_salv_form_text,
      lr_footer TYPE REF TO cl_salv_form_layout_grid,
      ls_color TYPE lvc_s_colo.
      " For ALV }

      DATA: gv_ukurs TYPE ukurs_curr.

      *----------------------------------------------------------------------*
      * CLASS lcl_Perf_Eval DEFINITION
      *----------------------------------------------------------------------*
      CLASS lcl_perf_eval DEFINITION .
      PUBLIC SECTION.
      METHODS: constructor, fill_disp.
      METHODS build_fc.
      METHODS disp_alv.
      METHODS set_tol.
      METHODS end_of_page.
      ENDCLASS. "lcl_perf_eval DEFINITION

      DATA : obj_rep TYPE REF TO lcl_perf_eval. " Declaring Object for Class

      START-OF-SELECTION.
      CREATE OBJECT: obj_rep. " Creating Object

      obj_rep->fill_disp( ). " Calling class Methods
      obj_rep->disp_alv( ).

      *----------------------------------------------------------------------*
      * CLASS lcl_perf_eval IMPLEMENTATION
      *----------------------------------------------------------------------*
      CLASS lcl_perf_eval IMPLEMENTATION .
      METHOD constructor.
      TRY.
      "Calling Factory Obj of Cl_ALV_TABLE
      cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = gt_tablafinal ).
      CATCH cx_salv_msg.
      ENDTRY .

      IF gr_table IS INITIAL .
      MESSAGE text-002 TYPE 'I' DISPLAY LIKE 'E'.
      EXIT .
      ENDIF .
      ENDMETHOD. "constructor

      METHOD fill_disp.

      PERFORM buscar_datos.
      PERFORM armar_tabla_alv.
      PERFORM calcular_subtotales.

      ENDMETHOD. "fill_disp

      METHOD build_fc.

      INCLUDE <color>.
      TRY.
      gr_columns = gr_table->get_columns( ).
      gr_columns->set_optimize( abap_true ).
      gr_column ?= gr_columns->get_column( 'MR' ).
      ls_color-col = 3 .
      gr_column->set_color( ls_color ).
      gr_column->set_long_text('MR' ).
      gr_column->set_short_text( 'M.R.' ).
      gr_column->set_medium_text('M.R.' ).
      CATCH cx_salv_not_found.
      ENDTRY .

      TRY.
      gr_columns = gr_table->get_columns( ).
      gr_columns->set_optimize( abap_true ).
      gr_column ?= gr_columns->get_column( 'TEXTO' ).
      ls_color-col = 3 .
      gr_column->set_color( ls_color ).
      gr_column->set_long_text('Descripción' ).
      gr_column->set_short_text( 'Desc.' ).
      gr_column->set_medium_text('Desc.' ).
      CATCH cx_salv_not_found.
      ENDTRY .

      TRY.
      gr_column ?= gr_columns->get_column( 'POSICION' ).
      gr_column->set_long_text('Posición' ).
      gr_column->set_short_text( 'Pos' ).
      gr_column->set_medium_text('Posic.' ).
      ls_color-col = 3 .
      gr_column->set_color( ls_color ).
      CATCH cx_salv_not_found.
      ENDTRY .

      TRY.
      gr_column ?= gr_columns->get_column( 'PESOACTUAL' ).
      gr_column->set_long_text('Peso Actual' ).
      gr_column->set_short_text( 'P. Act.' ).
      gr_column->set_medium_text('Peso Act.' ).
      ls_color-col = 3 .
      gr_column->set_color( ls_color ).
      CATCH cx_salv_not_found.
      ENDTRY .

      TRY.
      gr_column ?= gr_columns->get_column( 'DOLARACTUAL' ).
      gr_column->set_long_text('Dolar Actual' ).
      gr_column->set_short_text( 'D. Act.' ).
      gr_column->set_medium_text('Dol. Act.' ).
      ls_color-col = 3 .
      gr_column->set_color( ls_color ).
      CATCH cx_salv_not_found.
      ENDTRY .

      TRY.
      gr_column ?= gr_columns->get_column( 'PESOANTERIOR' ).
      gr_column->set_long_text('Peso Anterior' ).
      gr_column->set_short_text( 'P. Ant.' ).
      gr_column->set_medium_text('Peso Ant.' ). ls_color-col = 3 .
      gr_column->set_color( ls_color ).
      CATCH cx_salv_not_found.
      ENDTRY .

      TRY.
      gr_column ?= gr_columns->get_column( 'DOLARANTERIOR' ).
      gr_column->set_long_text('Dolar Anterior' ).
      gr_column->set_short_text( 'D. Ant.' ).
      gr_column->set_medium_text('Dol. Ant.' ).
      ls_color-col = 3 .
      gr_column->set_color( ls_color ).
      CATCH cx_salv_not_found.
      ENDTRY .

      ENDMETHOD. "build_fc

      METHOD disp_alv.

      set_tol( ).
      build_fc( ).
      end_of_page( ).

      gr_functions = gr_table->get_functions( ).
      gr_functions->set_all( abap_true ).

      gr_table->set_top_of_list( lr_logo ).
      gr_table->set_end_of_list( lr_footer ).

      gr_display = gr_table->get_display_settings( ).
      gr_display->set_striped_pattern( cl_salv_display_settings=>true ).

      gr_table->display( ).

      ENDMETHOD. "disp_alv

      METHOD set_tol.
      DATA: lv_text(30) TYPE c.

      CREATE OBJECT lr_grid.

      lr_grid->create_header_information( row = 1
      column = 1
      text = 'Generar Reportes MR'
      tooltip = 'Generar Reportes MR' ).

      lr_gridx = lr_grid->create_grid( row = 2
      column = 1 ).

      lr_label = lr_gridx->create_label( row = 2
      column = 1
      text = 'MR1 al MR10, QR1 y AR1'
      tooltip = 'MR1 al MR10, QR1 y AR1' ).

      lr_text = lr_gridx->create_text( row = 2
      column = 2
      text = lv_text
      tooltip = lv_text ).

      lr_label = lr_gridx->create_label( row = 3
      column = 1
      text = 'Fecha:'
      tooltip = 'Fecha' ).

      lr_text = lr_gridx->create_text( row = 3
      column = 2
      text = lv_text
      tooltip = lv_text ).

      lr_label = lr_gridx->create_label( row = 4
      column = 1
      text = 'Fecha Corrida:'
      tooltip = 'Fecha Corrida' ).

      lr_text = lr_gridx->create_text( row = 4
      column = 2
      text = sy-datum
      tooltip = sy-datum ).

      * Create logo layout, set grid content on left and logo image on right
      CREATE OBJECT lr_logo.
      lr_logo->set_left_content( lr_grid ).

      ENDMETHOD. "set_Tol

      METHOD end_of_page.

      DATA: lf_lines TYPE sy-tfill .

      DATA: lf_flow TYPE REF TO cl_salv_form_layout_flow .

      CREATE OBJECT lr_footer.
      *--get total lines in internal table
      lf_lines = LINES( gt_tablafinal ).

      lr_label = lr_footer->create_label( row = 1
      column = 1 ).

      lr_label->set_text( 'Información:' ).
      lf_flow = lr_footer->create_flow( row = 2
      column = 1 ).

      lf_flow->create_text( text = 'Número Total de Entradas' ).
      lf_flow = lr_footer->create_flow( row = 2
      column = 2 ).

      lf_flow->create_text( text = lf_lines ).

      ENDMETHOD. "end_of_page

      ENDCLASS. "lcl_perf_eval IMPLEMENTATION

      Comentario

      Trabajando...