En cualquier lenguaje de programación encontraremos estructuras de control. Su función es, permitir controlar el flujo de ejecución de un programa. En GuiXT, los scripts del modulo Inputassistant se ejecutan secuencialmente, linea a linea en el orden escrito.
Con las estructuras de control podemos controlar esta ejecución secuencial de los script.
En las próximas entradas mostrare ejemplos prácticos de como estructurar los inputscripts. No os asustéis si no entendéis ahora como funcionan las estructuras de control, se comprenden mejor cuando ves el código funcionando.
De acuerdo a una condición, ejecuta un grupo u otro de sentencias.
Image (1,50) (10,90) "imgupd.gif"
ELSE
Image (1,50) (10,90) "imgdis.gif"
ENDIF
La condición puede exigir que exista o no ciertos elementos en la pantalla, y si están o no activos.
- IF F[cantidad] Si hay un campo en pantalla llamado “cantidad”
- IF I[codigo] Si hay un campo de entrada de datos llamado “código”
- IF P[Cancelar] Si hay un pulsador llamado “cancelar” en la pantalla
- IF M[Cambiar] Si hay un elemento del menú “Cambiar”
- IF M[Cambiar=active] igual que la anterior, pero además debe estar activo
Si el GUI-Status es xxxx
IF Q[Status=xxxx]
Si la clave de idioma es x (1 carácter, E=Ingles, D=Alemán, F=Frances, I=Italiano,...)
IF Q[Language=x]
Si el sistema (database server) id es xxx ( PYB, C23, … )
IF Q[Database=xxx]
Si el cliente es xxxx
IF Q[Client=xxx]
Si el usuario es xxx
IF Q[User=xxx]
Si el Role es xxx (ver 4.14 Roles y Usuarios SAP)
IF Q[Role=xxx]
Si el profile es xxx
IF Q[Profile=xxx]
Si el cod. De la transacción es xxxx ( sólo para R/3 Rel.4 y superior )
IF Q[Transaction=xxxx]
Si la variante de pantalla xxx esta activa
IF Q[ScreenVariant=xxxx]
Si la versión de GuiXT es igual a yyyy Qx x. Se puede utilizar <, = o >.
IF Q[GuiXTVersion=yyyy Qx x]
Si el usuario a provocado un StopRequest en un InputScript (se ha ejecutado un StatusMessage)
IF Q[StopRequest]
Si la pestaña actual es xxxxx (xxxxx es el texto de la pestaña)
IF Q[Page=xxxx]
Si la variable “vname2 contiene el valor “value” (solo posible con InputAssistant)
IF V[vname=value]
Si el parámetro “úname” contiene el valor “value” (solo posible con InputAssistantIF Q[Status=xxxx]
Si la clave de idioma es x (1 carácter, E=Ingles, D=Alemán, F=Frances, I=Italiano,...)
IF Q[Language=x]
Si el sistema (database server) id es xxx ( PYB, C23, … )
IF Q[Database=xxx]
Si el cliente es xxxx
IF Q[Client=xxx]
Si el usuario es xxx
IF Q[User=xxx]
Si el Role es xxx (ver 4.14 Roles y Usuarios SAP)
IF Q[Role=xxx]
Si el profile es xxx
IF Q[Profile=xxx]
Si el cod. De la transacción es xxxx ( sólo para R/3 Rel.4 y superior )
IF Q[Transaction=xxxx]
Si la variante de pantalla xxx esta activa
IF Q[ScreenVariant=xxxx]
Si la versión de GuiXT es igual a yyyy Qx x. Se puede utilizar <, = o >.
IF Q[GuiXTVersion=yyyy Qx x]
Si el usuario a provocado un StopRequest en un InputScript (se ha ejecutado un StatusMessage)
IF Q[StopRequest]
Si la pestaña actual es xxxxx (xxxxx es el texto de la pestaña)
IF Q[Page=xxxx]
Si la variable “vname2 contiene el valor “value” (solo posible con InputAssistant)
IF V[vname=value]
IF U[uname=value]
Los IF/ELSE/ENDIF anidados están permitidos y también se pueden utilizar en la condiciones, los operadores lógicos and, not, or.
Por ejemplo, estaría permitido el siguiente código:
IF NOT Q[Status=UPD1]
Image (1,50) (10,90) "imgdis.gif"
ELSE
IF (F[Company code] OR F[Business area]) AND NOT F[Order number]
Image (1,50) (10,90) "imgupd1.gif"
ELSE
Image (1,50) (10,90) "imgupd2.gif"
Pushbutton (Toolbar) "Cancel" "/OZC27"
ENDIF
ENDIF
Por ejemplo:
LABEL NextPosition
Screen SAPMVCF66G.0400
INCLUDE "includename"
INCLUDE "radiobuttons_company.txt"
También se pueden especificar otras localizaciones.
INCLUDE "\\server12\guixt\inlcudes\r105.txt"
INCLUDE "SAPWR:ZGUIXT.r105.txt" ( SAP WEB Repository )
INCLUDE "http://www.synactive.com/includes/r105.txt"
ON
Si el usuario presiona la tecla Enter ó una tecla o combinación de teclas especiales del teclado ( F1, F2, F3….Shift+F1, Shift+F2,Shift+F3…) se ejecita el inputscript indicado en el parámetro PROCESS
ON "Enter" Process="nextproduct.txt"
ON "/11" Process="update.txt"
SCREEN SAPMF05A.0300
RETURN "message text"
RETURN "message text" "title"
Ejemplos:
Returnvalues string
Returnvalues "V[mat]:&V[matnr]"
Este comando se entiende mejor con un simple ejemplo:
Por un lado, un script de GuiXt, sencillo y simple, para añadir un pulsador en la barra de herramientas de la transacción VA01 que genere un nuevo modo de la transacción VA03
Pushbutton (toolbar) "Test Returnvalues" "/OVA03" process="tv.txt"
Offset (10,0)
Text (0,0) "&V[t1]"
Text (1,0) "&V[t2]"
Textbox (2,1) (8,100) name="txt1"
Pushbutton (Toolbar) "Cancel" "/OZC27"
ENDIF
ENDIF
GOTO/LABEL
GOTO labelname
LABEL labelname
Salta desde la instrucción GOTO hasta la instrucción LABEL especificada y continua la ejecución del script
LABEL labelname
Por ejemplo:
IF NOT Q[Status=UPD1]
GOTO NextPosition
ELSE
GOTO exit
ENDIF.
GOTO NextPosition
ELSE
GOTO exit
ENDIF.
LABEL NextPosition
Screen SAPMVCF66G.0400
ENTER "/niw22" onError="Retry"
LEAVE
LABEL exit
LEAVE
LEAVE
LABEL exit
LEAVE
INCLUDE
Incluir un archivo de scripts, idéntico al comando INCLUDE de ABAP, si el archivo indicado es localizado dentro del directorio de script indicado en el perfil, se tratara como si formase parte del script original.INCLUDE "radiobuttons_company.txt"
También se pueden especificar otras localizaciones.
INCLUDE "\\server12\guixt\inlcudes\r105.txt"
INCLUDE "SAPWR:ZGUIXT.r105.txt" ( SAP WEB Repository )
INCLUDE "http://www.synactive.com/includes/r105.txt"
STOP
Detiene el procesamiento del Inputscript y regresa a la pantalla inicial.
...
STOP
...
LEAVE
Detiene y termina el proceso actual del Inputscript, se muestra la pantalla actual y termina, al contrario que el comando STOP que regresa a la pantalla inicial.
...
LEAVE
...
ON
Si el usuario presiona la tecla Enter ó una tecla o combinación de teclas especiales del teclado ( F1, F2, F3….Shift+F1, Shift+F2,Shift+F3…) se ejecita el inputscript indicado en el parámetro PROCESS
ON "Enter" Process="nextproduct.txt"
ON "/11" Process="update.txt"
Por ejemplo, cuando el usuario presione la combinación Ctrl+Shift+F3, se simula la acción de Enter y se ejecuta el script Warning.txt
ON "/39" Fcode="/0" Process="warning.txt"
Los códigos del /13 al /48 representan combinaciones de teclas con la tecla control o/y shift:
Shift+F1 /13 Ctrlt+F1 /25 Shift+Ctrl+F1 /37
Shift+F2 /14 Ctrlt+F2 /26 Shift+Ctrl+F2 /38
Shift+F3 /15 Ctrlt+F3 /27 Shift+Ctrl+F3 /39
Shift+F4 /16 Ctrlt+F4 /28 Shift+Ctrl+F4 /40
Shift+F5 /17 Ctrlt+F5 /29 Shift+Ctrl+F5 /41
Shift+F6 /18 Ctrlt+F6 /30 Shift+Ctrl+F6 /42
Shift+F7 /19 Ctrlt+F7 /31 Shift+Ctrl+F7 /43
Shift+F8 /20 Ctrlt+F8 /32 Shift+Ctrl+F8 /44
Shift+F9 /21 Ctrlt+F9 /33 Shift+Ctrl+F9 /45
Shift+F10 /22 Ctrlt+F10 /34 Shift+Ctrl+F10 /46
Shift+F11 /23 Ctrlt+F11 /35 Shift+Ctrl+F11 /47
Shift+F12 /24 Ctrlt+F12 /36 Shift+Ctrl+F12 /48
SCREEN program.screennumber
Por Ejemplo, esto inicia el procesamiento de la dynpro 300 del programa SAPMF05A.
ON "/39" Fcode="/0" Process="warning.txt"
Los códigos del /13 al /48 representan combinaciones de teclas con la tecla control o/y shift:
Shift+F1 /13 Ctrlt+F1 /25 Shift+Ctrl+F1 /37
Shift+F2 /14 Ctrlt+F2 /26 Shift+Ctrl+F2 /38
Shift+F3 /15 Ctrlt+F3 /27 Shift+Ctrl+F3 /39
Shift+F4 /16 Ctrlt+F4 /28 Shift+Ctrl+F4 /40
Shift+F5 /17 Ctrlt+F5 /29 Shift+Ctrl+F5 /41
Shift+F6 /18 Ctrlt+F6 /30 Shift+Ctrl+F6 /42
Shift+F7 /19 Ctrlt+F7 /31 Shift+Ctrl+F7 /43
Shift+F8 /20 Ctrlt+F8 /32 Shift+Ctrl+F8 /44
Shift+F9 /21 Ctrlt+F9 /33 Shift+Ctrl+F9 /45
Shift+F10 /22 Ctrlt+F10 /34 Shift+Ctrl+F10 /46
Shift+F11 /23 Ctrlt+F11 /35 Shift+Ctrl+F11 /47
Shift+F12 /24 Ctrlt+F12 /36 Shift+Ctrl+F12 /48
SCREEN
Con este comando, iniciamos el proceso automático de una dynpro en un Inputscrip. Es muy util porque puedes llamar a una dynpro de Sap, rellenar los campos de la dynpro y ejecutar un Enter para procesarla.
Con este comando, iniciamos el proceso automático de una dynpro en un Inputscrip. Es muy util porque puedes llamar a una dynpro de Sap, rellenar los campos de la dynpro y ejecutar un Enter para procesarla.
SCREEN program.screennumber
Por Ejemplo, esto inicia el procesamiento de la dynpro 300 del programa SAPMF05A.
SCREEN SAPMF05A.0300
RETURN
Termina la ejecución de un InputScript. RETURN "message text"
RETURN "message text" "title"
Ejemplos:
RETURNVALUES
Con este comando, podemos retornar información de un modo abierto con el código “/O” ..., “process=...” al modo desde el que lo hemos abierto, retornando información que podemos utilizar en campos de entrada de datos.Returnvalues string
Returnvalues "V[mat]:&V[matnr]"
Este comando se entiende mejor con un simple ejemplo:
Por un lado, un script de GuiXt, sencillo y simple, para añadir un pulsador en la barra de herramientas de la transacción VA01 que genere un nuevo modo de la transacción VA03
Pushbutton (toolbar) "Test Returnvalues" "/OVA03" process="tv.txt"
Offset (10,0)
Text (0,0) "&V[t1]"
Text (1,0) "&V[t2]"
Textbox (2,1) (8,100) name="txt1"
tv.txt es un inputscritp vacio, un archivo txt vacío completamente.
En la transacción VA03 , implementamos otro scripts de GuiXT para incluir unos campos de texto y un pulsador en la barra de herramientas que al pulsar cierre el modo y retorne a la transacción VA01
Offset (15,1)
Box (0,0) (10,42) "Test Returnvalues"
InputField (1,0) "Line1" (1,8) size=30 name=t1
InputField (2,0) "Line2" (2,8) size=30 name=t2
Textbox (3,0) (9,40) name="txt1"
Pushbutton (toolbar) "return values" process="rv.txt"
El inputscritp rv.txt es el encargado de retornar los texto introducidos en pantalla al modo que genero el modo activo.
Returnvalues "V[t1]: &V[t1];"
Returnvalues "V[t2]: &V[t2];"
Returnvalues "Text[txt1]:&Text[txt1];"
Returnvalues "OK:/0"
Enter "/i"
Offset (15,1)
Box (0,0) (10,42) "Test Returnvalues"
InputField (1,0) "Line1" (1,8) size=30 name=t1
InputField (2,0) "Line2" (2,8) size=30 name=t2
Textbox (3,0) (9,40) name="txt1"
Pushbutton (toolbar) "return values" process="rv.txt"
El inputscritp rv.txt es el encargado de retornar los texto introducidos en pantalla al modo que genero el modo activo.
Returnvalues "V[t1]: &V[t1];"
Returnvalues "V[t2]: &V[t2];"
Returnvalues "Text[txt1]:&Text[txt1];"
Returnvalues "OK:/0"
Enter "/i"
Va01 + GuiXT para generar un nuevo modo /Ova03 |
VA03 con campos para introducir texto, al pulsar "return values" retorna los valores a la VA01 |
VA01 y los valores retornados por el modo VA03 al ejecutar el inputscripts |
RETRY ON ERROR
En Sap, es posible, que al procesar una dynpro, aparezcan mensajes de error o warnings. Estos mensajes, no dejan continuar con la ejecución hasta que el usuario pulsa la tecla Enter. Con esta instrucción, si durante el proceso de una dynpro surge un mensaje de error por pantalla ,simulara la acción de la tecla Enter hasta que este mensaje desaparece. La acción se repite 20 veces en incrementos de 0,3 segundos 0,3…0,6...0,9…0,12… hasta que desaparece el mensaje.
Si el mensaje de error continua, se continua con el proceso del Inputscript como si no hubiese ocurrido la ejecución del comando Retry on error.
Este comando no tiene ningún parámetro adicional
Screen SAPMF02C.0100
Retry on error
Set F[Customer] "&V[xd01_account]"
Set F[Credit control area] "1000"
Enter
Entradas Siguiente:
GUIXT: Teclado numérico táctil para Sap
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
GUIXT: El modulo InputAssistant
En Sap, es posible, que al procesar una dynpro, aparezcan mensajes de error o warnings. Estos mensajes, no dejan continuar con la ejecución hasta que el usuario pulsa la tecla Enter. Con esta instrucción, si durante el proceso de una dynpro surge un mensaje de error por pantalla ,simulara la acción de la tecla Enter hasta que este mensaje desaparece. La acción se repite 20 veces en incrementos de 0,3 segundos 0,3…0,6...0,9…0,12… hasta que desaparece el mensaje.
Si el mensaje de error continua, se continua con el proceso del Inputscript como si no hubiese ocurrido la ejecución del comando Retry on error.
Este comando no tiene ningún parámetro adicional
Screen SAPMF02C.0100
Retry on error
Set F[Customer] "&V[xd01_account]"
Set F[Credit control area] "1000"
Enter
Fuente:
Entradas Siguiente:
GUIXT: Teclado numérico táctil para Sap
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
GUIXT: El modulo InputAssistant
Tengo algunas dudas, espero me pueda apoyar, en la transacción IP15, quiero ejecutar lo siguienre:
ResponderEliminar* Enter "/5" // Para seleccionar toda la tabla
Y que enseguida de seleccionar toda la tabla, ejecute:
* Enter "/8" // Para ejecutar la transacción,
Pero me marca un error, se queda dando el primer "enter" y no me cambia a las pantallas siguientes.
Has probado con la opción OnError
EliminarEnter "/5" OnError="Continue"
En la ayuda de synactive tienes las opciones del ENTER
http://www.synactive.com/docu_e/doc_enter.html