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.