#1
|
|||
|
|||
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!!! Úlima edición por andresf02 fecha: 26/01/10 a las 21:00:37. |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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. |
#4
|
|||
|
|||
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.
__________________
"Porque algunos sabemos que somos parte del problema"
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|