Ayuda SAP

Conectar excel con SAP

,

Saludos, gracias por contestarme, te cuento trabajo con SAP BUSSINES 3.0 hice un Script en SAP la cual me descarga varios archivos la cual funciona sin problemas, al igual que en Excel realice una macro la cual me extrae información de esos archivos y me realiza varios reportes la cual funciona sin inconvenientes; el detalle es que ambas macros funcionan por separado, al final quiero es abrir Excel ejecutar la macro que me conecte con SAP y me descargue los archivos para luego me ejecute la macro en Excel

Cualquier ayuda de antemano muchas gracias

1 me gusta

Hola amigo, te pongo un código de una macro que accede a SAP y recupera la información de la descripción de una orden de transporte (Table E07T). Espero que te sirva:

'Para ocultar el proceso
Application.ScreenUpdating = False
'Declaration

Dim objBAPIControl As Object 'Function Control (Collective object)
Dim sapConnection As Object 'Connection object
Dim Total
Dim MyFunc As Object
' Assign.
Set objBAPIControl = CreateObject("SAP.Functions")
Set sapConnection = objBAPIControl.Connection

'Logon with initial values Credenciales de conexcion

sapConnection.Client = "mandante"
sapConnection.User = "usuario"
sapConnection.Password = "contraseña"
sapConnection.SystemNumber = 1
sapConnection.System = "system"
sapConnection.HostName = "hostname"
sapConnection.Language = "ES"

If sapConnection.logon(1, True) <> True Then
    MsgBox "No connection to R/3!"
    Exit Sub
End If


Dim SEL_TAB, NAMETAB, TABENTRY, ROW As Object
Dim Result As Boolean
Dim iRow, iColumn, iStart, iStartRow As Integer

iStartRow = 4

Sheets("Obj_ORD").Select

Cells.Clear



'*****************************************************
'Call RFC function TABLE_ENTRIES_GET_VIA_RFC
'*****************************************************
Set MyFunc = objBAPIControl.Add("TABLE_ENTRIES_GET_VIA_RFC")

Dim oParam1 As Object
Dim oParam2 As Object
Dim oParam3 As Object
Dim oParam4 As Object
Dim lv_text As String

Dim lv_contador As Integer


'Descripción de la orden
oParam1.Value = "E"
oParam2.Value = ""
oParam3.Value = "E07T"

Dim lv_orden

lv_orden = "TRKORR = '" + orden + "'"

If lv_orden <> "" Then
    oParam4.Rows.Add
    oParam4.Value(1, "ZEILE") = lv_orden
End If

Result = MyFunc.Call

If Result = True Then
  Set NAMETAB = MyFunc.Tables("NAMETAB")
  Set SEL_TAB = MyFunc.Tables("SEL_TAB")
  Set TABENTRY = MyFunc.Tables("TABENTRY")
Else
    MsgBox MyFunc.EXCEPTION
    objBAPIControl.Connection.LOGOFF
    Exit Sub
End If



If Result <> True Then
  MsgBox (EXCEPTION)
  Exit Sub
End If

'Display Contents of the table

    lv_rango = "D" + CStr(fila)
    Range(lv_rango).Select
'Extraemos desde la pos 21, 60 caracteres de la entrada 1
    Range(lv_rango).Value = Mid(TABENTRY(1, "ENTRY"), 22, 60)
    Range(lv_rango).EntireRow.AutoFit




'*******************************************
'Quit the SAP Application
'*******************************************
objBAPIControl.Connection.LOGOFF

End Sub

Saludos.

6 Me gusta

Gracias juan por la macro, la voy a probar a ver como me va

Hola @juantomp. He intentado la conexión y no he podido y creo que es porque me falta cargar en referencias la dll necesaria para crear el objeto SAP.Functions ¿sabes cual es dicha dll y si haría falta alguna más para la conexión?

1 me gusta

Creo que deberías tener librfc32.dll en Windows\System32.

2 Me gusta

Gracias.
Al final lo he conseguido con:

Dim Logoncontrol As Object  
Dim objBAPIControl As Object
Dim sapConnection As Object
Dim Total
Dim MyFunc As Object
' Assign.
Set Logoncontrol = CreateObject("SAP.LogonControl.1")
Set objBAPIControl = CreateObject("SAP.Functions")
Set sapConnection = Logoncontrol.NewConnection

'Logon with initial values Credenciales de conexcion

sapConnection.Client = "200"
sapConnection.ApplicationServer = "10.10.0.111"
sapConnection.User = "USUARIO"
sapConnection.Password = "PASSWORD"
sapConnection.SystemNumber = "00"
sapConnection.System = "EMD"
sapConnection.UseSAPLogonIni = False
sapConnection.Language = "ES"

