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 23/10/07, 15:25:31
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Problema con Inner Join

Hola a todos,

Tengo un pequeño problema con un trocillo de código. Hago un select en el que a través de mi tabla interna it_afko (llena de ordenes de fabricacion) voy a buscar a la tabla RESB los materiales asociados a esa orden de fabricacion. El problema es que se tira 1 minuto para ejecutar éste codigo:

LOOP AT IT_AFKO.
SELECT MATNR
FROM RESB
INTO CORRESPONDING FIELDS OF TABLE IT_RESB_TMP
WHERE AUFNR = IT_AFKO-AUFNR.
LOOP AT IT_RESB_TMP.
MOVE-CORRESPONDING IT_RESB_TMP TO IT_RESB.
IT_RESB-IDNRK = IT_AFKO-IDNRK.
APPEND IT_RESB.
ENDLOOP.
ENDLOOP.

Me podría funcionar un INNER JOIN?? No tengo ni idea de que va ni como és la sintaxis. Alguien me podria echar una mano?

Os lo agradecería mucho!

Grácias!
Responder Con Cita
  #2  
Viejo 23/10/07, 16:20:00
Avatar de crounly
crounly crounly is offline
Senior Member
 
Fecha de Ingreso: nov 2006
Localización: Zaragoza, España
Mensajes: 227
EL inner join permite emparajear filas de dos o mas tablas sobre una busqueda, para cada una de las filas de una tabla busca las correspondientes filas que cumplan la condicion indicada en la otra tabla

DATA: BEGIN OF it_join OCCURS 0,
matnr LIKE mara-mantr,
maktx LIKE makt.maktx,
END OF it_join.


SELECT *
INTO CORRESPONDING FIELD OF TABLE it_join
FROM mara AS z
INNER JOIN makt AS t
ON mara-matnr EQ makt-matnr
AND makt-SPRAS EQ 'ES'
WHERE z~matnr IN p_matnr.

Esto seleccionaria todas las entradas de la mara que cumplan la condicion y para cada una de ellas buscaria aquella que cumple la condicion especificada en el INNER JOIN en la makt

AL final en it_join tendriamos el cod de materil, y su texto para español
Responder Con Cita
  #3  
Viejo 24/10/07, 07:44:19
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Entonces...que seria as eficiente??

Entonces en el caso de mi ejemplo..el de mas arriba...con la tabla de OF's...que seria lo mas indicado hacer? Porque con un inner join solo puedo trabajar con tablas de base de datos no??? El FOR ALL ENTRIES me serviria??
Responder Con Cita
  #4  
Viejo 24/10/07, 13:47:40
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Unhappy Ayuda por favor!

He intentado optimizar mi código pero no consigo mejorar nada. El trozo de código que me da problemas és el siguiente:

LOOP AT IT_AFKO.
SELECT MATNR
FROM RESB
INTO CORRESPONDING FIELDS OF TABLE IT_RESB_TMP
WHERE AUFNR = IT_AFKO-AUFNR.
LOOP AT IT_RESB_TMP.
MOVE-CORRESPONDING IT_RESB_TMP TO IT_RESB.
IT_RESB-IDNRK = IT_AFKO-IDNRK.
APPEND IT_RESB.
ENDLOOP.
ENDLOOP.

Como veis necesito traer todos los materiales de cada una de las OF's que hay en mi tabla interna it_afko. Podria hacer un select for all entries pero si os habeis fijado, arrastro todo el rato un campo de dumero de material (IDNRK) que si hago el for all entries no puedo reutilizar. Tan mal esta este código???

Os aseguro que se tira como 30 o 40 segundos. :-(
Responder Con Cita
  #5  
Viejo 24/10/07, 16:46:49
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
SELECT MATNR
FROM RESB
INTO CORRESPONDING FIELDS OF TABLE IT_RESB_tmp
for all entries in it_afko
WHERE AUFNR = IT_AFKO-AUFNR.

LOOP AT IT_RESB_TMP.
MOVE-CORRESPONDING IT_RESB_TMP TO IT_RESB.
read table it_afko with key ...
IT_RESB-IDNRK = IT_AFKO-IDNRK.
APPEND IT_RESB.
ENDLOOP.
Responder Con Cita
  #6  
Viejo 26/10/07, 10:38:47
Avatar de Driau
Driau Driau is offline
Senior Member
 
Fecha de Ingreso: ago 2007
Mensajes: 235
Wink Gracias por el código!!

No havia pensado en eso. De hecho si pensé en el FOR ALL ENTRIES el problema es que no sabia como pasar el campo IDNRK. Pero con ésto..me ha ido muy bien. La velocidad de procesado ha mejorado muchísimo!!

Muchas grácias!!
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 15:21:04.


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