lunes, 16 de diciembre de 2013

Definir una impresora PDF en Sap

Es un tema muy común que piden muchos clientes, la posibilidad de generar un documento PDF en vez de imprimir el documento o listado en papel a través de un impresora.

Primero,  en el equipo local debe estar configurada una impreso tipo Generic/ Text Only y que como formato de salida tenga FILE:

Ir a  Inicio -> Panel de control -> Dispositivos e Impresoras.

Seleccionamos Agregar una impresora -> Agregar una impresora local
Cuando nos pida elegir un puerto para la impresora -> FILE


Puerto FILE: la salida sera un archivo

Como controlador o driver, selecciona Generic -> Generic text only.

Dejar el nombre que nos da por defecto para la impresora o escribir uno nuevo y siguiente.
Para finalizar, como se ejecutara locamente, yo le doy no compartir y desmarco impresora predeterminada


Controlador Generic/Text Only

Para definir una impresora PDF en Sap, nos vamos a la transacción SPAD y  pulsar el botón Visual del campo Dispositivos salida de la pestaña Dispos.y servidor.


Definir nueva impresora en el sistema Sap
En pantalla aparece una lista de todos los dispositivos de impresión existente.
Nos posicionamos sobre cualquiera de ellos y pulsamos el lápiz en la barra de herramientas

Modificar Dispositivo de salida

Aparecerá el icono CREAR en la barra de herramientas, pulsa sobre el .

Crear nuevo dispositivo de salida

Pestaña Atrib.dispos. -> Dispositivo de salida:  nombre del dispistivo de salida en sap, por ejemplo PDF_PRUEBA.
Pestaña Atrib.dispos. -> Nombre breve: PDF1
Pestaña Atrib.dispos. -> Tipo de dispositivo:  PDF1 ISO Latin-1



En la pestaña Acoplam. SPOOL host para Forma acopl.a SPOOL host -> seleccionamos G: Impresión front-end c/tecnologia control.

En Impresora Host escribimos cualquier nombre y grabamos el nuevo dispositivo de salida

Para probarlo, por ejemplo, podemos usar la transacción SM04 he intentar imprimir en pdf la lista de usuarios conectados al sistema Sap. 

SM04 y si impresión en PDF

Entradas relacionadas
Definir una nueva impresora en SAP
Upload drivers de impresora a SAP

jueves, 12 de diciembre de 2013

Definir una nueva impresora en SAP

Para definir nuevas impresoras en SAP , nos vamos a la transacción SPAD  , pulsar el botón Visual del campo Dispositivos salida de la pestaña Dispos.y servidor.


Definir nueva impresora en el sistema Sap
En pantalla aparece una lista de todos los dispositivos de impresión existente.
Nos posicionamos sobre cualquiera de ellos y pulsamos el lápiz en la barra de herramientas

Modificar Dispositivo de salida

Aparecerá el icono CREAR en la barra de herramientas, pulsa sobre el .

Crear nuevo dispositivo de salida

En la siguiente pantalla, vamos primero a la pestaña Atrib.dispos.

Dispositivo salida: Asignamos un nombre para Sap a la impresora.
Tipo de dispositivo, si es impresora láser podéis usar HPLJ4 o cualquiera que indique el fabricante que sea compatible con Sap.

Pestaña Atrib.dispos

En la Pestaña Acoplam.SPOOL host -> Forma acopl.a SPOOL host , como se va ha comunicar Sap con la impresora y como le va ha transmitir los datos:
  • F:  Si queremos imprimir a través de la impresora predeterminada en windows en el equipo local
  • C: Cuando se realiza a través de un servidor de impresión.
  • L:  Si el servidor de impresión se ejecuta sobre un sistema Unix
  • G:  Cuando la salida no es una impresora sino un programa externo ( ej: PDF )
Existen mas formas , pero yo soló he necesitado usar estas 4. Aquí esta la lista completa.

Impresora Host: nombre REAL o ID de la impresora configurada en el servidor de impresión.
Sí hemos seleccionado F como Forma de acoplamiento sera __DEFAULT.

Acoplam.SPOOL host


Volvemos a la primera pestaña y ahora podemos introducir el servidor de impresión (si hemos seleccionado una forma de acoplamiento diferente de F ó G). Si no sabéis cual es podéis usar la ayuda búsqueda.

Ayuda búsqueda para el servidor de impresión

Por ultimo , grabar todo y probar a imprimir algún formulario o  lista para comprobar que todo esta bien

Seleccionando el nuevo disp. de salida para imprimir

Fuente: SAP Printing Guide

martes, 10 de diciembre de 2013

Upload drivers de impresora a SAP

Lo primero, conseguir los drivers de la impresora. Lo mas seguro es que podamos descargarlos en la pagina oficial del fabricante de la impresora o bien desde el Sap Service Marketplace. La gran mayoría de los fabricantes como HP, Cannon, Zebra o  Epson tienen drivers para sap. 

