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 23/05/12, 07:25:27
budista1 budista1 is offline
Senior Member
 
Fecha de Ingreso: sep 2010
Mensajes: 154
Red face Select * From Up To 1 Rows

Hola Foro,

qué diferencia hay entre un select single y un
SELECT * FROM UP TO 1 ROWS?

esta sentencia, ser un select end select me parece obsoleta,
cómo la puedo actualizar?
SELECT * FROM VAKPA UP TO 1 ROWS
WHERE KUNDE = T_CU-KUNNR
AND PARVW = 'AG'
AND AUART = 'PVA'
AND VKORG = T_CU-VKORG
AND VTWEG = T_CU-VTWEG
AND SPART = T_CU-SPART
ORDER BY VBELN DESCENDING.
ENDSELECT.

MUCHAS GRACIAS
Responder Con Cita
  #2  
Viejo 23/05/12, 12:44:00
Avatar de kibo
kibo kibo is offline
Senior Member
 
Fecha de Ingreso: may 2011
Localización: Quilmes - Argentina
Mensajes: 177
SELECT * FROM VAKPA UP TO 1 ROWS
into table it_vakpa
WHERE KUNDE = T_CU-KUNNR
AND PARVW = 'AG'
AND AUART = 'PVA'
AND VKORG = T_CU-VKORG
AND VTWEG = T_CU-VTWEG
AND SPART = T_CU-SPART
ORDER BY VBELN DESCENDING.

read table it_vakpa into wa_vakpa index 1.




Esa sentencia intenta guardar la registro del vbeln mas alto (por eso lo ordena) usa el endselect porque si bien vos vos solo buscas 1 registro, la sentencia te obliga a guardarlo en una tabla interna...


De esta manera que te digo yo, tendrias en wa_vakpa el dato que estas buscando
Responder Con Cita
  #3  
Viejo 29/05/12, 12:07:26
txuski84 txuski84 is offline
Junior Member
 
Fecha de Ingreso: dic 2010
Mensajes: 22
El "SELECT SINGLE" sirve para hacer una consulta cuando tienes los campos claves, de tal forma que te devolverá solo un registro. Esté registro podrás guardarlo en una estructura, o si por el contrario deseas solo un campo, podrás coger el campo deseado y guardarlo en una variable.

El "UP TO 1 ROWS" se utiliza cuando haces una consulta pero no accedes con toda la clave, con lo que dicha consulta te devolverá varios registros o lineas. Si de todas estas lineas recogidas solo te interesa la 1º, utilizarás esta sentencia. Por ejemplo si quieres recoger las 5 primeras lineas, pondrás UP TO 5 ROWS,...


Espero haberte aclarado un poco más.
__________________
--- Analista Programador ABAP IV ---
Responder Con Cita
  #4  
Viejo 29/05/12, 13:41:49
Avatar de DCErick
DCErick DCErick is offline
Moderator
 
Fecha de Ingreso: mar 2006
Localización: Monterrey
Mensajes: 1,090
El SELECT SINGLE no se puede ordenar, el SELECT ENDSELECT si.
__________________
-------------------
¿Dudas para descargar manuales? Ver este tema ->
Responder Con Cita
  #5  
Viejo 29/05/12, 20:11:54
Siem Siem is offline
Member
 
Fecha de Ingreso: jul 2009
Mensajes: 33

Claro y contundente +1
Responder Con Cita
  #6  
Viejo 29/05/12, 20:20:38
txuski84 txuski84 is offline
Junior Member
 
Fecha de Ingreso: dic 2010
Mensajes: 22
Según el Best practice hay que evitar en la medida de lo posible utilizar el Select ... EndSelect, ya que es peor.
__________________
--- Analista Programador ABAP IV ---
Responder Con Cita
  #7  
Viejo 29/05/12, 22:35:45
Siem Siem is offline
Member
 
Fecha de Ingreso: jul 2009
Mensajes: 33

Hay que evitarlo porque tienes la base de datos abierta mientras dure el bucle, pero aqui solo te traes un registro y cierras. Otra cosa es que no sea aconsejable hacer el order by, porque haces trabajar a la base de datos, y eso si que lo puedes cambiar por un sort a tu tabla interna, pero entonces te tienes que traer todos los registros que cumplan tu condicion, lo que conlleva gasto de ancho de banda. Cada cosa tiene sus pros y sus contras. Y para gustos los colores.

Espero que te haya servido de algo mi aclaración. Yo he visto las dos tecnicas en la misma empresa.
Responder Con Cita
  #8  
Viejo 30/05/12, 07:11:22
txuski84 txuski84 is offline
Junior Member
 
Fecha de Ingreso: dic 2010
Mensajes: 22


Totalmente de acuerdo con todo

Espero no irme por las ramas... pero para lo que comentas de que no es aconsejable hacer un ORDER BY y es mejor un SORT de la tabla interna... creo que es aun mejor que la tabla interna sea SORTED, te ahorras el ordenarla y al hacer la consulta se ordena automáticamente.
__________________
--- Analista Programador ABAP IV ---
Responder Con Cita
  #9  
Viejo 30/05/12, 17:56:52
Siem Siem is offline
Member
 
Fecha de Ingreso: jul 2009
Mensajes: 33

Esta claro, una tabla sorted es mas eficiente a la hora de hacer busquedas.
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 19:14:29.


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