MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Unir datos de 2 tablas internas en 1 sola TI (foro/showthread.php?t=34876)

andresf02 26/01/10 20:53:49

Unir datos de 2 tablas internas en 1 sola TI
 
Bunas ]Tardes.


Espero por favor me puedan ayudar.

He realizado un SELECT y FOR ALL ENTRIES para contruir un reporte que tra informacion relacionado de 2 tablas Z y me la deja en 2 tablas internas respectivamente.

Para mostrar la informacion por pantalla uso la sentencia WRITE:

---------------------------------------------------------------------
*---------------------- Select para zlibros ---------------------
SELECT signatura titulo editorial numero_autor
FROM zlibro
INTO TABLE it_infolibro
WHERE signatura IN pa_sign AND
titulo IN pa_tit AND editorial IN pa_edit.

IF sy-subrc EQ 0.
cantidad = sy-dbcnt.
WRITE: 'La cantidad de registros obtenidos de Libros es: ',cantidad.
SKIP.

it_infolibro_aux[] = it_infolibro[].
SORT it_infolibro_aux BY signatura.


*---------------------- Select para zautor ---------------------
SELECT numero_autor nombre apellidos
FROM zautor
INTO TABLE it_infoautor
FOR ALL ENTRIES IN it_infolibro_aux
WHERE numero_autor = it_infolibro_aux-numero_au
AND numero_autor IN pa_codau.

*----------------- Guardando Seleccion de Datos ------------------
LOOP AT it_infolibro_aux INTO wa_infolibro.

IF sy-subrc EQ 0.
READ TABLE it_infoautor INTO wa_infoautor
WITH KEY numero_au = wa_infolibro-numero_au.

IF sy-subrc EQ 0.

WRITE:/ wa_infolibro-signatura COLOR COL_KEY,
wa_infolibro-titulo COLOR COL_NORMAL,
wa_infolibro-editorial COLOR COL_NORMAL,
wa_infoautor-autor_nom COLOR COL_NORMAL,
wa_infoautor-autor_ape COLOR COL_NORMAL.

* Hide para guardar en memoria el dato singnatura cuando el
* usuario haga click en una linea del reporte.
HIDE wa_infolibro-signatura.

ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
-----------------------------------------------------------------------


El problema es que ahora deseo utilizar una ALV GRID para desplegar por pantalla esa misma informacion pero dicha informacion la tengo en 2 tablas internas por separado (it_infolibro_aux , it_infoautor) relacionados por un campo.

Por favor me explican como poder juntar la informacion relacionada en las tablas internas it_infolibro_aux y it_infoautor en una nueva tabla interna it_total para pasarsela a la ALV y que me salga por pantalla.


Muchas Gracias!!!

zonanet 26/01/10 21:18:34

En este loop puedes guardar la información...


o bien


La segunda opción es si los campos de tus tablas internas de origen coinciden con los los nombres de tu tabla destino.
Saludos.

andresf02 26/01/10 22:07:59

zonanet, mil gracias, me funciono perfecto!!!

Apenas estoy aprendiendo y cada cosa nueva se la estoy agregando a un super reporte. Emepzo con una consulta simple y ya con tu ayuda puedo comensar a usar en el ALV.

Gracias de nuevo.

VLozano 27/01/10 06:15:47

Para tablas Z que seguramente tienen pocos registros, intenta utilizar JOINs. Al principio cuestan un poco de leer para el neófito, pero con el tiempo las ves igual que cualquier SQL.

El problema (largamente discutido en otras partes) es aprender cuándo usar JOINs, cuándo FOR ALL ENTRIES y cuándo LOOPs (en serio, a veces sale a cuenta el LOOP-SELECT SINGLE).

Lo tuyo sería (más o menos):
Si conservas tu código original (lo que NO es mala cosa), yo lo afinaría un poco metiéndole la condicion de pa_codau en la primera SQL, a no ser que necesites bajarte todos los libros y sólo los datos de algunos autores.


Husos Horarios son GMT. La hora en este momento es 17:43:34.

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