Hola,
Para mi han sido muy practicos, este es para agregar materiales en la CC01, etiqueta de materiales, ya que el sistema no permite pegar masivamente los mateirales.
'Llamar archivo de excel -
Dim objExcel
Dim objWorkBook
Set objExcel = CreateObject("EXCEL.APPLICATION")
'Colocar la RUTA
Set objWorkBook = objExcel.Workbooks.Open("C:\Users\carabde\Documents\Datos\Script\CC01\Hoja_.xlsx")
'Colocar la hoja de excel
Set Hoja=objWorkBook.Sheets("Hoja1")
objWorkBook.Sheets("Hoja1").Select
objExcel.visible=true
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Invocar la transaccion.
If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
'Se debe reemplazar el código de la transacción
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Inicializar variables. Colocar en intfila la primera fila del excel
Hoja.Select
intFila=2
'Colocar el nombre de la primera variable y que esté en la columna A
MATERIAL=Hoja.Range("B" & intFila).value
while MATERIAL <> ""
'Colocar todas las variables a utilizar y la columna de cada variable
MATERIAL=Hoja.Range("B" & intfila).value
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'PEGAR Y REEMPLAZAR LOS PASOS GRABADOS EN EL SCRIPT PROPIO hasta el comando infila=intfila+1.
'Se debe reemplazar los nombres de las variables sin utilizar ""
session.findById("wnd[0]/usr/tabsTS_OBJEKTE/tabpUEMT/ssubDETAIL:SAPMC29C:0240/subBUTTONS:SAPMC29C:0500/btnPUSH_ERFA").press
session.findById("wnd[0]/usr/tabsTS_OBJEKTE/tabpUEMT/ssubDETAIL:SAPMC29C:0240/tblSAPMC29CTCO/ctxtRC29A-MATNR[0,1]").text = MATERIAL
session.findById("wnd[0]/usr/tabsTS_OBJEKTE/tabpUEMT/ssubDETAIL:SAPMC29C:0240/tblSAPMC29CTCO/ctxtRC29A-MATNR[0,1]").setFocus
session.findById("wnd[0]/usr/tabsTS_OBJEKTE/tabpUEMT/ssubDETAIL:SAPMC29C:0240/tblSAPMC29CTCO/ctxtRC29A-MATNR[0,1]").caretPosition = 0
session.findById("wnd[0]").sendVKey 0
intFila=intFila+1
WEND
Hola SidV,
Funciona como una LSMW con la ejecución online, si el usuario tiene permisos para la transacción y los objetos entonces puede ejecutar la macro (que emula la interacción del usuario con SAP)
Hola nicolasegp,
Tienes que grabar el script en Sap de cualquier transacción, por ejemplo alta de usuario, y luego te armas un Excel donde vas a cargar toooodos los usuarios que quieras en una hoja (con los datos a completar en SAP) y te creas una macro que vaya leyendo tu Excel y ejecutando el script que grabaste en SAP.
Es buenísimo!
Buenas noches a todos, ¿cómo están?
Estaba leyendo este artículo y me pareció muy interesante, ya que hay muchos procedimientos repetitivos que tornan molestos!
Pero me genera una pequeña duda, ¿por qué no usar batch-input para este proceso?
Hola @renatondo ¿cómo estás?
Es cierto que ya que manejas la herramienta es una ventaja que tienes con el visual basic. Y te la apoyo, incluso me gustaría aprenderla para tomar provecho también.
Y referente a esto:
El batch-input es una herramienta que tienes en SAP, se usa para realizar una grabación de una acción en específico, por ejemplo, cargar ciertos datos repetidas veces para trabajadores diferentes, o agregar ciertas cosas en algunas transacciones en forma de lotes.
Se que no me daré a entender, ya que soy pésimo explicando, pero haré mi mayor esfuerzo… XD
El batch-input es una carga por lotes, simulando que el usuario (algo así como lo que propones con el VB) está realizando el proceso una y otra vez. Se realiza una grabación del proceso la primera vez, a través de la transacción SM35 y luego se juega un poco con el código en ABAP y se seleccionan los campos a llenar.
Y después por medio de un archivo TXT (grabado con tabulación) se sube a una transacción creada y estos serán los datos que llenara en la grabación cada vez que la ejecute.
Quizás suena enredado y loco (o quizás no sé cómo explicarlo bien jajajaja) pero es algo sumamente sencillo, después del primero los demás son fáciles.
Aunque he leído que no suelen ser tan eficaces porque repite el proceso n veces, siendo n la cantidad de registros que subas en el archivo TXT, y por consiguiente es más recomendable el uso de BAPIs (pero de estás si desconozco).
Un abrazo, espero haber ayudado en vez de haberte confundido más jajajaj
Hola @Reatiga19.
Lo del bath-imput entonces es la herramienta para hacer “macros” al estilo excel, pero desde SAP?.
Si es asi, ya la conozco, aunque no he practicado mucho.
Por mi trabajo en el area de excel tiendo a llamar a casi todo lo que se puede programar como “macros” aunque realmente no se llamen asi.
Con las macros no necesitas un Abaper, ya que la macro de Excel carga los datos en la transacción estándar sin usar ni una sentencia ABAP.
Esta es otra contra del batch, de nuevo necesitas un Abaper para que cree una transacción…
En algunas filiales es muy engorroso conseguir que se creen nuevas transacciones, requiere muchas formalidades por parte de la casa matriz que concentra estos temas… con una macro Excel no hay que hacer nada en SAP, incluso se respetan las autorizaciones que tiene el usuario…
Hola que tal, tengo unos meses trabajando con ese tipo de scripts pero un poco mas avanzado, es decir como un ejemplo la T-Code MB1B (Enter Transfer Posting) con el movimiento 311 transferencia de inventario de sloc a sloc, lo que hace es lo siguiente
antes de eso creo una sesion y despues creo un while, eso con programacion en visual basic y como plus para tener un respaldo de que fue lo que transferiste pues le meto SQL SERVER, si tienes un listado de 999999 numeros de parte para transferir con este codigo puedes lograr maravillas.
Hola, una consulta, disculpen si es muy tonta pero soy nuevo en todo esto:
tengo una transacción que ya tengo definidos los parámetros en un layout, y luego ese archivo lo tengo que exportar a Excel 2007, cambiarle el nombre y guardarlo en una carpeta
Lo engorroso es que lo tengo que hacer cada una hora, sin falta,
Puedo mediante una macro programar que automáticamente a ciertas horas y se genere todo esto y guardarlo en una carpeta???
Hola @Alfredo_Araya,
lo que puedes hacer es programar en background Job tu transacción diariamente y cada dos horas, después define un nombre para cada job, después con tu macro haces la descarga de todos los job’s.
Hola, que tal?
Tienes resuelto el tema de la creación del Job? Estoy interesado en implementarlo, ya tengo el script desarrollado, solo necesito se ejecute todos los días a las 07:00am
@anibal, bienvenido a la comunidad. Por favor, lee Cómo usar el foro de Consultoria-SAP, debes evitar responder a cada persona en respuestas separadas. Eso por un lado, y por otro lado, este tema es un tutorial, las consultas nuevas (relacionadas o no al tema), deben ser abiertas en tema nuevo. Primero usa el buscador a ver si ya se ha preguntado sobre “cómo definir un job” (creo que ya hay debates sobre eso), y si no encuentras el tema, abre un tema nuevo por favor.