MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Formularios - SAPScript - Smartforms
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 27/03/17, 20:21:31
mesk-one mesk-one is offline
Junior Member
 
Fecha de Ingreso: mar 2017
Mensajes: 5
Script SAP para exportar datos a Excel

Buenas chic@s, he realizado una macro que tiene dentro un Script incrustado como objeto y que el código de la macro lo ejecuta, al ejecutar y tener SAP abierto automáticamente hace los pasos del Script y descarga los datos, la macro funciona correctamente, el problema viene en SAP.

El Script es grabado para que ejecute unos determinados pasos, es decir haga click en unos botones y coja 3 variables del excel, el problema me salta cuando alguna de las veces que accede a SAP y da en el botón de ver los datos y resulta que ese día no hay datos, entonces sale un ventana diciendo que no hay datos en vez de el Excel que sale normalmente y el Script se tuerce y no sigue.

Dicho de otra de otra manera si fuese en código VBA por ejemplo pondríamos un condicional If en el cual si hay datos haga una cosa y si no los hay haga otra, no se programar en el lenguaje de SAP, el Script se hace grabando Script por lo tanto no se como poner un condicional ni que variable u objeto debo comparar en ese "If" por que no tengo valor.

Voy a ilustrar para que se entienda mejor.





Hay dias que hay datos en todos y días que no, mi idea seria poder poner un condicional para que valiera siempre, pero al ser un Script y no conocer el lenguaje de SAP no se como solucionarlo, a ver si algún compañero que sepa programar me ilumina.
Responder Con Cita
  #2  
Viejo 30/03/17, 13:30:50
mesk-one mesk-one is offline
Junior Member
 
Fecha de Ingreso: mar 2017
Mensajes: 5
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
Responder Con Cita
  #3  
Viejo 19/04/17, 13:38:46
cardama cardama is offline
Junior Member
 
Fecha de Ingreso: feb 2017
Localización: Luxembourg
Mensajes: 6
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.
Responder Con Cita
  #4  
Viejo 21/04/17, 09:51:52
mesk-one mesk-one is offline
Junior Member
 
Fecha de Ingreso: mar 2017
Mensajes: 5
Cita:
Originalmente Escrito por cardama
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.


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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 14:47:39.


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