Ambas declaraciones se utilizan para poblar datos en una tabla interna. Cuando se utiliza la declaración APPEND, se añade un nuevo registro a la tabla interna y cuando se utiliza la declaración COLLECT, el programa verificará la clave para campos de caracteres y para los mismos campos de caracteres se sumarán todos los campos numéricos.
Por ejemplo:
APPEND line_spec A itab ORDENADO POR comp resultado.
Adición:
... ORDENADO POR comp
Efecto
Esta declaración añade una o más filas line_spec a una tabla de índices interna itab. Si itab es una tabla estándar, puedes usar ORDENADO POR para ordenar la tabla de una manera especificada. Usa resultado al añadir una sola fila a partir de la versión 6.10 para establecer una referencia a la fila añadida en forma de un símbolo de campo o una referencia de datos.
Para los tipos de tablas individuales, la adición se realiza de la siguiente manera:
Para tablas estándar, las filas se añaden directamente y sin verificar el contenido de la tabla interna.
Para tablas ordenadas, las filas se añaden solo si corresponden a la secuencia de ordenación y no crean entradas duplicadas con una clave de tabla única. De lo contrario, se genera una excepción no tratable.
Para tablas hash, no se pueden añadir filas.
La declaración APPEND establece sy-tabix en el índice de tabla de la última fila añadida.
Adición
... ORDENADO POR comp
Efecto
Esta adición solo se permite si se especifica un área de trabajo wa y si se utiliza una tabla estándar, donde wa debe ser compatible con el tipo de fila de la tabla. Puedes especificar el componente comp como se muestra en la sección Especificación de componentes, sin embargo, solo puedes acceder a un solo componente y no a atributos de clases utilizando el selector de componente de objeto.
La declaración se ejecuta en dos pasos:
Comenzando en la última fila, se busca una fila en la tabla en la que el valor del componente comp sea mayor o igual al valor del componente comp de wa. Si existe una fila así, el área de trabajo wa se incluye después de esta fila. Si no existe tal fila, el área de trabajo wa se incluye antes de la primera fila. El índice de tabla de todas las filas siguientes a las filas incluidas aumenta en uno.
Si el número de filas antes de la declaración es mayor o igual al número especificado en la definición de la tabla interna en la adición TAMAÑO INICIAL, la última fila recién creada se elimina.
Nota
Cuando se utiliza solo la declaración APPEND con la adición ORDENADO POR para llenar una tabla interna, esta regla resulta en una tabla interna que no contiene más filas de las especificadas en su definición después de TAMAÑO INICIAL y que está ordenada en orden descendente por el componente comp (clasificación).
Debería usarse la declaración SORT en lugar de APPEND ORDENADO POR.
Ejemplo
Creación de un ranking de los tres vuelos de una conexión que muestra los asientos más libres.
PARÁMETROS: p_carrid TIPO sflight-carrid,
p_connid TIPO sflight-connid.
DATOS: INICIO DE asientos,
fldate TIPO sflight-fldate,
seatsocc TIPO sflight-seatsocc,
seatsmax TIPO sflight-seatsmax,
seatsfree TIPO sflight-seatsocc,
FIN DE asientos.
DATOS seats_tab TIPO TABLA ESTÁNDAR DE asientos
TAMAÑO INICIAL 3.
SELECCIONAR fldate seatsocc seatsmax
DE sflight
EN seats
DONDE carrid = p_carrid Y
connid = p_connid.
seats-seatsfree = seats-seatsmax - seats-seatsocc.
APPEND seats A seats_tab ORDENADO POR seatsfree.
FIN SELECCIONAR.
COLLECT
Sintaxis
COLLECT wa EN itab resultado.
Efecto