#1
|
|||
|
|||
Conectarme a SAP a través de excel
Hola, me llamo Montse.
Te explico tengo una hoja de excel y quiero pasarla a un archivo txt a traves de una macro, hasta aqui todo bien. Pero luego quiero que ese fichero txt subirlo a una ruta en la al11, entonces necesitaria conectarme a la AL11 para dejar el fichero allí y no tengo idea de como hacerlo. Alguien me puede ayudar. Gracias |
#2
|
|||
|
|||
Conectar a SAP desde Excel
prueba con este código
Sub Prueba_AL11() ' ' Prueba AL11 Macro ' ' Set SAPGuiAuto = GetObject("SAPGUI") Set Aplicacion = SAPGuiAuto.GetScriptingEngine Set Connection = Aplicacion.Children(0) Set Session = Connection.Children(0) ' maximiza la pantalla de SAP Session.findById("wnd[0]").maximize ' escoge la transición a enviar Session.findById("wnd[0]/tbar[0]/okcd").text = "/n/AL11" ' llama a la transición Session.findById("wnd[0]").sendVKey 0 |
#3
|
|||
|
|||
Buenas, montsemana
Yo tengo este procedimiento para abrir una conexion con sap: Private Sub LoginSAP() user = InputBox("SAP User ID") If user = "" Then Exit Sub pass = InputBox("Please, enter your SAP password") If pass = "" Then Exit Sub If FindProcess("saplogon.exe") Then Set SapGui = GetObject("SAPGUI") Else Call Shell("C:\Program Files (x86)\SAP\FrontEnd\SAPGUI\saplogon.exe", vbMinimizedFocus) Esperar 5 ' Funcion para esperar unos segundos a que se ejecute el progama "saplogon" Set SapGui = GetObject("SAPGUI") End If Esperar 2 Set Appl = SapGui.GetScriptingEngine Set Connection = Appl.Openconnection("Nombre de la Instancia", True) Set Session = Connection.Children(0) Session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = user Session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = pass Session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN" Session.findById("wnd[0]").sendVKey 0 End Sub Private Sub Esperar(Tiempo As Integer) newHour = Hour(Now()) newMinute = Minute(Now()) newSecond = Second(Now()) + Tiempo waitTime = TimeSerial(newHour, newMinute, newSecond) Application.Wait waitTime End Sub Function FindProcess(ProcessName) Dim WMIServ, Processes, Process FindProcess = False Set WMIServ = GetObject("winmgmts:{impersonationLevel=" & "impersonate}!\\.\root\cimv2") Set Processes = WMIServ.ExecQuery("Select * from Win32_Process " & _ "Where Name = '" & ProcessName & "'") For Each Process In Processes FindProcess = True Exit Function Next End Function Despues vendría la llamada a la transaccion deseada: Session.findById("wnd[0]/tbar[0]/okcd").Text = "KSB1" Session.findById("wnd[0]").sendVKey 0 Para el resto del proceso, mi consejo (que es lo que yo hago) es activar la grabacion de un script y realizo el proceso completo manualmente, cuando acabo, paro la grabacion y ya tengo las sentencias necesarias para realizar el resto de la macro. Espero que te sirva, un saludo. |
#4
|
|||
|
|||
Re: Conectarme a SAP a través de excel
Ingresa a SAP y entra al icono de dos engranes, ahi esta la Opcion: Grabar y reproducir scrip, le das click a la opcion grabar script y puedes hacer el proceso que gustes, una vez termines la actividad, abres con un bloc de notas la scrip que se grabo en C:\Users\Tu usuario\AppData\Roaming\SAP\SAP GUI\Scripts, el codigo resultante lo colocas en vba anteponiendo las siguientes declaraciones de variable
Dim application Dim connection y listo solo ejecutas la macro. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|