Tabla Interna Dinamica

posted under by Antonio Lopez


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.

Google
 
top