Ahora veremos que opciones tenemos para filtrar o delimitar los datos que deseamos recuperar, modificar o eliminar de nuestra base de datos, lo que veremos aquí puede ser utilizado con las sentencias DELETE, INSERT y SELECT.

Expresiones lógicas

Dentro de la clausula WHERE podemos hacer uso de las siguientes expresiones lógicas:

  • EQ: Equivale y se puede sustituir por el operador =
  • NE: Equivale y se puede sustituir por el operador <>
  • LT:  Equivale y se puede sustituir por el operador <
  • GT:  Equivale y se puede sustituir por el operador >
  • LE:  Equivale y se puede sustituir por el operador <=
  • GE:  Equivale y se puede sustituir por el operador >=
  • BETWEEN: Sirve para definir un rango por ejemplo WHERE MATNR BETWEEN varlo1 AND valor2
  • LIKE: Se usa para buscar por un patrón por ejemplo para buscar un material (matnr) que comience por 00 se usaría algo como esto: WHERE MATNR LIKE ‘00%’
  • IN: Se usa para buscar por medio de una lista de valores, por ejemplo: WHERE matnr in (‘0001’, ‘0002’, ‘0003’)

Trabajar con rangos

Cuando hacemos reportes creamos una pantalla para solicitar algunos parámetros, en ocasiones permitimos que puedan ingresar datos complejos como listas de valores, rangos, patrones como por ejemplo 00*  (todo lo que comience con 00), etc. Esto en SAP se conoce como rangos.

where-rangos

Utilizar estos rangos es extremadamente fácil y es una de las mejores ideas que tuvo el equipo de SAP. Para usar los rangos debemos haber declarado una pantalla de selección con un rango o haber declarado una variable de tipo rango, luego utilizamos la palabra IN dentro de la clausula WHERE, como en este ejemplo:

TABLES: mara.

SELECT-OPTIONS:
    pmatnr for mara-matnr.

data: it_mara like STANDARD TABLE OF mara WITH HEADER LINE.

"Para utilizar rangos se debe usar la palabra IN
select *
into TABLE it_mara
from mara
where matnr IN pmatnr.

"Solo para demostración vamos a imprimir los valores recuperados
LOOP AT it_mara.
  WRITE: / it_mara-matnr.
ENDLOOP.