Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mayo 4 de 2006,
Mayo 4, 2006
Montevideo - Uruguay
Introduccin
En este tutorial vamos a explicar brevemente que son los SETS, que utilidad
tienen, como se crean y para que se utilizan.
Tambin presentaremos un par de sencillos programas en ABAP para ilustrar el
funcionamiento de los RANGES y de los SETs.
SETs
Los SETs son conjuntos de parmetros de seleccin, funcionan de manera similar
a los rangos (RANGES) y pueden ser almacenados internamente por SAP, lo cual
permite mantenerlos actualizados sin necesidad de alterar el cdigo fuente de un
programa que los utilice, esta es su mayor ventaja, nos ayudan a evitar el uso de
hardcore (valores constantes) en un programa.
La tabla SAP donde internamente se almacenan los SETs es SETLEAF y para
aquellos interesados en verla es posible analizarla con la transaccin SE11.
Para entender como funcionan los SETs primero debemos entender como
funcionan los RANGES:
RANGES
Los RANGES permiten especificar una serie de rangos de valores para ser
utilizados en las sentencias de seleccin, funcionan de manera similar a la
clusula SELECT-OPTIONS que utilizamos en los programas ABAP, de hecho esta
clusula lo que hace es utilizar rangos.
Cuando ejecutamos la clusula:
SELECT *
FROM mara
WHERE matnr IN mirango
el motor de base de datos que interpreta esta sentencia PL/SQL leer la tabla
MARA y recuperara todos aquellos registros cuyo campo MATNR este
comprendido dentro del rango de valores especificado mirango.
Pagina 1
Mayo 4, 2006
Para que esto funcione debemos tener definido el contenido de "mirango" para
que ABAP pueda hacer la bsqueda deseada dentro del rango de valores que nos
interesa recuperar, por ejemplo: si deseamos recuperar desde MARA todos los
materiales cuyos nmeros de material (MATNR) este comprendido entre 2 y 3
debemos definir un rango cuyo valor bajo o inicial (LOW) sea 2 y cuyo valor alto o
final (HIGH) sea 3.
Para entender esto con mas claridad vase el siguiente cdigo de ejemplo:
*
*
*
*
*
*
*
REPORT zexe001.
* --------------------------------------------------------------------TABLES: mara.
* --------------------------------------------------------------------RANGES: mirango FOR mara-matnr.
* --------------------------------------------------------------------mirango-sign
mirango-option
mirango-low
mirango-high
=
=
=
=
'I'.
'BT'.
'000000000000000001'.
'000000000000000003'.
APPEND mirango.
* --------------------------------------------------------------------SELECT *
FROM mara
WHERE matnr IN mirango.
WRITE : / mara-matnr.
ENDSELECT.
* --------------------------------------------------------------------*
Pagina 2
Mayo 4, 2006
Restricciones:
Los SETs don dependientes de mandante y no piden orden de transporte al ser
creados ya que se trata de data dependiente de cada mandante.
A valor
Texto breve
1
4
2
7
lnea 1
lnea 2
otros campos . . .
Lo que estamos dicindole aqu es que con este SET vamos a buscar los
materiales comprendidos entre 1 y 2 y los materiales comprendidos entre 4 y 7.
Los valores "De valor" y "A valor" son los valores que se han introducido para el
valor del rango para el campo MATNR.
Eso significa que para este SET vamos a tener valores comprendidos entres 1 y 2
y entre 4 y 7 por lo que le programa que presentamos mas abajo debera buscar
todos los materiales comprendidos entres 1 y 2 y entre 4 y 7 inclusive.
Para usar el set hay que leerlo en el programa primero, descargarlo a una
variable de rangos y luego usar la variable de rangos para hacer el SELECT.
Los campos valsign valoption valfrom y valto pertenecen a la tabla SETLEAF
y representan lo siguiente:
valfrom
valto
valsign
valoption
Pagina 3
Mayo 4, 2006
REPORT zexe002.
* --------------------------------------------------------------------TABLES: mara, setleaf.
* --------------------------------------------------------------------RANGES: mirango FOR mara-matnr.
* --------------------------------------------------------------------SELECT valsign valoption valfrom valto
INTO (mirango-sign, mirango-option,
mirango-low, mirango-high)
FROM setleaf
WHERE setname
= 'ZEXE001'.
APPEND mirango.
ENDSELECT.
* --------------------------------------------------------------------SKIP.
SKIP.
Write : / 'El rango usado es:'.
SKIP.
LOOP AT mirango.
WRITE : / mirango-sign, mirango-option,
mirango-low, mirango-high.
ENDLOOP.
* --------------------------------------------------------------------SKIP.
SKIP.
Write : / 'Los materiales obtenidos son:'.
SKIP.
SELECT *
FROM mara
WHERE matnr IN mirango.
WRITE : / mara-matnr.
ENDSELECT.
* --------------------------------------------------------------------*
Pagina 4
Mayo 4, 2006
Como el SET puede tener un numero variable de lineas por cada una de las lineas
leidas hace un APPEND a la variable mirango ( que de hecho es tratada por ABAP
como a una tabla interna).
A continuacion nos presenta a traves de Write cual es el contenido de este SET.
Finalmente lo utiliza en la clausula SELECT y nos presenta los resultados.
En el caso de que no tengo materiales creados en su mandante de prueba puede
cambiar facilmente los valores del rango 1 a 2 y 4 a 7 por cualquiera que se
ajuste a sus datos de prueba.
Y eso es basicamente todo.
Pagina 5