Report en Excel que usa una RFC para capturar la información de SAP. Esto se consigue con VBA (Visual Basic para Aplicaciones) de Excel y ABAP para crear la función RFC.
Aquí os pongo un ejemplillo de cómo se ha hecho la conexión Excel-SAP, por si sirve de algo en un futuro o por si hay alguien aburrido sin asignación y quiere curiosear un poco… Con esto se puede deducir que aparte de hacerlo con VBA de Excel, se puede hacer lo mismo con VBA Word/Access, Visual Basic 6, VBScript en alguna pagina web, etc.
SAP
Crear una funcion RFC que tenga de entrada PI_CODIGO, de tablas PT_TABLA y PT_OUTPUT.
Microsoft Excel:
Tools / Macro / Visual Basic Editor
Visual Basic Editor:
Insert / Module
Creáis una subrutina (por ej. Conectar) con el siguiente código. Esto luego se lo asignáis a un botón como los macros.
Sub Conectar()
‘************************************************************************
‘ Declaración de datos
‘************************************************************************
‘ Conectores a SAP.Functions.
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(“ZFUNCION_RFC”)
‘ 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(“PT_ TABLA “)
PT_ TABLA.Rows.Add
PT_ TABLA.Value(1, “CAMPO1″) = 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(“PT_OUTPUT”)
For iRow = 1 To PT_OUTPUT.RowCount
Range(“F” & iRowAux).Value = PT_OUTPUT(iRow, “VALOR1″)
Range(“F” & iRowAux).Value = PT_OUTPUT(iRow, “VALOR2″)
Range(“F” & iRowAux).Value = PT_OUTPUT(iRow, “VALOR3″)
Next
‘ Salir del sistema SAP
R3.Connection.logoff
End If
End If
End Sub.