|
#1
|
|||
|
|||
Hola compañero, varias preguntas......
Más o menos cuantos registros puede tener la tabla 1 y la tabla 2 ???? Es necesario que por cada registro de la tabla 1 te tengas que recorrer la tabla 2 entera ???? No lo puedes acotar en el loop para que no pierda tanto tiempo ???? Para que quieres la tabla 3 ????? O puedes bajar los datos a un fichero .txt ???? La tabla 3 también es tuya o es de SAP ???? Salu2. |
#2
|
|||
|
|||
Hola Coloso
La tabla 1 y 2 son variables en sus registros. La 1 son los clientes de determinados vendedores y la 2 son los materiales que podrian aplicar a los clientes. De ambas tablas podes seleccionar 1, varios o todos. En el caso que estoy probando, tengo que elegir a todos los clientes, que le voy a asignar algunos materiales nuevos para la venta. Por cada cliente, debo recorrer la tabla de materiales para obtener solo los seleccionados y de esos ver cuales coinciden con otros datos de los clientes seleccionados. La tabla combinada la tengo que generar, porque con la misma hago (posteriormente) un batch input, pero eso es un paso posterior (primero muestro otra grilla de resultado y de ahi, podes procesar o cancelar). El error se produce cuando estoy armando la combinación. No es un problema de tiempo, sino que va procesando y llenando la tabla 3 y en algun momento, chau SAP. pseudocódigo: Loop Clientes (tabla interna 1) ...Loop Materiales (tabla interna 2) ......IF se cumplen condiciones, APPEND a tabla interna 3 con datos combinados. En algun punto esto hace saltar a SAP. Se cierra la sesion o aparece el mensaje que les mandé. Si elijo pocos clientes, lo procesa sin problemas y pasa a la grilla de resultado que indico mas abajo. ......Endif ...EndLoop Materiales EndLoop Clientes Grilla de Resultado de Tabla interna 3 (cuando se produce el error, no alcanza a mostrarse) |
#3
|
|||
|
|||
Bueno, de tanto probar, creo que conseguí la solución.
1) Le puse INITIAL SIZE 10 a las 3 tablas internas (antes le habia puesto solo a la tercera). 2) Saqué el llamado a CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'. No se si tiene algo que ver, pero ya tuve problemas otra vez usando esta función, que cuando la usas un monton de veces, daba error. Con eso obtuve 2 cosas: * No dio mas el error. * El proceso está con Turbo! Super Veloz! Voy a seguir probando y si hay algun cambio les aviso... |
#4
|
|||
|
|||
Volvi a activar SAPGUI_PROGRESS_INDICATOR y volvió el error, además de volverlo lerdo al proceso...
¿hay alguna alternativa para poder poner mensajes similares a esta función? CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' EXPORTING * "PERCENTAGE = P_INCREMENTO TEXT = P_TEXT. Dentro del LOOP hacia un llamado a esta funcion, para que fuera avanzando el reloj. Primero le saque el incremento. El error seguia pero el proceso duraba un poco mas. Después lo anule completamente. Y ahi se solucionó. |
#5
|
|||
|
|||
Hola compañero para la función esa olvídate de actualizarla cada paso en el loop se vuelve muy pesado el programa y suelen petar con programas grandes. Es mejor que la ejecutar cada "X" pasos del loop.
No sé haz una reglar de 3 y por cada "X" registros que se actualice un % o algo así..... |
#6
|
|||
|
|||
Muy bonito el reloj pero poco práctico en la forma en que lo usé.
Tal como decís, habria que ejecutarla cada x% cosa que no se ejecute mas de 4 o 5 veces por proceso. Es impresionante el cambio de tiempos cuando estaba dentro del loop. Para una muestra de avance menos complicada, es mejor usar message S398 With 'Texto'. Espero que esto sirve de ayuda. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|