Archivo

Posts Tagged ‘campos itab’

Cómo obtener las propiedades de los campos

Caso: a veces en la lógica cuando se trabaja con field-symbols o queremos optimizar código necesitamos saber de que tipo es cada campo.

Solución: Si son campos del diccionario de datos podemos utilizar la función DDIF_FIELDINFO_GET, si son de una tabla interna podemos usar el siguiente código:

REPORT obtener_info_campos_itab.

TYPES: BEGIN OF typ_itab,
char20(20) TYPE c,
monto type kbetr,
entero type i,
meins type meins,
cantidad type menge_d,
fecha TYPE sy-datum,
type_p TYPE p LENGTH 12 DECIMALS 3,
END OF typ_itab.

DATA: i_itab TYPE TABLE OF typ_itab,
l_tabledescr_ref TYPE REF TO cl_abap_tabledescr,
l_descr_ref TYPE REF TO cl_abap_structdescr,
wa_table TYPE abap_compdescr.

l_tabledescr_ref ?= cl_abap_typedescr=>describe_by_data( i_itab ).
l_descr_ref ?= l_tabledescr_ref->get_table_line_type( ).

LOOP AT l_descr_ref->components INTO wa_table .
WRITE: / wa_table-name,wa_table-type_kind,
wa_table-length,wa_table-decimals.
ENDLOOP.