Podemos consultar las siguientes  notas de Sap, para encontrar los link de los drivers de los principales fabricantes de impresoras y comprobar si sin compatibles con Sap:
Cuando me ha tocado trabajar con impresoras de etiquetas, estos link me han sido muy utilies:
Si  vuestra impresora no esta soportada, solo os queda buscar un driver genérico.

Una vez tenemos el driver de la impresora, Ejecutar el programa RSTXSCRP desde la transacción SE38.

Rellenar los siguientes campos de la pantalla de selección: 
  1. Marcar Tipo dispositivo.
  2. En Nombre del objeto introducir un nombre que empeze con Z por el cual se identifica los drivers en SAP.
  3. Modo IMPORT
  4. En Fichero aquí va la ruta al fichero que contiene los driver de la impresora.
Por ejemplo, en este caso voy a hacer un upload de los drivers para una HP laserjet 4300:

Upload driver para HP LaserJet 4300
Ejecutar ( F8 ) y ya podemos seleccionar los nuevos drivers desde la SPAD:

Driver ya esta cargado en Sap


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:

martes, 3 de diciembre de 2013

Descargar SAP GUI y sus parches desde el Sap Support Portal


Ir  la pagina de Sap Service Marketplace. Click en Sap Support Portal.

Sap Support Portal

Necesitareis un usuario valido  para acceder al  Sap Support Portal.
Una vez dentro Software Downloads-> Installations and Upgrades ->A -Z Index -> "G"
Download SapGui 
Click en "SAP GUI FOR WINDOWS" y otra vez en "SAP GUI FOR WINDOWS 7.30 CORE".

SAP GUI FOR WINDOWS

SAP GUI FOR WINDOWS 7.30 CORE

Ahora , a la derecha, click en Support Packages and Patches y a la izquierda win32

Support Packages and Patches

Columna Location on SAP Service Marketplace, el Componente SAP GUI for Windows 7.30 CORE, click en el link.

Ya casi estamos....


por fin...los links de descarga

Teneis que descargar e instalar el SAP GUI for windows  7.30 Patch level  0 .
Después descargar el ultimo parche ( o aquel nivel de parche que necesiteis ) e instalarlo.


SAPRUPGM: Determinar automáticamente modos de ajuste en la SPDD/SPAU


SAPRUPGM es un programa que se ejecuta durante la fase RUN_SPAU_? de un upgrade o parcheado, su función es determinar automáticamente el tipo de ajuste que debe aplicarse a los objetos del repositorio ( rapports, grupos de funciones, códigos de transacción,...) modificados durante el upgrade o parcheado.

Cuando se realiza un upgrade o parcheado, SAP detecta los programas standard que han sido modificados ya sea  por la aplicación de notas o por modificaciones directas sobre el código standard. Por ejemplo, analiza las notas aplicadas en el sistema SAP y determina cuales han quedado obsoletas o requieren nuevos ajustes.

Cada registro en la SPAU tiene un icono que representa el modo de ajuste requerido:

 No existen conflictos entre las versiones, SAP puede automaticamente trasportar los cambios a la nueva versión.
 Existe algún tipo de conflicto entre las versiones, el usuario debe decidir que modificaciones trasportar.
Existen conflictos entre las versiones, el objeto debe ser tratado con al transacción correspondiente para crear/modificar el objeto o usar el gestor de versiones para comparar los cambios que se han realizado en ele objeto.
aparece sobre todo en la categoría de Notas de corrección, significa que la nta a quedado obsoleta.
       Para este objeto, No ha sido posible determinar el tipo de ajuste.
      Es necesario confirmar los ajustes realizados sobre el objeto en el log de ajustes, esto responde a que el usuario que realiza los ajustes no es el mismo que creo o modifico el objeto del repositorio

Si SAPRUPGM no ha sido capaz de determinar el modo de tratamiento del objeto, en la transacción SPAU, el objeto aparecerá  en un modo de ajuste desconocido junto con  un icono con el símbolo de interrogación "?". Normalmente este caso se da sobre todo con notas de corrección.

Objetos sin tratamiento determinado

Al hacer doble clic sobre el símbolo de interrogación, automáticamente el sistema vuelve a ejecutar  en modo job el  programa SAPRUPGM.

En mi caso, cuando tengo que procesar una SPDD/SPAU, ejecuto el programa directamente desde la transacción SE38 y desmarco la opción salida del log a fichero, así obtengo un log con el resultado del análisis.

Pantalla de selección - SAPRUPGM
Log del proceso de determinación de tratamiento
Si aun así , sigue siendo  imposible determinar el modo de ajuste de la nota, intenta volver a descargar la nota a través de la transacción SNOTE, si tu conexión al SAPOSS no funciona, habla con un consultor e sistema para que la configure. Después de descargar la nota, espero unos minutos y ejecuto otra vez el programa. 

