Estimados,
saludos, necesito saber si alguien sabe como conectarme desde Excel a SAP, mas detallado seria si desde un archivo de Excel puedo ejecutar una macro y conectarme a SAP “en SAP ya inicie sesión con mi usuario y clave” y abrir un nuevo modulo en el cual ejecutare un Script
Cualquier ayuda es valiosa ya que estoy he buscado en la red y no encuentro nada aun
Claro, he visto plantillas que utilizan RFC y realizan una conexion exitosa a SAP.
Le envian toda la info que solicita la funcion, y luego la funcion sabe que hacer con esa info.
Tenia una planilla de carga de materiales.
RFC es tu punto a desarrollar.
Vere si te consigo el proceso para que lo repliques.
Efectivamente como dice, paxotio, ni te has presentado…¿?
Cuando hablas de SAP, ¿de que SAP hablas?
Te diré que desde B1 accedes directamente desde excel, pudiendo realizar un BI con excel y tablas dinámicas espectacular. Si además añades conocimientos de visual basic o de sql para manipular o agrupar los datos previamente o posteriormente…resultados espectaculares.
Yo tengo mis dudas sobre lo que pretendes hacer.
Puedes ampliar más el requerimiento?
Yo he visto conexiones SAP → Excel, pero nunca que Excel automáticamente lance datos a SAP “en linea”.
Podrías por favor explicar en detalle qué es lo que deseas que haga la conexión entre Excel y SAP ??
Hola, yo por ejemplo, si quiero crear una lista de materiales con 5 piezas por ejemplo. En el excel meto el articulo al que se le va a crear la lista de materiales y los 5 articulos que quiero que contenga.
Y listo, lanzo el excel con un botón que tiene y me crea la lista de materiales con esos 5 artículos.
Parte de la macro esta creada con la información que se obtiene con la opción de grabar script que tiene sap y parte con visual basic, creo.
Por ahi va la cosa, excel permite insertar condigos de visual basic, entonces ahi llamas a la funcion dentro de SAP via RFC.
Ahora mismo no tengo a mano el codigo vb para msotrar pero @paxotio podrias compartir un poco el codigo vb que tiene tu plantilla…
Tiene varios ejemplos publicados el SCN de como hacerlo y un colaborador habitual de este foro que es @felipe.loyola, sabe mucho de este tema, si es con SAP Business One, que todavía no lo has aclarado.
If Session.ActiveWindow.Text = "Error" Then Err.Raise 99 ' error detected?
'
' find the collection object that contains the Message from the bottom of the SAP screen and write the message to Excel
Info (17) ' puts the Message in the 17th column on the Excel Spreadsheet - column "Q"
'
If Session.ActiveWindow.Name = "wnd[1]" And Session.ActiveWindow.Text = "Log Off" Then
Session.findById("wnd[1]/usr/btnSPOP-OPTION2").press
Sheets("SAP_DATA").Cells(lDataRow, 16) = "error"
End If
'-------------------------------------------------------
Exit Sub
ErrorHandler:
Sleep (1000)
'return the error message 3/4/06 - ***
sMessage = "Error # " & Str(Err.Number) & " was generated by " _
& Err.Source & Chr(13) & Err.Description '& Err.HelpFile & Err.HelpContext
Sheets("SAP_DATA").Cells(lDataRow, 21) = sMessage
'---------------------------------
If StopOnErrors = vbYes Then
Application.WindowState = xlMaximized
If lDataRow > 10 Then ActiveWindow.ScrollRow = lDataRow - 5
StopOnErrors = MsgBox("Do you want to Stop On the next Error ?", vbYesNo, "Error Found")
Application.WindowState = xlMinimized
Else
If Session.ActiveWindow.Name = "wnd[1]" And Session.ActiveWindow.Type = "GuiModalWindow" Then ' Information Pop Up Box exists
Sheets("SAP_DATA").Cells(lDataRow, 22) = Session.ActiveWindow.PopupDialogText ' capture message
Session.findById("wnd[0]/tbar[0]/btn[0]").press '- enter key
End If
Info iColumn 'capture any SAP message and write to excel
'test the message
If Session.ActiveWindow.children.Count > 1 Then ' see if the collection item exists
If Session.ActiveWindow.children.Item((Session.ActiveWindow.children.Count - 1)).Text <> "" Then 'message exists
If Session.ActiveWindow.children.Item((Session.ActiveWindow.children.Count - 1)).MessageType <> "E" Then Session.findById("wnd[0]/tbar[0]/btn[0]").press 'enter through warnings and Informational messages
End If
saludos, esta parte es por si salta algun error en el proceso (creo)
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
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
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?
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"
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
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.