#1
|
|||
|
|||
Problema con Consulta
Hola que tal.
Les comento q yo hago la siguiente consyulta, y me trae los datos correctos pero tarda demasiado alguien sabe como podria agilizarla? gracias!!! LOOP AT it_aux_bkpf INTO wa_aux_bkpf. SELECT belnr bukrs gjahr buzei lifnr dmbtr shkzg budat bldat FROM bsik APPENDING CORRESPONDING FIELDS OF TABLE it_bsik WHERE belnr = wa_aux_bkpf-belnr AND bukrs = p_bukrs AND gjahr = p_gjahr AND buzei = '1' AND lifnr IN s_lifnr AND hkont IN s_cuenta. IF sy-subrc <> 0. SELECT belnr bukrs gjahr buzei lifnr dmbtr shkzg budat bldat FROM bsak APPENDING CORRESPONDING FIELDS OF TABLE it_bsak WHERE belnr = wa_aux_bkpf-belnr AND bukrs = p_bukrs AND gjahr = p_gjahr AND buzei = '1' AND lifnr IN s_lifnr AND hkont IN s_cuenta. ENDIF. |
#2
|
||||
|
||||
claro, por cada iteración estas haciendo una llamada a la base de datos por eso tarda bastante, bueno lo que a mi se me ocurre es que primero saques todos tus datos de la base de datos y los metas a otra ti, ya despues ahora si loopeas y con un field symbol puedes ir metiendo tus datos de una ti a la otra a la que en realidad quieres, o también podrías utilizar un for all entries que creo que sería el más viable, bueno esa es una solución tal vez halla otra más óptima
__________________
"Si quieres resultados distintos, no hagas siempre lo mismo" .... Einstein |
#3
|
|||
|
|||
Si lo pense con un For all entries, pero tengo dudas...
Xq yo lo q tengo q hacer es: Preguntar por cada Belnr q saco de BKPF si aparece en la BSIK y si no esta buscarlo en la BSAK Gracias por responder! |
#4
|
|||
|
|||
Mejora de Performance
Hola Schrizophrenia,
de hecho que tu consulta demora por la cantidad de conexiones que tienes a la BD, yo te recomiento lo siguiente: 1. Realiza un SELECT..FOR ALL ENTRIES a la tabla BSIK con los datos de la tabla it_aux_bkpf. 2.Realiza un SELECT..FOR ALL ENTRIES a la tabla BSAK con los datos de la tabla it_aux_bkpf. 3. Loopea la tabla it_aux_bkpf y por cada vuelta realiza READ TABLE a las tablas que obtuviste del punto 1 y punto 2. Con ello habras realizado solo 2 conexion a la BD en lugar de realizar una por cada registro dentro de la TI. Espero haberte ayudado. Saludos, Erick Oré. |
#5
|
|||
|
|||
Hola,
¿accedes a la BSIK, BSAK con el select-option "s_lifnr" relleno? En caso de que esté vacio o que tenga un rango de valores muy grande quizá deberías plantearte ir a la tabla BSEG Saludos. |
#6
|
|||
|
|||
1ero gracias por responder,
2do, pense hacerlo con la Bseg pero el funcional me dijo q no, Yo solo obedezco! jajajaj Gracias! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|