Está en la página 1de 5

Breve Tutorial de SETs por Exequiel Lpez

Mayo 4 de 2006,

Mayo 4, 2006

Montevideo - Uruguay

Breve Tutorial de SETs


Por Exequiel Lpez ( exequiel@adinet.com.uy )
Web: exequiel.lopez.googlepages.com

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

Breve Tutorial de SETs por Exequiel Lpez

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:
*
*
*
*
*
*
*

--------------------------------------------------------------------Sistema : SAP R/3


Nombre : Ejemplo de uso de RANGES.
Modulo : Basis
Autor
: Exequiel Lopez.
Fecha
: 4/05/2006.
---------------------------------------------------------------------

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.

* --------------------------------------------------------------------*

Este programita buscara todos los materiales especificados en el RANGE


mirango, es decir recuperara y listara en pantalla todos aquellos materiales
cuyo MATNR este comprendido entre los valores 000000000000000001 y
000000000000000003.

Que hacen los SETs


Ahora bien, lo que los SETs permiten es almacenar los valores de LOW y HIGH de
los rangos en una tabla de sistema, en este caso la tabla SETLEAF, para poder
descargar estos parmetros en un rango y poder usarlos en un programa, esto
evita el problema de la inclusin de hardcores en un programa, adems no solo
podremos almacenar un rango simple como 2 a 3 del ejemplo, sino que podemos
tener mltiples renglones de rangos que no necesariamente tienen que ser
consecutivos.

Pagina 2

Breve Tutorial de SETs por Exequiel Lpez

Mayo 4, 2006

Transacciones asociadas a los SETs


La transaccin para creacin de SETS es GS01.
La transaccin para modificarlos es GS02.
La transaccin para consultarlos es GS03.

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.

Ejemplo de creacin de un SET


Vamos a demostrar la creacin y el uso de un SET:

Invocar a la transaccin GS01.


Darle nombre al set, por ejemplo ZEXE001
Darle un nombre de tabla a usar, por ejemplo MARA
Poner el Tipo de Set como SET BASICO
Pulsar Enter
Darle un nombre de campo a usar, por ejemplo MATNR
Completar los valores de rango y poner un comentario para cada lnea:
De valor

A valor

Texto breve

1
4

2
7

lnea 1
lnea 2

otros campos . . .

Una vez completado dar click en el botn SAVE.

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

El valor desde, por ejemplo desde matnr = 2 inclusive.


El valor hasta, por ejemplo hasta matnr = 3 inclusive.
Campo SIGN en la estructura de tablas SELECT-OPTIONS
Campo OPTION en la estructura de tablas SELECT-OPTIONS

Pagina 3

Breve Tutorial de SETs por Exequiel Lpez

Mayo 4, 2006

Ejemplo del uso de SETs como rangos en una seleccin:


*
*
*
*
*
*
*

--------------------------------------------------------------------Sistema : SAP R/3


Nombre : Ejemplo de uso de SETS.
Modulo : Basis
Autor
: Exequiel Lopez.
Fecha
: 4/05/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.
* --------------------------------------------------------------------*

El funcionamiento del programa es sumamente simple:


Primero descarga de la tabla SETLEAF el SET llamado ZEXE001 que acabamos
de crear con anterioridad en este ejemplo y deposita sus valores de rango
(valsign valoption valfrom valto) en una variable tipo RANGES llamada mirango.

Pagina 4

Breve Tutorial de SETs por Exequiel Lpez

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

También podría gustarte