Conectarme a SAP a través de excel

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • montsemava
    Junior Member
    • mar
    • 2

    #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
  • dabtgn
    Junior Member
    • mar
    • 1

    #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

    Comentario

    • cardama
      Junior Member
      • feb
      • 6

      #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.

      Comentario

      • Junior Member
        • abr
        • 1

        #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.

        Comentario

        Trabajando...