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 22/11/10, 08:57:29
juanki juanki is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 2
left partout

Buenas, soy nuevo en ABAP y mi pregunta es la siguiente:
Quiero sacar información de las tablas EBAN, EBKN, EKPO Y EKBE. La idea es sacar todas las solicitudes de pedido en un rango de dos fechas (que meta el usuario). A partir de ahí quiero saber la imputación, si tienen pedido o no (saldría los datos de la ekpo en blanco) y todos los registros del historial de pedido. Intento hacer un inner join entre EBAN y EBKN y luego dos left partout contra la ekpo y la ekbe pero el sistema no me deja. En cualquier caso he hecho las dos primeras uniones con las tablas EBAN, EBKN y EKPO y lo he metido en una tabla interna. ¿Cuál sería la mejor manera de unir esta tabla interna contra la EKBE para otener una tabla con todos los registros que necesito?, ¿Por qué no deja hacer más de un left outer join?.
Responder Con Cita
  #2  
Viejo 22/11/10, 13:54:05
agv1976 agv1976 is offline
Member
 
Fecha de Ingreso: jun 2006
Mensajes: 66
No entiendo muy bien tu pregunta, yo haria un inner-join entre la ekpo-ekko, con esa tabla interna procesaria mis datos, cargaria las otras tablas internas de las que quiero obtener informacion, por ej.

Inner-Join ekpo-ekko, cargo en mi tabla interna it_tabla,

Cargos tablas internas, imputaciones, datos del pedido, las que sean

Loop at it_tabla.

Dentro de este loop, hago read table a las otras tablas internas,

Cargo esta informacion en la principal, it_princ,

Endloop.

No se si me explique bien, si tienes dudsa me dices
Responder Con Cita
  #3  
Viejo 23/11/10, 14:53:16
juanki juanki is offline
Junior Member
 
Fecha de Ingreso: abr 2006
Mensajes: 2
Gracias agv1976.
Ya he creado las dos tablas internas, una con datos de EBAN, EBKN y EKPO y ok, la segunda con datos de historial de pedido EKBE y ok. La idea es hacer un partout entre las dos tablas internas (que no se puede hacer) y para ello intento hacer lo que me comentabas ayer pero evidentemente algo no hago bien. Ahí va el código:
SORT ITAB_EBAN BY EBELN EBELP.
SORT ITAB_EKBE BY EBELN EBELP.

LOOP AT ITAB_EBAN.
MOVE ITAB_EBAN-EBELN TO ZEBELN.
MOVE ITAB_EBAN-EBELP TO ZEBELP.

IF SY-SUBRC = 0.

LOOP AT ITAB_EKBE where EBELN = ZEBELN AND
EBELP = ZEBELP.
MOVE-CORRESPONDING: ITAB_EBAN TO ITAB_TOTAL,
ITAB_EKBE TO ITAB_TOTAL.
APPEND ITAB_TOTAL.

ENDLOOP.
ELSE.
MOVE-CORRESPONDING: ITAB_EBAN TO ITAB_TOTAL.
APPEND ITAB_TOTAL.
ENDIF.

ENDLOOP.
Nunca se mete por el segundo loop. Entiendo que algo estoy haciendo mal. Necesito ayuda urgente por favor.
Gracias
Responder Con Cita
  #4  
Viejo 24/11/10, 05:42:01
jtristan jtristan is offline
Senior Member
 
Fecha de Ingreso: oct 2007
Mensajes: 240
Si ya tienes la tabla interna, y sólo te queda unirla con la de histórico, podrías hacer un for all entries in.

Si nunca está entrando en el segundo loop, es que la tabla ITAB_EBAN no tiene el pedido y la posición. Podrías debuggear y comprobar los valores de esta tabla. En cualquier caso, no haría un sy-subrc, comprobaría directamente que los dos campos tengan valores
if ZEBELN is not initial and ZEBELP is not initial.

Ya nos contarás.
Un saludo.
Responder Con Cita
  #5  
Viejo 24/11/10, 08:57:03
agv1976 agv1976 is offline
Member
 
Fecha de Ingreso: jun 2006
Mensajes: 66
No puedes poner un loop y dentro un IF, haz como te dije inner-join ekko-ekpo, cargas las otras tablas, pero solo utiliza un loop, el for all entries como te comenta el compañero es muy util, si no sabes utilizarlo me dices
Responder Con Cita
  #6  
Viejo 24/11/10, 10:10:23
jtristan jtristan is offline
Senior Member
 
Fecha de Ingreso: oct 2007
Mensajes: 240
Hola agv1976,

no entiendo el porqué no puede poner un loop dentro de un if. El código de ejemplo lo veo válido, lo único sería saber qué es lo que tiene la tabla del primer loop para que nunca entre en la condición del if.

Un saludo.
Responder Con Cita
  #7  
Viejo 26/11/10, 08:40:26
agv1976 agv1976 is offline
Member
 
Fecha de Ingreso: jun 2006
Mensajes: 66
Hombre como poner se puede poner, como un select endselect, pero no lo veo muy operativo eso, ese codigo es un poco ilegible, yo en cinco años que llevo en sap nunca utilice eso y me fue bien, si bien esta, pero la forma que le dije de hacerlo es mucho mejor, pero ya te digo cada maestrillo tiene su librillo
Responder Con Cita
  #8  
Viejo 26/11/10, 11:54:09
jtristan jtristan is offline
Senior Member
 
Fecha de Ingreso: oct 2007
Mensajes: 240
agv1976, ok, te había entendido que igual había algún problema de sintaxis que lo impidiese hacer.
Si, está claro que es mejor traer los datos ya procesados a nivel de b.d. que tener que tratarlos en el código, siempre que se pueda.

Un saludo.
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 08:13:01.


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