OLE - Conectividad - SAP-Visual Basic From Abap - Es

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

CONECTIVIDAD SAP R/3

Un ejemplo de comunicacin entre SAP R/3 y Microsoft VISUAL BASIC


mediante tecnologa OLE2
Comunicacin Ole2 SAP R/3-VISUAL BASIC

INDICE

INDICE 2

1. INTRODUCCION 3

2. REQUERIMIENTOS FUNCIONALES 3

3. REQUERIMIENTOS TCNICOS 3

3.1. Programa de lectura del peso para la bscula: Visual Basic 3

3.2. Programa de lectura del peso para la bscula: SAP R/3 3

3.3. Requisitos adicionales en SAP R/3 4

4. ANEXO A: PROGRAMA VISUAL BASIC 5

4.1. Archivos de Visual Basic incluidos en Bascula.zip 5

5. ANEXO B: PROGRAMA SAP R/3 5

OLE - Conectividad_SAP-Visual Basic.doc Pgina 2 de 6


Comunicacin Ole2 SAP R/3-VISUAL BASIC

1. INTRODUCCION

Este documento describe un ejemplo de conectividad de SAP R/3 con mquinas externas. En esta
ocasin se desea realizar, desde una aplicacin desarrollada en SAP R/3, una lectura de la
informacin que una bscula externa a SAP enva al puerto serie de un pc. Para acceder al puerto
serie se desarrolla un programa en Visual Basic, que transfiere la informacin a la aplicacin de SAP
mediante la tecnologa OLE2.

2. REQUERIMIENTOS FUNCIONALES

Se desea desarrollar una aplicacin en SAP R/3, que registre los movimientos de los camiones a la
entrada y salida de una fbrica, en cuya portera se halla ubicada una bscula. Dicha bscula obtiene
el peso de los camiones (informacin fundamental para la aplicacin) y lo enva al puerto serie del pc.
El objetivo es registrar este dato en la aplicacin de SAP R/3.

3. REQUERIMIENTOS TCNICOS

3.1. Programa de lectura del peso para la bscula: Visual Basic


El programa que lee el puerto serie deber ser desarrollado en Visual Basic de tal manera que pueda
ser ejecutado desde SAP R/3 va OLE2 para obtener el peso recibido desde la bscula. Es decir, el
programa de Visual Basic es un mero comunicador entre la bscula y SAP R/3, de forma que su
misin es transmitir la informacin de un lugar a otro.

Especificaciones tcnicas del programa Visual Basic Bascula.vbp


El objetivo de este programa es leer un peso dejado por la bscula en el puerto serie.
Este programa deber ser generado como una dll (bascula.dll)para poder ser ejecutado
luego desde SAP R/3.

3.2. Programa de lectura del peso para la bscula: SAP R/3


El programa que finalmente registra la pesada en SAP R/3 deber comunicarse con el programa
desarrollado en Visual Basic para leer la informacin que ste le transfiere. Para poder utilizar la
tecnologa OLE desde SAP R/3 se deben tener en cuenta las siguientes premisas:
Una DLL es un objeto y como tal tiene propiedades y mtodos. La DLL se ejecuta desde
SAP R/3 con la sentencia CREATE OBJECT. En este ejemplo la DLL es bascula.dll y se
genera en Visual Basic; el objeto es bascula y se define en SAP R/3.
Una funcin o subrutina visual basic es un mtodo del objeto bascula. Desde SAP R/3 se
ejecutan con la sentencia CALL METHOD, con la diferencia que la funcin devuelve un
valor y la subrutina no. En este ejemplo la funcin es strDevolverPesoAzk y su
contenido se informa en la variable de SAP R/3 d_peso_bruto.
Una variable visual basic es una PROPIEDAD del objeto bascula. Desde SAP R/3 se
leer con la sentencia GET PROPERTY. En este ejemplo no se emplear esta sentencia
porque la funcin ya devuelve un valor ella misma y no era precisa variable alguna en
visual basic.

Especificaciones tcnicas del programa SAP R/3


Declarar el include OLE2INCL.

OLE - Conectividad_SAP-Visual Basic.doc Pgina 3 de 6


Comunicacin Ole2 SAP R/3-VISUAL BASIC

Declarar el objeto ole: una variable (bascula) de tipo ole2_object.


