MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 22/01/09, 16:26:38
acontreras acontreras is offline
Junior Member
 
Fecha de Ingreso: oct 2008
Mensajes: 16
mejorar performance

Hola:

Miren tengo el siguiente codigo:

SELECT ebeln INTO CORRESPONDING FIELDS OF TABLE t_ekko
FROM ekko
WHERE ebeln IN ebeln
AND kdatb IN s_kdatb
AND kdate IN s_kdate .

SELECT banfn bnfpo INTO CORRESPONDING FIELDS OF TABLE t_ekpo
FROM ekpo
FOR ALL ENTRIES IN t_ekko
WHERE ebeln EQ t_ekko-ebeln .

select konnr frgkz banfn ebeln ebelp frgdt bnfpo bsart frggr fixkz
badat bedat lfdat werks ekorg matkl ernam menge meins matnr
txz01 lgort knttp ebakz loekz ekgrp preis peinh waers bsmng
into corresponding fields of table i_eban
from eban
for all entries in t_ekpo
where banfn eq t_ekpo-banfn
and bnfpo eq t_ekpo-bnfpo
and banfn in banfn
and werks in werks
and bsart in bsart
and badat in badat
and ekgrp in ekgrp
and ebeln in ebeln
and bedat in bedat
and konnr in konnr.

y me pidieron optimizarlo utilizando inner join, y me quedó algo así:

SELECT * INTO CORRESPONDING FIELDS OF TABLE i_eban
FROM ekko as A
JOIN ekpo as B ON A~ebeln = B~ebeln
JOIN eban as C ON B~banfn = C~banfn and B~bnfpo = C~bnfpo
WHERE A~ebeln IN ebeln
AND A~kdatb IN s_kdatb
AND A~kdate IN s_kdate
AND C~banfn IN banfn
AND C~werks IN werks
AND C~bsart IN bsart
AND C~badat IN badat
AND C~ekgrp IN ekgrp
AND C~ebeln IN ebeln
AND C~bedat IN bedat
AND C~konnr IN konnr
.

la cosa es que al ejecutarlo no me devuelve los mismos datos, algo estoy haciendo mal en el join, por eso solicito su ayuda.

pd: ya habia escrito antes de este tema pero en la empresa quedo parado, ahora lo volvieron a retomar. ayudenme porfa llevo super poco en abap.
gracias y saludos
Responder Con Cita
  #2  
Viejo 22/01/09, 19:07:46
Avatar de mysmb2
mysmb2 mysmb2 is offline
Senior Member
 
Fecha de Ingreso: ene 2007
Localización: Cordoba
Mensajes: 406
hola,
fijate que con los FOR ALL ENTRIES podes estar trayendo registros duplicados.
otra cosa ya que lo que tenes que hacer es mejorar la performace no te conviene hacer INTO CORRESPONDING FIELDS OF TABLE solamente INTO TABLE pero acordate de que la tabla interna tenga la misma estructura y orden que los campos que recuperas del select.


Saludos
Responder Con Cita
  #3  
Viejo 23/01/09, 15:16:59
marianoa marianoa is offline
Member
 
Fecha de Ingreso: jun 2007
Mensajes: 77
siempre antes de hacer un for all entries te tenes uqe fijar que la tabla interna esa tenga datos, si no eso no influye como condicion y trae todos los datos.
Responder Con Cita
  #4  
Viejo 23/01/09, 18:45:30
mystic_soul mystic_soul is offline
Member
 
Fecha de Ingreso: sep 2007
Mensajes: 76
Para mi, me parece que todo en un join no va a ser de lo mas performante que digamos, porque estas trabajando con tablas que son pesadas, como la EKPO y la EBAN.. Yo te diria que hagas esto: un join con las tablas EKKO y EKPO, y un select con la tabla resultante del join y la tabla EBAN.. no se si se entiende :S

Por otro lado, fijate esto:
* el corresponding fields en un select no es performante (ya lo dijeron)
* fijate en las condiciones del where, ponerlos ordenados y por clave es un beneficio
* Anda comparando los tiempos y te vas a dar cuenta cuan es performante!

Espero que te pueda ayudar
Saludos!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 18:43:27.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web