error conexión SAPOSS

Si aun así continua, revisa  la nota y comprueba que esta correctamente implementada. Algunas notas incluyen cambios que hay que realizar manualmente.

Un par de casos que no quiero olvidar porque seguro que volverán a pasarme:

Corrección de notas : OCS bloqueado por el usuario DDIC con la transacción SPAM 

Al intentar ajustar o determinar el tipo de ajuste de una nota, salta el siguiente mensaje:

        (OCS bloqueado por el usuario DDIC con la transacción SPAM ) Nº mensaje: TN401

Me ha saltado ya varias veces, siempre al tratar de ajustar notas en la SPDD.
No trateis en la SPDD las notas que den este mensaje y tratarlas posteriormente durante la SPAU.
En la SPAU desaparece este bloqueo sobre las notas.


Corrección de notas :  Datos Inconsistentes

Tenia una nota con la marca de interrogación y el programa SAPRUPGM daba el siguiente log:



¿Datos inconsistentes? Perdí bastante tiempo, porque no se me ocurrió mirar el log de la nota.
Transacción SNOTE, hacer doble click sobre el numero de la nota, dentro del Note Assistant puedes ver un log de la implementación de la nota.

Note Assistant
Daba siempre el mismo mensaje:
  •  La parametrización del sistema no permite modificar el objeto NOTE 0000888889
Hable con mi encargado de sistemas, me abrió completamente el sistema y consegui ajustar la nota. 

Espero no olvidar este caso para la próxima vez....

jueves, 31 de octubre de 2013

Objetos HR en la SPAU

Síntoma: Aparecen Objetos HR en la transacción SPAU después de un upgrade

Objetos HR en la SPAU
Esto afecta a objetos HR que hayan sido modificados en el sistema original.


A partir de la 610, la SPAU es más "quisquillosa" y puede darnos falsa alarmas. Es posible que estas entradas en amarillo solo sean falsas alarmas. para comprobarlo aplicar la nota: 634146 - SPAU: Objects from the customer namespace in SPAU 

Crear el rapport RSUMOD_CHECK_NON_TADIR siguiendo las instrucciones de la nota 634146 y ejecutarlo.

Si quedan entradas en amarillo, El origen del problema puede ser que antes del upgrade , la tabla SMODILOG contiene entradas que referencia a estos objetos.  Es un error de programación y se corrige ejecutando el paso 4 de la nota 519678 - HRDSYS: objects in customer namespace in SMODILOG que es ejecutar el programa H99PDSY_REPAIR_SMODILOG para borrar las entradas innecesarias de la tabla.

Y si aun queda alguna que resiste en amarillo, puedes hacerle un reset to original. Según sap, esta acción solo afecta a la documentación del objeto y no al customizing del objeto HR.


miércoles, 30 de octubre de 2013

DUMP "CAST_ERROR" al ejecutar un Report Painter/Writer.

Sintoma: Al ejecutar report painter/writer como el S_ALR_87013611 o el S_ALR_87013340 salta un dump "CAST_ERROR".



La solución a este dump es aplicar las siguientes notas:

La nota 1702676 nos indica que el origen del dump esta en la badi G_SET_FORMULA_EXIT.
Esta nota no se puede aplicar desde el SNOTE, se aplica a mano.

La nota 1819452 es una corrección de la nota:

La nota 1748700 contienen un error que provoca un dump y un mensaje de error RG102 al ejecutar cualquier report painter/writer. 

En los siguientes Support Packages, ambos problemas están solucionados:
  • SAP_APPL 602 SAPKH60214
  • SAP_APPL 603 SAPKH60313
  • SAP_APPL 604 SAPKH60414

Para ver la versión y nivel del componente SAP_APPL u otro componente:
    Sistema -> STATUS ->  Info componentes


Si os pasa como a mi y estáis en un Support Packages inferior , os toca aplicar las notas:

  1. Aplicar la nota  170267 y regenerar la badi G_SET_FORMULA_EXIT desde la se18.
  2.  Aplicar la nota 1819452, Esta nota si podéis aplicarla desde la transacción SNOTE o a mano.
  3.  Regenerar el report desde la gr55.

Si no regeneráis el grupo de informes, después de aplicar las notas, salta un dump "LOAD_PROBLEMS" al ejecutar el report writer.

Si no sabéis a que Grupo de informes pertenece el report writer que falla, ve a la SE93 introduce la transacción que esta fallando ( por ejemplo S_ALR_87013611 ) y pulsa visualizar. 

Busca el valor del campo D_SREPOVARI-REPORT en la sección Val.Propuesta de la transacción.


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: