domingo, 10 de marzo de 2013

GUIXT: Los Scripts de GuiXT

¿Que es un scripts de GuiXT?

Un script de GuiXT es un archivo de órdenes o un archivo de procesamiento por lotes, que modifica elementos de la pantalla del sistema Sap. No modifica el estándar de SAP, no realiza ningún cambio en el servidor de Sap, solo actúa en la capa de presentación sobre SapGUI.

Scripts de GuiXT

¿Cuando se interpreta un GuiXT Script? 

Cuando accedemos a una transacción estándar o ejecutamos un rapport, el servidor SAP envía la información al cliente SapGUI  que la muestra por pantalla al usuario. Si GuiXT se encuentra activado en el sistema Sap, antes de mostrar los datos por pantalla, se busca el script GuiXT cuyo nombre coincida con la combinación  <programa>.<idioma><dynpro> ( ej SAPMF05A.S0100 ) en alguna de las 4 localizaciones que se pueden indicar para guardar los scripts. Si se encuentra el script, se interpreta y se aplican los cambios a la información recibida del sistema Sap y después se muestra por pantalla el resultado. 

GuiXt actúa en la capa de presentación

Los scripts se interpretan 1 vez por cada ventana abierta .Si ejecutamos dos veces /oMM03, que abrirá dos  ventanas nuevas del maestro de materiales, si existe un scripts GuiXT, se ejecutara en cada ventana independiente y las acciones , cálculos, valores de las variables en una ventana no afectaran a la ejecución del scripts en la otra ventana.  Por el contrario, si en vez de abrir nuevas ventanas, reiniciamos la actual  ejecutado, por ejemplo,  varias veces /nMM03 y existen variables globales que no se iniciaran al principio del script, están conservan sus últimos valores.


¿Cómo se construye el nombre del archivo que contiene el script?

<Nombre del programa que contiene la DYNPRO>.<IDIOMA><Nº de la DYNPRO>.txt

Programa: SAPMF05A
Dynpro: 0100
Idioma : Español - S

Fichero se llamaría: SAPMF05A.S0100.txt

Para simplificar,  ir a la transacción que queremos modificar y  en la ventana de GuiXT presionar el pulsador Script en la barra de herramientas. Si os fijáis,  en la ventana de GuiXT, en el área de la derecha, aparece la ruta y nombre del archivo para el scripts de GuiXt para la transacción que tengamos activa.

Nombre del archivo que contiene el script de GuiXT

Reglas sintácticas de un scripts de GuiXT:
  • Cada comando está formado por una sola línea. 
  • Los espacios en blanco son ignorados. 
  • GuiXT no es “case sensitive”, no diferencia ente mayúsculas y minúsculas 
  • Se pueden abreviar los textos con él carácter punto ‘.’ 
  • Los elementos/componentes se indican entre corchetes []. 
  • Las coordenadas se indican entre paréntesis (). 
  • La longitud máxima de una línea de scripts es de 4000 caracteres. 
  • Los pulsadores que solo muestran un icono, puede utilizarse su texto de ayuda rápida para identificarlo. 
  • Para usar las comillas dobles dentro de un script, deben ir entrecomilladas a su vez con comillas dobles. 
Elementos/Componentes de la pantalla que podemos manipular con GuiXT:
  • Fields, campos de entrada/salida de datos. 
  • Text Control, textos. 
  • Fields groups, grupos de campos de entrada. 
  • Pushbutton, pulsadores, en la pantalla o en la barra de herramientas 
  • Radiobuttons, radiobuttons de selección.. 
  • Check boxes, casillas de selección o verificación. 
  • Table controls, tablas de datos. 
  • Tabstrips, pestañas. 
  • R/3 controls , controles del sistema SAP. 
  • Menu ítems, elementos de los menús despegables. 
¿Cómo se especifica en un scripts un elemento de la pantalla?

Cada elemento de la pantalla se reconoce por el texto que lo acompaña.


Es lo mismo [Plazo de entrega] que [PLAZO DE ENTREGA] ó [plazo de entrega].
Es lo mismo [Plazo de entrega] que [plazodeentrega] ó [PLAZOde Entrega].
Es lo mismo [Plazo de entrega] que [Plazo de ent.].

