✒️ABAP Las tablas internas
ABAP Las tablas internas
Tablas internas
1. ¿Qué son las tablas internas?
Objetos de datos que permiten guardar en memoria registros con la misma estructura. La cantidad máxima está definida en los límites especificados de la instalación del sistema.
Usos:
- Almacenar temporalmente datos de BD para futuro procesamiento.
- Estructurar y formatear datos que se usarán en salidas de programas.
- Formatear datos usados por otros servicios.
2. ¿Cómo se declara una tabla interna?
Ejem.:
DATA: BEGIN OF ti_proveedores OCCURS 0,
nombre(30) TYPE c,
apellido(30) TYPE c,
dni(8) TYPE c,
END OF ti_proveedores.
- n líneas en memoria
- Línea de cabecera ó área de trabajo (tiene contenido del registro de la tabla interna que se está procesando en el momento)
Otra forma de declarar la tabla sería:
DATA: BEGIN OF wa_proveedores OCCURS 0,
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.
Nota: Otra forma de declarar una tabla es con WITH HEADER LINE.
Ejem.: DATA: w_vuelos LIKE STANDARD TABLE OF s_flight WITH HEADER LINE.* Tabla interna donde cabecera o área de trabajo de tabla es la misma tabla interna. s_flight es la tabla de vuelos de SAP.
3. Llenado de una tabla interna.
- Uso de la sentencia APPEND TO, que añade registro a última posición con valores establecidos en AREA DE TRABAJO (cabecera-Working area-tiene el contenido del registro que se está procesando en el momento).
Ejm.: CLEAR wa_proveedores.
wa_proveedores_nombre='Darwin'.
wa_proveedores_apellido='Terraza'.
wa_proveedores_dni='108252140'.
APPEND wa_proveedores TO ti_proveedores.
Nota: La tabla interna se llena con el contenido de una Base de Datos
4. Ordenamiento de una tabla interna
- Uso de la sentencia SORT. Ejm.: SORT ti_proveedores BY dni DESCENDING. También se puede usar ASCENDING.
5. Procesamiento de una tabla interna.
- Uso de la sentencia LOOP-ENDLOOP, para hacer recorrido por registro.
Ejm.:
LOOP AT ti_proveedores INTO wa_proveedores WHERE NOT nombre IS INITIAL.
<SENTENCIAS>
END-LOOP.
Notas:
- Si no existe registro que cumpla con filtro, SY-SUBRC <>0.
- También se puede declarar estructura o área de trabajo de tabla interna con adición LIKE LINE OF.
Ejm.:
DATA : wa_proveedores LIKE LINE OF ti_proveedores. * Creando estructura con formato idéntico a cualquier registro de la tabla interna ti_proveedores.
6. Lectura de una tabla interna.
- Para registro específico, con sentencia READ TABLE.
Ejm.: READ TABLE ti_proveedores INTO wa_proveedores WITH KEY Nombre = 'Ariel'. Si se encuentra registro, SY-SUBRC = 0, caso contrario, distinto.
- Para registro en posición específica, con sentencia INDEX.
Ejm.: READ TABLE ti_proveedores INTO wa_proveedores INDEX 1.
Nota: para mejorar búsqueda, se puede utilizar agregado de cláusula BINARY SEARCH, que mejora la eficiencia de la búsqueda. Está cláusula aplica un algoritmo de búsqueda binario (distinto al secuencial, que usa la sola sentencia READ TABLE). Es importante usar la ordenación de los registros antes de usar esta cláusula por los campos de búsqueda, ya que de no ser así, no aparecerá el registro aunque este si se encuentre en la tabla.
Ejm.:
SORT ti_proveedores ASCENDING BY Nombre.
READ TABLE ti_proveedores WITH KEY Nombre = 'Darwin' ASSIGNING wa_proveedores BINARY SEARCH.
IF ( sy-subrc EQ 0 ).
<Sentencias>
ENDIF.
7. Modificación de tabla interna.
- MODIFY: Modifica contenido de un registro.
Ejm.: wa_proveedores-dni='1243545'.
MODIFY ti_proveedores FROM wa_proveedores INDEX 1.
Nota: Si el registro a modificar no existe, SY-SUBRC <> 0.
- INSERT: Inserta registro en una posición determinada.
Ejm.: wa_proveedores-nombre='Juan'.
wa_proveedores-apellido='Terraza'.
wa_proveedores-dni='10824901'.
INSERT wa_proveedores INTO ti_proveedores INDEX 2.
- DELETE: Borra registro.
Ejm.: DELETE ti_proveedores WHERE dni='12345'.
- REFRESH: Borra todo el contenido de una tabla interna.
Ejm.: REFRESH ti_proveedores.
- DESCRIBE TABLE: Identificar cantidad de registros de una tabla.
Ejm.: DATA: v_lineas TYPE i.
DESCRIBE TABLE ti_proveedores LINES v_lineas.
 
 
 
Sobre el autor
Publicación académica de Darwin Enrique Terraza Berdugo, en su ámbito de estudios para la Carrera Consultor ABAP.
Darwin Enrique Terraza Berdugo
Colombia - Legajo: MM57E
✒️Autor de: 60 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial
Disponibilidad Laboral: PartTime
Certificación Académica de Darwin Terraza