#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
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 |
#3
|
|||
|
|||
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 ---
|
#4
|
||||
|
||||
El SELECT SINGLE no se puede ordenar, el SELECT ENDSELECT si.
__________________
------------------- ¿Dudas para descargar manuales? Ver este tema -> |
#5
|
|||
|
|||
Claro y contundente +1 |
#6
|
|||
|
|||
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 ---
|
#7
|
|||
|
|||
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. |
#8
|
|||
|
|||
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 ---
|
#9
|
|||
|
|||
Esta claro, una tabla sorted es mas eficiente a la hora de hacer busquedas. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|