[TUTORIAL] SAP Scripting: Integrar, personalizar y ejecutar nuestro Script en Excel

Поделиться
HTML-код
  • Опубликовано: 4 фев 2025

Комментарии • 127

  • @Aldrannt
    @Aldrannt Год назад

    muy bueno, yo tengo un curso de scripting en udemy, pero está explicado a grandes rasgos, me gustó tu vídeo, está my bien explicado, me parece genial

    • @alefranzoni
      @alefranzoni  Год назад

      Me alegro de que te haya gustado y gracias por tus comentarios!

  • @feraldi8145
    @feraldi8145 Год назад +1

    Espectacular Ale, por trabajo estoy muy interesado en el SAP Scripting y me cuesta mucho encontrar recursos de calidad por la web, por suerte, con tus videos, estoy aprendiendo muchísimo. Muchas gracias.

    • @alefranzoni
      @alefranzoni  Год назад +1

      Hola Feraldi, me alegro mucho de lo que me comentas. Tal cual, hay muy poca información sobre estos temas, así que desde mi lugar un gusto aportar mi granito de arena. Pronto ya vendrá mucho más contenido super interesante. Saludos.

    • @feraldi8145
      @feraldi8145 Год назад +1

      @@alefranzoni Grandísimas noticias Ale, mil gracias.

    • @rojolocura7661
      @rojolocura7661 Год назад

      Es un Maestro !! 👏👏👏

  • @JulianaSantos-ob8re
    @JulianaSantos-ob8re 2 года назад +1

    Hola Ale, felicidades por los videos y gracias por compartir tus conocimientos.

    • @alefranzoni
      @alefranzoni  2 года назад

      Hola Juli, es un placer compartir este contenido con ustedes y que puedan disfrutarlo. ¡Muchas gracias por tu comentario!

  • @CarlosAguilar-v7x
    @CarlosAguilar-v7x Год назад

    Que capo! saludos desde Perú!

  • @felipetroncosoch
    @felipetroncosoch 2 года назад

    Muchas Gracias!!!!! te felicito por tu contenido!!!!
    lo mejor del 2022 !!!!!!!

    • @alefranzoni
      @alefranzoni  2 года назад

      ¡Muchas gracias por tu comentario Felipe! Me alegro que te esté gustando el contenido, próximamente se viene mucho más. 🙌🏻

  • @OlakPopochas
    @OlakPopochas 2 месяца назад

    Tu canal me encanto y me sirvió de mucho, nuevo suscriptor, estare pendiente de tu contenido

    • @alefranzoni
      @alefranzoni  2 месяца назад

      ¡Muchas gracias por el apoyo! Muy pronto volveré a subir más contenido, te mando un saludo.

  • @maximilianopuebla8276
    @maximilianopuebla8276 Год назад

    Hola Ale, muchísimas gracias! Me sirve bastante! Eternamente agradecido por tu aporte! Slds

    • @alefranzoni
      @alefranzoni  Год назад

      Hola Maxi, muchísimas gracias a vos por tu comentario, se aprecia mucho. Desde acá encantado y un gusto poder compartir estos temas con ustedes.
      Saludos.

  • @charlyfu76
    @charlyfu76 Год назад

    Excelente video y excelente explicación, muchas gracias Ale... saludos!

    • @alefranzoni
      @alefranzoni  Год назад

      Muchas gracias por tu comentario Charlyfu!

  • @marcocervantes9340
    @marcocervantes9340 2 года назад

    Hola Ale, me apunto para tu canal , me ha servido mucho para módulo PM , estamos atentos Gracias 🙏

    • @alefranzoni
      @alefranzoni  2 года назад +1

      Muchas gracias Marco por tu comentario y por apoyarme, es lo que me motiva a seguir creando contenido para ustedes y me alegro que les pueda ser de ayuda. Nuevamente gracias y si, atentos porque próximamente se viene mucho más contenido!

  • @tomassukanec5895
    @tomassukanec5895 2 года назад

    Muy completo. Excelente

  • @ejhonathanchuil1329
    @ejhonathanchuil1329 2 года назад

    Excelente video!! ya me inscribi!! mucho exito!!

    • @alefranzoni
      @alefranzoni  2 года назад

      Muchas gracias por tu comentario!

  • @zanguinetti8612
    @zanguinetti8612 Год назад

    Hola Ale, me ha conmovido que respondas tan bien cada uno de los comentarios, no cualquiera hace eso, estoy agradecido por ello, además soy nuevo suscriptor. Tengo una consulta, *¿Sabes si existe alguna restricción por parte de SAP en el uso de esta herramienta?**¿Existe documentación de SAP que especifíque que se puede utilizar el script en una Macro?* Me sería muy útil tu respuesta porque tengo ya muchas automatizaciones pero quiero estar seguro de que todo irá bien y sin problemas antes de desplegarlas.

    • @alefranzoni
      @alefranzoni  Год назад +1

      Muchas gracias por tu comentario y por suscribirte, me ayuda muchísimo. La verdad que trato en la medida de lo posible y cuando tengo un ratito libre de ir contestándoles a todos y tratando de ayudarles.
      Ahora sí, en cuanto a tu consulta; no hay ningún tipo de restricción de parte de SAP por utilizar esta herramienta, dado que es una función *legacy* de SAP, es decir, que ya viene incluida por la misma empresa. Por lo tanto, no te preocupes que no vas a tener ningún inconveniente. En cuanto a la documentación, no hay una que diga específicamente "se puede usar con tal o cual cosa" pero sí hay una oficial, la cual siguen teniendo y manteniendo actualizada a día de hoy, donde ellos explican el uso de cada uno de los objetos y demás, con lo cual respalda su uso. Te dejo el link: bit.ly/ScriptingDocumentation.
      Cualquier consulta estoy a disposición, a seguir automatizando!
      Saludos.

  • @Zubelzo
    @Zubelzo 2 года назад +1

    Show, mais um video top de muito aprendizado!

  • @alvaromorales9403
    @alvaromorales9403 9 месяцев назад

    Hola buenas tardes muy buen video una consulta en el sap mm se puede hacer ordenes de compras de manera masiva jalando solpeds y otros datos de una tabla excel? Porque en donde trabajo son varias solped y es dificil trabajarlas una por una? Porfavor le estaria muy agradecido si me responde

    • @alefranzoni
      @alefranzoni  9 месяцев назад

      Hola Alvaro, ¿cómo estás? Desconozco de la operatoria que me estás comentando, pero asumo que sí puedes hacerlo sin ningún problema. Tendrías que tener los datos a ingresar en la transacción en cuestión en un Excel y luego desde el script, manipularlos para colocarlos donde los desees. Puedes personalizar las ejecuciones a tu gusto para adaptarlas a tus requisitos.
      Saludos.

  • @giulianotf89
    @giulianotf89 Год назад

    Muchisimas gracias por la Info. Muy buenos los videos. Tengo una consulta puntual : ¿ Explicas en alguno de ellos como hacer para modificar antes de cada ejecucion del script las fechas de inicio y final que desee utilizar como filtro?

    • @alefranzoni
      @alefranzoni  Год назад +1

      Muchas gracias por tu comentario Giuliano. No, no tengo un video explicando exactamente esa variante, pero es muy sencillo. Deberías grabar el/los campos que querés cambiar y luego, en el script, adecuarlos al valor que vos desees según tus necesidades. Saludos.

    • @juanruzchamorro4196
      @juanruzchamorro4196 Год назад

      @@alefranzoni Ale, con respecto a la consulta del colega, hay alguna forma de automatizar el año presente con fecha de hoy y dos meses atrás?. Saludos desde Valparaíso en Chile.

    • @alefranzoni
      @alefranzoni  Год назад +1

      @@juanruzchamorro4196 Juan, que tal? Si, es muy sencillo de hacer eso en VBA, simplemente tenés que utilizar el siguiente código en lugar de la fecha que desees:
      Format(DateAdd("m", -2, Now), "dd.MM.yyyy")
      De esta manera, le pasamos Now (que es la fecha actual) a la función DateAdd y le indicamos con los parámetros "m" y -2 que le reste dos meses a la fecha actual. Y con Format lo que finalmente hace es, a esta fecha resultante pasarla a formato SAP (fecha con puntos de separador).
      Con eso ya estaría todo,
      Saludos.

  • @juanruzchamorro4196
    @juanruzchamorro4196 Год назад

    Hola, yo también soy nuevo en tu canal, muy claras y prolijas tus explicaciones. Me asombra lo fácil de aprender de tu método. Mi consulta es como hacer una captura de pantalla de la ventana sap activa ya que se requiere para respaldo. Si ya lo respondiste te agradecería si fueses tan amable de redirijirme a la respuesta. Un abrazo desde Valparaíso en Chile.

    • @alefranzoni
      @alefranzoni  Год назад +1

      Hola Juan Cruz, muchas gracias por tu comentario, me alegra mucho saber que les están sirviendo los videos y que se entiende lo que quiero trasmitirles. En cuanto a tu consulta, no tengo ningún video sobre ese tema, pero es relativamente sencillo hacerlo y justamente estoy preparando un tutorial. Estate atento al canal que en breve se viene dicho video. Saludos hacía Chile!

    • @juanruzchamorro4196
      @juanruzchamorro4196 Год назад

      @@alefranzoni gracias por todo lo que entregas, pero soy Juan Ruz. Saludos y abrazos desde Valparaíso en Chile.

    • @alefranzoni
      @alefranzoni  Год назад

      Jaja perdón Juan, leí rápido y me equivoqué 😅. Saludos.

  • @MaríaCarolinaDamiano
    @MaríaCarolinaDamiano Год назад

    Hola Ale! Muchas gracias por tu aporte, es excelente. Actualmente estoy necesitando copiar la info con la que lleno los campos de la transacción MB1B a un excel con columnas. Cómo puedo hacer? Tenés algún tutorial? OTRA VEZ GRACIAS!

    • @alefranzoni
      @alefranzoni  Год назад

      Muchas gracias por tu comentario. En cuanto a tu consulta, vos los que querés hacer es:
      *1.* Llenar la transacción con datos desde tu Excel
      *2.* Llenar tu Excel con los datos que ya completaste en la tx
      Comentame así te puedo dar una mano,
      Saludos.

  • @cristianpizarro9893
    @cristianpizarro9893 Год назад

    Alejandro eso que haces declarar variable tipo objeto para que serviria, perdon la pregunta pero voy entiendo de a poco. Saludos y gracias

    • @alefranzoni
      @alefranzoni  Год назад

      La declaración de variables, en el caso que me consultas, de tipo Object, sirven para luego poder inicializar y guardar una referencia a un objeto en la misma y poder utilizarla en la ejecución del código para realizar las diversas tareas que necesitemos.
      Saludos.

  • @guillermoaponte5527
    @guillermoaponte5527 5 месяцев назад

    muy bueno! oye bro como modifico el scrip para que cada vez que lo ejecute actualice la fecha del dia que bajo el reporte

    • @alefranzoni
      @alefranzoni  5 месяцев назад

      Hola Guillermo, cómo estás? Muy fácil, fíjate que hay una línea en donde la fecha la ponemos manualmente, bueno reemplaza ese código por el necesario para obtener la fecha del día y listo.
      Si estás en *Excel* sería: Format(Now, "dd.MM.yyyy")
      Si estás en *VBS* sería: Day(Now) & "." & Month(Now) & "." & Year(Now)
      Saludos.

  • @alancharles7804
    @alancharles7804 2 года назад

    esto es oro! 🌋

  • @lucaschiqui
    @lucaschiqui Год назад

    Al fin un tuto en Argentino jaja me re sirvió, pero en mi caso mi rango de datos de excel va de A2 hasta B30, y esos valores tengo que copiarlos y pegarlos en SAP. Cómo accederías al valor de cada columna dentro del For?

    • @alefranzoni
      @alefranzoni  Год назад +1

      jaja, muchas gracias por tu comentario y me alegro mucho que te haya servido 🙌🏻. Para hacer lo que comentas es bastante sencillo, tendrías que recorrer tu rango en Excel y para cada uno de los valores, saber en qué posición del contenedor en SAP ir insertandolos. Lo que es un poco más complejo quizá es saber en qué índice arrancarías a pegar el contenido de Excel en sap, pero para eso tengo varios videos en mi canal sobre recorrer contenedores y podrías apoyarte en los mismos para resolver esa parte.
      Dicho esto, supongamos que tenés una tabla en sap y el índice donde vas a empezar a pegar los valores es el 5 y tu rango en Excel es A1:A10, entonces, tendrías que hacer algo así:
      private sub Example()
      Dim r as range, c as range
      Dim i as Integer
      ' Indice donde comenzaremos a insertar los datos en sap
      ' En este caso, como es un ejemplo, lo pongo a mano, pero tendrás que obtenerlo con algún método
      i = 5
      ' Seteamos el rango de Excel a recorrer
      Set r = Sheets(1).Range("A1:A10")
      ' Recorremos y vamos insertando valores en sap
      For Each c in r
      session.findById("wnd[0]/containerExample/txtControlExample[" & CInt(i) & ",1]").Text = c.Value
      ' Vamos subiendo el indice objetivo de SAP
      i = i + 1
      Next c
      end sub
      Es un ejemplo y claramente lo tendrás que adaptar a lo que necesites.
      Saludos.

    • @lucaschiqui
      @lucaschiqui Год назад

      @@alefranzoni mil gracias, voy a probar el método que decis, si bien algo similar había podido hacer (salvo lo que mencionas de Clint para el iterador), solo se me pega el primer valor y luego no avanza. Quizás tenga que ver con lo que mencionas de líndice.

    • @alefranzoni
      @alefranzoni  Год назад

      Seguramente sea por eso o también la conversión explícita a entero del índice (función CInt) ya que SAP muchas veces pide esa conversión, por más que ya le estemos pasando una variable de ese tipo. Éxitos Lucas!

  • @Camilo-rq6xp
    @Camilo-rq6xp 10 месяцев назад

    Hola Ale, muchas gracias por este excelente video. Quiero preguntarte, ¿cuántas filas es posible copiar y pegar en Excel utilizando este método?, ya que estoy intentado copiar cerca de 1000 filas de la transacción MB51 pero el script solo trae 121 filas.

    • @alefranzoni
      @alefranzoni  10 месяцев назад

      Hola Camilo, ¿cómo estás? Puedes traer tantas filas como desees, no hay ningún tipo de restricción. Pero, por lo que me comentas, lo que debe estar pasando es que al ser una lista tan larga, vas a necesitar hacer scroll e ir iterando entre el listado para poder traer todos y no solo los 121, que seguramente sean los primeros visibles y por eso “solo te está trayendo estos”. Saludos.

  • @LuisSanchez-fy4he
    @LuisSanchez-fy4he 2 года назад

    excelente video

  • @carloseduardosanchezcortez1486
    @carloseduardosanchezcortez1486 3 месяца назад

    Hola Ale , es posible ejecutar un scrip que ejecute dos transacciones en paralelo (2 ventanas de sap ) ?

    • @alefranzoni
      @alefranzoni  3 месяца назад

      Hola Carlos, se puede, pero hay que ingeniárselas un poco. ¿Por qué? Porque si lanzamos un script, como sabrás, el código se quedará "esperando" que termine la ejecución para continuar con lo siguiente. Entonces, para poder lanzar códigos en paralelo, tendríamos que crear una especie de "launcher" que se encargue de manejar las sesiones y lanzar los scripts independientes en su sesión correspondiente. Esto lo puedes hacer desde VBS o VBA. Si interesa, podría anotármelo para hacer un video sobre eso y traerlo al canal.
      Saludos.

  • @ivangomez3835
    @ivangomez3835 Год назад

    espectacular, una duda, cómo hago para que desde excel me abra la aplicacion de sap?

    • @alefranzoni
      @alefranzoni  Год назад

      Lo explico en otro de mis videos, te lo dejo por acá: ruclips.net/video/cvDxz05Og6E/видео.htmlsi=Xtnrxd0Sq-zso0r1

  • @user-yg7tv9le9t
    @user-yg7tv9le9t 2 года назад

    Increíble el contenido y la calidad de la explicación.
    Pregunta técnica:
    Si al trabajar dentro de una transacción tengo una tabla con muchas filas, ¿Cómo se programaría para indicar que seleccione una fila particular, la cual no siempre estaría en la misma posición?

    • @alefranzoni
      @alefranzoni  2 года назад +3

      ¡Muchas gracias por tu comentario!
      Sobre tu consulta, lo mejor que podrías hacer es recorrer tu tabla/contenedor (por lo general son objetos GuiGridView) e ir comprobando por cada iteración algún valor de referencia (por ejemplo, un texto que contenga la fila) para poder saber cuando estás parado sobre la fila deseada y, así, poder seleccionarla y realizar las acciones que necesites.
      Si no sabes como hacer esto o tenés alguna duda, no te preocupes, porque el próximo video (que voy a estar publicando en estos días) trata exactamente sobre eso; como recorrer y obtener los valores de un listado o contenedor.
      Saludos!

  • @israelea3354
    @israelea3354 10 дней назад

    Hola que tal , donde ubico en mi maquina ese programa de editor? donde ves lo hecho en el script del sap?, ademas tendras un video de scripts donde explique como poner datos de excel a SAP de forma automatizada?? me comentas porfa que este video es bueno pero explica otro tema que estoy buscando

    • @alefranzoni
      @alefranzoni  10 дней назад +1

      No tengo un video que diga específicamente "pasar datos de Excel a SAP", pero si podés mirar la lista de reproducción que tenga creada de SAP Scripting que ahí tengo todos los videos que hablo sobre este tema y vas a poder encontrar la información que me estás comentando, ya que lo hago en reiteradas ocasiones 😉. Básicamente, lo que necesitas es grabar un script escribiendo en el campo que querés rellenar desde tu Excel y luego, cambiar lo que escribiste a mano por el contenido del Excel que desees. Saludos!

    • @israelea3354
      @israelea3354 10 дней назад

      @alefranzoni si basicamente eso, he estado viendo tus videos pero solo hay ejemplos de script del mismo y otro donde haces lo opuesto que yo quiero, porque hago mi script con el.excel, luego le agrego los codigos de la conexion de sap a excel que son los mismos para todos creo, y cambio los nobres de los codigos de excel por el nombre de hoja1 A , y asi en oos campos que voy a cambiar la info, pero al finalizar me sale que los datos agregados son erroneos

    • @alefranzoni
      @alefranzoni  8 дней назад +1

      En este video ruclips.net/video/MU4Yye5BfDM/видео.html si te fijas en el último tramo, lo que hago es modificar un texto de SAP desde Excel, con eso te puede servir para lo que quieres hacer. Saludos.

    • @israelea3354
      @israelea3354 7 дней назад +1

      @@alefranzoni gracias por la info

  • @joandelacruz2764
    @joandelacruz2764 Год назад

    Hola, soy nuevo en el canal. Sap tiene la transaacion ME80FN, desde donde se saca la OT (Orden de Traslado) y OC (Orden de Compra), lo busco colocando el centro en 2 lugares distintos, uno para OT y otro pa OC, mas el rango de fecha que quiero. Se puede extraer esa data con este tipo de scrip y guardarlo sea en formato TXT o EXCEL?

    • @alefranzoni
      @alefranzoni  Год назад

      Hola Joan, bienvenido al canal! Sí, seguramente se pueda. Si la transacción te devuelve un listado con la OT/OC, vas a poder guardarlo. Te invito a que mires este video que te puede ser de mucha ayuda para tu caso: ruclips.net/video/86HYlK_r4R8/видео.html. De lo contrario, avisame que podría mirar en cuanto pueda la transacción y ver que se puede hacer.
      Saludos.

  • @melinajacob7176
    @melinajacob7176 Год назад

    Hola Ale! Mucho gusto! Muy interesante tus videos! Gracias por compartir tanta info! Quisiera preguntarte si hay posibilidad de programar un script para que se ejecute diariamente cada 10 minutos por ejemplo. Es un script sencillo, que no se vincula a Excel ni nada por el estilo. Solo entra a una transacción, ejecuta un par de pasos y listo. Quedo atenta a tus comentarios. Desde ya muchas gracias!

    • @alefranzoni
      @alefranzoni  Год назад

      Hola Melina, muchas gracias por tu comentario, un gusto compartir esta info con ustedes. En cuanto a tu consulta, si, es posible. Si solo es un script sencillo, podés guardar el archivo *.vbs y mediante el Programador de tareas de Windows, programar para que se ejecute con la frecuencia que desees y listo, es muy sencillo. Cualquier consulta, me avisas.
      Saludos.

  • @lycanprosociety790
    @lycanprosociety790 2 года назад

    Hola, muchas gracias por compartir tu conocimiento, muy valioso en verdad.
    Queria preguntarte algo referente a este código, vi que declaraste las variables "r" y "c" de tipo rango, pero solo fue seteada la "r".
    Por que no seteaste la "c" y como es que te funciono sin setearla?
    De atemano gracias.
    Prospero 2023!

    • @alefranzoni
      @alefranzoni  2 года назад +2

      Hola, muchas gracias por tu comentario. En cuanto a lo que me consultas, te explico. Si te fijas, la variable *c* la estamos usando en el bucle *For Each* para recorrer la colección r, que en este caso, es un listado de rangos.
      Si observamos la sintaxis de dicho bucle es:
      *For Each* _element_ *In* _group_
      Donde _element_ es una variable se utiliza para recorrer los elementos de la colección dada, como te comente, en este caso, es un grupo de rangos, por lo tanto, para recorrer cada valor necesitamos que la variable sea de este tipo. En consecuencia, en cada iteración lo que va haciendo internamente es asignar el valor actual del rango que está siendo recorrido a la variable *c* para que podamos manipularlo de la forma deseada. Es por esto que funciona sin "declarar o inicializar" la variable *c* previamente.
      Espero que se haya entendido un poco mejor y cualquier inquietud no dudes en preguntar,
      Saludos y feliz año.

    • @lycanprosociety790
      @lycanprosociety790 2 года назад +1

      @@alefranzoni muchisimas gracias, te entendi perfectamente.
      Tienes algun sitio web o brindas asesorias personalizadas. Creo que valdria mucho la pena pagar alguna asesoria o clases por tu conocimiento.
      Saludos

    • @alefranzoni
      @alefranzoni  2 года назад +1

      @@lycanprosociety790 Excelente, me alegro 🙌. Mira, no tengo nada formal por el momento, pero si estás interesado en alguna clase/asesoría personalizada podemos charlar por correo o LinkedIn, lo que te quede más cómodo, y coordinar para armar algo sin problemas. Mi correo y redes los podés encontrar en mi web o en la descripción de cualquier video de mi canal.
      Saludos.

    • @lycanprosociety790
      @lycanprosociety790 2 года назад

      @@alefranzoni 🌟🌟🌟🌟🌟

  • @danter399
    @danter399 Год назад

    Capo, excelente

    • @alefranzoni
      @alefranzoni  Год назад

      Muchas gracias por tu comentario Dante! Saludos.

  • @dariosantoscba
    @dariosantoscba Год назад

    Excelente video Ale, te hago una consulta, cuando copio el scrip de SAP en la macro de excel y lo ejecuto, me da el error en la linea dos que dice Set Application = SapGuiAuto.GetScriptingEngine, el error que me arroja es "error de compilacion: el uso de la propiedad no es valido" sabes como puedo solucionarlo para correr el script de manera exitosa?

    • @alefranzoni
      @alefranzoni  Год назад +1

      Gracias Dario por tu comentario. En cuanto a tu consulta, sí, es porque como podrás observar en el video para llevar un script a Excel hay que hacer unos pequeños cambios. Uno de ellos es que no podés usar ni setear una variable con el nombre Application, porque es una palabra reservada dentro del entorno de VBA. Cambia dicho nombre por app, por ejemplo, o cualquiera de tu gusto y en los lugares donde estés haciendo referencia a la misma, también coloca el nuevo nombre app (o el que hayas elegido colocarle). Saludos.

  • @juanruzchamorro4196
    @juanruzchamorro4196 Год назад

    Disculpa me faltó algo, la captura de pantalla es a través de sap y poder guardarla en un excel, que es el archivo que recoge los datos desde Sap. Gracias por tu ayuda.

    • @alefranzoni
      @alefranzoni  Год назад +2

      Ya se viene el tutorial sobre este tema 🙌🏻

    • @fernandoriosnavarro1722
      @fernandoriosnavarro1722 Год назад

      @@alefranzonimuchas gracias por el contenido, realizaste este video? Es muy interesante lo que pregunta juan

  • @DavidArias-q6n
    @DavidArias-q6n Год назад

    Que pasa si quiero tomar dos variables para la busqueda ejemplo numero de orde y la localidad

    • @alefranzoni
      @alefranzoni  Год назад

      No hay problema, sencillamente reemplazas la variable en el campo donde desees que se coloque y listo. Saludos.

  • @davidnatera8923
    @davidnatera8923 2 года назад

    Hola Ale, buenas tardes, este vídeo me a sido de mucha utilidad, sin embargo, debo llevarlo al siguiente nivel y no se como hacerlo, me puedes ayudar???... Te explico lo que quiero hacer: Yo exporte un reporte de la CR05 (Los puestos de trabajos en los centros de trabajo), entonces voy recorriendo cada puesto de trabajo pero cuando debo de cambiar el valor del centro no se como hacerlo, es decir, el valor for each debe incluir el valor del puesto de trabajo + el centro donde esta ese puesto de trabajo y por ultimo y no menos importante en este video dices que el rango puede ser dinámico, como se puede hacer en ese caso. Gracias por tus aportes

    • @alefranzoni
      @alefranzoni  2 года назад +1

      Hola David, cómo estás?
      Te hago una consulta para ver si entendí bien, ¿el valor del centro que necesitas también está en el reporte (CR05) que exportas? ¿Necesitas ingresarlo, luego, dentro de SAP?
      Por otro lado, para hacer un rango dinámico y no dejarlo “fijo” o “hardcodeado” tienes varias maneras de hacerlo, pero la más cómoda es adaptar el rango desde el principio hasta la última fila con valor. Para que lo entiendas mejor, te lo voy a explicar con un ejemplo.
      Supongamos que vos querés hacer un rango dinámico de la columna A (o columna 1), es decir, desde el primer valor hasta el último de dicha columna. Entonces setearias el objeto rango de la siguiente manera:
      Dim r as Range
      Set r = Sheets("Hoja1").Range("A1:A" & Sheets("Hoja1").Cells(Rows.Count, 1).End(XlUp).Row)
      Donde *_Sheets("Hoja1").Cells(Rows.Count, 1).End(XlUp).Row_* es la parte del código que te devuelve la última fila con valor de la columna 1 o A. (También recordá cambiar _Hoja1_ por el nombre de tu hoja)
      Cualquier cosa no dudes en consultarme,
      Saludos.

    • @davidnatera8923
      @davidnatera8923 2 года назад

      @@alefranzoni Hola Ale, gracias por responder y apoyarme. Con respecto a tu pregunta: SI, del reporte de la CR05, necesito luego ir a la CA80, para poder introducir el puesto de trabajo y el centro asociado. Yo lo puedo hacer por parte es decir, una corrida por centro pero quiero saber SÍ es posible hacerlo colocando ambos datos en el bucle "for each"; con respecto al rango dinámico voy a escribirlo y probar👍

    • @alefranzoni
      @alefranzoni  2 года назад

      ​@@davidnatera8923 Hola David, cómo estás? No estoy seguro de entender al 100% el flujo que querés lograr y sumado a no conocer las transacciones que me nombras se me complica un poco más imaginármelo. Pero bien, si del reporte CR05 ya obtenés todos los datos que necesitas tranquilamente, lo podés hacer.
      Solo tendrías a la vez que vas recorriendo el rango para los puestos, copiar también el centro de trabajo (que asumo por lo que me comentas que está presente en cada fila que estás recorriendo, pero en otra columna) y pasárselo a la transacción de ser necesario. Con hacer eso para cada iteración dentro del bucle *For Each* ya estaría.
      Sí es así, para obtener otro dato de la misma fila que estás iterando dentro del bucle For Each, podés utilizar la propiedad *Next* del objeto Range. Es decir, supongamos que en la fila A1 tenés el puesto, en la B1 otro dato y en la C1 el centro, entonces para obtener B o C sería así:
      For Each cell in Range
      'Obtener el valor de cell e imprimirlo en ventana de inmediato
      Debug.Print(cell)
      'Obtener el valor de B1 e imprimirlo en ventana de inmediato
      Debug.Print(cell.Next(1,1))
      'Obtener el valor de C1 e imprimirlo en ventana de inmediato
      Debug.Print(cell.Next(1,2))
      Next cell
      Obviamente en el ejemplo de arriba puse B1 y C1, pero seria B y C de la fila que el bucle esté iterando. Esto también siempre y cuando estes iterando sobre los datos en Excel (ya exportados), si lo que queres hacer es obtener el valor del centro directamente del listado de SAP vas a tener que llamar a la columna correspondiente y hacer lo que tengas que hacer.
      Cualquier consulta avisame,
      Saludos.

  • @ramirocareaga6692
    @ramirocareaga6692 2 года назад

    estimado una consulta, como puedo exporta una hoja de excel y guardarlo automaticamente, tengo la transacción mcp6 que al exportar me abre una hoja de excel pero se debe guardar manualmente o si no se borra, gracias.

    • @alefranzoni
      @alefranzoni  2 года назад

      Hola Ramiro, cómo estás? Te comento que tengo un video en el canal en el cual explico en detalle como hacer lo que me estas consultando. Te dejo el link acá: ruclips.net/video/86HYlK_r4R8/видео.html
      Cualquier cosa no dudes en consultarme. Saludos!

    • @ramirocareaga6692
      @ramirocareaga6692 2 года назад

      @@alefranzoni estimado el problema que tengo es cuando exporto y se me abre una tabla en Excel de nombre HOJA DE CALCULO EN BASIS (1), esa es la que necesito por que el método que explicaste es para guardar como fichero y yo necesito exportar. Gracias estimado amigo.

    • @alefranzoni
      @alefranzoni  2 года назад

      @@ramirocareaga6692 Perfecto, entonces si ninguna de las funciones de guardado te sirven, lo que puedes hacer es automatizar el proceso hasta que presionas el botón de exportar. Este script llevarlo a un Excel para poder ejecutarlo desde el mismo y luego de eso, cuando finalice la exportación automática, desde código VBA puedes buscar por el libro en cuestión abierto y guardarlo en el lugar y con el nombre que quieras 😉.

  • @joseandresgalvanfajardo7202
    @joseandresgalvanfajardo7202 Год назад

    Duda mi script si me abre la pantalla para grabar, y cuando lo detengo se crea el script, pero al momento de iniciar la grabación no me deja manipular sap, como puedo solucionarlo?

    • @alefranzoni
      @alefranzoni  Год назад

      Hola Jose, ¿cómo estás? Que raro lo que me comentas, nunca me paso lo que me estas diciendo. ¿Qué versión de SAP GUI tenes? ¿Probaste reiniciando y conectándote a diferentes entornos? Saludos.

  • @modestogonzalezchavez5038
    @modestogonzalezchavez5038 Год назад

    Hola Ale, me surgió un comentario que estoy tratando de replicar, ya que deseo copiar el nombre de un cliente en un pedido en va03 pero no obtengo el script para copiar el nombre, me podrías apoyar con esta duda por favor

    • @alefranzoni
      @alefranzoni  Год назад

      Hola Modesto, cómo estás? Te voy a pedir que me envíes un correo (lo podés encontrar en la sección de información de mi canal o en mi sitio web) con una captura de lo que estás viendo en dicha transacción para poder ayudarte, ya que en mi entorno de pruebas no cuento con datos para poder visualizarlo hoy en día. Saludos.

  • @barbaraacunasiviero9908
    @barbaraacunasiviero9908 2 года назад

    Hola Ale. Muchas gracias por tu video.
    Tengo una consulta para hacerte si podes ayudarme..
    Quiero realizar un script con una transacción de SAP para ver documentos posteados (fb03). Según el tipo de documento posteado, la transacción me permite utilizar un layout para visualizar los datos del documento. Es decir, entro con un documento y puedo elegir un layout, entro con otro distinto y ni siquiera aparece la opción en la barra. Cómo podría hacer para que logre que elija un layout determinado para aquellos documentos que permiten la opción?
    Yo quiero algo como “si tal session find by id está disponible en sap, hacé esto y si no está.. seguí con esto otro”. Como se hace para decir que un session by id blabla no está disponible? Me ayudaría mucho tu guía. Muchas gracias

    • @alefranzoni
      @alefranzoni  2 года назад +1

      Hola Bárbara, como estas? Para realizar lo que me comentas es muy sencillo, primero tenes que identificar el nombre del botón que querés chequear (lo podes hacer muy fácil con una grabación), luego tenes que comprobar la existencia del mismo con *session.FindById(objeto, False) Is Nothing* que te va a devolver True si no existe y por el contrario, False si esta disponible y con eso ya podrías hacer lo que consultas.
      Pará darte un ejemplo y que quede bien claro, supongamos que el botón se identifica como *btn[1]* entonces la lógica para presionarlo, solo si existe, sería:
      If Not session.FindById("wnd[0]/btn[1] ", False) Is Nothing Then session.FindById("wnd[0]/btn[1] ").press
      Listo! Espero que te sirva y cualquier duda me consultas.
      Saludos.

    • @barbaraacunasiviero9908
      @barbaraacunasiviero9908 2 года назад

      @@alefranzoni que genio Ale, muchas gracias por responder!!!
      El nombre del botón es este: session.findById("wnd[0]/tbar[1]/btn[33]"
      Intenté replicar lo que me mostraste de la siguiente forma:
      If Not session.findById("wnd[0]/tbar[1]/btn[33]", False) Is Nothing Then
      session.findById("wnd[0]/tbar[1]/btn[33]").press
      session.findById("wnd[1]/tbar[0]/btn[71]").press
      session.findById("wnd[2]/usr/txtGS_SEARCH-VALUE").Text = "/PINKSENVE"
      session.findById("wnd[2]/tbar[0]/btn[0]").press
      session.findById("wnd[2]/tbar[0]/btn[12]").press
      session.findById("wnd[1]/usr/cntlGRID/shellcont/shell").selectedRows = "1020"
      session.findById("wnd[1]/usr/cntlGRID/shellcont/shell").clickCurrentCell
      Else

      Funciona con los documentos en los cuales está la opción, pero no con los documentos donde no está. En esos casos a mi me gustaría que lea la primera sentencia y se dé cuenta que como no aplica, vaya al Else. Pero no estaría sucediendo.
      Sabes por qué puede ser y como puedo solucionarlo?

    • @alefranzoni
      @alefranzoni  2 года назад

      @@barbaraacunasiviero9908 Bien, seguramente este pasando eso porque la línea que comprueba por la existencia del botón da siempre “que existe” porque cuando no está el botón en cuestión, otro debe tomar la posición [33]. Por lo tanto, lo primero que te aconsejo hacer es verificar si esto es así, para eso podes simplemente imprimir un mensaje y ver que te arroja en ambos casos (tanto cuando está el correcto, como cuando no).
      result = Not session.findById("wnd[0]/tbar[1]/btn[33]", False) Is Nothing
      MsgBox result
      Si con lo anterior observas que siempre te arroja el mismo resultado es que está sucediendo lo que te comentaba. Para solucionarlo, deberías hacer alguna comprobación más. Lo que se me ocurre rápidamente es que podrías revisar el Tooltip del botón para corroborar que sea exactamente el que vos deseas. El _tooltip_ es el mensaje que aparece cuando posicionas el cursor por encima del botón, por lo tanto, fíjate que es lo que dice y puedes hacer lo siguiente:
      ❗Suponiendo que el Tooltip sobre el botón dice _«Cambiar layout»_
      Dim result As Boolean, tooltip As String
      result = Not session.findById("wnd[0]/tbar[1]/btn[33]", False) Is Nothing
      If result Then
      tooltip = session.findById("wnd[0]/tbar[1]/btn[33]").Tooltip
      If tooltip Like "Cambiar layout*" Then
      doSomeActionWhenButtonIsCorrect
      session.findById("wnd[0]/tbar[1]/btn[33]").press
      ...
      Else
      doSomeActionWhenButtonIsIncorrect
      End If
      Else
      'No se encontro el botón
      doSomeActionWhenButtonIsIncorrect
      End If
      Con esto ya deberías tener tu problema resuelto, confírmame si es así.
      Saludos.

    • @barbaraacunasiviero9908
      @barbaraacunasiviero9908 2 года назад

      @@alefranzoni buenas noches Ale. Aprecio mucho que me ayudes con esto. Tenías razón, en ambos casos el botón parece estar disponible ya que en ambos me dio como True el msgbox.
      Intenté replicar tu código para corregirlo con el tooltip del botón (select different display variant*) y me sale el siguiente error:
      Sub or function not defined
      Y me selecciona la línea de dosomeactionwhenbuttoniscorrect
      Puede ser que falta definir aparte los pasos para esa función? No quiero cagar el código.
      Bueno muchas gracias de nuevo.
      Saludos

    • @alefranzoni
      @alefranzoni  2 года назад +1

      @@barbaraacunasiviero9908 Claro, exactamente es eso. Está funcionando bien pero te está indicando que ese procedimiento no está definido. Podes borrar los _doSomeActionWhen..._ y reemplazarlos por lo que quieras hacer, tanto cuando lo encuentra, cómo cuando no.
      Cualquier cosa si tenés dudas de algo, avísame que te ayudo a resolverlo, pero ya ahora con colocar lo que desees hacer en cada caso debería funcionar bien.
      Saludos.

  • @pabloarturo3155
    @pabloarturo3155 2 года назад

    Buen día Ale, disculpa, hay posibilidad de ejecutar un script si SAP, lo tengo en otro servidor, Citrix Workplace?

    • @pabloarturo3155
      @pabloarturo3155 2 года назад

      Es decir, que no esté descargado SAP, sino que lo tengo que abrir por medio de otro servidor en la lap

    • @alefranzoni
      @alefranzoni  2 года назад

      Hola Pablo, cómo estás? Te comento que lamentablemente la única posibilidad que tenés de poder hacerlo, es si lo que haces es conectarte a una máquina virtual (donde corres sap) y podes grabar y ejecutar el script desde la misma. Si no, desde tu máquina local no vas a poder.

  • @davidleonardosuescuntibana4781
    @davidleonardosuescuntibana4781 2 года назад

    guau muchas gracias...

  • @LuisSanchez-fy4he
    @LuisSanchez-fy4he 2 года назад +1

    Ale podrias hacer un video de como exportar un reporte de sap desde excel

    • @alefranzoni
      @alefranzoni  2 года назад +1

      Hola Luis, como estas? Vos te referís a procesar una transacción y luego, una vez finalizado el proceso, guardar/exportar el reporte generado en alguno de los formatos opcionales?
      Saludos!

    • @LuisSanchez-fy4he
      @LuisSanchez-fy4he 2 года назад +1

      @@alefranzoni si así es

    • @alefranzoni
      @alefranzoni  2 года назад +3

      @@LuisSanchez-fy4he Perfecto. Te comento que en breve estaré publicando un video sobre como realizar esto mismo. Saludos!

    • @dianagamboa7587
      @dianagamboa7587 2 года назад +1

      @@alefranzoni quedaré atenta ..también estoy super interesada en este tema

  • @241pedro
    @241pedro Год назад

    Ayuda, necesito un script pata copiar una columna de datos que esta en sap y pegarlo en excel

    • @alefranzoni
      @alefranzoni  Год назад

      Hola Pedro, te recomiendo que mires los demás videos del canal sobre SAP Scripting, hay varios que te pueden llegar a servir para lo que estás necesitando. Saludos.

  • @cristiancofre7645
    @cristiancofre7645 Год назад

    tengo creado mi script en sap pero al compartirlo con un colega que tiene cuenta sap no fucniona

    • @alefranzoni
      @alefranzoni  Год назад

      Pueden ser diversas las causas por las que podría estar fallando. Por lo tanto, para poder ayudarte necesitaría más información, por ejemplo, que tipo de error le tira, si se llega a ejecutar parte del script o no, si tiene la misma versión de SAP GUI que tú, si estás seguro que su servidor tiene activado SAP Scripting, etc. Saludos.

  • @shayurilizanoborrero6345
    @shayurilizanoborrero6345 2 года назад

    Hola !
    Y como puedo traer un rango de filas de Excel a sap ?

    • @alefranzoni
      @alefranzoni  2 года назад

      Hola Shayuri, cómo estás? A que te referís específicamente con _"traer un rango de filas de Excel a SAP"_ ? Poneme un poco en contexto así te puedo dar una mejor respuesta. Saludos.

  • @thyagovasquez6389
    @thyagovasquez6389 2 года назад +1

    El libro de excel de ser libro habilitado para macros

    • @alefranzoni
      @alefranzoni  2 года назад

      Si, exactamente Thyago. El libro de Excel que utilices debe estar habilitados para macros, es decir, con extención *.xlsm. Saludos.

  • @derickmendivelso7173
    @derickmendivelso7173 Год назад

    Hola amigo como vas, gracias por la info me sirvio mucho, pero quisiera saber como iniciar y logerame en SAP desde codigo VBA en excel, como se explica en este tutorial tuyo ruclips.net/video/cvDxz05Og6E/видео.html en realidad me seria de gran ayuda, debido a que en otros tutoriales explicar como ejecutar el script mas no como abrir y logerse desde el codigo en VBA, te agradezco la atencion, saludos desde Colombia.

    • @alefranzoni
      @alefranzoni  Год назад

      Hola Derick, cómo estás? No hay problema, fijate que en este video que te voy a dejar a continuación ya está integrado en Excel la parte de loguearse: ruclips.net/video/YQq8wnDB2HU/видео.html. En el mismo vas a poder bajarte el archivo, ver como lo hice e integrarlo a tus proyectos.
      Saludos.

  • @aetcheverre
    @aetcheverre Год назад

    buenisimo, estoy tratando de usarlo con la trasaccion "zufsodvta005", pero no me toma la fecha
    session.findById("wnd[0]/usr/tabsPARAMETROS/tabpPARAMETROS_FC1/ssubPARAMETROS_SCA:ZSOD_SD00_R_TOTALVTAAMPL:0103/ctxtSO_FKDAT-LOW").Text = Worksheets("Hoja1").Range("A" & indice).Value
    session.findById("wnd[0]/usr/tabsPARAMETROS/tabpPARAMETROS_FC1/ssubPARAMETROS_SCA:ZSOD_SD00_R_TOTALVTAAMPL:0103/ctxtSO_FKDAT-HIGH").Text = Worksheets("Hoja1").Range("B" & indice).Value
    que estaria haciendo mal?

    • @alefranzoni
      @alefranzoni  Год назад

      Hola Alexis, ¿cómo estás? Podrías fijarte, en primer lugar, poniendo los valores a mano, por ejemplo:
      session.findById("wnd[0]/usr/tabsPARAMETROS/tabpPARAMETROS_FC1/ssubPARAMETROS_SCA:ZSOD_SD00_R_TOTALVTAAMPL:0103/ctxtSO_FKDAT-LOW").Text = "01.03.22"
      session.findById("wnd[0]/usr/tabsPARAMETROS/tabpPARAMETROS_FC1/ssubPARAMETROS_SCA:ZSOD_SD00_R_TOTALVTAAMPL:0103/ctxtSO_FKDAT-HIGH").Text = "03.03.22"
      Con esto vas a estar validando si está funcionando bien el script y si lo que falla es el valor que le estás pasando. Si esto funciona, podés probar que el índice que le pasas sea correcto y además, el formato de la fecha, ya que SAP a veces molesta con el formato. Intenta usando la función *Replace* y reemplazando las “/” con puntos (.) en la fecha, así:
      session.findById("wnd[0]/usr/tabsPARAMETROS/tabpPARAMETROS_FC1/ssubPARAMETROS_SCA:ZSOD_SD00_R_TOTALVTAAMPL:0103/ctxtSO_FKDAT-LOW").Text = Replace(Worksheets("Hoja1").Range("A" & indice).Value, "/", ".")
      Saludos.