✒️ABAP Las tablas internas
ABAP Las tablas internas
Unidad 3 Diccionario de Datos
Qué son las tablas internas
Consiste en guardar una colección de registros sin necesidad de acceder a la base de datos para realizar operaciones con este conjunto de información. Es un objeto de datos que permite guardar grandes cantidades de registros de datos con la misma estructura. La cantidad de registros depende de la configuración dada en el sistema. Uso típico de las tablas internas:
Almacenar temporalmente datos para las bases de datos para un procesamiento futuro
Estructura y formateo de datos que se mostrarán como salida del programa.
Formateo de datos para ser utilizados por otros servicios.
Las tablas internas se declaran de la siguiente manera.
DATA: BEGIN OF <tabla> OCCURS <n>,
<Def.Campo>,
END OF <tabla>.
Así es como se define una tabla interna con n número de líneas en memoria más una línea de cabecera o área de trabajo (contiene el contenido del registro de la tabla que se procesa en ese momento)
Tip: El parámetro OCCURS especifica la cantidad 0, que permite trabajar con tablas de gran cantidad de registros.
Ejemplo:
DATA: BEGIN OF (TI_PROVEEDORES) OCCURS 0,
Nombre (30) TYPE c,
DNI (8) TYPE c,
END OF ti_proveedores.
Otra forma de declarar la misma tabla es la siguiente:
DATA: BEGIN OF wa_proveedores
Nombre (30) TYPE c,
Apellido (30) TYPE c,
DNI (8) TYPE c,
END OF wa_proveedores.
DATA: ti_proveedores LIKE STANDARD TABLE OF wa_proveedores.
Existe otra forma para declarar tablas internas, esto se hace a través de la sentencia WITH HEADER LINE
DATA: ti_vuelos LIKE STANDARD TABLE OF s_flight WITH HEADER LINE
Así se declara una tabla interna en donde la cabecera o área de trabajo es la misma tabla interna.
LLENADO DE UNA TABLA INTERNA
La palabra determinada es APPEND TO, con esta palabra añadiremos un registro a nuestra tabla interna, de la siguiente manera:
CLEAR: wa_proveedores
wa_proveedores-nombre = ’Juan’.
wa_proveedores-apellido= ‘Rodriguez’.
wa_proveedores-dni = ‘123654’.
APPEND TO wa_proveedores INTO ti_proveedores.
CLEAR: wa_proveedores
wa_proveedores-nombre = Ernesto.
wa_proveedores-apellido= ‘Villanueva.
wa_proveedores-dni = ‘987456’.
APPEND TO wa_proveedores INTO ti_proveedores.
ORDENAMIENTO DE UNA TABLA INTERNA
Se ordenan mediante la palabra clave SORT, con sus dos respectivas variantes ASCENDING o DESCENDING, como en el siguiente ejemplo:
SORT wa_proveedores-dni BY ti_proveedores ASCENDING
PROCESAMIENTO DE UNA TABLA INTERNA:
Se utilizan las sentencias LOOP/ENDLOOP.
LOOP ti_proveedores INTO wa_proveedores
WHERE nombre IS INITIAL.
ENDLOOP.
En este caso, si no existe algún registro con las condicionantes dadas en la cláusula WHERE, SY-SUBRC será distinto de cero.
LECTURA DE UNA TABLA INTERNA
READ TABLE Es una herramienta muy útil porque evita la revisión de cada uno de los registros, lo que hará es seguir una búsqueda especifica como en el siguiente ejemplo.
READ TABLE ti_proveedores INTO wa_proveedores
WIH KEY nombre = ‘Ricardo’.
En este caso, si el registro fue hallado el sistema regresará un SY-SUBRC igual a cero, en caso contrario será distinto de cero.
Ahora bien, la sentencia INDEX hace búsqueda por ubicación, es decir, si nosotros especificamos el registro en el que tiene que hacer la búsqueda se hará de una forma más cerrada.
READ TABLE ti_proveedores INTO wa_proveedores INDEX 3,
WITH KEY nombre = ‘Alfredo’.
MODIFICANDO UNA TABLA INTERNA
DE UN REGISTRO…
Se utiliza la sentencia MODIFY, por eiemplo:
Wa_proveedores-dni = ‘123654’
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
INSERTANDO UN REGISTRO
Se utiliza la sentencia INSERT
wa_proveedores-nombre = ‘Marcelo’.
wa_proveedores-apellido =’Ramírez’.
wa_proveedores-dni = ‘3658996’.
INSERT wa_proveedores INTO ti_proveedores INDEX 5.
PARA BORRAR
Se utiliza la sentencia DELETE de la siguiente maneta
DELETE wa_proveedores INTO ti_proveedores
WHERE dni = ‘2658993’.
PARA BORRAR TODO EL CONTENIDO DE UNA TABLA
Se hace mediante la sentencia REFRESH
REFRESH ti_proveedores.
PARA OBTENER EL NÚMERO DE REGISTROS DE UNA TABLA.
Lo hacemos mediante la sentencia DESCRIBE TABLE.
DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedoes LINES v_lineas.
 
 
 
Sobre el autor
Publicación académica de Jose Alberto Rivera Gonzalez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Alberto Rivera Gonzalez
Profesión: Técnico Informático - Mexico - Legajo: LG32F
✒️Autor de: 102 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Rivera