MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   FOR ALL ENTRIES - Trae campos vacios (foro/showthread.php?t=37025)

andresf02 28/05/10 18:15:36

FOR ALL ENTRIES - Trae campos vacios
 
Buenas Tardes.

Estoy haciendo un select a una tabla con gran cantidad de informacion "AUSP".

El campo ATWRT, esta vacio para algunos registros en la tabla AUSP por lo tanto el FOR ALL ENTRIES no me toma en cuenta todo el registro dejandolo por fuera de la seleccion.

Existe alguna forma de poder traer los campos vacios usando el for all entries??

No se, alguna forma de darle al campo un valor diferente a null solamente mientras se esta ejecutando el select?


SELECT objek atinn mafid klart atwrt atflv
FROM ausp
INTO TABLE it_ausp
FOR ALL ENTRIES IN it_ausp_aux
WHERE objek = it_ausp_aux-objek.


Agradeceria cualquier ayuda ya que como esta tabla es tan grande no quisiera hacer un JOIN.

Alfredosite 28/05/10 19:53:19


Si no quieres traer vacios no seria que pongas en tu WHERE que solo vengan los no vacios?
Es decir seguramente tu tabla it_ausp_aux esta teniendo llaves OBJEK vacias y por eso tu tabla it_ausp trae campos vacios.

Te recomendaria que ordenes tu tabla it_ausp_aux y elimines los que tienen el campo OBJEK vacios.
SORT it_ausp_aux BY objek.
DELETE it_ausp_aux WHERE objek EQ SPACE.


Y luego de ello recien hacer el select y además poner en el where que solo te devuelvan los registros de la tabla AUSP que tengan valor en el campo ATWRT. Además debes validar que la tabla it_ausp_aux nunca este vacía por cuestiones de perfomance en tu código.
IF it_ausp_aux[] IS NOT INITIAL.
SELECT objek atinn mafid klart atwrt atflv
FROM ausp
INTO TABLE it_ausp
FOR ALL ENTRIES IN it_ausp_aux
WHERE objek = it_ausp_aux-objek AND
atwrt NE space.

ENDIF.
Espero eso sea su problema,

Saludos,

Mauricio Hidalgo 28/05/10 19:59:42

Recordar o tener en cuenta que al usar FOR ALL ENTRIES del resultado final de la consulta se excluyen todas las filas duplicadas.

andresf02 28/05/10 20:00:56

Gracias por responder,

Pero mi problema es el contrario. Necesito que el SELECT me incluya los registros asi no tengan valor en el campo ATWRT, es decir, si tengo la tabla interna asi:

OBJEK|ATWRT
10001|valor1
10002|valor2


y el siguiente registro a leer es:

10003|NULL



Quiero que igual, se inserte en la tabla interna sin importar que el campo ATWRT sea NULL

Alfredosite 28/05/10 20:42:26

Puedes probar:

IF it_ausp_aux[] IS NOT INITIAL.
SELECT objek atinn mafid klart atwrt atflv
FROM ausp
INTO TABLE it_ausp
FOR ALL ENTRIES IN it_ausp_aux
WHERE objek = it_ausp_aux-objek AND
( atwrt IS NULL OR atwrt IS NOT NULL ).
ENDIF.

No se si te sirva,

andresf02 28/05/10 20:49:25

hola,

ya habia probado el ATWRT is null or ATWRT pero no funciona.
Me va tocar resignarme y cambiar todo a LEFT OUTER JOIN :(

mysmb2 31/05/10 12:20:05

buenas,
podes hacer 2 select a la tabla ausp
una con el for all entries
y el otro con la condicion que necesitas solo que en vez de INTO TABLE haces APPENDING TABLE a la tabla interna.

melerogalan 31/05/10 12:22:32

No entendo muy bien lo que buscas, pero con este SELECT traes los registros definidos con el campo objeck y los del campo atwrt vacio.



Husos Horarios son GMT. La hora en este momento es 22:37:06.

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