Tabla Interna Dinamica
Codigo para la generacion de una tabla interna de forma dinamica en tiempo de ejecucion, cuando no se conocen los campos que esta va a contener en tiempo de diseño.
En este caso solo lo hice para guardar los meses del año, pero segun la logica de programacion de cada situacion, esto puede ser ajustado a las necesidades del desarrollo.
Espero sea de utilidad.
*&---------------------------------------------------------------------*
*& Report ZPRUEBAS_ABAP
*&---------------------------------------------------------------------*
*& reporte para la creacion de una tabla interna dinamica.
*&---------------------------------------------------------------------*
REPORT ZPRUEBAS_ABAP.
DATA: t_fieldcat TYPE lvc_t_fcat,
t_fieldcat_wa TYPE LINE OF lvc_t_fcat.
DATA: tabla TYPE REF TO data,
EP_TABLE TYPE REF TO data,
EP_line TYPE REF TO data.
DATA: BEGIN OF MESES OCCURS 0,
MES(12) TYPE C,
END OF MESES.
TYPE-POOLS: slis.
FIELD-SYMBOLS:
<l_table> TYPE STANDARD TABLE
<l_line> TYPE ANY
<l_field> TYPE ANY
START-OF-SELECTION.
MESES-MES = 'ENERO'. APPEND MESES.
MESES-MES = 'FEBRERO'. APPEND MESES.
MESES-MES = 'MARZO'. APPEND MESES.
MESES-MES = 'ABRIL'. APPEND MESES.
MESES-MES = 'MAYO'. APPEND MESES.
MESES-MES = 'JUNIO'. APPEND MESES.
MESES-MES = 'JULIO'. APPEND MESES.
MESES-MES = 'AGOSTO'. APPEND MESES.
MESES-MES = 'SEPTIEMBRE'. APPEND MESES.
MESES-MES = 'OCTUBRE'. APPEND MESES.
MESES-MES = 'NOVIEMBRE'. APPEND MESES.
MESES-MES = 'DICIEMBRE'. APPEND MESES.
LOOP AT MESES.
t_fieldcat_wa-col_pos = SY-TABIX.
t_fieldcat_wa-fieldname = MESES-MES.
APPEND t_fieldcat_wa TO t_fieldcat.
ENDLOOP.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = t_fieldcat
IMPORTING
ep_table = tabla
EXCEPTIONS
GENERATE_SUBPOOL_DIR_FULL = 1
others = 2
.
IF sy-subrc = 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ASSIGN tabla->* TO <l_table>.
CREATE DATA ep_line LIKE LINE OF <l_table>.
ASSIGN ep_line->* TO <l_line>.
LOOP AT MESES.
assign component MESES-MES of structure <l_line> to <l_field>.
<l_field> = SY-TABIX.
ENDLOOP.
insert <l_line> into table <l_table>.
LOOP AT MESES.
assign component meses-mes of structure <l_line> to <l_field>.
write: / MESES-MES, ': ', <l_field>.
ENDLOOP.