WS_EXECUTE – Función para ejecutar un programa desde SAP

7 11 2007

WS_EXECUTE es una función que nos permite ejecutar cualquier programa instalado en nuestra computadora desde SAP. Cabe aclarar que aquel programa que queramos correr debe permitir parámetros MS-DOS.

En el siguiente ejemplo voy a mostrar como zippear (comprimir) dos archivos desde SAP. Como resultado obtendremos un archivo WinZip que contendrá dos archivos de texto.
Comprimiremos el archivo 1.txt y el archivo 2.txt, y el resultado será el archivo destino.zip.

Parámetros que acepta WinZip desde MS-DOS: http://www.memecode.com/docs/winzip.html

Rutas de los archivos:

  • C:1.txt
  • C:2.txt
  • C:destino.zip

 

Código:

CALL FUNCTION ‘WS_EXECUTE’
    EXPORTING
       * DOCUMENT = ‘ ‘
       * CD = ‘ ‘
       COMMANDLINE = ‘ -min -a c:destino.zip c:1.txt c:2.txt’
       * INFORM = ‘ ‘
       PROGRAM = ‘winzip32.exe’
       * STAT = ‘ ‘
       * WINID = ‘ ‘
       * OSMAC_SCRIPT = ‘ ‘
       * OSMAC_CREATOR = ‘ ‘
       * WIN16_EXT = ‘ ‘
       * EXEC_RC = ‘ ‘
    * IMPORTING
       * RBUFF =
    EXCEPTIONS
       FRONTEND_ERROR = 1
       NO_BATCH = 2
       PROG_NOT_FOUND = 3
       ILLEGAL_OPTION = 4
       GUI_REFUSE_EXECUTE = 5
       OTHERS = 6 .

IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.


Technorati tags:


Acciones

Information

2 responses

11 03 2008
Ana

Hola,
Estoy utilizando la misma funcion para ejecutar un .bat en modo sincrono. Conoces alguna manera de que lo ejecute en background, para que no salga la pantalla de comando durante la ejecucion? .Muchas gracias

27 01 2010
Jonathán Barrio Rodríguez

GRACIAS Daniel por la info,😉

Hola Ana,
Yo estoy investigando esta función también y he visto un par de parámetros ( STAT, WINID ) qué es posible que hagan lo que deseas. Yo no la he implementado nunca… así que más no sé. En cualquier modo, todos los programas son ejecutables mediante línea de comandos. Si encontrases qué sentencia es, podrías introducirla en el parametro commandline.

Estoy intentado ejecutar una sentencia en un servidor SUNOS (unix) por este motivo solo le paso en el parámetro COMMANDLINE la siguiente línea:
“‘gunzip -d -S .gz’ pi_fich pi_dirname”.
Es para descomprimir un fichero y luego tratarlo con Read data set… La función sali sin excepciones ni errores… sin embargo, en la ruta del servidor, no veo que se descomprima nada.
¿ Alguna idea o comentario para esto ?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: