Archivo

Posts Tagged ‘SET DE DATOS’

Set de Datos II – Una mejor forma

Caso: encontré una forma más facil de obtener el SET DE DATOS

Solución:

DATA: gr_ktokk        TYPE RANGE OF ktokk,
      gs_ktokk        LIKE LINE OF gr_ktokk.
 
DATA: lit_set_lines_basic TYPE TABLE OF rgsbv,
      lwa_set_lines_basic TYPE rgsbv.
 
* Obtengo el SET de datos con los grupos de cuentas a validar
CALL FUNCTION 'G_SET_FETCH'
EXPORTING
setnr           = '0000ZMM_SC_GRUPO_CUENTAS'  " Se pone 0000 antes del nombre del SET
TABLES
set_lines_basic = lit_set_lines_basic
EXCEPTIONS
no_authority    = 1
set_is_broken   = 2
set_not_found   = 3
OTHERS          = 4.
 
IF sy-subrc <> 0.
   MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
 
LOOP AT lit_set_lines_basic INTO lwa_set_lines_basic.
   gs_ktokk-sign   = 'I'.
   gs_ktokk-option = 'BT'.
   gs_ktokk-low    = lwa_set_lines_basic-from.
   gs_ktokk-high   = lwa_set_lines_basic-to.
   APPEND gs_ktokk TO gr_ktokk.
ENDLOOP.
 
ENDIF.

Links:

http://scn.sap.com/community/spanish/blog/2013/01/17/set-de-datos-en-sap-us%C3%A1ndolos-con-abap

Crear un Set de datos

Caso: se busca crear una lista de valores para ser utilizada en distintos programas. En este caso es una lista de usuarios.

Otra posibilidad es usar la tablas de parámetros de la transacción STVARV (posiblemente haga otro post).

1. Ingresamos a la transacción GS01. Crearemos un set básico de usuarios (una lista de valores a partir de la tabla-campo USR02-BNAME).

 

2. Al presionar ENTER puedo indicar el campo:

3. En la siguiente pantalla indico la lista de valores posibles

 

4. Presiono GUARDAR. Ahora puedo obtener los valores del SET DE DATOS con el siguiente código:

data: lv_setid type SETHIER-SETID,
lt_RGSBV type table of RGSBV.

REFRESH lt_RGSBV[].

* Obtengo el SET de DATOS
CALL FUNCTION ‘G_SET_GET_ID_FROM_NAME’
EXPORTING
shortname = ‘ZMM_PRUEBA_SET’
IMPORTING
NEW_SETID = lv_setid
EXCEPTIONS
NO_SET_FOUND = 1
NO_SET_PICKED_FROM_POPUP = 2
WRONG_CLASS = 3
WRONG_SUBCLASS = 4
TABLE_FIELD_NOT_FOUND = 5
FIELDS_DONT_MATCH = 6
SET_IS_EMPTY = 7
FORMULA_IN_SET = 8
SET_IS_DYNAMIC = 9
OTHERS = 10.

IF sy-subrc = 0.

* Recupero los valores del SET
CALL FUNCTION ‘G_SET_FETCH’
EXPORTING
setnr = lv_setid
TABLES
SET_LINES_BASIC = lt_RGSBV
EXCEPTIONS
NO_AUTHORITY = 1
SET_IS_BROKEN = 2
SET_NOT_FOUND = 3
OTHERS = 4.

ENDIF.

READ TABLE lt_RGSBV WITH KEY FROM = sy-uname TRANSPORTING NO FIELDS.

IF sy-subrc EQ 0.
MESSAGE ‘Usuario Encontrado’ TYPE ‘S’.
ENDIF.