MUNDOSAP

MUNDOSAP (foro/index.php)
-   Formularios - SAPScript - Smartforms (foro/forumdisplay.php?f=5)
-   -   Script SAP para exportar datos a Excel (foro/showthread.php?t=76944)

mesk-one 27/03/17 21:21:31

Script SAP para exportar datos a Excel
 

mesk-one 30/03/17 14:30:50

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

cardama 19/04/17 14:38:46

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.

mesk-one 21/04/17 10:51:52



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

ricky_uy 06/12/17 11:59:29

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


Husos Horarios son GMT. La hora en este momento es 23:03:26.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web