sábado, 4 de mayo de 2013

GUIXT: Personalizar el acceso al sistema y el comando image

Un sencillo script de GuiXT que modifica el aspecto visual de la  pantalla de acceso al sistema Sap y le añade una nueva funcionalidad. El script, añadirá una imagen con el logo de la compañía y un pulsador para que, en caso de problemas al acceder al sistema, pueda enviarse un email al administrador de sistemas.

Acceso al sistema Sap

Box (3,1) (11,85) "Acceso al sistema"

pos F[Clv.acc.]    (7,28)   
pos F[Idioma]      (8,28)  
pos F[Mandante] (5,28)  
pos F[Usuarios]   (6,28) 

Image (4,2) (9,25) "logo.jpg" 

text (9,28)   "Problemas de acceso?"
text (10,28) "Por favor, envie un email "
image(9,48) "email.gif" start="mailto:admin@datra.com?subject=Logon in system &V[_database]"
text (10,55) "al administrador"


Acceso al sistema Sap modificado por el script GuiXT

Excepto el comando Image, el resto de comandos utilizados en el script se han explicado en la entrada anterior.

El comando Image permite añadir imágenes, GuiXT admite los formatos BMP, GIF y JPG.
Es un comando muy  versátil, con muchas opciones y parámetros como veremos a continuación.

Image (row,column) "Name of image file"
Image (row1,column1) (row2,column2) "Name of image file"

Solo se admiten los siguientes formatos: BMP, GIF y JPG.

Si no se especifica ninguna ruta para acceder a la imagen,  por defecto, se busca en el mismo directorio en donde se encuentra el script de GuiXT que ejecuta el comando Image. Es posible  acceder a imágenes guardadas en un servidor http o FTP y en el  Repositorio Web de Sap.
Parámetros:
  • (row1,column1) ó (row,column): coordenadas de la esquina superior izquierda 
  • (row2,column2) : coordenadas de la esquina inferior derecha
Opciones:
  • -NoStretch  : Mantiene la anchura y altura de la imagen original 
  • -Plain  : Sin marco resaltado 
  • -NoBuffer  :No se almacena en memoria intermedia. 
  • -Transparent : Solo aplicable a GIF de 8 bits, la imagen se muestra de forma transparente, toma el fondo de la pantalla .
Aparte de estas opciones, también existen unos parámetros especiales para dibujar texto plano sobre la imagen:

  • Textstring=   : Escribe un texto plano sobre la imagen.
  • Textfont=      : Fuente del texto, por defecto es Arial y en sistemas Unicode Arial Unicode MS. 
  • Textcolor=    : Color del texto.
  • Textheight=  : Altura en pixeles, por defecto 10.
  • Textweight=  : Anchura, el valor es entre 1 ( fina) y 9 ( gruesa ), resaltado es 7
  • Textarea=     : Área de la imagen donde se dibujara el texto
                    ..... Textarea=(10,20)       Área de 10x20 desde la esquina superior izquierda
                    ..... Textarea=(-50,-50)    Área de 50x50 desde la esquina inferior derecha
                    ..... Textarea=(30,50,-30,-50)    Área 30x50 centrada en la imagen
  • -textcenter    : El texto queda centrado en la imagen
Por Ejemplo, en el script anterior, para dibujar el texto  "GUIXT" sobre la imagen del logo

   Image (4,2) (9,25) "logo.jpg"  textstring="GUIXT" textheight=80 -textcenter

Texto sobre la imagen

Es posible mostrar varias imágenes en una misma posición, por ejemplo:.

   Image (10,40) (16,65) "img&##.gif"

Para esta finalidad re-nombraremos las imágenes de la siguiente manera :

    IMG01.gif, IMG02.gif, IMG03.gif…..

