miércoles, 4 de septiembre de 2013

GUIXT: El modulo InputAssistant

Un InputScript es un archivo de texto que contiene instrucciones para procesar datos y navegar a través de diferentes dynpros del sistema Sap. Un InputScript pueden inicializar variables, leer y guardar la información de los campos de una dynpro, procesarlos ( puede llamar a bapis del sistema Sap a través de RFC ) y utilizar esa información para procesar una transacción o dynpro en el sistema Sap.

Su funcionamiento es muy parecido a los batch input en Sap, pero un inputscript puede guardarse en archivos de texto para luego, ejecutarlo desde un  GuiXT script. 

InputAssistant es el modulo de GuiXT encargado de ejecutar los InputScripts. Aunque viene incluido en el software de GuiXT, requiere de una licencia valida para su uso. Si intentamos ejecutar un script que requiera el modulo de  InputAssistant, aparecerá un error de licencia no valida o inexistente en la ventana de GuiXT.

InputAssistant: licencia no valida o inexistente
El modulo InputAssistant se activa desde el perfil de GuiXT. Rellenando el siguiente formulario ( menú de la izquierda -> INSTALLATION -> TESTKEY ). Synactive nos enviara una licencia de uso valida por 1 mes.

Perfil de GuiXT: Activar los módulos de GuiXT
Es posible activar el modulo InputAssistant temporalmente, únicamente durante la sesión activa del sistema Sap. 

  1. Entrar al sistema Sap con nuestro usuario y contraseña.
  2. Sin salir del sistema, saltamos a la ventana de GuiXT y después al perfil de GuiXT.
  3. Marcar la casilla de InputAssistant.
  4. Introducimos una User Key cualquiera ( ej: 1234567890 ).
  5. Comprobar que el el ID del sistema SAP esta en la casilla "Enabled Systems", sino introducirlo.
  6. OK y volvemos al sistema Sap.

Volvemos a entrar en la transacción  y los mensajes de error de licencia habrán desaparecido. Si salimos del sistema Sap, al volver a entrar,  tendremos que repetir todo el proceso.

Perfil de GuiXT: activar temporalmente InputAssistant
Grabación de un InputScript con GuiXT

Activamos/Desactivamos la grabación de inputscripts desde el menú Options -> Input Recording.
Otra opción es desde la barra de herramientas de la ventana de GuiXT pulsando el botón "Record".


Cada vez que realizamos una grabación, se genera un archivo "InputScript.txt" automáticamente, donde quedan registrados todos los datos introducidos y las acciones realizadas.Este archivo, se reescribe con cada nueva grabación, se recomienda que,al finalizar la grabación de un inputscript, re-nombrarlo con otro nombre para poder editarlo posteriormente y evitar así su perdida.

Los archivos se guardan, por defecto,en la dirección especificada en el perfil de GuiXT.


Lo mejor es explicar el proceso con un ejemplo. 
Vamos a grabar un inputscript de la transacción ME2L:

   1.- Activamos la grabación desde la ventana de GuiXT. El botón "Record" cambiara a "ON".


   2.- Desde el sistema Sap, accedemos a la transacción ME2L.


   3.- Rellenamos la pantalla de selección ( Ej. centro 5000 )  y ejecutamos la transacción. 


   4.- Terminada la ejecución , detenemos la grabación en la ventana de GuiXT. El botón "ON" cambiara a "Record".


   5.- Click en el botón "RecScript" de la barra de herramientas de la ventan de GuiXT


   6.- File -> Save As..  Renombrar y grabar el script.

Ejecutar Un InputScripts

Se puede ejecutar un inputscript de diferentes formas, lo normal es ejecutarlo a través de una acción del usuario sobre un elemento de la pantalla ( pulsadores, Códigos de función, Menús, etc… ), desde un GuiXT script o desde otro inputscript.

Continuando con el ejemplo anterior, vamos a crear un botón en la transacción ME2L que cuando el usuario lo pulse, ejecute el inputscript que hemos creado anteriormente.

Primero creamos el script para modificar la dynpro y añadir el botón a la transacción ME2L

Pushbutton (toolbar) "@3B\QConsultar centro 5000@Centro 5000" process="centro5000.txt"


la opción process indica el archivo que contiene el inputscript que debe ejecutarse si el usuario pulsa el botón. El inputscript, al igual que el guixt script,  debe localizarse en uno de los 4 posibles directorios que se pueden especificar en el perfil de GuiXT.


Testear un InputScripts

Seamos sinceros, pocas veces en la programación un código funciona a la primera.  A base de prueba y error depuramos el código hasta que funciona como se había diseñado sobre el papel. GuiXT tiene dos opciones para comprobar el funcionamiento del script:
  • Una herramienta para Trazar la ejecución del script.
  • Ejecutar el script en modo visible y poder ver, en tiempo real, como se procesa cada dynpro.
