miércoles, enero 31, 2007

Ocultar elementos dynpro según RADIOBUTTON

Al estar trabajando con dynpros nos puede interesar mostrar o ocultar algunos campos. En este caso queremos mostrar/esconder los campo dependiendo del valor del un RADIOBUTTON. Para ello primero asignamos todos los elementos que queramos mostrar/esconder a un grupo que después modificaremos recorriendo la tabla con los elemenos LOOP AT SCREEN.

Para que actualizar la pantalla sólo cambiando de radibutton (sin tener que ejecutar ENTER), debemos indicarselo de la siguiente manera:
PARAMETERS: p_rad RADIOBUTTON GROUP grupo_bloque USER-COMMAND grupo_enter.

NOTA: Si todos los elementos de un mismo bloque estan inactivos, no se muestra su recuadro.

viernes, enero 05, 2007

Creación de un rango

Hola, algunos os preguntareis ¿Qué es un rango? Es muy fácil : es un contador. La mejor manera de explicarlo es poner un caso que en que es necesario utilizarlo.

Imagina os que hacéis un report que se va a ejecutar varias veces y que en cada ejecución creáis un fichero:
1º Ejecución fichero_1,
2º Ejecución fichero_2
...
nº Ejecución fichero_n.

¿Como podemos enumerar los fichero de manera secuencial (1,2,,,n)? ¿Lo guardamos en una tabla del diccionario?
Aquí es donde surge la necesidad de crear un rango. Mediante la transacción SNUM creamos un rango.Internamente funciona como tener un campo en el diccionario de SAP donde se guarda el contador.

Después se debe crear un intervalo donde hay que indicar:

-Núm. intervalo (identificador).
-Cota inferior.
-Cota superior.
-Núm. actual del contador.

Una vez creado el rango con un intervalo realizamos la llamadas en el programa de control:

1) Bloquear el rango para nuestra utilización,
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'.
2) Obtener el siguiente número del rango,
CALL FUNCTION 'NUMBER_GET_NEXT'
3) Desbloquear rango,
CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'

Ojo!!! Los intervalos son independientes de mandante.

Además existe otro módulo de función para recuperar el rango sin incrementarlo:
NUMBER_GET_INFO