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.
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.
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.
- Entrar al sistema Sap con nuestro usuario y contraseña.
- Sin salir del sistema, saltamos a la ventana de GuiXT y después al perfil de GuiXT.
- Marcar la casilla de InputAssistant.
- Introducimos una User Key cualquiera ( ej: 1234567890 ).
- Comprobar que el el ID del sistema SAP esta en la casilla "Enabled Systems", sino introducirlo.
- 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 |
En las próximas entradas mostrare más ejemplos que se pueden realizar con GuiXT scripts + Inputscript.
Fuente:
Entradas Anteriores:
GUIXT: Introducción
GUIXT: Instalación y Configuración (I)
GUIXT: Instalación y Configuración (II)
GUIXT: Los Scripts de GuiXT
GUIXT: Añadir y Modificar campos de texto, pulsadores y radiobuttons
Entradas Siguientes:
GUIXT: Estructuras de control
GUIXT: Teclado numérico táctil para Sap
No hay comentarios:
Publicar un comentario