Mostrando entradas con la etiqueta scripts. Mostrar todas las entradas
Mostrando entradas con la etiqueta scripts. Mostrar todas las entradas

jueves, 5 de diciembre de 2013

GUIXT: Teclado numérico táctil para Sap

Este es uno de los ejemplos de Synactive para GuiXT que más me gusta y que demuestra lo que se puede llegar ha hacer en Sap con GuiXT. 

Es un teclado numérico para pantallas táctiles con el que el usuario puede introducir el código de material y acceder a la información del mismo en el maestro de materiales del sistema Sap.


Por un lado, tenemos el GuiXT scripts que modifica la pantalla y añade los botones del teclado numérico.

Por otro, el archivo Digit.txt contiene el inputscript que va concatenando las pulsaciones del usuario en el teclado numérico.

Empezemos por las imagenes que harán la función de botones del panel numérico y pantalla donde se mostrara el codigo introducido.D
Descargar las siguientes imágenes ( boton derecho -> Guardar imagen como... ) y guardarlas en el mismo directorio donde guardáis los scripts de GuiXT.


Pantalla y pulsador del teclado numérico

Para crear el GuiXT script:

  1.  Acceder a la transacción MM03 y cambiamos a la ventana de GuiXT.
  2.  Pulsar el boton SCRIPT en la barra de herramienta de la venta de GuiXT.
  3.  Copiamos el siguiente código y grabamos
  4. GuiXT Script Editor

if Q[Transaction=MM03] pos F[Material] (8,52) // Display numeric keypad Offset (1,1) Image (0,0) "numbutton.gif" Input="U[digit]:7;OK:process=digit.txt" -plain textstring="7" textheight=80 -textcenter Image (0,15) "numbutton.gif" Input="U[digit]:8;OK:process=digit.txt" -plain textstring="8" textheight=80 -textcenter Image (0,30) "numbutton.gif" Input="U[digit]:9;OK:process=digit.txt" -plain textstring="9" textheight=80 -textcenter Image (5,0) "numbutton.gif" Input="U[digit]:4;OK:process=digit.txt" -plain textstring="4" textheight=80 -textcenter Image (5,15) "numbutton.gif" Input="U[digit]:5;OK:process=digit.txt" -plain textstring="5" textheight=80 -textcenter Image (5,30) "numbutton.gif" Input="U[digit]:6;OK:process=digit.txt" -plain textstring="6" textheight=80 -textcenter Image (10,0) "numbutton.gif" Input="U[digit]:1;OK:process=digit.txt" -plain textstring="1" textheight=80 -textcenter Image (10,15) "numbutton.gif" Input="U[digit]:2;OK:process=digit.txt" -plain textstring="2" textheight=80 -textcenter Image (10,30) "numbutton.gif" Input="U[digit]:3;OK:process=digit.txt" -plain textstring="3" textheight=80 -textcenter Image (15,0) "numbutton.gif" Input="U[digit]:0;OK:process=digit.txt" -plain textstring="0" textheight=80 -textcenter Image (15,15) "numbutton.gif" Input="U[digit]:back;OK:process=digit.txt" -plain textstring="Back" textheight=40 -textcenter Image (15,30) "numbutton.gif" Input="U[digit]:clear;OK:process=digit.txt" -plain textstring="Clear" textheight=40 -textcenter // Display material number Image (1,50) (6,130) "whitebox.gif" -plain textstring="&F[Material]" textfont="Arial" textheight="100" endif


Lo mas importante son los parámetros Input="U[digit]:1;OK:process=digit.txt" y textstring="0".

En anteriores entradas se explico que el  parámetro Input permite volver interactiva la imagen y que al hacer clic sobre ella se ejecuten una serie de acciones. Estas acciones pueden ir desde guardar algún dato en una variable a ejecutar un inputscript o llamar a una transacción del sistemas Sap.

Cada acción que deseamos ejecutar va separada por ';' .
OK representa la acción de presionar la tecla Intro.

En este ejemplo estamos programando, que cuando el usuario haga clic sobre la imagen, se realicien las siguientes acciones:

  1. Asignar el dato '1' a la variable U[digit] .  U[digit]:1
  2. Intro                                                        OK
  3. Ejecutar el InputScript digit.txt                 process=digit.txt
El parámetro textstring pinta sobre la imagen un texto, puede ser un texto fijo como los números del teclado o estan contenido en una variable como textstring="&F[Material]" , en este caso F[Material] es una variable donde vamos concatenando los números que selecciona el usuario.

Para crear el Inputscript:

  1. Pulsar el botón INPUTSCRIPT en la la barra de herramienta de la venta de GuiXT.
  2. Copia el siguiente código.
  3. Guarda el inputscript como digit.txt en el mismo directorio que el guixt script.

InputScript editor
Parameter digit Set V[matnr] "&F[Material]" if U[digit=clear] Set V[matnr] "" goto return endif if U[digit=back] Set V[k] "&V[matnr]" -stringlength if V[k>0] Set V[k] &V[k] - 1 Set V[matnr] "&V[matnr](1-&V[k])" endif goto return endif Set V[matnr] "&V[matnr]&U[digit]" Set V[matnr] "&V[matnr](1-8)" label return Set F[Material] "&V[matnr]" Return

Es como una subrutina. Recibe un parámetro digit, comprueba su valor y actua en consecuencia

Cuando llamamos al inputscripts, damos valor a parámetro digit  y creamos la variable matnr con el valor actual del campo de pantalla Material de la transacción MM03. Después actuamos dependiendo del valor que nos han pasado en el parámetro digit.  Si es un numero concatenamos el valor actual  y el nuevo número, limitamos a 8 digitos y devolvemos el dato al elemento de la pantalla.

La instrucción goto return rompe la ejecución des inputscript y salta a la etiqueta return.

Recordemos:
U[...]  es un parámetro.
V[...]  es una variable
F[.....] es un elemento de pantalla de sap


Ya solo queda acceder a la transacción MM03 y ver el resultado.
Recordar activar el modulo InputAssistant o no funcionara el inputscript.


Fuente:
Display a numeric keypad ( Ir a Tips&Trick -> nº 26 Display a numeric keypad ).

Entradas Anteriores:

jueves, 3 de octubre de 2013

GuiXT: Estructuras de control

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.

IF/ELSE/ENDIF
De acuerdo a una condición, ejecuta un grupo u otro de sentencias.

IF Q[Status=ADD1] OR Q[Status=UPD1]
   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
También puede comprobar el valor de una variable del sistema.

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 InputAssistant
  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  



GOTO/LABEL
Salta desde  la instrucción GOTO hasta la instrucción LABEL especificada y continua la ejecución del script

GOTO  labelname
LABEL labelname 

Por ejemplo:


IF NOT Q[Status=UPD1] 
   GOTO NextPosition
ELSE
   GOTO exit
ENDIF.


LABEL NextPosition
Screen SAPMVCF66G.0400
ENTER "/niw22" onError="Retry"
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 "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"

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
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"


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



Fuente:

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