✒️ABAP Las tablas internas
ABAP Las tablas internas
==> TABLAS INTERNAS:
Qué es una tabla interna: es un objeto de datos que se guarda en memoria normalmente para:
- Almacenar temporalmente los datos de una BD para un procesamiento posterior.
- Estructurar y dar formato a datos que se mostrarán como salida de programa.
- Dar formato a datos que serán utilizados por otros servicios.
Cómo se declara una tabla interna:
- SINTAXIS:
DATA: BEGIN OF <tabla> OCCURS <n>,
<Def.Campo>,
...
END OF <tabla>.
- Ejemplo:
DATA: BEGIN OF t_datos OCCURS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF t_Datos.
- *** El número especificado en OCCURS limita la cantidad de registros que se guardarán en memoria simultaneamente. Un cero significa que no habrá límite ***.
Llenado de una tabla interna:
- Se utiliza la sentencia APPEND TO para añadir un registro a la tabla interna en la última posición. Ejemplo:
CLEAR wa_prov.
wa_prov-nombre = 'Roberto'.
wa_prov-apellido = 'Gómez'.
wa_prov-dni = '52896589H'.
APPEND wa_prov TO ti_prov.
Ordenamiento de una tabla interna:
- Se utiliza la sentencia SORT. Ejemplo:
SORT ti_prov BY dni DESCENDING.
Procesamiento de una tabla interna:
- Para recorrer la tabla registro a registro se utiliza la sentencia LOOP-ENDLOOP. Ejemplo:
LOOP AT ti_prov INTO wa_prov
WHERE NOT nombre IS INITIAL.
ENDLOOP.
* Si no existe ningún registro con esos datos, SY-SUBRC será distinto de cero.
Lectura de una tabla interna:
- Sin necesidad de recorrer la tabla entera podemos localizar un registro concreto con la sentencia READ TABLE. Ejemplo:
READ TABLE ti_prov INTO wa_prov
WITH KEY nombre = 'Ariel'. - Si queremos leer una posición concreta se utiliza la cláusula INDEX. Ejemplo:
READ TABLE ti_prov INTO wa_prov INDEX 1.
Modificar una tabla interna:
- Para modificar un registro se utiliza la sentencia MODIFY. Ejemplo:
wa_prov-dni = '24987500'.
MODIFY ti_prov FROM wa_prov INDEX 1. - Para insertar un registro se utiliza la sentencia INSERT. Ejemplo insertando en la posición 2:
wa_prov-nombre = 'Javier'.
wa_prov-apellido = 'Hernández'.
wa_prov-dni = '50256898h'
INSERT wa_prov INTO ti_prov INDEX 2. - Para borrar un registro se utiliza la sentencia DELETE. Ejemplo borrando por dni:
DELETE ti_prov
WHERE dni = '52874152h'. - Para borrar TODO el contenido de una tabla se utiliza la sentencia REFRESH. Ejemplo:
REFRESH ti_prov.
- Para saber cuántos registros tiene una tabla se utiliza la sentencia DESCRIBE TABLE. Ejemplo guardando el número en la variable v_lineas:
DATA v_lineas TYPE i.
DESCRIBE TABLE ti_prov LINES v_lineas.
 
 
 
Sobre el autor
Publicación académica de Jose Lopez Partida, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Lopez Partida
Profesión: Programador. Informático - España - Legajo: BF75R
✒️Autor de: 40 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Lopez