Uso de SAP ABAP PARA TODAS LAS ENTRADAS

La cláusula FOR ALL ENTRIES es una función de uso común en la instrucción ABAP OPEN SQL. Una sentencia OPEN SQL con una cláusula FOR ALL ENTRIES representa un tipo de sentencia OPEN SQL que incluye tablas de base de datos y tablas dentro de ABAP. En el pasado, podíamos usar una transformación JOIN para ejecutar este tipo de instrucción SQL. Con Fast Data Access (FDA), está disponible una nueva forma de ejecutar sentencias SQL utilizando la cláusula FOR ALL ENTRISES.

Este artículo explicará qué tan rápido funciona el acceso a datos (FDA) en el kernel SAP ABAP y por qué FDA es más adecuado que la transformación JOIN para la instrucción OPEN SQL SELECT con la cláusula FOR ALL ENTRIES.

De forma predeterminada, la biblioteca compartida de base de datos (DBSL) para IBM Db2 para Linux, UNIX y Windows utiliza FDA para estas declaraciones, siempre que tenga SAP kernel 7.49 o posterior y la versión de base de datos 10.5 FP7 o posterior en la versión de sistemas Unicode.

Uso de ABAP para todas las entradas

Una sentencia OPEN SQL con una cláusula FOR ALL ENTRIES representa un tipo de sentencia OPEN SQL que incluye tablas de bases de datos y tablas internas ABAP.

La forma básica de estas declaraciones es la siguiente:

SELECT <column list>
FROM < database tables>
FOR ALL ENTRIES IN @itab
WHERE < clause containing database table columns and itab columns>

Básicamente, este tipo de declaración implementa un JOIN entre una tabla de base de datos y la tabla interna itab de ABAP. Solo las filas distintas del conjunto de resultados se devuelven al programa ABAP. Dado que la tabla interna ABAP se encuentra en el servidor de aplicaciones de SAP, los valores de la columna de referencia de esta tabla deben transferirse al servidor de la base de datos.

Un ejemplo concreto:

DATA: db6    LIKE standard table of t100.
DATA: db6out LIKE standard table of t100.

DATA: start_time TYPE i,
end_time   TYPE i,
run_time   TYPE float.

SELECT * FROM t100 UP TO 100000 ROWS INTO TABLE db6 .

GET RUN TIME FIELD start_time.

SELECT * INTO TABLE db6out FROM t100
BYPASSING BUFFER
FOR ALL ENTRIES IN db6
WHERE sprsl = db6-sprsl
AND arbgb = db6-arbgb
AND msgnr = db6-msgnr.

GET RUN TIME FIELD end_time.
run_time = end_time – start_time .

WRITE : / run_time .

El programa de prueba selecciona 100.000 filas de la tabla de base de datos T100 en una tabla interna denominada db6. Después de esto, el programa une la tabla de la base de datos T100 con la tabla interna db6 utilizando la sentencia FOR ALL ENTRIES. Dado que la combinación utiliza las columnas de clave principal de la tabla T100, la instrucción FOR ALL ENTRISES devolverá 100 000 filas. El programa muestra el tiempo transcurrido utilizado por la sentencia FOR ALL ENTRISES.

Supongo que te gusta

Origin blog.csdn.net/i042416/article/details/124131342
Recomendado
Clasificación