Distributed Component Object Model ( DCOM ) Connector de SAP R/3

1.- Es una arquitectura de tres capas consistente en:

1.1.- Una o más instancias de Sap R/3 o un Sistema Sap R/2
1.2.- Un Servidor de Transacciones que puede ser:
 
1.2.1.- Microsoft Transaction Server ( MTS )
1.2.2.- Internet Information Server ( IIS )
1.2.3.- Un gestor web proporcionado por Sap y la infraestructura de configuración para la capa media
1.2.4.- El object Builder ( Herramienta para generar las clases proxy en función de los objetos de repositorio
1.2.5.- Clientes Usuarios de DCOM para conectarse a Sap R/3 o Sap R/3 vía el MTS o IIS y las clases proxy instaladas aquí

2.- Software Necesario para los Servidores

2.1.- Los sistemas Sap R/3 pueden correr en cualquier plataforma soportada por Sap.
2.2.- Sap R/3 debe soportar RFC, esto es ser 2.1 o superior.
2.3.- Tambien puede usarse Sap R/2 5.0D o superior.

3.- Software necesario para MTS

3.1.- Windows NT 4.0 ( SP 3 o superior ) o Windows 95.
3.2.- Internet Explorer 4.01 o superior
3.3.- NT option pack ( MTS es necesario; Windows Scripting Host y el Script Runtime instalado con IIS o el Personal Web Server se requieren si el Object Builder y el Setup Script serán usados )
3.4.- RFC SDK
3.5.- Microsoft Visual Studio si se va a ejecutar el Object Builder (( Visual C++ 6.0 y el OLEDB SDK) ó ( Visual C++ 5.0 ( se requiere SP 1 ) y OLEDB SDK 1.5, este último paquete puede bajarse desde http://www.microsoft.com/data/oledb/download.htm )

4.- Software necesario para cliente

4.1.- Windows NT 4.0 ( SP 3 ) o Windows 95.
4.2.- Internet Explorer o cualquier otro paquete que instale DCOM y ADO/RDS 1.5 o superior ).
4.3.- Windows Scripting Host.

5.- Instalaciíon de RFC SDK

5.1.- Si se tiene una instalación BETA previa de Sap R/3 DCOM Connector, asegurese de eliminar los paquetes antiguos de la instalación del MTS.
5.2.- Ejecute interactivamente SAPSETUP de SAPGUI  para instalar RFC SDK en la instancia que ejecutará MTS.  Siga las instrucciones del instalador y asegurese de marcar la opción RFC SDK Libraries bajo Development Tools.
5.3.- Sap R/3 DCOM Connector requiere las DLL de MFC, COMCTL32.OCX y COMDLG32.OCX de Microsoft.  Si estos ficheros están instalados en el sistema se puede instalar RFC SDK simplemente copiando el directorio de RFC SDK sin ejecutar el Setup.
5.4.- Asegurese de tener Privilegios de Administrador en la máquina en la que se va a hacer la instalación.  Ejecute ccsetup.exe desde el directorio rfcsdk\ccwww para instalar Sap R/3 DCOM Connector.
5.5.- La identificación de usuario, bajo el que el paquete Sap R/3 DCOM Connector debe correr, es por defecto el usuario actual.  Para uso en producción se debe definir un usuario usando "MTS Explorer".  Es mejor, si todos los paquetes MTS, que corresponden a la instancia DCOM Connector corren con el mismo identificador de usuario.
5.6.- Después de la instalación, el paquete Sap R/3 DCOM Connector contendrá un rol con capacidad de Administrador.  Solo los usuarios a los que se le asigne este rol pueden usar funciones que modifiquen la instalación del DCOM Connector.

El acceso de lectura se asigna a todo el mundo, sin embargo y si se desea restringir este tambien, se debe restringir el acceso al paquete en MTS.

A partir de este momento se pueden crear R/3 Business Object.

Hay dos formas de construir los Business Object:

Usar el Object Builder para contruirlos automaticamente

Construirlos manualmente

6.- Programar clientes para DCOM en Visual Basic

Recomendaciones para programar

6.1.- Asigne parametros de conexión R/3 ( Destino, ID de usuario ) a cada instancia de objeto.  De otro modo, la llamada al sistema R/3 por defecto será invocada.  A cada objeto proxy se asigna un sistema defecto.
6.2.- Evite usar instancias globales de objetos proxy.  Defina estos objetos de forma local en funciones individuales.  Esto mejora el rendimiento en el MTS, por el hecho de que los recursos no usados se liberan a tiempo.
6.3.- Ejecute el control de errores muy profundamente, en los programas.

6.4.- La llamada al método InitKeys no hace que se dispare la verificación de existencia para una determinada instancia en la base de datos R/3.  Para hacer esto invoque a métodos BAPI dependientes de la instancia, como CheckExistence o GetDetail para las instancias individuales.

6.5.- Pase los parámetros a las BAPIS o módulos de función vía nombres de argumentos y no por posición.

6.6.- Analize los programas de ejemplo que se distribuyen con RFC SDK.

6.7.- Cuando use los parámetros de conexión ( Destino, ID de usuario, etc ) y cuando llame los métodos PutSessionInfo y AdviceRfcGuiSink desvie la referencia de objeto a un objeto Visual Basic ( "Casting" ), esto debido a un bug en el MTS no puede hacerse de otra forma.  El bug consiste en un mal funcionamiento al convertir parámetros a una forma que permita su transferencia entre procesos o máquinas ).

7.- Manejo de errores en programa cliente

7.1.- Para un buen manejo de errores en el programa cliente es razonable distinguir entre tres clases de errores:

7.1.1.- Errores conectados a la conexión RFC.

7.1.2.- Errores en la llamada remota al módulo de función que alcanza la exception definida en ABAP.

7.1.3.- Errores en la llamada de un método BAPI.  Normalmente las BAPIs no disparan exceptions.  Para encontrar los errores debe evaluarse los parametros de retorno, que son definidos como estructuras y algunas veces como tablas.

La información de error de las dos primeras categorias es registrada por el DCOM Connector, se puede consultar en Visual Basic.  Si estas clases de errores ocurren, el valor de err.number es distinto de cero.  Ejecute una verificación de acuerdo a esto y deje al sistema mostrar una descripcion del error desde err.description. ( Nota: en este caso use la sentiencia On Error Resume Next antes de hacer la llamada ).

Para errores en la llamada a una BAPI, además de la consulta anterior, se pueden acceder parámetros de retorno predefinidos.  Las estructuras de Diccionario ABAP más comunmente utilizadas para parámetros de retorno son:

.- BAPIRETURN

.- BAPIRETURN1

.- BAPIRET2

Ejemplo: Estructura de BAPIRETURN

.- TYPE
b ó 'S' --> Success
'E'--> Error
'W'--> Warning
.'I'-->Information
.- CODE:  Número del mensaje
.- MESSAGE: Texto del mensaje
.- LOG-NO: Número de log de la aplicación
.- LOG-MSG-NO: 
.- MESSAGE-V1/MESSAGE-V4: Variables de mensaje

8.- Referencia al Tipo de Librería

Para poder acceder a objetos proxy generados, en un proyecto Visual Basic, debe crearse una referencia al Tipo de Librería correspondiente.  La ruta en Visual Basic es:

.- Project

.- Referencias

La estructura de Tipo de Librería es como lo muestra la figura siguiente:

9.- Estructura Básica del Programa

Construir una aplicación Visual Basic consiste en los pasos siguientes:

9.1.- Crear la Instancia de un determinado tipo de objeto de R/3

Dim oOrder As SAPSalesOrder

Set oOrder = CreateObject("SAPSalesOrder.1")

oOrder.InitKeys "0000004711"

9.2.- Asignar los parámetros de conexión

.- Destino

.- Usuario

.- Contraseña

.- Idioma

.- Mandante

Cuando el sistema R/3 por defecto no será invocado

Option Explicit

Private sDestination As String

Private sUser As String

Private sPassWord As String

Private sLanguaje As String

Private sClient As String

Dim oTmp = Order

oTmp.PutSessionInf DESTINATION:=sDestination USERID:=sUser PASSWORD:=sPassWord LANGUAJE:=sLanguaje CLIENT:=sClient

9.3.- Definir los parámetros de tablas y estructuras usando el metodo DimAs( solo para parametros de importación )

Dim oPartners As Recordset

oOrder.DimAs("BapiCreateFromData",OrderPartners,oPartners)

9.4.- Asignar valores a los parámetros de entrada

With oPartners

.AddNew

.Fields("Partn-note") = "AG"

.Fields("Partn-Numb") = "0000001234"

.Update

End With

9.5.- Llame los metodos de los objetos ( BAPIs o Funciones Remotas )

Dim oOrderHeader As Recordset

Dim oItems As Recordset

Dim oPartners As Recordset

Dim oReturn As Recordset

oOrder.BapiCreateFromData OrderHeaderIn:=oOrderHeader OrderItemsIn:=oPartners Return:=oReturn

9.6.- Manejar errores y verificar la información retornada

On Error Resume Next

IF err.number <> 0 then

call errormsgbox(...)

Exit Sub

END IF

IF oReturn.Value("Type") = " " or oReturn("Type") = "S" then

msgbox("Ejecución satisfactoria")

ENDIF

9.7.- Presentar y usar adicionalmente los datos de R/3.  Por ejemplo usar "DataBoundGridLibrary" para presentar los datos de forma tabulada

Dim TabStatus As Object

oOrder.BapiGetStatus( StatusInfo:=TabStatus, Return:=oReturn )

frameStatus.ShowItemTable(tabStatus,APPID)

10.- Un programa de ejemplo( pedidos )

10.1.- Prerrequisitos

.- Entorno de Desarrollo Visual Basic en la máquina del cliente

.- Los DCOM proxies instalados en MTS

.- Referencia a Microsoft ADO Recordset 1.5 Library o más resiente

.- Si la aplicación cliente no se ejecuta en la misma máquina que MTS, se tendrá que instalar el (*)Export Package desde MTS al cliente

* Ver Exporting MTS packages.

10.2.- Procedimiento

Para ejecutar el programa de ejemplo proceda de la forma siguiente:

10.2.1.- Seleccione la ruta

.- Rfcsdk

.- ccsamp

.- sales.vb

10.2.2.- Pulse dobl´-click sobre el proyecto.salesorder.vb

10.2.3.- Seleccione la opción

.- Project

.- References

Con esto se crea una referencia a los proxies, DCOM generados.  Aparecerá una lista completa con todas las referencias disponibles.

10.2.4.- Seleccione la referencia a la librería tipo apropiada y confirme la selección con ok

10.2.5.- Seleccione Start para iniciar la aplicación

10.2.6.- En la pantalla inicial seleccione

.- Sap

.- Logon

para identificarse al sistema

10.2.7.- Entre sus datos de Logon y confirmelo con OK

10.2.8.- En la pantalla inicial seleccione

.- Sap

.- Placeorder

10.2.9.- Introduzca valroes validos para los parametros de entreada

10.3.- Resultados

Los resultados conteniendo datos específicos del cliente son mostrados en la tabla.

Regresar a mi HomePage

Página mantenida por Francisco A. Reyes