#1
|
|||
|
|||
Script SAP para exportar datos a Excel
|
#2
|
|||
|
|||
Este es el Script que tengo, solo necesito que me evalue el valor de un numero que muestra SAP para si es 0 no haga la transaccion, pero no se como referirme a ese valor. Dondoe pone "zzzzzz" es donde me falta la linea de codigo que no consigo sacar
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 Set objShell = WScript.CreateObject("WScript.Shell") Set objVariableEntorno = objShell.Environment("Process") Set xclapp = GetObject(, "Excel.Application") Set hoja = xclapp.Sheets("Macro") fechaInicio = hoja.Cells(1, 5).Value fechaFin = hoja.Cells(2, 5).Value CCA350S19 = hoja.Cells(2, 2).Value session.findById("wnd[0]").resizeWorkingPane 113,27,false session.findById("wnd[0]/tbar[0]/okcd").text = "ZPP_HORAS_ESTANDAR_N" session.findById("wnd[0]/tbar[0]/btn[0]").press session.findById("wnd[0]/usr/ctxtP_CECO").text = CCA350S19 session.findById("wnd[0]/usr/txtP_INI").text = fechaInicio session.findById("wnd[0]/usr/txtP_FIN").text = fechaFin session.findById("wnd[0]/usr/txtP_FIN").setFocus session.findById("wnd[0]/usr/txtP_FIN").caretPosition = 10 session.findById("wnd[0]/tbar[1]/btn[8]").press session.findById("wnd[0]/usr/tblZPPR_INC_SAPI_0026_V2GBP_SUMAS").getAbsoluteRow(0).selected = true session.findById("wnd[0]/usr/tblZPPR_INC_SAPI_0026_V2GBP_SUMAS/txtR_DATOS_GBP-GBP[0,0]").setFocus session.findById("wnd[0]/usr/tblZPPR_INC_SAPI_0026_V2GBP_SUMAS/txtR_DATOS_GBP-GBP[0,0]").caretPosition = 0 session.findById("wnd[0]/usr/btnVER_DET").press If( zzzzzzzz ) Then session.findById("wnd[0]/usr/subSUB_DETALLE:ZPPR_INC_SAPI_0026_V2:9000/btnBOT_HINC").press session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").setCurrentCell -1,"INCU" session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectColumn "INCU" session.findById("wnd[0]/tbar[1]/btn[30]").press session.findById("wnd[0]/tbar[1]/btn[45]").press session.findById("wnd[1]/usr/sub:SAPLSPO5:0101/radSPOPLI-SELFLAG[1,0]").select session.findById("wnd[1]/usr/sub:SAPLSPO5:0101/radSPOPLI-SELFLAG[1,0]").setFocus session.findById("wnd[1]/tbar[0]/btn[0]").press session.findById("wnd[1]/usr/ctxtRLGRAP-FILENAME").text = "C:\Users\NG612C7\Documents\SAP\SAP GUI\IncurridasA350S19.xls" session.findById("wnd[1]/usr/ctxtRLGRAP-FILENAME").caretPosition = 60 session.findById("wnd[1]/tbar[0]/btn[0]").press session.findById("wnd[0]/tbar[0]/btn[3]").press End If |
#3
|
|||
|
|||
Saludos mesk-one.
Una respuesta exacta no te puedo dar, pero si una idea de como podrías controlarlo. La idea que se me ocurre es que justo cuando vas a lanzar la consulta que te muestra esa ventana con el mensaje de que no hay ficheros, actives la grabación del script y pares justo la grabación después de pulsar el botón de aceptar ese mensaje. En ese script posiblemente te aparezca algo similar a lo siguiente: Session.findById("wnd[1]/tbar[1].bth[8]").press El tema seria probar si puedes controlarlo de la forma: if session.findById("wnd[1]").visible then .... no se si es correcto hacerlo de esta forma, pero es una idea. Tengo muchos años de experiencia en programación en vba pero muy poca en desarrollar script para controlar SAP. Espero que te sirva la idea y ya indicaras si era posible. Un saludo. |
#4
|
|||
|
|||
Es una buena idea, he intenado ponerlo así, pero no he conseguido que funciones, quizas las sintaxis del condicional no sea la correcta. If (session.findById("wnd[1]").visible) Then session.findById("wnd[1]/tbar[0]/btn[0]").press End If Muchas gracias Este es el codigo al apretar el botón: session.findById("wnd[0]").resizeWorkingPane 96,28,false session.findById("wnd[0]/usr/subSUB_DETALLE:ZPPR_INC_SAPI_0026_V2:9000/btnBOT_HSUB").press session.findById("wnd[1]/tbar[0]/btn[0]").press |
#5
|
|||
|
|||
Podes poner codigo vbs
Hola, Podrias poner codigo VBS dentro del script, en donde estas tomando la variable del excel, inclusive podrias porner un "imput box" que te pregunte despliege el valor y tu decidas como continuar la sentencia del if en vba es la siguiente: if Variable >= 0 Then . . . else msgbox ("Variable es igual o menor que cero") end if (no necesitas cerrar cada sentencia con ";") espero te sirva |
Herramientas | Buscar en Tema |
Desplegado | |
|
|