También podemos el tipo de elemento delante de los corchetes
  • F[...] Field 
  • G[...] Field group 
  • P[...] Pushbutton 
  • R[...] Radiobutton 
  • C[...] Check box 
  • S[...] Tabstrip 
  • T[...] Table 
  • X[...] R/3 controll (e.g. image control) 
  • M[...] Menu ítem
Los elementos de la ventana activa que podemos modificar aparecen a la izquierda en la ventana de GuiXT

En la ventana GuiXT aparecen todos los elementos de la ventana activa
Dentro de las opciones del perfil de GuiXT podemos seleccionar “No language Key” . Permite referirnos a los elementos de la pantalla por su nombre técnico y no por su descripción o texto en el idioma del usuario, con esta opción podemos crear scripts de GuiXT independientes del lenguaje del usuario.

Referencia a los elementos de pantalla por su nombre tecnico
El nombre técnico de un elemento de la pantalla puede ser averiguado, seleccionándolo con el ratón y con la tecla F1, en la ventana de ayuda que se mostrara a continuación, pulsamos el icono de Ayuda técnica.

GuiXT, como todo lenguaje de programación de scripts, posee un juego de caracteres especiales que pueden ser utilizados como comodines,  son sustituidos en tiempo de ejecución permitiendo así una programación más flexible. Para referirnos a un elemento de la pantalla, que no sabemos qué tipo de elemento es ( F, G, P, R… ) , se puede utilizar el carácter “#”, por ejemplo:

F[Material] es lo mismo que #[Material].

Para extraer el valor de una variable o elemento de la pantalla, se antepone el carácter especial “&” al nombre de la variable (ej. &V[data_nombre] , &F[Material] ).


GuiXT Scripts Editor


GuiXT script Editor es un editor de textos, con diferentes herramientas para la programación de scripts de guiXT. Es gratuito y se puede descargar desde la pagina de synactive. Se instala por defecto, en el mismo directorio donde esta instalado el SapGUI y una vez instalado se configurara como editor por defecto para los scripts de GuiXT.

GuiXT Scripts Editor

Características del GuiXT Script Editor:
  • ANSI y UTF-8 Codepage 
  • Resaltado de sintaxis 
  • Ayuda disponible sobre los comandos de GuiXT 
  • Navegación instantánea a los archivos “include” o “process=” 
  • Conversión de bloques de líneas 
  • Gestión de copias de seguridad 
  • Inserción de bloques de código automático 
  • Inserción de comandos
Una de las ventajas de este editor de texto para la creación de script de GuiXT , es que posee una herramienta para inserción automática de comandos, , cada vez que insertemos un comando, se crearan una o varias líneas , que contienen el comando seleccionado y varias opciones del mismo.

Inserción automática de comandos

Si trabajamos en un sistema SAP con UNICODE, debemos grabar los scripts en formato de codificación de caracteres UTF-8, porque si no, los caracteres especiales (el: diéresis, acentos, letra ñ... ) no se visualizaran correctamente y los elementos de pantalla que lleven esos caracteres no podrán ser reconocidos. El editor soporta UTF-8 desde   su versión 2009 1. 

Si queremos nuestro script en un formato de caracteres ANSI ó UTF-8, grabamos el script desde el menú File  Save as.  GuiXT Script Editor mostrara en que formato estamos trabajando a continuación del nombre del archivo en la esquina superior derecha.

Formato de caracteres ANSI ó UTF-8

Practica 1: Cambiar la disposición de elementos en la pantalla 

Transacción MM01: El usuario, soló necesita un conjunto básico y determinado de campos en la pestaña Datos Básicos 1 para crear nuevos materiales del maestro de materiales cuando crea un nuevo material. Para evitar confusiones y simplificar la pestaña vamos a utilizar un script de GuiXT  para simplificar esta pestaña

Procedimiento: Accedemos a la transacción MM01, después de ejecutar la pantalla de selección, pasamos a la pestaña Datos Básicos 1. Manteniendo esta ventana activa,  saltamos a la ventana de GuiXT y click en el pulsador “SCRIPT”, se abrirá una nueva ventana con el GuiXT Script Editor si esta instalado, si no esta instalado, se abrirá el editor de texto asignado en el perfil ( por defecto el notepad de Windows ).


