MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   codigo ejemplo para unir dos tablas cabecera y detalles de un ALV (foro/showthread.php?t=14997)

jeanficetola 16/07/08 13:50:16

codigo ejemplo para unir dos tablas cabecera y detalles de un ALV
 
Buenos Dias,

alguien tendra un ejemplo de un codigo unir la tabla cabecera y detalleen una sola estructura.

gracias

Jonathan Barrio Rodriguez 16/07/08 16:14:34

ok, ok, una vez nos lo pidieron y no encontré la solución.

El caso es que sí que pasa por ejemplo en la Transaccion de libro diario (no me acuerdo del código de transaccion ahora mismo), despues de pintarlo por
pantalla, puedes exportarlo a excell... y exporta dos tablas internas... intenté debugearlo pero fué casi imposible... aunque realmente creo que acbe viendo que lo metía todo en una tabla con un solo campo de 300 caracteres...

El tema es interesante. A ver si alguien sabe algo.

Jonathan Barrio Rodriguez 16/07/08 16:22:01

La Transaccio Del Libro Diario Es S_alr_87012287

sconoredhot 16/07/08 18:40:08

Tienes que usar un ALV en bloques.

Jonathan Barrio Rodriguez 17/07/08 07:32:43

Hola, sconoredhot,

Imagino que con lo del alv en bloques te refieres a un solo
alv que mediante alguna variante de la llamada a la función o
al catálogo le indicas más de una tabla.

Podrías indicarnoslo, por favor.

Gracias y un saludo.

bisonye 17/07/08 08:48:12


Jo pues o estoy muy espeso o no entiendo la pregunta.
Si tienes una tabla cabecera y otra detalle y quieres sacarla en una sola estructura recorres la cabecera y recorres el detalle con la clave de la cabecera. Lo guardas en otra tabla y a correr.

Jonathan Barrio Rodriguez 17/07/08 10:35:00

Jeancifetola, ¿Podrías concretar cual es tu modificación?
Solo se me ocurre esto...

DATA: BEGIN OF INTAB_FINAL WITH HEADER LINE,
FILA(60) TYPE C.
DATA: END OF INTAB_FINAL.

DATA: INTAB_HEADER TYPE STANDARD TABLE OF TABDB_CABECERA,
INTAB_POSICION TYPE STANDARD TABLE OF TABDB_POSICIONES.

LOOP AT INTAB_HEADER.

CONCATENATE INTAB_HEADER-CAMPO1+0(longitud del campo1)
INTAB_HEADER-CAMPO2+longitud del campo1(longitud campo2) into INTAB_FINAL SEPARATED BY space.

APPEND INTAB_FINAL.

LOOP AT INTAB_POSICIONES WHERE CAMPO1 = INTAB_HEADER-CAMPO1.

CONCATENATE INTAB_POSICIONES-CAMPO1+0(longitud del campo1)
INTAB_POSICIONES-CAMPO2+longitud del campo1(longitud campo2) into INTAB_FINAL SEPARATED BY space.

APPEND INTAB_FINAL.

ENDLOOP. "INTAB_POSICIONES
ENDLOOP. "INTAB_HEADER

No sé si se entiend muy bien... Jeanficetola, pregunta en lo que tengas duda.

Seguramente ya habrías visto esta posibilidad y el inconveniente de después de no poder seleccionar campo... :( si quieres hacer un loop a la tabla final.

Bisonyé... el problema aquí creo, es que las tablas tienen diferente estructura...

ej.
header
Campo 1 (8 caracteres) Campo 2 (10 numéricos)
Posiction
cmapo1 (4 numéricos) campo2 (3 caracteres) campo 3 (2 caracteres)
cmapo1 (4 numéricos) campo2 (3 caracteres) campo 3 (2 caracteres)

Osea...

________ __________
|1234abcd|1234567890|
|1234|12a|ab|

Alguien sabe si se puede construir tablas internas con estructura diferente en sus filas...??

bisonye 17/07/08 10:44:09

Pero si es una estructura cabecera - posición deben tener algún campo que las relacione, aunque sea parte del campo.

Por ejemplo: Cabecera 12345abc - hhhhh
Linea 12345 -fff-hhh-jjj

Sería :

Si lo que decís es que las líneas no tengan la información de cabecera y vicecersa lo que se puede hacer es no rellenar los campos según corresponda.

Jonathan Barrio Rodriguez 17/07/08 11:12:16



***
jajaja, tienes toda la razón, se me pasó el pequeño detalle del ccampo clave.

Ok, el tema es que en una misma tabla... tiene que aparecer
Linea 1--> Todos los campos del registro nº1 de la BKPF .
linea 2--> posicion de Bseg de registro nº1 de la BKPF.
linea 3--> posicion de Bseg de registro nº1 de la BKPF.
Linea 4--> Todos los campos del registro nº2 de la BKPF .
linea 5--> posicion de Bseg de registro nº2 de la BKPF.
linea 6--> posicion de Bseg de registro nº2 de la BKPF.


Ýo entiendo que es así, ¿no, Jeanficetola?.

bisonye 17/07/08 11:17:16

Eso es tan sencillo como montar una tabla interna con todos los registros de las dos tablas (me parece una burrada pero si es lo que piden...) y hacer el loop que he comentado antes.

Sigo sin ver los inconvenientes ni el problema


Husos Horarios son GMT. La hora en este momento es 19:35:59.

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