✒️ABAP Las tablas internas
ABAP Las tablas internas
iccionario de datos.
DATA: BEGIN OF MEJORES_ PROVEEDORES OCCURS 10,
NOMBRE LIKE LFA1-NAME 1,
CIUDAD LIKE LFA1-ORT1,
VENTAS LIKE LFC3-SOLLL,
La cláusula OCCURS determina el número de líneas guardadas en memoria principal. Esto no significa que el tamaño máximo de la tabla sea el indicado, ya que si este se desborda los datos se guardan en un fichero de paginación, bajando lógicamente el tiempo de proceso de las tablas internas, pero evitando que el área global de almacenamiento destinado por SAP para tablas internas se agote.
Cómo declarar tablas internas
DATA: BEGIN OF <tabla> OCCURS <n>,
<Def.Campo>,
…
END OF <tabla>.
Definiremos una tabla interna con n-líneas en memoria, más una línea de cabecera o área de trabajo.
La cantidad de líneas que especifiquemos en el OCCURS no limita el tamaño de la tabla, sino la cantidad de registros que se guardan en memoria simultáneamente. Esto hace necesario un especial cuidado al proponer el número de líneas, ya que un OCCURS muy grande supone un gran gasto de recursos del sistema y un OCCURS pequeño un acceso muy lento, ya que necesita de un proceso de paginación.
: Añade un registro a una tabla interna con los valores que tengamos en el área de trabajo.
APPEND <intab>.: Añade o suma la línea de cabecera. Sumará los campos de tipo P,F,I, si existe una línea en la tabla con campos idénticos (tipo C) a los del área de trabajo.
El problema de esta instrucción es que es bastante lenta. Se puede sustituir por las instrucciones READ e INSERT o MODIFY.
SELECT * FROM <tab> INTO TABLE <tabint>.
SORT <intab>.Esta instrucción realiza una ordenación por la estructura de la tabla sin tener en cuenta los campos P,I,F.
SORT <intab> BY <campo1> .... <campo n>.Si no se indica lo contrario, la ordenación por defecto es ascendente.
Podemos recorrer una tabla interna con la instrucción LOOP ... ENDLOOP-
LOOP AT <intal> ( WHERE <cond>).
En cada iteración coloca la línea de la tabla que se está procesando en la línea de cabecera.
Podemos restringir el proceso de una tabla con una condición WHERE.
Si no existe ningún registro de la tabla que cumpla la condición especificada en la cláusula WHERE, la variable del sistema SY-SUBRC será distinta que 0.
Dentro del LOOP, la variable SY-TABIX contiene el índice de la entrada que está procesando en ese momento.
ambién es posible hacer un:
LOOP AT<intab> FROM <inicio> TO <fin>.
…
Donde <inicio> y <fin> son índices de la tabla interna.
 
 
 
Sobre el autor
Publicación académica de Juan Carlos Ayala Chira, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Carlos Ayala Chira
Profesión: Ingeniero de Sistemas E Informática - Peru - Legajo: KQ70J
✒️Autor de: 97 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Juan Ayala