[TUTORIAL] SAP Scripting: Abrir SAP GUI e ingresar al sistema automáticamente (vía SSO y AUTH) 🔥🔥

Поділитися
Вставка
  • Опубліковано 7 лис 2024

КОМЕНТАРІ • 85

  • @alefranzoni
    @alefranzoni  2 роки тому +2

    📚 *Documentación*
    🔹Shell.Run - VBScript: bit.ly/3b8mnlB

  • @eriol1805
    @eriol1805 Рік тому +3

    Mas de 4000 vistas y no le dan like loco. Si lo miran para hacer algo en el trabajo donde les pagan, por lo menos denle like para que se posicione el video miserables.
    Muy buena la explicación y muchísimas gracias por compartir tu conocimiento ,sos un crack te deseo el mayor de los éxitos!!!!

    • @alefranzoni
      @alefranzoni  Рік тому +1

      Muchas gracias por tu comentario y por el apoyo. Saber que el contenido les sirve es lo que me motiva a poder seguir creando y trayéndoles más, así que nuevamente gracias por tu feedback. Que estés muy bien, Saludos!

  • @cochogod
    @cochogod 2 місяці тому

    Muy completo y detallado, gracias!

    • @alefranzoni
      @alefranzoni  2 місяці тому

      @@cochogod muchas gracias por tu comentario!

  • @josefabiogamboabarragan6147
    @josefabiogamboabarragan6147 4 місяці тому

    Excelente... mas claro no puede ser... lo adecue a excel VBA y funciona perfectamente. Gracias Ale.

    • @alefranzoni
      @alefranzoni  4 місяці тому

      Me alegro de que te haya servido y gracias por tu comentario!

  • @CarlosAguilar-v7x
    @CarlosAguilar-v7x 11 місяців тому

    Excelente información!
    Saludos desde Perú.

  • @danielpardino4254
    @danielpardino4254 5 місяців тому

    Hola Ale Franzoni, muy bien explicado !!!
    Todo muy claro.
    Duda....
    ¿Se puede realizar un script en donde el Sistema Operativo cierre la sesión del usuario en SAP, todo de forma automática ?
    Ya que muchas veces el usuario cierra SAP pero su cuenta se encuentra colgada y sigue trabajando desde el Administrador de Tareas.

    • @alefranzoni
      @alefranzoni  4 місяці тому

      Hola Daniel, qué tal? En primer lugar, muchas gracias por tu comentario. En cuanto a tu duda, sí, se puede. Si solo quieres cerrar las sesiones que están abiertas es relativamente fácil, podés crear un script para que se ejecute, detecte si hay conexiones abiertas y las cierre. Te dejo un ejemplo bien sencillo:
      If Not IsObject(application) Then
      Set SapGuiAuto = GetObject("SAPGUI")
      Set application = SapGuiAuto.GetScriptingEngine
      End If
      Main
      Sub Main()
      If application.children.count = 0 Then Exit Sub
      for i = 0 to (application.children.count - 1)
      Set connection = application.Children(cint(i))
      connection.CloseConnection()
      next
      End Sub
      Lo que va a estar haciendo es detectar si hay conexiones de SAP establecidas y cerrarlas todas. Esto lo puedes guardar en un archivo VBS y ejecutarlo tanto manual como automáticamente, por ejemplo, mediante el Task Scheduler.
      Saludos.

  • @alexanderjimenez5268
    @alexanderjimenez5268 11 місяців тому

    Excelente aporte Ale, muchas gracias. Te hago una consulta del lado del servidor que se debe habilitar para que se pueda ejecutar este scripting, es decir para que lo permita. Especificamente con el SAPLogon, porque internamente si podemos ejecutar scripts a nivel de transacciones, pero para logear se queda en el seteo de usuario y password, es como si se perdieran el Focus de la ventana del SAPLogon, espero me haya logrado explicar bien.

    • @alefranzoni
      @alefranzoni  11 місяців тому

      Muchas gracias Alexander por tu comentario. En cuanto a tu duda, lo único que se debe habilitar es a través de la RZ11 es el atributo sapgui/user_scripting. Estando este último en True, no deberías tener problemas con ninguna pantalla, sea ya habiendo iniciado sesión o en la pantalla de login. Para verificarlo, estando parado en la pantalla de login, deberías poder ver la opción de grabar un script. Saludos.

  • @hugobayona793
    @hugobayona793 Місяць тому

    Hola Ale, gracias por la explicación. Tengo el inconveniente al entrar por auth, como incluir el mandante?

    • @alefranzoni
      @alefranzoni  Місяць тому

      Hola Hugo, ¿cómo estás? Te comento que para incluir el mandante vas a tener que agregar una línea más con el valor correspondiente antes de hacer el inicio de sesión.
      Agrega lo siguiente _(antes o después del usuario/contraseña, eso no importa, pero sí tiene que ser antes del _*_".press"_*_ que es el botón para iniciar sesión)_ y volvé a probar:
      ⬇️ *Mandante*
      Session.findById("wnd[0]/usr/txtRSYST-MANDT").text = "ACA TU MANDANTE"
      Espero que te sirva,
      Saludos.

  • @xjuandax55
    @xjuandax55 8 місяців тому

    Hermano que crack, yo automatizo actualmente los procesos en mi empresa por medio de macros y script de sap, no sabia que se podía abrir directamente desde el .vbs, siempre migraba el codigo a visual basic en excel y lo ejecutaba desde allí. te pregunto si quisiera abrir un libro excel desde aqui tambien lo puedo hacer? o cuelquier otra app?

    • @alefranzoni
      @alefranzoni  8 місяців тому +1

      Hola Juan, cómo estás? ¡Que bien que ya estés metido en este mundo! Y en cuanto a tu consulta, sí, puedes abrir un Excel u otros programas desde prácticamente cualquier código, cada uno puede tener sus particularidades, pero la respuesta rápida es un sí.
      Saludos.

    • @xjuandax55
      @xjuandax55 8 місяців тому

      @@alefranzoni un nuevo sub colega

    • @xjuandax55
      @xjuandax55 8 місяців тому

      Es una herramienta muy potente, me encargo de automatizar procesos dentro de mi organización por medio de estas script de SAP

    • @alefranzoni
      @alefranzoni  8 місяців тому

      @@xjuandax55 Muchas gracias por tu apoyo!

  • @guillermo8843
    @guillermo8843 2 роки тому

    Perfecto! Ya mismo voy a ver el próximo!

  • @jhonathanenciso8675
    @jhonathanenciso8675 Рік тому

    Grande Ale!
    Una pregunta, en la empresa en donde estoy trabajando el SAP con las credenciales de IT manager ingresamos varias personas por que tiene permisos para ingresar a ciertas transacciones que no todos podemos ver. Recientemente me pidio si podia hacer un automatismo que inicialmente todos los dias descargara los archivos de una cierta transaccion despues del horario laboral.
    Solo que me paso que una vez estaba dos personas conectadas a su sap y el programa no pudo ejecutarse, ya que ejecutaba (SAP) esa ventana inicial donde te da las opciones de cerrar todas la conexiones activas o simplemente abrir una nueva y mantener las demas activas, yo quisiera la segunda opcion, es posible esto con lineas de codigo usando VBA?
    Gracias de antemano por todo tu contenido,
    Un saludo

    • @alefranzoni
      @alefranzoni  Рік тому

      Hola Jhonatan, sí, podés hacer tranquilamente lo que me estás diciendo, ya que en esa instancia ya contas una conexión establecida y, por lo tanto, podés usar Scripting para seleccionar la opción que desees.
      Lo que vas a tener que hacer es, en el código, después de que presiones para ingresar con tu usuario, verificar si apareció esta ventana emergente (If Not session.findById("wnd[1]", False) Is Nothing Then ...) y si apareció, presionar la opción que necesites y continuar con la ejecución.
      Para saber como hacer referencia a esta pantalla que te aparece, inicia la grabadora de script desde el momento que te vas a loguear y cuando aparezca el cartel, graba tu decisión. Con esto ya podrías solucionar tu problema.
      Saludos.

  • @miguelchaves2065
    @miguelchaves2065 Рік тому

    Excelente contenido, Funciona perfecto, gracias!

  • @Zubelzo
    @Zubelzo 2 роки тому

    Muito bom conteúdo, sou do Brasil e estou gostando sobre esse assunto de SAP Script.

    • @alefranzoni
      @alefranzoni  2 роки тому +1

      Muito obrigado! Fico feliz que esteja gostando do conteúdo. Muito mais em breve!

  • @osalla2024
    @osalla2024 7 місяців тому

    se podria hacer iterando entre una lista de servidores? por ejemplo tomandolos de un fichero auxiliar la ip, usuario y pass...para recopilar datos?

    • @alefranzoni
      @alefranzoni  6 місяців тому

      Hola Julio, ¿cómo estás? Sí, sin ningún problema, podrías obtener los datos de un fichero auxiliar/externo y utilizarlos en conjunto con el script. Saludos.

  • @ciprianovillalobos7483
    @ciprianovillalobos7483 Рік тому

    Muy util y bien explicado todo, estoy tratando de crear una herramienta de consulta en 15 instancias distintas donde se logea una a una y ectrae una corta inf, pero me encuentro que los objetos tienen nombres distintos en alginas instancias, entonces entra en uno me devielve lonque necesito y cuando intenta en otro, el objeto se llama diferente y se para, no se como o saltar el error o que valide de alguna manera, si se te ocurre algo, mil gracias de antemano

    • @alefranzoni
      @alefranzoni  Рік тому +1

      Buenas, podrías usar varias cosas dependiendo de tu caso. Una sería hacer una verificación de si existe el elemento que estás buscando y si es así, seguir con lo que sea necesario. Otra es, si tenés el nombre de todos los posibles elementos, colocarlos todos y agregar antes de estos un (On Error Resume Next) para manejar los errores y que los omita si ocurren y siga con la ejecución. Eso lo vas a tener que definir dependiendo del flujo de tu código. Saludos.

  • @feraldi8145
    @feraldi8145 Рік тому

    Interesantísimo Ale, me funciona a la perfección. ¿Qué modificación tendría que hacer al código para que una vez ejecutado me cierre totalmente la aplicación de SAP después de cerrar sesion y conexión?

    • @alefranzoni
      @alefranzoni  Рік тому +2

      Muchas gracias por tu comentario. Para cerrar la aplicación por completo, SAP no nos proporciona un método directo, pero dependiendo si estás trabajando directamente desde un Script (vbs) o Excel (VBA), podrías utilizar lo siguiente:
      ⬇️ *VBS*
      Set WshShell = CreateObject("WScript.Shell")
      WshShell.Run "taskkill /f /im saplogon.exe", 0, True
      ⬇️ *VBA*
      Shell "taskkill /f /im saplogon.exe", vbHide
      Colocando ese código al final de toda tu ejecución, cerrará por completo la aplicación. Recordá que si la cerras y tenías sesiones abiertas sin datos guardados, los perderás.
      Espero haberte podido ayudar,
      Saludos.

    • @feraldi8145
      @feraldi8145 Рік тому

      ​@@alefranzoni Impresionante Ale, muchísimas gracias, de verdad. Me interesaría muchísimo recibir formación on-line, en castellano, de SAP, ¿me podrías recomendar algún lugar al que recurrir?. Greetings from Spain 😉

    • @feraldi8145
      @feraldi8145 Рік тому

      Y si, sin duda me has ayudado y mucho

    • @alefranzoni
      @alefranzoni  Рік тому +1

      @@feraldi8145 Me alegro de haber podido ayudarte 😁. Sobre tu consulta, hoy en día no sabría recomendarte realmente ningún sitio ni formación, porque la realidad es que tampoco hay mucha información al respecto, y aún menos en español, motivo por el cual empecé a publicar este tipo de contenido para que haya un poco más de conocimiento del campo en nuestro idioma. Así que, eso te lo voy a deber… Lo que sí te puedo recomendar es que te apoyes mucho en la documentación de Scripting, si aún no lo haces o no la has revisado, donde podrás encontrar muchísima información y ejemplos sobre todos los objetos, sus propiedades y métodos. La docu la puedes encontrar aquí: bit.ly/ScriptingDocumentation.
      Saludos.

    • @feraldi8145
      @feraldi8145 Рік тому

      Genial, Ale. De nuevo, muchas gracias por todo.

  • @diegovicentejuarezrueda7721

    Excelente día Ale,
    ¿Podemos mantener las ventanas de SAP minimizadas u ocultas mientras se ejecuta el script? Un tipo ejecutar en fondo.

    • @alefranzoni
      @alefranzoni  Рік тому +1

      Hola Diego, cómo estás? Te cuento que no hay manera nativa de ocultar todas las ventanas de SAP, si podrías utilizar algunos workarounds para realizarlo. Sino lo único que está disponible a nivel scripting es la opción iconify, mediante la cual vas a poder minimizar una ventana dada.
      Te dejo un ejemplo de cómo se debería utilizar:
      *Session.findById("wnd[0]").iconify*
      Eso sí, cómo te dije esto lo que hace es minimizar la ventana, no ocultarla (y no siempre funciona del todo bien). Si te parece qué puede ser interesante saber cómo correr un proceso con las ventanas ocultas, me lo anoto como un tema a traer al canal en próximos videos.
      Saludos.

    • @diegovicentejuarezrueda7721
      @diegovicentejuarezrueda7721 Рік тому

      @@alefranzoni
      Perfecto, muchas gracias Ale.
      Un saludo.

  • @carlosalbertocastrobonilla9687
    @carlosalbertocastrobonilla9687 8 місяців тому

    Ale, disculpa la molestia como puedo visualizar el SSO para realizar la conexión. En los parámetros que tengo está descripción, id sistema, servidor de mensajes grupo/servidor sirve alguno o debo hacer algo que no pillo

    • @alefranzoni
      @alefranzoni  8 місяців тому

      Carlos, cómo estás? Es el nombre de la conexión si te fijas bien en el video. Así que si no la ves en las propiedades, al igual que muestro en el video, puedes usar el del campo *descripción* que seguramente te funcione, ya que debería ser el mismo. Saludos.

  • @danielguzman3390
    @danielguzman3390 7 місяців тому

    Excelente contenido. Un subcriptor mas...

    • @alefranzoni
      @alefranzoni  7 місяців тому

      ¡Gracias por el apoyo, me ayuda mucho!

  • @cesaryagami8215
    @cesaryagami8215 2 роки тому

    Buenísimo tu vídeo amigo me suscribo, tengo una duda como puedo implementar esto en una macro de excel? Tengo que hacer algo extra estoy intentando pero no puedo

    • @alefranzoni
      @alefranzoni  2 роки тому

      ¡Muchas gracias Cesar por el comentario y por apoyarme con la sub, me ayuda un montón! En cuanto a lo que me consultas, para pasar esto a Excel efectivamente tienes que hacer varios cambios para adaptarlo. Lo que se refiere a los cambios de los objetos de SAP es bastante sencillo, puedes observarlo en este video que lo explique en detalle (ua-cam.com/video/MU4Yye5BfDM/v-deo.html) y después quedaría cambiar el método de *WScript Run* por *Shell* e importar una _librería_ para poder utilizar la función *Sleep* .
      De todas maneras, si no te queda muy claro como hacer todo esto, no te preocupes porque ya tengo listo un video, que subiré en estos días, en donde todo lo que te describo ya está realizado y funcionando y vas a poder bajarte el archivo completo para usarlo o para guiarte como hacerlo.
      Saludos.

  • @hernanmanrique3420
    @hernanmanrique3420 2 роки тому

    Gracias por el aporte, funciona perfecto, una pregunta adicional como le paso argumentos en la línea WScript.CreateObject("WScript.Shell").Run Chr(34) & SAP_GUI_PATH & Chr(34), 2

    • @alefranzoni
      @alefranzoni  2 роки тому

      Hola Hernan, me alegro de que te haya servido! En cuanto a tu consulta, si querés pasarle parámetros a la hora de ejecutar SAP, solo tenes que incluirlos luego del último *Chr(34)* concatenándolo con el amp (&) y luego tus argumentos. Por ejemplo:
      WScript.CreateObject("WScript.Shell").Run Chr(34) & SAP_GUI_PATH & Chr(34) & " --myarg", 2
      Saludos.

  • @soniasoto1975
    @soniasoto1975 2 роки тому

    Hola cómo estás? me podrías decír qué debería cambiar si es que entro directo a SAP sin autenticar? Muchas gracias

    • @alefranzoni
      @alefranzoni  2 роки тому +1

      Hola Sonia, qué tal? Lo que deberías hacer si entras sin autenticarte, es decir, por SSO, es lo que se muestra a partir del minuto 14:50. Solo deberías colocar en la variable *lk0_sso* el nombre del servidor que vas a querer ingresar.
      Saludos.

  • @LUISFABRIZZIOCERRILLOGUILLEN
    @LUISFABRIZZIOCERRILLOGUILLEN 3 місяці тому

    estuve intntando cerrar la ventana de sap logon al terminar el codigo, pero no parece surtir efecto, yo he usado esta
    WScript.CreateObject("WScript.Shell").Run "taskkill /f /im" & Chr(34) & SAP_BIN & Chr(34),0,False

    • @alefranzoni
      @alefranzoni  2 місяці тому

      Te esta faltando un espacio luego de "im". Sería:
      WScript.CreateObject("WScript.Shell").Run "taskkill /f /im " & Chr(34) & SAP_BIN & Chr(34), 0, False
      Por eso no te lo cerraba, con ese pequeño cambio funcionará.
      Saludos.

  • @JulioCesar-vc2kw
    @JulioCesar-vc2kw 2 роки тому

    Una consulta, como puedo obtener el element del GUI? No entiendo esa parte y no sé como.obtienes el.identificador del usuario, contraseña, o de otros campos cuando ingresas al sap. Gracias

    • @alefranzoni
      @alefranzoni  2 роки тому

      Hola Julio, ¿cómo estás? Si te referís al objeto de SAP GUI, lo que hago es asociar en la variable *root* mediante el método *GetObject()* dicho objeto para luego poder obtener el motor de scripting (Scripting Engine) del mismo y almacenarlo en la variable *Application*. Por supuesto que para esto debes tener el SAP GUI abierto previamente, de lo contrario esto fallará al intentar inicializar las variables.
      En cuanto a los campos, para identificarlos podes utilizar una simple grabación para saber como se identifican y poder manipularlos desde el código. Todo eso lo explico en el video introductorio a Scripting, te lo dejo a continuación: ua-cam.com/video/jRLYmbzAOOE/v-deo.html
      Saludos.

  • @ghersonobregon6744
    @ghersonobregon6744 2 роки тому

    Q excelente video sigue así saludos

    • @alefranzoni
      @alefranzoni  2 роки тому

      ¡Muchas gracias! Me alegro de que te haya gustado y pronto se viene más contenido.
      Saludos.

  • @CARLOSRAMIREZ-eb8kd
    @CARLOSRAMIREZ-eb8kd 2 роки тому

    Excelente video, super bien explicado.
    En mi caso me aparece un mensaje de error "The enumerator of the collection cannot find an element with the specified index."
    Revisando, se refiere a la línea de:
    Set Session = Connection.Children(0)
    Me puedes ayudar porfavor.
    Saludos,

    • @alefranzoni
      @alefranzoni  2 роки тому +1

      Muchas gracias por tu comentario Carlos! Sobre tu consulta, ese error te está saliendo porque al momento de querer inicializar el objeto session no hay ninguna sesión activa. Te sugiero que te fijes si el resto del código está bien y si se está abriendo bien el sap y la sesión antes de llegar a esa línea.
      Cualquier inquietud no dudes en consultarme.
      Saludos.

    • @CARLOSRAMIREZ-eb8kd
      @CARLOSRAMIREZ-eb8kd 2 роки тому

      @@alefranzoni Hola Ale! Gracias por tu respuesta, he revisado el código y todo está igual al ejemplo que explicas, incluso te lo comparto, he cambiado el nombre del servidor por "nombre" y los demás datos los he dejado igual, el programa inicia perfecto una vez inicia la interfaz de ingresar usuario y contraseña, aparece el mensaje de error..
      'SAP
      SAP_BIN = "saplogon.exe"
      SAP_GUI_PATH = "C:\Program Files (x86)\SAP\FrontEnd\SapGui\" & SAP_BIN
      ' Connections
      lk0_sso = "nombre"
      lk0_auth = "nombre"
      ' Auth
      user = "username"
      password = "pw"
      Main
      Sub Main()
      If Not FileExists(SAP_GUI_PATH) Then
      MsgBox "El archivo no existe en la ruta especificada.", vbExclamation, "Archivo no encontrado"
      Exit Sub
      End If
      ExecuteAndWaitForSAP
      ' SapGuiApplication
      Set root = GetObject("SAPGUI")
      Set Application = root.GetScriptingEngine
      ' Open sync connection
      '
      ' Without SSO
      Set Connection = Application.OpenConnection(lk0_auth, True)
      Set Session = Connection.Children(0)
      Session.findById("wnd[0]/usr/txtRSYST-BNAME").text = user
      Session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = password
      Session.findById("wnd[0]/tbar[0]/btn[0]").press
      ' Open any tx
      Session.StartTransaction("IW32")
      MsgBox "Ok!"
      ' Shutdown the connection
      Set Session = Nothing
      Connection.CloseSession("ses[1]")
      Set Connection = Nothing
      Set Application = Nothing
      End Sub
      Sub ExecuteAndWaitForSAP()
      ' Run saplogon bin
      WScript.CreateObject("WScript.Shell").Run Chr(34) & SAP_GUI_PATH & Chr(34), 2
      ' Wait to be initialized
      isSapInitialized = False
      Do While Not isSapInitialized
      isSapInitialized = IsProcessRunning(SAP_BIN)
      Loop
      WScript.Sleep 3000
      End Sub
      Function IsProcessRunning(targetProcess)
      Set WMIService = GetObject("winmgmts:\\.
      oot\cimv2")
      query = "SELECT * FROM Win32_Process"
      Set items = WMIService.ExecQuery(query)
      For Each item In items
      If item.Name = targetProcess Then
      IsProcessRunning = True
      Exit Function
      End If
      Next
      IsProcessRunning = False
      End Function
      Function FileExists(filePath)
      Set fso = CreateObject("Scripting.FileSystemObject")
      If fso.FileExists(filePath) Then
      FileExists = True
      Else
      FileExists = False
      End If
      End Function
      El mensaje de error sale para la linea 29, ¿Cómo puedo verificar si la sesión está activa?
      Saludos,

    • @alefranzoni
      @alefranzoni  2 роки тому

      @@CARLOSRAMIREZ-eb8kd Bien, es bastante raro, pero estoy seguro de que en realidad lo que está pasando es que te está mostrando ese error por las credenciales. Asegúrate de estar colocando las credenciales correctas acá:
      ' Auth
      user = "username"
      password = "pw"
      Recordá que tenés que cambiar lo que puse yo por tu usuario y contraseña correcta.
      Otra cosa que podés hacer, como veo que estás intentando usar el método por autenticación, es cambiarlo e intentar por SSO si lo tenés habilitado y probar así (como muestro en el video, la segunda alternativa donde no coloco user ni password).
      Manteneme al tanto,
      Saludos.

  • @alejandrogarzon5097
    @alejandrogarzon5097 7 місяців тому

    Bro, la verdad No se porque no me agarra los codigos cuando ejecuto el script me sale un error. Siento que la extensión no me quedo bien agregada, tendras un vídeo explicando mejor esa conexión ?

    • @alefranzoni
      @alefranzoni  7 місяців тому

      Hola Alejandro, cómo estás? No sé exactamente a que te referís. Podrías dejarme más detalles de qué error te da y cuando ejecutas que comando? Así tengo más contexto para intentar ayudarte. Saludos!

  • @ronaldmorales316
    @ronaldmorales316 Рік тому

    hola, de casualidad tienes un manual para habilitar SSO en SAP?

    • @alefranzoni
      @alefranzoni  Рік тому

      Hola Ronald, no cuento con ningún manual para hacer eso, pero en Internet hay bastante contenido de como realizarlo. Demás está decir que tenés que ser el owner de la instalación de SAP de tu empresa para poder efectuarlo. Si no, podrías directamente pedírselo al área de IT. Saludos.

  • @giovaniglzglz8a477
    @giovaniglzglz8a477 2 роки тому

    Buen día me aparece el mismo error que comentas al final para la ejecución, como se puede resolver o la parte 2

    • @alefranzoni
      @alefranzoni  2 роки тому

      Hola Giovani, cómo estás? Me podrías decir en que parte y cuál es el error que te aparece? Para poder ubicarme mejor y darte una mejor respuesta. Saludos.

  • @josemanuelvillanuevalopezj435
    @josemanuelvillanuevalopezj435 4 місяці тому

    Si se entra modo SSO mediante un portal web cambia, he estado intentando pero no he tenido éxito

    • @alefranzoni
      @alefranzoni  4 місяці тому +1

      Hola Jose, si utilizas SAP mediante interfaz web, lamentablemente scripting no es compatible. Tendrías que usar alguna otra alternativa para automatizar las tareas. Saludos.

    • @josemanuelvillanuevalopezj435
      @josemanuelvillanuevalopezj435 4 місяці тому

      @@alefranzoni muchas gracias amigo, te felicito eres muy bueno

    • @alefranzoni
      @alefranzoni  4 місяці тому

      @@josemanuelvillanuevalopezj435 gracias a vos por el apoyo 🙌🏻

  • @derickmendivelso7173
    @derickmendivelso7173 Рік тому

    hola amigo de nuevo yo 😁, queri preguntarte como hago para pasar este script a excel segui tu otro tutorial, pero alli no hay tantas condiciones como lo es este caso, esto lo quiero hacer poder programar ya sea el script o el excel con el programador de tareas para que se ejecute a una hora determinada, saludos desde Colombia

    • @alefranzoni
      @alefranzoni  Рік тому

      Derick, cómo estás? Bien, para poder pasar este script a código VBA para ejecutarlo dentro de un Excel tienes que hacer algunas modificaciones más que nada para adaptar los métodos Shell y Sleep. En este video ua-cam.com/video/YQq8wnDB2HU/v-deo.html ya está migrado esto mismo a Excel, asique puedes echarle un vistazo y/o bajarte el archivo final para ver como es que se hace.
      Una vez hecho eso, ahí si puedes automatizar el excel para que se ejecute desde argumentos externos y podrás programar el script para que ejecute tu libro a la hora deseada desde el programador de tareas de windows.
      Espero que te sirva,
      Saludos.

    • @derickmendivelso7173
      @derickmendivelso7173 Рік тому

      @@alefranzoni hola Ajeandro de verdad eres un crack, te agradezco mucho tu ayuda en verdad me ha servido mucho, pero quisiera hacerte otras dos consultas; sabes que código o que debo hacer para que en el script tome la fecha del equipo osea que cuando lo ejecute tome la fecha presente y no la grabada, y la otra consulta es si sabes porque cuabdo exportó los archivos en formato xlsx excel me indica que el archivo está roto o que la extensión está dañada, en verdad agradezco mucho tu ayuda saludos desde Colombia😊

    • @alefranzoni
      @alefranzoni  Рік тому

      ​@@derickmendivelso7173 ​ Hola nuevamente Derick, gracias a vos en primer lugar por tus comentarios y apoyo.
      En cuanto a tus consultas, vamos por la primera, para poder tomar la fecha actual es muy sencillo, te voy a dejar dos ejemplos, uno si estás ejecutando el script directamente desde un archivo .vbs y otra si lo estás haciendo dentro de un Excel.
      ➡️ *VBS - Obtener fecha actual*
      Con la función Now podrás obtener el día y hora actuales y con las funciones Day, Month y Year puedes darle el formato que quieras, en este caso sería "DD.MM.AAAA", pero tú puedes usarlos para darle el formato que quieras. De la misma manera, con Hour, Minute y Second podrías obtener también las horas, minutos y segundos por si quisieras incluirlas.
      _Day(Now) & "." & Month(Now) & "." & Year(Now)_
      ➡️ *VBA (Excel)- Obtener fecha actual*
      Con la función Now podrás obtener el día y hora actuales al igual que en VBS, pero ahora con la función Format puedes darle el formato deseado, en este caso sería "DD.MM.AA_HHmmss", pero tú puedes darle el formato que quieras.
      _Format(Now, "dd.MM.aa_HHmmss")_
      En cuanto a tu *segunda duda* te digo que si, si le pones la extensión *.xlsx te va a fallar, es un error de SAP, tienes que exportarlo con extensión *.xls y listo, como se muestra en el video de exportación y no tendrás problemas.
      Saludos.

    • @derickmendivelso7173
      @derickmendivelso7173 Рік тому

      @@alefranzoni amigo eres un crack en verdad e buscado esa información por otras partes y en verdad no la he encontrado así de clara, te agradezco mucho en verdad. Saludos desde Colombia

  • @mark551
    @mark551 Рік тому

    Hola Ale. Muchas gracias, he logrado muchas cosas con tus videos. Una duda, si tengo acceso a sap gui desde un ejecutable “tx.sap” entra directo. Sin password. Hay manera de hacer que el script desde el inicio abra el script y lo ejecute?

    • @alefranzoni
      @alefranzoni  Рік тому

      Hola Mark, en primer lugar, me alegro mucho de que te hayan servido los videos. En cuanto a tu consulta, sí, sería como abrir cualquier tipo de archivo. Si estás en VBS, podrías abrirlo creando el objeto WScript.Shell y pasándole la ruta, y en el caso de VBA, simplemente con Shell y pasándole la ruta del archivo.
      Lo que tienes que tener en cuenta es que esto debería ejecutarse si o si al inicio de tu automatización, dejar un tiempo para que inicie y luego comenzar con el seteo de las variables necesarias para la automatización. De lo contrario, si lo haces sin hacer una pausa entre operaciones, lo más probable es que te falle al intentar inicializar los objetos de SAP que aún no están disponibles.
      Espero haberte podido ayudar a aclarar tu duda,
      Saludos.

  • @feraldi8145
    @feraldi8145 Рік тому

    Hola Ale, tengo una duda que no se resolver y que te propongo como posible idea para un futuro vídeo, si te apetece, claro.
    Estoy generando pedidos en SAP con un script a partir de datos en un excel, cada cierto tiempo un pop-up con el que he de interactuar interrumpe la ejecución, el típico de "Han aparecido mensajes, ¿Desea grabar el documento o tratar los datos?" y ello me obliga a lanzar de nuevo mi script.
    Seguro que deben haber estructuras de control de ejecución en vba que permitan resolver estas situaciones sin que se detenga el código, no se si me podrías echar una mano con ellas.
    Muchas gracias por tu ayuda. Un saludo.😄

    • @alefranzoni
      @alefranzoni  Рік тому

      Hola, ¿cómo estás? Entiendo que este mensaje que me comentas aparece en SAP en algunas ocasiones mientras estás ejecutando tu script. Esto es muy fácil de solucionar, de hecho, he comentado como hacerlo en este video, por ejemplo, ua-cam.com/video/FX2gWTDIy9E/v-deo.html que te deje el momento exacto que explico como detectar esa ventana y accionar con la misma.
      En resumen, básicamente lo que vas a tener que hacer es, detectar en qué momento del flujo podría aparecer esa ventana y agregar el código para saber si efectivamente se está mostrando o no. Si es así, que se presione la acción necesaria para continuar, de lo contrario, seguirá el código su ejecución sin tener que interactuar con dicho elemento.
      Saludos.

  • @oscareliasdelacruzcotrina3944
    @oscareliasdelacruzcotrina3944 2 роки тому

    Ale, como hago esto pero con python Y_Y

    • @alefranzoni
      @alefranzoni  2 роки тому +3

      Hola Oscar, cómo estás? Te comento que para replicar este funcionamiento y ejecutar scripting en Python es bastante sencillo, tan solo tienes que importar las librerías *win32com.client, sys, subprocess y time* (esta última es opcional, pero te sirve para hacer el sleep) y luego adaptar un poco el código para:
      1. Abrir SAP GUI (con subprocess)
      2. Esperar que SAP se termine de ejecutar completamente (puedes usar el método sleep de la librería time)
      3. Setear las variables necesarias (sapgui, application, connection y session)
      4. Ahora ya podrías ejecutar código perfectamente, por ejemplo, estas líneas:
      session.findById("wnd[0]").maximize
      session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "ID"
      Espero que te haya podido guiar un poco sobre como realizarlo, de lo contrario y si te parece bien, me apunto la idea para hacer un video próximo sobre como realizar todo esto que te comento en un script de Python.
      Saludos.

    • @oscareliasdelacruzcotrina3944
      @oscareliasdelacruzcotrina3944 2 роки тому +1

      Gracias Ale, aun no habilitan el scripting para sap en el servidor, asi que por mientras estoy usando la libreria pyautogui de python bro, va bien hasta el momento.

    • @alefranzoni
      @alefranzoni  2 роки тому

      @@oscareliasdelacruzcotrina3944 Genial y no hay problema, cuando lo habiliten si te surge alguna inquietud, no dudes en consultarme que te doy una mano en lo que pueda.