Exporta layout a excel tabla interna y dinamica

Con este form creo una tabla dinámica las columnas de la cual son las elegidas en un layout guardado sobre una tabla interna, la intención de el programa es que mediante un parameter le paso el nombre del layout deseado y que después apretando un botón creado, exporte el contenido del layout a Excel mientras en pantalla veríamos la tabla interna completa.

Ahora bien, mi problema viene al final de todo porque me dice que la tabla new_table creada con el método create_dynamic_table no es tabla interna, por tanto no me deja exportar.

¿Sabe alguien una solución?

Quizas sería rellenando la tabla dinámica con los datos de las columnas correspondientes de la tabla interna y después hacer una copia a otra tabla interna nueva para después poder exportar, pero no sé como hacerlo.

FORM get_fieldcat  USING p_varie p_table.

  DATA: wa_ltdx      TYPE ltdx,
        v_varkey     TYPE ltdxkey,
        it_fcat      TYPE STANDARD TABLE OF ltdxdata,
        ls_final     TYPE  ltdxdata,
        it_sort_info TYPE STANDARD TABLE OF ltdxdata,
        it_filter    TYPE STANDARD TABLE OF ltdxdata.
  CONSTANTS: c_relid      TYPE ltdx-relid VALUE 'LT'.

  SELECT SINGLE * FROM ltdx INTO wa_ltdx
         WHERE relid = c_relid
         AND report =  sy-repid
        AND variant = variant-variant.
  IF sy-subrc = 0.
    MOVE-CORRESPONDING wa_ltdx TO  v_varkey.
* will get the layout fields

    CALL FUNCTION 'LT_DBDATA_READ_FROM_LTDX'
      EXPORTING
        i_tool       = c_relid
        is_varkey    = v_varkey
      TABLES
        t_dbfieldcat = it_fcat           " To create Field Catalog
        t_dbsortinfo = it_sort_info      " Sort category set
        t_dbfilter   = it_filter.        " Filter category set
  ENDIF.
  DATA: wa_it_fcat LIKE LINE OF it_fcat.
  DATA: name(10) TYPE c.

  LOOP AT it_fcat INTO wa_it_fcat.
    IF wa_it_fcat-param = 'NO_OUT' AND wa_it_fcat-value = 'X'.
      name = wa_it_fcat-key1.
      DELETE it_fcat WHERE key1 = name.
    ENDIF.
    CLEAR wa_it_fcat.
  ENDLOOP.
  DELETE ADJACENT DUPLICATES FROM it_fcat COMPARING key1. " it_fcat contiene las columnas visibles del layout elegido en parámetro.
*************************************************************************

*DATA: it_fieldcats TYPE lvc_t_fcat,
*      is_fieldcats LIKE LINE OF it_fieldcat.
*DATA: new_table TYPE REF TO data.
*DATA: new_line  TYPE REF TO data.

loop at it_fcat into wa_it_fcat.
  is_fieldcats-fieldname = wa_it_fcat-key1.
*is_fieldcats-ref_field = wa_it_fcat-key1.
*is_fieldcats-ref_table = 'it_fcat'.
APPEND is_fieldcats TO it_fieldcats.
endloop.

* Create a new Table
CALL METHOD cl_alv_table_create=>create_dynamic_table
  EXPORTING
    it_fieldcatalog = it_fieldcats
  IMPORTING
    ep_table        = new_table.

Hola,

Te paso un link que tiene un ejemplo claro de lo que estás buscando:

ht_ps://blogs.sap.com/2013/06/11/dynamic-internal-table-iilustrated-with-an-example-of-creating-the-transpose-of-internal-table/

Espero que te sirva!
Saludos.

1 me gusta

Hola, gracias por el link, es útil, pero en mi caso necesito algo diferente a lo que explican ahí,
Tengo una tabla interna, y una tabla dinámica ( que es como la interna pero no tiene todas las columnas).
Lo que necesito es pasar las filas correspondientes a las columnas que coincidan de la tabla interna a la tabla dinámica.

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.