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 24/03/09, 08:53:05
brujibu brujibu is offline
Junior Member
 
Fecha de Ingreso: nov 2008
Mensajes: 5
Smile tablas internas

Tengo un problema quiero hacer un select a dos campo de un atabla y otra select a otros dos campos de otra tabla fisica, y luego introducir todos los datos en una tabla interna. como hago despues de haber sacado los datos de cada tabla en 2 tablas internas, introducirlos en una tabla interna para sacarlos por la Alv.

Gracias.
Responder Con Cita
  #2  
Viejo 24/03/09, 09:56:54
gugutin gugutin is offline
Member
 
Fecha de Ingreso: jul 2008
Localización: Badalona(Barcelona) España
Mensajes: 71

Hola brujibu,

Yo supongo que lo que necesitas es esto haces un inner join si es posible de las dos tablas y defines tu tabla interna con los campos que necesitas, ahi va un ejemplo de inner join pos si lo necesitas.

select a~bukrs a~kunnr a~gjahr a~blart a~budat a~belnr a~xblnr a~gsber
into corresponding fields of table it_bsid
from ( bsid as a
inner join bsad as b
on a~bukrs = b~bukrs
and a~gjahr = b~gjahr )
where a~bukrs = p_bukrs
and a~gjahr = p_gjahr.

Aqui la IT_BSID es tu tabla interna.

Saludos
Responder Con Cita
  #3  
Viejo 26/03/09, 12:22:39
brujibu brujibu is offline
Junior Member
 
Fecha de Ingreso: nov 2008
Mensajes: 5
Gracias pero para lo qu eyo lo necesito no puedo utilizar inner join como podria hacerlo?

gracias
Responder Con Cita
  #4  
Viejo 26/03/09, 13:10:45
Bmamba Bmamba is offline
Member
 
Fecha de Ingreso: jun 2008
Mensajes: 91

Yo creo que te vale con hacer el segundo select poniendo APPENDING CORRESPONDING FIELDS OF TABLE tutablainterna.

Me explico mejor: El primer select que realices un select.. into corresponding fields of table tutablainterna y el segundo como te dije más arriba.

Saludos

Úlima edición por Bmamba fecha: 26/03/09 a las 13:24:42.
Responder Con Cita
  #5  
Viejo 26/03/09, 15:31:27
Avatar de jacmono
jacmono jacmono is offline
Member
 
Fecha de Ingreso: jun 2006
Localización: Monterrey, Nuevo Leon, Mexico
Mensajes: 48
Creo que ayudaría mucho si clarificas tu pregunta.

Tienes un caso como este?:
Tabla1 => Campo1, Campo2
Tabla2 => Campo3, Campo4
TablaResultado=> Campo1, Campo2, Campo3, Campo4

ó de esta otra forma??:
Tabla1 => Campo1, Campo2
Tabla2 => Campo1, Campo2
TablaResultado=> Campo1, Campo2

Ambos requieren aproximaciones diferentes.
Para el primer caso tendrías que buscar las llaves comunes y obtener los campos correspondientes. La mejor forma es con el uso de inner-join.
Para el segundo caso, simplemente con APPENDING CORRESPONDING FIELDS OF TABLE tabla1 y luego repites con tabla2.
De ahí puede haber mas complejidades, como no aceptar valores repetidos, nulos, etcétera.

Si ninguno de los casos aplica, entonces proporciona mas información y recibirás una respuesta mas útil.

Saludos.
__________________
Jack of all Trades
Responder Con Cita
  #6  
Viejo 27/03/09, 06:50:30
brujibu brujibu is offline
Junior Member
 
Fecha de Ingreso: nov 2008
Mensajes: 5
Quiero el primer caso pero no con inner join como lo puedo hacer?

Tienes un caso como este?:
Tabla1 => Campo1, Campo2
Tabla2 => Campo3, Campo4
TablaResultado=> Campo1, Campo2, Campo3, Campo4

gracias.
Responder Con Cita
  #7  
Viejo 27/03/09, 07:09:24
gugutin gugutin is offline
Member
 
Fecha de Ingreso: jul 2008
Localización: Badalona(Barcelona) España
Mensajes: 71

Bueno compañero,

Dado tu requerimiento, lo facil sera que en tus tablas internas guardes campos comunes que te sirvan para relacionarlas entre si, luego haces un loop a la primera y un read table with ( campocomun ) a la segunda TI, despues lo cargas todo en tu tabla de salida para el alv.

Esto sera mas tedioso y segun el volumen de datos bastante mas lento, pero entiendo que es lo que requieres.

Saludos y espero haberte ayudado.
Responder Con Cita
  #8  
Viejo 27/03/09, 07:10:20
bisonye bisonye is offline
Senior Member
 
Fecha de Ingreso: ago 2006
Mensajes: 635
Tienes que tener campos que relacionen las dos tablas. La mejor opción es la que comenta Bmamba. Recuperas los datos de la primera tabla y haces el select a la segunda con un for all entries.

Para eso necesitas saber que campos relacionan las dos tablas.

Por cierto, si diese más detalles sería más fácil dar con la solución. En lugar de un post parece un acertijo.

Saludos
Responder Con Cita
  #9  
Viejo 27/03/09, 13:00:28
Tonnyman Tonnyman is offline
Member
 
Fecha de Ingreso: dic 2006
Mensajes: 53
Creo que lo que necesitas seria algo como esto:

TYPES: BEGIN OF t_table,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
vbeln TYPE vbak-vbeln,
vbtyp TYPE vbak-vbtyp,
index TYPE i,
END OF t_table,

BEGIN OF t_vbak,
vbeln TYPE vbak-vbeln,
vbtyp TYPE vbak-vbtyp,
index TYPE i,
END OF t_vbak.

DATA: gwa_vbak TYPE t_vbak,
gi_table TYPE TABLE OF t_table,
gi_vbak TYPE TABLE OF t_vbak,
gv_count TYPE i.

FIELD-SYMBOLS: <fs_table> TYPE t_table,
<fs_vbak> TYPE t_vbak.

SELECT belnr gjahr
INTO TABLE gi_table
FROM bkpf.

LOOP AT gi_table ASSIGNING <fs_table>.
add 1 to gv_count.
<fs_table>-index = gv_count.
ENDLOOP.

CLEAR gv_count.

SELECT vbeln vbtyp
INTO TABLE gi_vbak
FROM vbak.

LOOP AT gi_vbak ASSIGNING <fs_vbak>.
add 1 to gv_count.
<fs_vbak>-index = gv_count.
ENDLOOP.

sort gi_table by index.
SORT gi_vbak by index.

LOOP AT gi_table ASSIGNING <fs_table>.
READ TABLE gi_vbak WITH KEY index = <fs_table>-index INTO gwa_vbak.
IF sy-subrc = 0.
<fs_table>-vbeln = gwa_vbak-vbeln.
<fs_table>-vbtyp = gwa_vbak-vbtyp.
ENDIF.
ENDLOOP.

Pero, me parece que para ello necesitarias tener la certeza de que en ambas tablas internas tengas la misma cantidad de registro.

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 21:51:43.


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