jueves, 16 de febrero de 2012

Conectar excel con SAP

A continuacion una macro con la que desde excel se conecta a sap a una funcion z
la cual tiene que estar marcada en atrubibutos como RFC, en este ejemplo nomandamos parametros solo obtenemos los 10 primeros registros de la tabla KNA1 y los mostramos en el excel.



Sub Conectar()


Dim R3 As Object

Dim MyFunc As Object

' Parametros para exportar a la función RFC

Dim PI_CODIGO As Object

' Tablas para exportar a la función RFC

Dim PT_TABLA As Object

' Tablas para importar de la función RFC

Dim PT_OUTPUT As Object

' Resultado de la conexión con SAP

Dim Result As Boolean

' Otras variables

Dim iRow, iRowAux As Integer

'************************************************************************

' Flujo de proceso

'************************************************************************

' Establecer la conexión con los SAP add-ins

Set R3 = CreateObject("SAP.Functions")

' Ejecutar la función RFC en modo visible (te saldrá el popup de SAP GUI para poner usuario y contraseña

If R3.Connection.logon(0, False) <> True Then

MsgBox ("Error conectando al sistema")

End

Else

' Indicar la función RFC

Set MyFunc = R3.Add("ZTESTKNA1")

' Cargar parametros a ser enviados a la RFC – EXPORTING

' Set PI_CODIGO = MyFunc.exports("PI_CODIGO")

' PI_CODIGO.Value = Range("A1").Value

' Cargar tablas a ser enviadas a la RFC – TABLES

' Set PT_TABLA = MyFunc.Tables("I_KNA1")

' PT_TABLA.Rows.Add

' PT_TABLA.Value(1, "NAME1") = Range("B1").Value

' PT_TABLA.Value(1, "CAMPO2") = Range("B2").Value

' PT_TABLA.Value(2, "CAMPO1") = Range("C1").Value

' PT_TABLA.Value(2, " CAMPO2") = Range("C2").Value

' Llamar a la función RFC y guardar el resultado

Result = MyFunc.CALL

If Result = False Then

MsgBox ("Error llamando a la función")

Else

' Recuperar las tablas de salida – TABLES

Set PT_OUTPUT = MyFunc.Tables("I_KNA1")

For iRow = 1 To PT_OUTPUT.RowCount

ActiveCell.Offset(iRow, 0) = PT_OUTPUT(iRow, "NAME1")


Next

' Salir del sistema SAP

R3.Connection.logoff

End If

End If

End Sub

3 comentarios:

Befranel dijo...

Buenas, me esta dando un error numero 429 en esta linea

Set R3 = CreateObject("SAP.Functions")

que podría ser?


Saludos.

FFelipEE dijo...

Tienes que tener las librerias de SAP instaladas, para esto hay que tener instalado SAP GUI en la PC, si ya la tienes reinstala SAP GUI Completo.

Saludos
Felipe Carrales

Befranel dijo...

Buenas amigo Felipe, la verdad no se que sea ese error, no conozco el lenguaje visual Basic, soy es Ábsp. El error sigue dando aunque tengo el SAP GUI instalado completo.

Que más podría ser?

Saludos Cordiales