Un Usuario hizo la siguiente pregunta
Quiero colocar comandos abiertos (VBBE-OMENG) de la tabla VBBE por tema no. y planta. ¿Puedo usar la declaración COLLECT? ¿Como puedo usar lo?
5 respuestas
Hola ..
Aquí está el código: pruébelo …..
TIPOS: COMIENZO DE ST_VBBE,
TIPO MATNR VBBE-MATNR,
TRABAJOS TIPO VBBE-TRABAJOS,
VBBE-OMENG TIPO OMENG,
END ST_VBBE.
detalles: IT_VBBE TYPE TABLE OF ST_VBBE,
WA_VBBE TIPO ST_VBBE.
INICIO-SELECCIONAR.
SELECCIÓN DE MATNR WERKS OMENGE
De VBBE EN LA TABLA IT_VBBE.
LOOP AG IT_VBBE EN WA_VBBE.
RECOGER WA_VBBE EN IT_VBBE.
ENDLOOP.
recompensa si es útil eso
Ex miembro
Hola Vishal,
Obtenga el documento para COLLECT.
Por lo general, se utiliza para recopilar registros para su inclusión en una tabla interna ……
COLLECT Diagrama de sintaxis
La forma básica de COLLECT [wa INTO] itab.
Adición:
… CLASIFICADO POR f
En el contexto de los objetos ABAP, hay una verificación de sintaxis más estricta
lo ha hecho en otras áreas ABAP. Ver formularios cortos en línea
operaciones no permitidas.
Effect COLLECT le permite crear un conjunto de datos único o resumido.
El sistema intenta ingresar a una tabla correspondiente
clave de tabla (consulte Definición de clave para tablas internas). El es
los valores clave se toman de la línea del encabezado
itab tabla interna, o de la obra expresamente especificada
área de wa. itab debe tener una estructura plana, es decir, no puede
otras mesas internas allí. No todos los componentes
parte de la clave debe tener tipos numéricos (ver ABAP numérico
tipos).
Si el sistema encuentra una entrada, los campos numéricos no son
parte de la clave de la tabla (ver tipos de números ABAP) se agrega al
la suma total de las entradas existentes. Si no lo consigue
entrada, el sistema crea una nueva entrada en su lugar.
La forma en que el sistema encuentra las entradas depende de la
tipo de mesa interna:
– MESA ESTÁNDAR:
El sistema crea un hash temporal para el
tabla para encontrar las entradas. Esto significa el tiempo de ejecución
no es necesario encontrarlos dependiendo del número de
entradas de la tabla. La administración es temporal, ya que es
inválido por operaciones como ELIMINAR, INSERTAR, MODIFICAR o
ESCRIBE. COLLECT ya no es independiente
el tamaño de la mesa, porque se debe utilizar el sistema lineal
buscar entradas. Por esta razón, no debería
use COLLECT para completar tablas estándar.
– LA MESA CLASIFICADA:
El sistema utiliza la búsqueda binaria para encontrar las entradas. sí
Es una relación logarítmica entre los números de la tabla.
entradas y tiempo de búsqueda.
– TABLA HASHED:
El sistema de administración interno utiliza el hash
tabla para la obtención de registros. Dado que (a diferencia de las tablas estándar), este
permanece intacto incluso después de las operaciones de modificación de la tabla,
el tiempo de búsqueda es siempre independiente del número de
entradas de la tabla.
Para tablas estándar y TABLAS CLASIFICADAS, campo del sistema
SY-TABIX incluye el número de personas existentes o recién agregadas
entrada de la tabla después del APÉNDICE. Con HASHED TABLES, hay SY-TABIX
establecido en 0.
Notas 1. COLLECT te permite crear uno único o resumido
conjunto de datos, y solo debe usarlo cuando sea necesario.
Si no se requiere ninguno de estos atributos, o donde
la naturaleza de la tabla en la aplicación significa que
imposible que se produzcan entradas duplicadas, debe utilizarlas
INSERTAR [wa INTO] TABLE itab en lugar de COLLECT. Si lo haces
requieren que la tabla sea única o resumida, COLLECT es el
forma más eficaz de lograrlo.
2. Si usa COLLECT con un área de trabajo, el área de trabajo debe ser
compatible con el tipo de línea de la mesa interna.
3. Si edita una tabla estándar usando COLLECT, solo debe hacerlo
utilice RECOGER o MODIFICAR … TRANSPORTE f1 f2 …
declaraciones (donde la clave no puede contener ninguno de f1, f2, …)
enthalten sein). Solo entonces puede estar seguro:
– La tabla interna es realmente única o resumida.
– COLLECT funciona de manera eficiente. Compruebe si el conjunto de datos
ya existe una entrada con la misma clave
constante
tiempo de búsqueda (procedimiento hash).
Si usa cualquier otra declaración de modificación de tabla, el
verificar entradas en el conjunto de datos con la misma clave solamente
ejecutar usando la búsqueda lineal (y aceptar en consecuencia
más extenso). Puede utilizar el módulo de funciones
ABL_TABLE_HASH_STATE para probar si un
tiempo de búsqueda constante o lineal para una tabla estándar en particular.
Ejemplo Resumen de cifras de ventas por empresa:
TIPOS: DENTRO DE LA EMPRESA,
NOMBRE (20) TIPO C,
TIPO DE VENTA I,
FIN DE EMPRESA.
DETALLES: COMPAÑÍA TIPO COMP,
TABLA DE TIPO DE COMPAÑÍA COMPTAB
PARA EL NOMBRE PRINCIPAL.
COMP-NAME = ‘pato’. COMP-VENTAS = 10. COMP-VENTAS
COMPTAB.
COMP-NAME = ‘Tigre’. COMP-VENTAS = 20. COMP-VENTAS
COMPTAB.
COMP-NAME = ‘pato’. COMP-VENTAS = 30. RECOGIDA COMP IN
COMPTAB.
La tabla COMPTAB ahora contiene el siguiente material:
VENTA VENTA
Pato 40
Tigre 20
Adición … CLASIFICADO POR f
RECOGER EFECTO … CLASIFICADO POR fi obsoleto, y ya no debería ser
se utiliza. Solo se aplica a tablas estándar, y tienen lo mismo
funciona como un APÉNDICE … ORDENADO POR f, debe usar
en lugar de. (Ver también declaraciones obsoletas).
Nota de rendimiento:
1. Evite tareas innecesarias para la línea del encabezado cuando utilice
tablas internas con una línea de encabezado. Siempre que sea posible, utilice
declaraciones con un alcance de trabajo explícito.
Por ejemplo, «APPEND wa TO itab». aproximadamente el doble de
rápidamente como «itab = wa. APPEND itab.». Lo mismo va para
COBRO Y SEGURO.
2. El tiempo de ejecución de COLLECT aumenta con el ancho del
clave de tabla y el número de campos numéricos cuyo contenido
se resumen.
Errores en tiempo de ejecución Nota:
– COLLECT_OVERFLOW: Desbordamiento en campo entero con nosotros
tan bueno como eso
– COLLECT_OVERFLOW_TYPE_P: Desbordamiento en el campo de tipo P durante
tan bueno como eso.
– TABLE_COLLECT_CHAR_IN_FUNCTION: COLLECT en no numérico
Gort.
Recompensa si es útil.
Sobre
–
Sasidhar Reddy Matli.
Ex miembro
Hola
siga este sencillo programa.
TIPOS: DENTRO DE LA EMPRESA,
NOMBRE (20) TIPO C,
TIPO DE VENTA I,
FIN DE EMPRESA.
DETALLES: COMPAÑÍA TIPO COMP,
TABLA DE TIPO DE COMPAÑÍA COMPTAB
PARA EL NOMBRE PRINCIPAL.
COMP-NAME = ‘pato’. COMP-VENTAS = 10. RECOGER COMP EN COMPTAB.
COMP-NAME = ‘Tigre’. COMP-VENTAS = 20. COMP-RECOGIDA EN COMPTAB.
COMP-NAME = ‘pato’. COMP-VENTAS = 30. RECOGER COMP EN COMPTAB.
La tabla COMPTAB ahora contiene el siguiente material:
NOMBRE | VENTAS
–
Pato | 40
Tigre 20
en nuestro programa, use recolectar VBBE-werks.
Hola, en mi opinión cometiste un pequeño error, por lo que no puedes obtener los datos mediante la recopilación de estado.
Aquí está el código incorrecto, así que si estás contento.
TIPOS: COMIENZO DE ST_VBBE,
TIPO MATNR VBBE-MATNR,
TRABAJOS TIPO VBBE-TRABAJOS,
VBBE-OMENG TIPO OMENG,
END ST_VBBE.
detalles: IT_VBBE TYPE TABLE de ST_VBBE,
WA_VBBE TIPO ST_VBBE,
it_vbbe_f TIPO DE TABLA st_vbbe,
WA_VBBE_F TIPO ST_VBBE.
INICIO-SELECCIONAR.
SELECCIÓN MATNR WERKS OMENG
Desde VBBE IN TABLE IT_VBBE Hasta 500 filas.
PUNTO DE ROTURA.
LOOP AG IT_VBBE EN WA_VBBE.
RECOGER WA_VBBE EN IT_VBBE_f.
ENDLOOP.Espero que esto resuelva tu pregunta.
gracias.