PDA

Ver la Versión Completa : select single + for all entries


Cabezademaceta
10/11/10, 11:39:58
Hola que tal? Quiero saber como es bien la sintaxis del select SINGLE (campo) y for all entries. Busque y siempre muestran con SELECT * + for all entries.

Yo quiero lo siguiente:

VTEXT (TPART-VTEXT)
quiero hacer un select single para el campo VTEXT con for all entries, hay gluna diferencia con SELECT *? o es casi lo mismo? gracias :)

VLozano
10/11/10, 12:59:51
No entiendo la pregunta. SELECT SINGLE devuelve sólo un registro, mientras que cuando uno usa FAEI se supone que quiere todos los registros de una tabla coincidentes con otra.

SI lo que quieres es que te devuelva sólo un registro para cada uno de la tabla original, FOR ALL ENTRIES lo hace por defecto (lleva un DISTINCT implícito).

Cabezademaceta
10/11/10, 20:01:51
Si, gracias, con el single no era necesario me parece ponerle eso, ya lo hice de otra forma, igual muchas gracias por la ayuda, y creo que me exprese mal.


EDIT: que quilombo que es el batch input cuando quiere, dios.

Dennis Urbano E.
15/11/10, 13:58:27
Segun pude entender lo que tu tienes es una tabla con codigos de Interlocutores o algun tipo de codigo y quieres actualizar el campo Denominación.

Si es eso lo que tu quieres hacer es actualizar esos campos con un

Select single VTEXT into tabla-vtext from tpart
for all entries in tabla
where PARVW = tabla-PARVW.

Bueno lo que pasa es que necesitas tener en claro los conceptos de select single y el for all entries

Select single -> Solo devuelve un valor o registro o el primero que encuentre ( No necesariamente significa que en la tabla consultada exista un solo registro con las condiciones utilizadas )

For all entries -> ( Para todas las entradas ) se usa para obtener datos que dependan de uno o mas campos de una tabla interna .. por ejemplo tienes en una tabla el listado de pedidos ( cabecera ) y quieres obtener las posiciones de cada pedido en otra tabla ( detalle ) haces lo siguiente

Select pedido posiciones from ekpo
for all entries in t_pedidos
where
ebeln = t_pedidos-ebeln.

Espero se haya entendido al menos algo xP!

Ahora para tu requerimiento puedes hacer esto:

1) En la consulta donde obtienes los códigos de Interlocutor realiza un Join a la tabla tpart y obtienes también la denominación.

Select a~codigo a~etc a~etc b~vtext from t_maestra as a (Tabla standar no se cual usas) left join tpart as b on a~campoCodigo = b~campoCodigo
where (tus Condiciones)

Te recomiendo que hagas eso .. pongo el left join porque no se si todos los códigos esten en la tabla tpart. Si estas seguro que están entonces puedes usar INNER JOIN.

2) Select codigo vtext from tpart
into table t_denominacion
for all entries in tu_tablainterna
where codigoTpart = tabla_interna-codigo.

luego un loop.
loop at tabla_interna assinging <fs>.
read table t_denominacion with key PARVW = tabla_interna-PARVW.
if sy-subrc = 0.
<fs>-vtext = t_denominacion-vtext.
endif.
endloop.

3) También puedes hacer el loop a la tabla interna y dentro un select single a la TPART con el codigo y actualizas el campo vtext ( NO RECOMENDABLE )

Ojala haya respondido y mas q todo se haya entendido lo que puse xD!

SUerte saludos