blog de Floren

SAP HCM y Programación en ABAP

Archivo de 28/04/08

Conexión Excel-SAP

Publicado por Floren en Abril 28, 2008

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.

Publicado en Código | 2 Comentarios »