Archivo

Posts Tagged ‘select-options’

Mostrar u ocultar campos en pantalla de selección

Caso: se desea crear una pantalla de selección con radiobuttons que al ser presionados, modifique la visualización de otros campos en pantalla.

Solución: para el ejemplo utilizaremos radiobuttons que al ser presionados grisen u oculten otros campos de selección.

REPORT zprueba_abap.
TABLES: bsid,
vbrk.
 
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
PARAMETERS: r_new RADIOBUTTON GROUP r1 USER-COMMAND rbut DEFAULT 'X',
r_pen RADIOBUTTON GROUP r1,
r_pro RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF BLOCK b1.
 
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
PARAMETERS: p_bukrs TYPE bsid-bukrs.
SELECT-OPTIONS: s_kunnr FOR bsid-kunnr MODIF ID zz1,
s_belnr FOR bsid-belnr MODIF ID zz1.
 
PARAMETERS: p_gjahr TYPE vbrk-gjahr MODIF ID im1.
SELECT-OPTIONS: s_bldat FOR bsid-bldat,
s_zuonr FOR vbrk-zuonr MODIF ID im2.
SELECTION-SCREEN END OF BLOCK b2.
 
AT SELECTION-SCREEN OUTPUT.
PERFORM ocultar_campos.
 
FORM ocultar_campos.
 
IF r_new EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'IM2'.
screen-input = 0. " Campo editable
screen-invisible = 1. " Campo invisible
MODIFY SCREEN.
ENDIF.
ENDLOOP.
 
ELSEIF r_pen EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'ZZ1'.
screen-input = 0. " Campo no editable/grisado
screen-invisible = 0. " Campo invisible
MODIFY SCREEN.
ENDIF.
 
ENDLOOP.
ELSEIF r_pro EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'IM1'.
screen-input = 0. " Campo no editable/grisado
screen-invisible = 1. " Campo invisible
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " OCULTAR_CAMPOS
Anuncios

STVARV o STVARVC – Uso de parámetros y opciones de selección fijas

Caso: se desea crear un parámetro fijo en el customizing para no tener que hardcodear el valor en los programas, de esta forma, ante cualquier cambio en el valor fijo se modificaría el parámetro y no el programa en sí.

Solución: hemos hablado en otro post anterior de utilizar un SET DE DATOS, otra forma (que requiere transportes) es la utilización de la transacción STVARV.

La tabla TVARVC se utiliza para mantener entradas de parámetros o select-options. Antes del antes del release 610, estos datos se guardaban en la tabla TVARV y se actualizaba con la SM30 (esta tabla no tenía el mandante); luego de la 610 se utiliza la tabla TVARVC.

La transacción a utilizar para ello es la STVARV. Generalmente hay confusión si utilizar ésta o la STVARVC; con la transacción STVARV puedes mantener entradas dependiente del mandante (requiere transportes), mientras que en la TAVRVC sólo sirve para el mandante 000.

Es por ello recomendable utilizar la transacción STVARV.

Para más datos al respecto, revisa la nota 1994216:How to maintain variant variables in table TVARVC.

1. Ejemplo de parámetro:

Vamos a la transacción STVARV, presionamos el botón de MODIFICAR y nos aparecen nuevos botones para tratar parámetros o opciones de selección:

Presionamos “Incluir entradas modificadas en orden de transporte” para poder incluir los cambios y que nos pida una OT y luego el botón NUEVO.

Ingresamos los datos del parámetro y guardamos.

Ahora bien, en un programa podemos rescatar este parámetro así:

DATA: lv_bukrs TYPE BUKRS.

SELECT SINGLE low FROM tvarvc INTO lv_bukrs
WHERE name = ‘ZSOCIEDAD’
AND type = ‘P’.

Y si queremos utilizarlo en una variante, debemos definir la variable de selección en un campo de parámetro y seleccionar nuestra variable ZSOCIEDAD:

1. Ejemplo de opción de selección:

De la misma forma, en la STVARV podemos crear una opción de selección indicando varias opciones que luego obtendremos a partir de un rango.

Para rescatarlo en un programa, una forma sería así:

DATA: lt_centros LIKE RANGE OF ekpo-WERKS.

SELECT sign opti AS option low
INTO CORRESPONDING FIELDS OF TABLE lt_centros
FROM tvarvc
WHERE name = ‘ZCENTRO’.

Y para utilizarlo en variantes, misma forma que en parámetros (obviamente debe referirse a un SELECT-OPTIONS):

Link: http://solveissue.com/note?id=1994216

Botón en Pantalla Selección / Lista de Iconos en SAP

Caso: se desea agregar un botón en el toolbar, en la pantalla de selección, tal cual se indica en la siguiente imagen:

Solución: Debemos armar el siguiente código.

REPORT zver_icono_log.

TABLES: sscrfields.
DATA gv_dyntxt TYPE smp_dyntxt.

SELECTION-SCREEN FUNCTION KEY 1.

INITIALIZATION.
CLEAR gv_dyntxt.
gv_dyntxt-text = ‘LOG’.
gv_dyntxt-icon_id = ‘@DH@’.
gv_dyntxt-icon_text = ‘LOG’.
gv_dyntxt-quickinfo = ‘Visualizar LOG’.
sscrfields-functxt_01 = gv_dyntxt.

AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN ‘FC01’.
* PERFORM log_errores.
ENDCASE .

Si deseamos agregar más íconos, seguimos numerando con el 2, 3, 4 etc, cambiando estas instrucciones (por ejemplo para el segundo botón):

SELECTION-SCREEN FUNCTION KEY 2, sscrfields-functxt_02 y WHEN ‘FC02’.

Para seleccionar el tipo de ícono a mostrar, hay dos formas de ver los íconos en SAP:

1. Por la transacción ICON podemos visualizar la lista de íconos en SAP:

2. El report RSTXICON nos permite conocer los códigos a utilizar. Por ejemplo, para el ICON_CHECHED el código a utilizar es @01@.

También se puede usar el report SHOWICON para listarlos según distintos criterios.

Los íconos están agrupados, como se indican en este post:

http://www1.sapdesignguild.org/resources/ma_guidelines_2/interaction/status_icons.html