Como se ha comentado anteriormente, el nombre del archivo donde se guardara el scripts de GuiXT se genera automáticamente y es una combinación del nombre del programa en SAP, un punto, una letra que indica el idioma y la dynpro del programa que esta activa en estos momentos en el SapGui.

Escribimos el siguiente código:

Text F[Material] "Material Nº"
Default F[Unidad medida base] "Kg"
Del F[Sector]

Para copiar mas rápidamente los elementos de la pantalla en el script, si hacemos doble click sobre un elemento en la ventana “Screen Element” del GuiXT, este automáticamente queda copiado en el portapapeles de Windows y con Ctrl+V se copia al editor de texto. 

Grabamos y cerramos el editor, volvemos a entrar en la transacción MM01.

Los elementos de la pantalla han sido modificados por el script de GuiXT
Si al ejecutar el script, ocurriese algún error de sintaxis o de ejecución, el icono de GuiXT de la esquina superior izquierda cambiara a color rojo y en el area de la derecha de la ventana de GuiXT aparecerá en rojo la linea que provoca el error.

El script contiene un error de sintaxis
Vamos a ampliar el script eliminado y desplazando varios elementos de la pestaña Datos Básicos 1

Para borrar elementos de la pantalla utilizamos el comando Del. Con este comando se pueden eliminar de la pantalla campos, pulsadores, radiobuttons, tablas y elementos de los menús.

Opciones:
  • -Triple :Aplicable para campos de salida/entrada con textos adicionales detrás del campo, borra los tres elementos. 
  • -Value :Aplicable para campos de salida/entrada, solo borra el valor que contiene el campo. 
  • -Text :Aplicable para campos de salida/entrada, solo el texto del campo es borrado de la pantalla. 
  • -Box : Aplicable a un grupo de elementos agrupados en un marco, solo el margo alrededor del grupo de elementos se borra de la pantalla. 
  • -WithBox :Aplicable si el elemento de la pantalla es una pestaña ( S[tabstrip] ). Se borra el marco alrededor de los campos.
Ampliamos el script con las siguientes instrucciones:

del F[Jquía.productos] 
del F[Labor/oficina] 
del F[Grupo art. ext.] 
del F[Grupo artículos] 
del F[Válido de] 
del C[Val.parám.validez] 
del F[Gr.tp.pos.gral.] -triple 
del G[Grupo de autoriz. material] 
del F[Status mat.todos ce.] 
del F[Volumen] 
del F[Unidad volumen] 
del F[Tamaño/Dimensión]

Grabamos el script y volvemos a entrar en la transacción MM01 


Con el comando POS, es posible cambiar la posición de los elementos de la pantalla.

pos [screen element] (position X,Y)

Puedes indicar la posición absoluta, por ejemplo (15,10) o relativa a la posición de otro elemento de la pantalla.

Opciones:
  • -Triple : Aplicable para campos de salida/entrada con textos adicionales detrás del campo, desplaza los tres elementos. 
  • -Value :  Aplicable para campos de salida/entrada, solo desplaza el campo. 
  • -Text : Aplicable para campos de salida/entrada, solo desplaza el texto. 
  • width= : Soló para elementos de la pantalla X[...], ej. un grid control: cambia el ancho del elemento de la pantalla..
  • height= : Soló para elementos de la pantalla X[...], ej. un grid control: cambia la altura del elemento de la pantalla.
Ampliamos el script con las siguientes instrucciones:

pos F[Esquema contingente] F[Nºmaterial antiguo]+(1,0)
pos F[Código EAN/UPC] F[Peso neto]+(1,0) 
pos F[Tipo EAN] F[Código EAN/UPC]+(0,40)
pos G[Datos generales] F[Material]+(2,0)
pos G[Dimensiones/EAN] (10,1)
pos G[Datos material de embalaje] (15,1)
pos G[Textos de datos básicos] (18,1)

Por ultimo, con el comando BOXSIZE,  ajustamos los marcos que  agrupan los elementos de la pantalla.

BoxSize G[Marco] (filas,columnas)

Ampliamos el script con las siguientes instrucciones:

boxSize G[Datos generales] (6,83)
boxSize G[Dimensiones/EAN] (5,83)
boxSize G[Datos material de embalaje] (3,83)
boxSize G[Textos de datos básicos] (3,83)


Grabamos el script y volvemos a entrar en la transacción MM01 para ver el resultado final