Por cada click con el botón derecho del ratón sobre la imagen, se incrementara el contador. Sustituyendo los comodines  por 1, 2, 3 o 01, 02, 03 o también 001, 002, 003 (depende de cuantos comodines utilicemos &#, &##, &### ).

Es posible relacionar también la imagen con un campo de datos de la pantalla. Por ejemplo,  si el usuario introduce por pantalla el código de material A03, mostrar por pantalla la imagen imgA06.jpg. Recordemos que para extraer el valor de una variable o elemento de la pantalla, se antepone el carácter especial “&” al nombre de la variable o campo de la pantalla ( Por  ejemplo: &V[data_nombre] , &F[Material] ).

   Image (4,80) "C:\products\img&F[Material].jpg"
La versatilidad de este comando es tal, que si no esta disponible la imagen, podemos ejecutar un archivo exe o bat para que copie la imagen de cualquier localización posible a un directorio local

   Image (row,column) "Name of image file" exe="program name"

   Image (10,40) (18,74) "C:\tempimg\imagen1.gif" exe="C:\prog\getchart.exe"

Una opción muy interesante, es convertir la imagen en interactiva, que responda ante alguna acción o evento provocado por el  usuario, como un click con el ratón, sobre la imagen. este evento o acción puede dar como resultado que se ejecute un Input Screen ( ya lo explicare mas adelante ) o una opción del menú.

    Image (row,column) "Name of image file" Input="string" 

Por ejemplo:

    Al pulsar sobre la imagen, se rellena el campo de la pantalla 'Material' y se ejecuta INTRO.
    Image (4,10) "logo.jpg" Input="Material:1221;OK"

    Al pulsar sobre la imagen, se rellenan los campos de la pantalla 'Material' y 'Planta, pero no se ejecuta intro.
    Image (4,10) "logo.jpg" Input="Material:1221;Planta:1001" 

    Ejecutar   Funciones del menú, selección de vistas en la MM03 al pulsar en la imagen
    Image (4,10) "logo.jpg"  "Input=OK:AUSW" 

    Llamar a otra transaccion en la misma ventana o generar una ventana nueva
    Image (4,10) "logo.jpg"  Input="OK:/NMM01" 
    Image (4,10) "logo.jpg"  Input="OK:/OMM01" 

    Llamar a un Input Screen con parámetros de entrada.
    Image (4,10)   "numbutton.gif" Input="U[digit]:7;OK:process=digit.txt"

El comando también permite ejecutar una aplicación o software externo, un archivo HTLM o un documento, ademas de archivos ejecutables exe o bat

   Image (row,column) "Name of image file" Start="string" 

Por Ejemplo:

   Llamar a un archvio HTLM
   Image (4,10) "logo.jpg"  Start="\\P00800\Doc12\me21.html"


Si estamos utilizando GuiXT para dar soporte a una pantalla táctil, las opciones siguientes pueden ayudar a crear una navegación a través del sistema, por ejemplo, si estamos mostrando un ALV por pantalla podemos crear nuestro propio pulsador para desplazarnos entre las líneas en el ALV.

    Image (0,1) (3,8) "nextline.gif" Input="X[Grid1]:<DOWN>"

Están soportadas las siguientes funciones:
  •  <DOWN> Cursor abajo 
  •  <UP> Cursor arriba 
  •  <LEFT> Cursor a la izquierda 
  •  <RIGHT> Cursor a la derecha 
  •  <NEXT> Page down 
  •  <PRIOR> Page up 
  •  <END> End 
  •  <HOME> Home 
  •  <BOTTOM> Ctrl+End 
  •  <TOP> Ctrl+Home

Panel táctil con GuiXT

7 comentarios:

  1. fantástico blog resumiendo "cositas"... :)

    Una ayuda: ¿cómo hacer el panel táctil?... no sé hacer que cada vez que se pulse uno de los números estos se concatenen, lo que hacen es machacar lo que ya había en el campo Material.

    Muchas gracias.

    ResponderEliminar
    Respuestas
    1. A mi tambien me paso, lo iba a explicar mas adelante, prueba a concatenarlo en una variable y se lo pasas al campo de la pantalla: Set V[matnr] "&V[matnr]&U[digit]"
      Set F[Material] "&V[matnr]"

      Eliminar
  2. ... pero si la instrucción es con "image.... input=", ¿cómo hago para meter el "set"?
    Image (7,0) "C:\GuiXT\botones\04.gif" input="Material:4".

    Muchas gracias. Enrique.

    ResponderEliminar
    Respuestas
    1. Tienes que utilizar el modulo INPUT ASSISTANT, asi puedes ejecutar scripts como el que concatena los numeros
      Puedes asignar un script que se ejecute al hacer click en la imagen:
      Image... Input="U[digit]:4;OK:process=digit.txt"
      Ya perdonaras, aun no he terminado el articulo sobre este modulo.

      Eliminar
  3. Excelente aporte muchas gracias :) de alguna manera por GUITXT se podran adjuntar archivos (por ejemplo: .docx junto a otro documento .jpg) a una unidad externa mediante FTP ??? muchas gracias :)

    ResponderEliminar
    Respuestas
    1. Pues nunca he intentado adjuntar archivos por guiXT, para anexar he usado siempre objetos GOS de sap

      Eliminar
  4. Hola, sabes como conectar variables en la API de google charts?
    https://developers.google.com/chart/interactive/docs/gallery/piechart?hl=es

    he intentado con conect y controls pero aun no puedo poner un valor como variable del grafico

    ResponderEliminar