Declarar una variable de tipo char (d_peso_bruto), receptora del peso buscado.
Ejecutar el programa Bascula.dll con la sentencia CREATE OBJECT bascula
'bascula.Class1'
Ejecutar la funcin strDevolverPesoAzk del programa Bascula.dll con la sentencia
CALL METHOD OF bascula 'strDevolverPesoAzk' = d_peso_bruto. Con esta sentencia
se transmite el peso obtenido por la funcin del programa de Visual Basic a la variable del
programa SAP R/3.

3.3. Requisitos adicionales en SAP R/3


Para que SAP R/3 pueda trabajar con un objeto externo va OLE, se debe registrar ste en SAP
R/3. Es decir, se debe registrar la DLL bascula.dll en la tabla TOLE (independiente de
mandante), mediante la transaccin SOLE

Pulsando el icono de modificar y posteriormente el botn Entradas Nuevas se registra la


DLL en SAP R/3 informando los campos:
Aplicacin OLE (BASCULA)
CLSID (Bascula.class1, que es como windows registra la dll, como se puede
comprobar ejecutando el programa regedit)
OLE - Conectividad_SAP-Visual Basic.doc Pgina 4 de 6
Comunicacin Ole2 SAP R/3-VISUAL BASIC

Clave infotipo (NO_TYPELIB)


Para rellenar el campo CLSID se debe ejecutar el programa de windows regedit, donde se buscar el
identificador con el que windows ha registrado el programa Bascula. Este identificador aparecer en
el camino HKEY_CLASSES_ROOT / CLSID.

4. ANEXO A: PROGRAMA VISUAL BASIC

Se adjunta el fuente del programa desarrollado en Visual Basic, Bascula.vbp con todos los archivos
necesarios para su edicin desde Microsoft Visual Basic 6.0, empaquetados en el archivo
Bascula.zip

4.1. Archivos de Visual Basic incluidos en Bascula.zip


Bascula.cls: Mdulo que incluye las dos funciones que llaman a las bsculas. Fuentes editables.
Form1.frm: Mdulo que incluye el control para las comunicaciones por el puerto serie. Fuentes
editables.
Bascula.vbp: Mdulo de proyecto de Visual Basic.
Bascula.dll: Librera dinmica con el cdigo ejecutable, generada desde Microsoft Visual Basic a
partir de Bascula.vbp.
El resto de archivos son ficheros de apoyo o configuracin internos de Visual Basic

5. ANEXO B: PROGRAMA SAP R/3

Se adjuntan los trozos de cdigo fuente del programa desarrollado en ABAP para SAP R/3 v4.0b,
ZBASCULA.

PROGRAM ZBASCULA.

(...)

************************************************************************
*Definicin de variables
************************************************************************
*Variable en la que se almacena la lectura del peso bruto
DATA: D_PESO_BRUTO(20).

(...)

************************************************************************
*Definicin de includes
************************************************************************
* Include para utilizar OLE2
INCLUDE OLE2INCL.

************************************************************************
*Definicin de objetos OLE
************************************************************************
* Objeto OLE2 para poder ejecutar la funcin de la dll
DATA: BASCULA TYPE OLE2_OBJECT.

(...)

************************************************************************
*START-OF-SELECTION
************************************************************************

OLE - Conectividad_SAP-Visual Basic.doc Pgina 5 de 6


Comunicacin Ole2 SAP R/3-VISUAL BASIC
(...)

* Llamada al form que lee el peso del puerto serie va la dll


PERFORM OBTENER_PESO.

(...)

************************************************************************
*Forms adicionales
************************************************************************
*----------------------------------------------------------------------*
* FORM OBTENER_PESO *
*----------------------------------------------------------------------*
* Va comunicacin OLE2 se lee el peso bruto *
*----------------------------------------------------------------------*
FORM OBTENER_PESO.
CLEAR D_PESO_BRUTO.

* Se arranca la dll creando una instancia (BASCULA) en el programa SAP


CREATE OBJECT BASCULA 'bascula.Class1'.
IF SY-SUBRC <> 0.
MESSAGE ID 'ZM' TYPE 'E' NUMBER '028'.
* Error en la conexin con la bscula
ENDIF.

* Se ejecuta la funcin de la dll (strDevolverPesoAzk) informando


* D_PESO_BRUTO con el valor que devuelve la funcin
CALL METHOD OF BASCULA 'strDevolverPesoAzk' = D_PESO_BRUTO.
IF SY-SUBRC <> 0.
MESSAGE ID 'ZM' TYPE 'E' NUMBER '029'.
* Error en la lectura del peso
ENDIF.

ENDFORM. " OBTENER_PESO

OLE - Conectividad_SAP-Visual Basic.doc Pgina 6 de 6

También podría gustarte