14 comentarios:

  1. Por lejos el mejor tutorial de GUiXt que he visto.

    Sigue así que es excelente!

    ResponderEliminar
  2. Muy buen tutorial, por casualidad podrias comentar como ocultar o suprimir una solapa o Pestaña?
    Mil gracias de antemano

    ResponderEliminar
    Respuestas
    1. Es igual que con los campos, pero las pestañas, en la ventana de GuiXT, son P en vez de F que son campos de la pantalla.
      Si quisieras borrar o suprimir las pestañas Contabilidad 1 y 2 de la MM03:
      del P[Contabilidad 1]
      del P[Contabilidad 2]

      Eliminar
  3. Hola que muy buen Material, No se si alguien me puede ayudar con lo siguiente, GuiXT me parece algo excelente pero existe alguna manera de dejarlo activo y que el usuario no lo pueda desactivar utilizando ALT + F12 quizás que tenga la opción que solo el administrador lo pueda desactivar o algo parecido.

    ResponderEliminar
    Respuestas
    1. Hola, gracias por los animos. Respecto a tu pregunta, en el registro de windows, busca la entrada:
      HKEY_CURRENT_USER/Software/SAP/SAPGUI Front/SAP Frontend Server/Administration
      Añade una variable de cadena ( Boton derecho -> Nuevo-> Valor de cadena ) con el nombre de "DisappearItems" y valor "Activate GuiXT"

      Eliminar
    2. muchas gracias solo que dentro de SAP Frontend Server solo tengo esto
      Code
      Customize
      I18n
      KeyBoardHandling
      Trace
      TraceALL
      Window

      pero Administration no tengo mi pregunta la puedo crear, muchas gracias.

      Eliminar
    3. Que raro, tienes que tener dos carpetas Administration y Applications antes de la de code.
      Prueba, si puedes, a reinstalar el sapGUI y el GuiXT.
      Aqui tienes una captura del regedit: http://goo.gl/AlpZrs

      Eliminar
    4. Una disculpa pero he realizo pruebas en otra pc y continuo con lo mismo no aparecen las carpetas de administrador en el regedit
      es necesario introducir una keyuser para habilitar en el regedit
      a que se refiere que no es posible en modo Enjoy
      saludos..

      Eliminar
    5. ¿¿?? Vayamos por partes como dijo jack el destripador.
      ¿Que versión de Sapgui esta utilizando? La ultima es 7.30 pero yo uso la 7.2 con nivel de parcheado 12
      ¿Que versión de GuiXT tienes instalada ? La ultima versión es la GuiXT 2013 Q4 2.
      Esquina superior izquierda del SapGui y sobre el símbolo de la ventana, hacer click con el botón derecho del ratón y seleccionar 'Acerca de Sap Logon' -> DLLs cargadas -> busca una que sea guixt.dll, la versión esta a la derecha
      La ultima versión de guixt puedes descargarla de la pagina de Synactive: http://www.synactive.com/index_e.html

      Eliminar
  4. Saludos: como hago para activar el SAP Guixt.? En mi menú aparece el de grabación y reproducción en gris y no me deja activarlo. me podrian indicar como activo esa función. Gracias Oswaldo

    ResponderEliminar
    Respuestas
    1. ¿ Has activado las licencias? mira el articulo -> GUIXT: Instalación y Configuración (II), la parte de License Key,TestKey o UserKey.

      Eliminar
  5. hola David, muy bueno tu articulo... tengo un caso donde creamos un scritp para una transacción usando la versión 710 del sap logon, y ahora cambiamos a saplogon 730 y el script no se comporta correctamente, pues unos radiobutton que definimos al marcar uno, esta marca se corre al rariobutton que esta justo sobre el marcado, lo cual genera errores en proceso... tienes alguna idea de que puede estar erroneo? será necesario crear un nuevo script usando saplogon 730? muchas gracias!

    ResponderEliminar
  6. Buen día

    Modifiqué los elementos de una Antillas SAP como n guiXT pero quieto regresarlos a su estado original

    Gracias

    ResponderEliminar
    Respuestas
    1. En el editor tienes los botones UNDO/REDO para recuperar los cambios que hagas en el script
      Si lo has modificado y grabado, si no has hehco copia del script no creo que puedas

      Eliminar