Para ejecutar el inputscript en modo visible, antes de realizar el evento o acción que lanzara el inputscript, pulsar el botón "visible" de la barra de herramientas de la ventana de GuiXT. Se activara el modo visible y todos los inputscript que se ejecuten a partir de este momento,  mostrara todas las pantallas por la que pasen  deteniéndose en cada comando. Con la tecla “Enter” ejecutaremos el comando y saltara al siguiente comando.

Al activar el modo visible, el boton "Visible" cambiara a "ON"

Activar modo visible
GuiXT InputScript Debug

El debugger de GuiXT se lanza desde la barra de herramientas de la ventana de GuiXT.


En  el momento en que se ejecute un inputscript, se lanzara el modo debugger y aparecera en pantalla la ventana del debugger. Si cerramos esta ventana, interrumpiremos el proceso del debugger y continuara  la ejecución normal del inputscript.

Inputscript debugger

En la ventana del debugger podemos ver:
  • El contenido de cada variable.
  • Evaluar expresiones que contenga variables, parámetros o campos de entrada.
  • Procesar el inputscript paso a paso.
  • Colocar breakpoint.
Un script se ejecuta secuencialmente, linea a linea. En la ventana del debugger, la línea que va a ser procesada, aparece resaltada en amarillo. Para colocar un breakpoint bastara hacer doble click sobre la línea deseada, pasando esta a un color azul, un doble click sobre una línea en azul elimina el breakpoint. 

Cuando se alcanza un breakpoint, la línea aparece en verde. 
Cualquier error de sintaxis al ejecutar una línea se mostrara en un popup 

El Debugger solo se activa con Inputscript, no funcionara con GuiXT Scripts.

El contenido de las variables se muestra es la ventana de la izquierda

Inputscript Debug: contenido de las variables del script

Para detectar y solucionar errores de programación, también necesitamos poder trazar la ejecución de nuestro código, poder analizar como y cuando se ha ejecutado cada instrucción. En la barra de herramientas podemos activar el modo "TRACE". 

Activar TRACE
Cuando lo activemos, después de ejecutar cualquier inputscript, aparecerá un log con la traza de ejecución del inputscript.

Trace del inputscript startva01.txt


Un ejemplo de GuiXT script + InputScript


En este caso se va a desarrollar un menú de acceso rápido para la creación de pedidos de venta ( transacción VA01 ), el objetivo es que el usuario pueda crear los pedidos para las diferentes organizaciones de venta de una manera rápida y sencilla.

Desde la transacción VA01, saltamos a la ventana de guiXT. Pulsamos “SCRIPT” en barra de herramientas de la ventana de  GuiXT. Se despliega el editor de scripts que tengamos configurado en el perfil de GuiXT.


Escribir el siguiente código y guardar el script.

//Caja e imagen
box (2,70) (10,110) "Acceso rápido"
Image (2.7,70.3) (9.2,84.6) "tickets.jpg" "-plain"

// Orden por defecto
if not V[VA01_Ordertype]
    Set V[VA01_Ordertype] "CS"
endif

// RadioButton de seleción
RadioButton (3,86) "Ventas canal 1000" Name="VA01_Ordertype" value="CS"
RadioButton (4,86) "Ventas canal 2000" Name="VA01_Ordertype" value="RO"
RadioButton (5,86) "Ventas canal 3000" Name="VA01_Ordertype" value="IO"
RadioButton (6,86) "Menu principal " Name="VA01_Ordertype" value="RE"

Pushbutton (8,86) "Crear pedido de ventas" "/NVA01" Process="startva01.txt" "size=2"

Cuando el usuario pulse el botón "Crear pedido de ventas" se ejecutara el inputscript guardado en el archivo startva01.txt.
Para crear el inputscript, desde la ventana de GuiXT, pulsar "InputScript" en la barra de herramientas de la ventana GuiXT.  Se despliega el editor de scripts que tengamos configurado en el perfil de GuiXT.


Escribimos el siguiente código y guardamos como startva01.txt en el directorio correspondiente.

// InputScript "startva01.txt"
Screen SAPLSMTR_NAVIGATION.0100
Enter "/nva01"

// Crear pedido de cliente: Acceso
Screen SAPMV45A.0101

IF V[VA01_Ordertype=CS]
   Set F[Clase de pedido] "ZPED"
   Set F[Organización ventas] "1000"
   Set F[Canal distribución] "10"
   Set F[Sector] "10"

   Enter

ENDIF


IF V[VA01_Ordertype=RO]
   Set F[Clase de pedido] "ZPED"
   Set F[Organización ventas] "2000"
   Set F[Canal distribución] "10"
   Set F[Sector] "10"

   Enter

ENDIF


IF V[VA01_Ordertype=IO]
   Set F[Clase de pedido] "ZPED"
   Set F[Organización ventas] "9000"
   Set F[Canal distribución] "10"
   Set F[Sector] "10"

   Enter

ENDIF


IF V[VA01_Ordertype=RE]
   Set F[Clase de pedido] ""
   Set F[Organización ventas] ""
   Set F[Canal distribución] ""
   Set F[Sector] ""
ENDIF

Volvemos a entrar en la transacción VA01 para ver el resultado.

VA01: acceso rápido

No hay comentarios:

Publicar un comentario