Uso de Iconos de estado (“Status Icons”)

Anuncio
Teknoda “SAPping”
http://www.teknodatips.com.ar
Notas técnicas – Tips de SAP Netweaver ABAP - JAVA
Tip en detalle Nro. 8
(Lo nuevo, lo escondido, o simplemente lo de siempre pero bien explicado)
"Tips en breve/Tips en detalle" se envía con frecuencia variable y absolutamente sin cargo como un servicio a nuestros
clientes SAP. Contiene principalmente notas técnicas y no contiene mensajes publicitarios.
Conteste este mail con asunto “REMOVER” si no desea recibir más esta publicación. Si desea suscribir otra dirección
de e-mail para que comience a recibir los tips envíe un mensaje desde esa dirección a [email protected]
Uso de Iconos de estado (“Status Icons”) en
programas de diálogo
Tema:
Iconos, Status, Screen Painter, Diálogo, Symbols.
Utilidad:
Cómo incluir íconos dinámicos en un programa de diálogo para reflejar estados
en forma gráfica. Overview del uso de símbolos.
Nivel:
Intermedio.
Contenido
Iconos en SAP R/3: Generalidades
Status Icons: Definición
Overview de los pasos para crear Status Icons
Ejemplo (con código)
Consideraciones de diseño para la elección y el uso de Iconos
o
Symbols Vs. Icons
Para tener en cuenta
Dónde obtener más información
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
1
Iconos en SAP R/3
Como cualquier entorno de programación gráfica, ABAP soporta la utilización de íconos y símbolos en
distintos contextos y con distintos propósitos. Los íconos son pequeños “bitmaps” coloreados que conforman
la representación pictórica de un objeto o una función, utilizados en lugar de texto, o acompañando texto.
Los íconos aparecen en menúes, botones, y ventanas para reforzar la síntesis gráfica y la funcionalidad de
cualquier pantalla. Si están bien diseñados y elegidos de acuerdo con alguna especificación normalizadora,
son determinantes para lograr ergonomía en la aplicación.
SAP ofrece una biblioteca muy completa de íconos, (R/3 Icon Library), y ofrece también los recursos de
programación ABAP para utilizar estos íconos en distintos ámbitos de R/3. Entre otros, SAP permite utilizar
íconos en:
Botones de la “standard toolbar” y de la “application toolbar”
Botones en las pantallas de datos, y pantallas iniciales.
Pantallas de selección de reportes.
Mensajes y “prompts” del sistema.
Reemplazando nombres de campo en algunos casos (Date, Time, etc.).
Iconos de estado (“status-icons”) en los programas de diálogo
La biblioteca de íconos de R/3 simplifica el trabajo de crearlos, pero además busca lograr consistencia en el
uso de los mismos. Existe una descripción completa de los íconos que integran esta biblioteca en las Listas
de referencia del sistema (SAP Reference Lists), incluyendo su nombre para el sistema, las características de
cada uno y su contexto de utilización. Como parte del esfuerzo puesto por SAP en los últimos años para
mejorar la facilidad de uso de R/3 (“EnjoySAP”), se ha generado abundante documentación sobre diseño y
normalización de la interfaz con el usuario, que abarca también el uso de íconos (Ver apartado
“Consideraciones de diseño...” y “Fuentes de información adicional” al final de este artículo).
Desde el punto de vista de la programación, la utilización de íconos ofrece distintos niveles de
complejidad según el contexto. Por ejemplo, para utilizar un ícono en un “pushbutton” de un programa de
diálogo, es suficiente con declarar el ícono en los atributos de la función del botón, y no requiere
programación alguna. Para utilizar íconos en un reporte, simplemente se utiliza la opción “AS ICON” del
comando WRITE (Ver Tip en breve “Uso de íconos en programas report”, en
www.teknoda.com/tipssap.htm). Pero existen también otros usos más elaborados de íconos que involucran
pasos adicionales de programación.
Tal es el caso de los llamados “status icons” (íconos de estado) que tratamos en este artículo.
Los “status icons” se utilizan en programas de diálogo para representar en forma gráfica los estados de algún
elemento. (Por ejemplo, en un listado de pedidos, para reflejar la condición de “cumplido”, “abierto”, “en
problemas”, etc.). Esta visualización gráfica hace que los usuarios detecten más rápidamente los errores,
encontrando el ícono antes que el texto descriptivo del problema.
A diferencia de otros ámbitos de uso de íconos, los “status icons” tienen un carácter dinámico en su
definición, dado que su forma final se determina sólo en el momento de la ejecución.
El presente artículo desarrolla las generalidades de uso de los status icons, y ofrece un ejemplo típico de
aplicación de los mismos. Ofrecemos también un resumen sobre consideraciones de diseño para “status icons”
e íconos en general, y un apartado sobre el uso de símbolos.
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
2
Status Icons
Los “status icons” son una de las posibles aplicaciones de íconos en SAP, y se utilizan sólo en programas de
diálogo. Los status icons funcionan técnicamente como contenedores de íconos variables. Siempre, para cada
status icon definido, habrá un grupo de íconos entre los cuales elegir, donde cada ícono represente alguno de
los posibles estados. Recién en el momento de ejecución de la aplicación, la lógica del programa elegirá un
ícono definitivo entre varios del grupo según la condición de estado detectada, y lo asignará al status
icon.
Por ejemplo, un caso típico sería definir un status icon a partir de un grupo de tres íconos con forma de
semáforo, uno con luz verde, otro con luz amarilla y otro con luz roja. Según el caso, el status icon puede
aparecer encendido en rojo, amarillo o verde indicando la condición del elemento que se está mostrando.
En términos procedurales, cualquier ícono de la biblioteca de R/3 podría servir como “status icon”. Sin
embargo, sólo deberían usarse con este fin los grupos de íconos definidos en el SAP Style Guide como
“íconos para desplegar estados” (Ver apartado final sobre elección de íconos). Algunos ejemplos de íconos
que fueron concebidos y agrupados para este uso serían:
Ej.
Semáforos de tres estados
Incorrecto
Precaución
Correcto
Estado de bloqueo de un elemento
Bloqueado
Desbloqueado
Estado de completud de un elemento
Iniciado, abierto
Liberado
Completo
Con problemas
Según el grupo de íconos elegido para un status icon, éste podrá reflejar dos, tres o más estados. La cantidad
de estados a representar es determinante para elegir el grupo de íconos que se asociará a cada status icon.
Como se ve en la descripción que sigue, los status icons sólo pueden crearse desde el Screen Painter.
Dentro de los elementos soportados por el Screen Painter, está prevista la opción de crear lo que se llama un
“status field”, que es justamente un campo de salida continente para un “status icon”. Este campo deberá
manipularse luego dentro de la lógica del programa.
Un uso habitual de los status icons es dentro de tablas, (como el ejemplo que aquí mostramos), para mostrar
alguna información de estado propia de cada fila. (ej. estados de un pedido, etc.). Otro uso interesante de
status icons es mostrar la condición de finalización de un proceso, o también en “tabstrips” (solapas) para
reflejar en cuáles de ellas se han ingresado o modificado datos.
Overview general de los pasos para crear status icons
Resumimos brevemente los pasos necesarios para crear y utilizar un status icon, que luego repasamos con un
ejemplo.
1) Definir el status icon en el Screen Painter:
Los status icons se crean en el Screen Painter (ver figura), al editar gráficamente el layout de la pantalla.
Existe un botón previsto para este fin. La herramienta creará un campo de salida, destinado a contener
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
3
posteriormente el status icon, y conocido “status field”. El nombre que se defina para este campo, es el que
luego se usará para tratarlo dentro de la lógica del programa. (Por ej. SEMAFORO, ICONO_ESTADO, o
STATUS_ICON).
El Screen painter creará también un “placeholder” (reserva de espacio) en el área de la pantalla. La longitud
visible de este campo determina la cantidad de espacios podrá ocupar el ícono en la pantalla. Si se desea, se
puede asociar también algún texto al campo.
En el ejemplo de la figura, se define un Status Symbol en el área de tabla, como primer campo de una fila, que
luego, como parte de un STEP LOOP o TABLE CONTROL, conformará la primera columna de una tabla.
b) Nombre del
STATUS FIELD
c)STATUS FIELD:
”placeholder” para el
status icon
a)Botón para crear
status field
2) Definir el status icon en el programa ABAP:
Para definir el ícono en el programa ABAP, se debe crear un campo con el mismo nombre que el “status
field” creado en la pantalla. El tipo de dato del campo debe ser ICONS-TEXT del diccionario ABAP. Por
ejemplo, si el campo se definió en el Screen Painter con el nombre SEMAFORO.
data: SEMAFORO TYPE icons-text,
icon_name(20),
icon_text(10).
El campo icon_name de esta estructura deberá contener más tarde el nombre de sistema del ícono a
desplegar (es decir, el nombre con que se lo conce en la R/3 Icon Library), mientras que el campo icon_text
permite acompañar al ícono con un texto descriptivo, si se requiriera.
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
4
3) Llenar las variables ICON_NAME y ICON_TEXT en el evento PBO del programa
ABAP
La lógica del programa deberá prever luego, en el evento Process Before Output, con qué valor se llenan los
atributos icon_name y icon_text, con la información técnica requerida, dependiendo de la condición de
estado a reflejar.
Cada uno de los íconos que integran el grupo elegido para este status icon, tiene su correspondiente nombre
dentro de la biblioteca de íconos SAP R/3. (Por ejemplo, ‘ICON_RED_LIGHT’, ‘ICON_YELLOW_LIGHT’,
‘ICON_GREEN_LIGHT’). De acuerdo entonces con el estado a reflejar, alguno de estos valores debe
asignarse a la variable ICON_NAME . El atributo ICON_TEXT , si se utiliza, deberá contener el texto que se
desea asociar al ícono.
IF <condición de estado2>
icon_name = <nombre del ícono representa estado1>
ELSEIF <condición de estado2>
icon_name = <nombre del ícono representa estado2>
:
ENDIF.
4) Resolver la forma final del ícono a través de la función ICON_CREATE
Para esto se utiliza el módulo de función ICON_CREATE que tiene los siguientes parámetros:
CALL FUNCTION ‘ICON_CREATE’
EXPORTING
NAME
= <icon_name>
TEXT
= <icon_text>
INFO
= <icon_info>
ADD_STDINF
= <icon_flag>
IMPORTING
RESULT
= <nombre del status field>
EXCEPTIONS
ICON_NOT_FOUND
= 1
OUTPUTFIELD_TOO_SHORT
= 2
OTHERS
= 3.
<icon_name> : el nombre del ícono requerido, como se lo conoce en la biblioteca de íconos de SAP. Se
utilizará aquí la variable ICON_NAME donde éste fue definido.
<icon_text> : el texto que aparecerá después del ícono en la pantalla. Si no es blanco, se utilizará el valor
definido anteriormente para la variable.
<icon_info> : permite especificar un texto que aparecerá si se ubica el mouse sobre el ícono (quickinfo text).
<icon_flag> : enciende o apaga el quickinfo text.
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
5
La función convierte estos parámetros en un único string, que es devuelto en el parámetro de export RESULT.
Cuando se asigna el parámetro RESULT al campo de status indicado, éste contiene toda la información
necesaria para visualizar el ícono.
Ejemplo:
El código que se muestra a continuación es parte de un programa de diálogo en el que se visualiza por
pantalla información de pedidos en formato de tabla (filas y columnas). Cada línea de la tabla contiene un
status-icon que refleja el estado del pedido.
Grupo de Status Icons
Con este fin, se eligió utilizar la representación gráfica a través del grupo de íconos de semáforo con tres
luces. Estos íconos existen en la R/3 Icon Library con los siguientes “system names”:
ICON_RED_LIGHT
ICON_YELLOW_LIGHT
ICON_GREEN_LIGHT
Status Field
Para esto, se definió en el Screen Painter un Status Field con nombre SEMAFORO. Este elemento fue creado
dentro del step loop como una columna.
Programa ABAP
Luego en el programa ABAP, se incluyeron las siguientes estructuras
En el TOP include:
data: SEMAFORO TYPE icons-text,
icon_name(20),
icon_text(10).
Luego, en el flujo lógico de la pantalla, se invoca un módulo setear_icono como parte del PBO. Este módulo
asignará el valor a la variable ICON_NAME e invocará la función ICON_CREATE para resolverlo:
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
6
PROCESS BEFORE OUTPUT.
MODULE . . .
LOOP AT <itab> CURSOR <tabindex>.
. . .
MODULE setear_icono.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE salir AT EXIT-COMMAND.
MODULE . . .
. . .
El módulo setear_icono asigna el valor de la variable ICON_NAME según el estado de la orden, e invoca
luego a la función ICON_CREATE usando esa variable como nombre del ícono a crear. El texto del ícono no
se utiliza en este caso, por lo que la variable ICON_TEXT queda en blanco. El resultado de la función se
vuelca en la variable SEMAFORO que es el nombre definido para el status icon.
MODULE setear_icono OUTPUT.
IF xerror NE SPACE.
icon_name = ‘ICON_RED_LIGHT’.
ELSEIF xcompleto IS INITIAL.
icon_name = ‘ICON_YELLOW_LIGHT’.
ELSE.
icon_name = ‘ICON_GREEN_LIGHT’.
ENDIF.
CALL FUNCTION ‘ICON_CREATE’
EXPORTING
NAME
TEXT
INFO
ADD_STDINF
IMPORTING
RESULT
=
=
=
=
“con errores
“incompleto
“completo
icon_name
icon_text
‘Status’
‘X’
= semaforo
EXCEPTIONS
icon_not_found
outputfield_too_short
others
CASE sy-subrc.
WHEN 1.
MESSAGE ...
WHEN 2.
MESSAGE...
WHEN 3.
MESSAGE...
ENDCASE.
= 1
= 2
= 3.
ENDMODULE.
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
7
Finalmente, esta es la pantalla que se obtiene. Para cada fila dentro del loop, el status field SEMAFORO se
llena con el contenido del parámetro RESULT de la función ICON_CREATE. El ícono correspondiente se
despliega en la pantalla.
Programación de Pedidos
Rec
Cliente
Población
TEKNODA S.A.
BUENOS AIRES
TEKNODA S.A.
BUENOS AIRES
TEKNODA S.A.
BUENOS AIRES
TECNICA ELEMEC
CATAMARCA
TECNICA ELEMEC
CATAMARCA
LA DELTONA
SARANDI
LA DELTONA
SARANDI
TEKNODA S.A.
BUENOS AIRES
TEKNODA S.A.
BUENOS AIRES
TEKNODA S.A.
BUENOS AIRES
TEKNODA S.A.
BUENOS AIRES
TEKNODA S.A.
BUENOS AIRES
TEKNODA S.A.
BUENOS AIRES
ZUREMATO
BUENOS AIRES
ZUREMATO
BUENOS AIRES
ZUREMATO
BUENOS AIRES
Consideraciones de diseño para la elección y uso de íconos
Sobre status icons
Como dijéramos anteriormente, las consideraciones de diseño son un tema importante a la hora de elegir y
aplicar íconos en las pantallas.
El conjunto de íconos soportados en la biblioteca de R/3 está subdivido en Clases y Grupos para simplificar la
organización. Por ejemplo, existen clases de Iconos Generales, Iconos especiales, etc. Luego las clases se
dviden en grupos: ej. selección, navegación, servicios, objetos, etc.
La descripción completa de las íconos que integran esta biblioteca, y su clasificación está documentada en las
Listas de referencia del sistema (SAP Reference Lists). Para cada ícono se indica además el contexto en el
que se puede utilizar (pushbuttons, status, etc.). Para status icons deberían elegirse sólo los que indican el
contexto Status.
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
8
El SAP Design Guild muestra también los diferentes grupos de status icons con los distintos estados posibles,
y los criterios sugeridos para su elección. Por ejemplo, semáforos de dos, tres, y cuatro estados, banderitas,
candaditos, etc. La cantidad de estados a representar, y el significado de estos estados deben tenerse en cuenta
a la hora de elegir la metáfora gráfica a utilizar.
Cuando se utilizan íconos dentro de una tabla para desplegar alguna condición de estado de cada elemento, no
conviene usar más de un status icon por fila. Conviene también ubicar el status icon como primera columna, o
como segunda si existen “check-boxes” para seleccionar filas. (Como en este ejemplo)
Si se necesita mostrar más de un status icon, conviene entonces desplegarlos en forma contigua a la derecha.
La elección del título de la columna debe ser elocuente para que los usuarios puedan entender fácilmente el
propósito y el significado de los íconos.
Sobre íconos en general
Los íconos tienen sentido sólo si no se esparcen indiscriminadamente por toda la pantalla, lo que
provocará el efecto contrario al que se busca.
Los íconos deben diferenciarse bien unos de otros. Aunque no sean totalmente autoexplicativos,
deben ser fáciles de aprender.
Conviene usar íconos sin texto, salvo cuando el texto es estrictamente necesario.
Hay muchas situaciones donde un símbolo puede funcionar mejor que un ícono (Ver apartado sobre
símbolos)
Por último, conviene recordar que se confunde a los usuarios cuando utilizamos el mismo ícono con
distintos propósitos en distintos lugares del sistema. Es una buena idea “reciclar” la imagen de un
ícono, siempre y cuando el nuevo uso no contradiga al anterior.
Símbolos Vs. Iconos
A diferencia de los íconos, que son “bitmaps” coloreados, los símbolos son caracteres “pseudo-gráficos”,
implementados a través del juego de caracteres SAPDings. En virtud de esto, tienen atributos parecidos a los
de un font, es decir, son de un solo color, escalables a un tamaño variable. Por ser poco llamativos, suelen
utilizarse sólo en listas, en reportes o en estructuras jerárquicas.
Uso de símbolos en árboles
Uso de símbolos para desplegar estados
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
9
Campos de aplicación de íconos y símbolos
Los íconos en general se utilizan en áreas de la pantalla donde el usuario tiene una función habilitada y puede
ejecutar una acción dando click o doble click sobre el ícono, (por ejemplo, botones o listas interactivas). En
casos como el aquí expuesto, se utilizan también íconos debido a su riqueza gráfica y uso del color, que
permite representar estados mucho mejor que con símbolos.
Sin embargo el uso de íconos en listas tabulares debe manejarse con mucha precaución. Los símbolos pueden
ser una mejor opción cuando las listas usan un font muy pequeño, o cuando se necesita mostrar varios
gráficos en la misma línea (ver tablita superior), o en listas semigráficas o listas a ser impresas, donde los
íconos no son aplicables (por ejemplo, para implementar gráficos de estado en un reporte).
Puede agregarse algo de color a los símbolos también a través del “background”. Debe tenerse en cuenta que
los símbolos no son muy explicativos, por lo que suelen acompañarse de texto.
Los símbolos se definen en forma semejante a los íconos en los reportes, esto es, usando el comando WRITE:
WRITE symbol_name AS SYMBOL.
Los nombre de los símbolos se definen en el “include” <SYMBOL>, que debe ser incluido en el reporte.
Para tener en cuenta:
Al utilizar “status icons” dentro de una tabla, éste se define en el Screen Painter una sola vez, como
el resto de los campos que conforman la fila, y que luego se proyectan como columna con STEP
LOOP o TABLE CONTROLS.
Una longitud de campo de 2 caracteres es suficiente para la mayoría de los íconos, pero algunos,
como los semáforos de cuatro luces, por ej., tienen una longitud mayor. La función DESCRIBE
FIELD ICON_... output length permite determinar la longitud.
Para utilizar íconos y símbolos en reportes es necesario hacerlos disponibles al programa mediante el
INCLUDE correspondiente, (INCLUDE <ICON> o INCLUDE <SYMBOL>. El INCLUDE <LIST>
permite obtener ambos. Esto no es necesario en el ejemplo con programas de diálogo aquí expuesto,
porque de esto se ocupa la función ICON_CREATE.
Dónde obtener más información
SAP Library (en CD, o en Internet): BC- SAP Style Guide, BC ABAP Programming
SAP Design Guild: http://www.sapdesignguild.org/sitemap.asp#resources
SAP Design Guild: SAP Icon Style Guide:
http://www.sapdesignguild.org/resources/icon_cookbook/index.html
SAP Design Guild: Reference lists
http://www.sapdesignguild.org/resources/References/index.htm - también se encuentran las
reference lists en http://help.sap.com/content/dguild/construction/implementation/References/
SAP Design Guild: SAP R/3 Style Guide
http://www.sapdesignguild.org/resources/MiniSG/index.htm
Copyright 2002 Teknoda S.A. Agosto 2002. SAP, R/3 y ABAP son marcas registradas de SAP AG. Teknoda
agradece el permiso de SAP para usar sus marcas en esta publicación.
SAP no es el editor de esta publicación y no es, por lo tanto, responsable de su contenido.
La información contenida en este artículo ha sido recolectada en la tarea cotidiana por nuestros especialistas
a partir de fuentes consideradas confiables. No obstante, por la posibilidad de error humano, mecánico,
cambios de versión u otro, Teknoda no grantiza la exactitud o completud de la información aquí volcada.
Dudas o consultas: [email protected]
Teknoda - Notas Técnicas al ABAP
Dudas o consultas a [email protected]
10
Descargar