-Tablas Internas
Son objetos en los cuales se pueden almacenar garndes cantidades de registros en memoria relacionados a la misma estructura de la cual proceden.
(el numero de registros maximos, dependen de la implementacion del sistema).
Sirve para:
almacenar temporalmente datos de BD para procesamientos
estructurar y formatear datos que se mostraran como salida de un programa
formatear datos para ser utilizados por otros servivios
Declaracion de tabla interna, asi definimos una tabla interna con n lineas en memoria mas la cabecera o area de trabajo
DATA:BEGIN OF <tabla1> OCCURS <n>,
<deficion campo>,
...
END OF<tabla1>.
DATA:BEGIN OF <tabla>,
<deficion campo>,
...
END OF<tabla>.
DATA: tabla1 LIKE STANDAR TABLE OF tabla.
DATA: tabla1 LIKE STANDAR TABLE OF tabla estandar WIHT HEADER LINE
DATA: tabla LIKE LINE OF tabla 1.
OCCURS, no limita el tamaño de la tabla, si no la cantidad de registros que se gusrdan en memoria. Regularmente se declara en 0 para trabajar
con grandes cantidades de registros.
-Llenar una tabla interna.
Utilizamos la sentencia APPEND TO:
esta añade un registro en la ultima posicion
Ordenamiento de una tabla interna
SORT utilizamos esta sentencia para ordenar una tabla
SORT tabla BY campo DESENDING(> a <). (< a > ASCENDING)
-Procesamiento tabla interna
Utilizamos la sentencia LOOP ENDLOOP. procesar registro por registro
cuando el WHERE no cumple la condicion el SY-SUBRC <> 0.
-Lectura de una tabla interna.
Cuando solo necesitamos leer un registro de la tabla utilizamos la sentencia
READ TABLE tabla INTO workarea WITH KEY campo = 'valor'.
cuando el registro es encontrado, el SY-SUBRC = 0 en caso contrario sera diferente de 0.
nos podemos apoyar con INDEX, para encontrar una posicion en particular.
READ TABLE tabla INTO workarea BINARY SEARCH " hace la busqueda mas eficiente.
-Modificando una tabla interna
MODIFY tabla FROM workarea INDEX 1.
si el registro a modificar no existe, SY-SUBRC sera diferente de 0.
INSERT la utilizamos para insertar un registro en una posicion determinada.
INSERT worarea INTO tabla INDEX 2.
DELETE la utilizamos para borrar un registro
DELETE tabla WHERE campo = valor
REFRESH borrar el contenido de una tabla.
REFRESH tabla.
DESCRIBE TABLA Nos ayuda a verificar cuentos registros existen en la tabla.
DATA v-linea TYPE i.
DESCRIBE TABLA tabla LINES v-linea.