10 Me gusta

@Salco no me digas que conectaste excel con SAP? uffff Que planeas hacer ahora?

Pues la verdad @smota es que no se muy bien. Tuve un compañero que tenía un Excel que era la caña (vamos genial) que de daba el tiempo que iba a hacer al día siguiente, que se conectaba son sap (aunque no recuerdo muy bien para que) y me dejó tan alucinado que ahora quería yo hacer algo parecido jajaja

3 Me gusta

@Salco dejame saber si logras realizar algo util con es aconexion, para tomarlo en cuenta.

Voy a probar el volcado de información desde un Excel con los datos de los tipos de interés para préstamos en la zona euro en la tabla T056P.
La usuaria tiene que introducir los datos todos los días a mano (con la consiguiente fuente de errores) usando una table control que se maneja fatal (tx. OB83) y no querría hacer una transacción y un report para ello.
Voy a investigar que ella se descargue el Excel con la serie histórica de tipos de interés del Banco Central, que seleccione los de la última semana o menos, que lo peque en el Excel que yo le confeccione con la funcionalidad de conexión a sap y le de al botón de subir.

A ver que pasa.

1 me gusta

Exquisito, dejame saber si todo sale bien!

1 me gusta

@smota, he hago saber que ha sido un éxito.
La usuaria cuando ha visto lo sencillo y eficaz que es casi se pone a llorar jajaja.
Dice: " después de 8 años teniendo que ir al pdf que publica el banco central y después teclear a mano los dígitos del tipo de interés mirando al pdf y a la pantalla para no equivocarse usando la incómoda OB83 esto es una maravilla".

Lo único que hemos tenido que hacer adicional a lo ya comentado en post de más arriba, es que hemos creado un usuario con permisos de ejecutar funciones por si no ella no se podía conectar.

3 Me gusta

@Salco disculpa, esta configuracion solo funciona con office 32bits? cierto!

Pues resulta que mi office efectivamente es de 32bits… ¿lo has probado con el de 64?

Menuda maravilla has creado. Me lo guardo como oro en paño

si @Salco te lo menciono para que lo tengas en cuenta, es por cuestiones del GUI que aun no trabja con arquitectura 64 bit. Siempre que hagas algo como esto, asegurate de que el office sea 32bits, no el OS, bien pudiera ser un OS 64bits con offices 32bits y va a funcionar ^^

2 Me gusta

Estimados. Buenas noches. Muchas gracias por sus aportes en este tema. Necesito ayuda sobre este tema. He intentado hacer la conexión indicada pero me sale el mensaje: RFC error received, User XXXXXXXXX has no RFC authorization for function group SYST.
Podrían indicarme porqué me sale este mensaje.

Lo que hice fue lo siguiente:

Sub Button3_Click()

Set R3 = CreateObject(“SAP.Functions”) ’ Cargar los parametros de conexion
R3.Connection.MessageServer = “XXXXXXXXXX” ’ Nombre del server
R3.Connection.GroupName = "XXXXXXX"
R3.Connection.System = “XX” ’ Sistema
R3.Connection.Client = “XXX” ’ Mandante
R3.Connection.System = "XXX"
R3.Connection.User = “XXXXXXX” ’ Usuario
R3.Connection.Password = “XXXXXXX” ’ Password
R3.Connection.Language = “ES” ’ Idioma ‘ Ejecutar la conexion en modo visible.

If R3.Connection.Logon(0, False) <> True Then
MsgBox "No se ha podido establecer la conexión"
Exit Sub
Else 'Establecer contacto con la funcion.
MsgBox "Conexión exitosa"
End If

Les agradecería me indicaran el motivo del error.

Muchas gracias de antemano.

1 me gusta

Buenas,
¿has comprobado que tu usuario tenga el rol con permisos para ejecutar funciones?
Algo parecido a esto:

2 Me gusta

Hola estimados,

Estaba pensando si había forma, de realizar una conexión desde excel a SAP,que me actualice cada vez que ingreso al archivo de excel los datos de dicha tabla de SAP.

Por ejemplo con la tabla AGR_1521 Consulto roles. Puedo crear una conexión en excel que me actualice los cambios que se van modificando en dicha tabla de SAP.

El código de Salco, me podría ser de ayuda?

Aún no he realizado ninguna prueba.

Muchas gracias a todos

Perdona @Giovanni, me he perdido un poco.
¿Qué es lo que quieres?
a) que al actualizar el Excel se conecte a sap e inserte lo nuevo del Excel en la tabla AGR_1521?
b) que al actualizar la tabla sap, desde sap se conecte a Excel y sap actualice el Excel?

1 me gusta