![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Las tablas internas
ABAP Las tablas internas
![ABAP Las tablas internas ABAP Las tablas internas](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/393.jpg)
Tablas internas son objetos de datos (en otros lenguajes son tipo arregloso listas), almacenan datos en memoria que solo estaran disponibles durante la ejecucion de programa.
El nombre por estandarizacion debe de comenzar con TI (Tabla interna) ejemplo TI_Proveedores.
Para declarar un tabla interna puede ser de diferente tipos:
1 Declarar un TYPES -> declarar los campos en el -> luego declarar como DATA la tabla interna ligada a el TYPE -> y declarar un area de trabajo ligado a la tabla interna
TYPES : BEGIN OF TY_cliente,
id type i,
nombre(20) type c,
END OF TY_cliente.
DATA: TI_cliente TYPE STANDAR TABLE OF TY_cliente,
WA_cliente LIKE LINE OF TI_cliente.
Otra manera es solo declarar la tabla interna como Data y no utilizar tipo y crear el area de trabajo relacionada con la tabla. //Se debe de agregar la sentecia OCURRS 0
DATA: BEGIN OF TI_clientes OCURRS 0,
id type i,
nombre(20) type c,
END OF TI_clientes.
DATA: WA_clientes LIKE LINE OF TI_clientes.
3 La tercera foma de declaracion es apartir de crear primero el area de trabajo y de ahi ligar la tabla interna ejemplo
DATA: BEGIN OF WA_clientes,
id type i,
nombre(20) type c,
END OF WA_clientes.
DATA: TI_clientes TYPE STANDAR TABLE OF WA_clientes.
4. La cuarta forma de declaracion es apartir de una tabla ya existente en al base de datos, tomara todos los campos existentes en la tabla de la base de datos.
DATA: TI_clientes LIKE TABLE OF tabla en BD,
WA_clientes LIKE LINE OF TI_clientes.
MANIPULACION DE TABLAS INTERNAS
Se pueden agregar, insertar, modificar, eliminar, ordenar, leer, contar registros de una tabla de la base de datos
AGREGAR: Se utiliza la sentencia APPEND TO y agrega los registros al final de tabla interna
CLEAR WA_clientes
WA_clientes-id = 100000.
WA_clientes-nombre = 'jesus'.
APPEND WA_ciientes TO TI_clientes
ORDERNAR Se ordena por columan especidifcad y en orden ascendente o descendente
SORT TI_clientes BY id ASCENDING. // O DESCENDING
RECORRER se lee la tabal interna completa, se puede agregar un WHERE para limitar el recorrido de todos los datos.
LOOP AT TI_clientes INTO WA_clientes WHERE NOT nombre IS INITIAL
OR id GE '1'.
WRITE:/ WA_clientes-id,
WA_Clientes-nombre.
ENDLOOP
LEER TABLA: Busca y lee un dato en la tabla interna
READ TABLE TI_clientes INTO WA_clientes WITH KEY id = '1'.
Para leer una tabla demaciado grande se utiliza el parametro de busqueda binaria, ya que la busqueda es secuencia y si el dato que buscamos esta en la ultima posicion, la busqueda habra leido todos los datos antes de encontrar el qeu buscamos.
La busqueda Binaria parte en dos la cantidad de informacion y va eliminando datos en cada particion hasta encontrar el indicado. Primero se debe de ordenar la tabla y despeus aplicar la busqueda
SORT TI_clientes BY id ASCENDING.
READ TABLE TI_clientes INTO WA_clientes WITH KEY ID = '1'
BINARY SEARCH.
Se puede realizar la busqueda por un index especifico
READ TABLE TI_clientes INTO WA_clientes INDEX 5
MODIFCAR se utiliza sentencia modify
WA_clientes-id = '3'.
MODIFY TI_clientes FROM WA_clientes INDEX 2. "Se modifica el ID del segundo registro
INSERTAR inserta un registro en una posicion especifica
WA_clientes-id = 5.
WA_clientes-nombre = 'zuzo'.
INSERT WA_clientes INTO TI_clientes INDEX 3. //Inserta el registro en la tercera posicion
BORRAR Se utiliza la sentencia delete
DELETE TI_clientes WHERE id='1'.
REFRESH Elimina todos los datos de la tabla
REFRESH TI_clientes
FREE elimina la tabla de memoria no solo los datos
FREE TI_clientes.
CONTAR REGISTROS, cuenta el total de registros, se debe de guardar en una variable tipo int.
DATA: v_contador type i.
DESCRIBE TABLE TI_cliente LINES v_contador. //v_contador tendra el numero total de registros
SENTENCIA SY-SUBRC Se utiliza para verificar si una accion fue exitosa, si el resultado es 0 la ejecucion fue exitosas de lo contrario regresara el codigo de error, se agrega despues de la ejecucion de algun proceso
IF SY-SUBRC = 0.
WRITE: 'EXITOSO'.
ENDIF
 
 
 
Agradecimiento:
Ha agradecido este aporte: Carlos Piles Rosell
Favorito:
Está publicación ha sido agregada a sus favoritos por: Carlos Piles Rosell
Sobre el autor
Publicación académica de Jesus Caldera, en su ámbito de estudios para la Carrera Consultor ABAP.
Jesus Caldera
Profesión: Desarrollador de Software - Mexico - Legajo: NN49V
✒️Autor de: 20 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jesus Caldera