#11
|
|||
|
|||
Otra consulta,creo que tiene relacion con esto, Cuando me pongo en modo debuging por ese codigo que tengo que optimizar, si voy linea por linea me salta un dump (yo intuyo que podria ser por los tiempos de respuesta o algo asi pero no tengo ni idea). Posteo el mensaje del dump.
¿podriais decirme algo? porque me pasa a menudo que funciona una transaccion pero en modo debuggin peta Err.tmpo.ejec. DBIF_RSQL_INVALID_CURSOR Excep. CX_SY_OPEN_SQL_DB Fecha y hora 04.01.2007 11:44:03 Txt.brv. Invalid interruption of a database selection. ¿Qué ha sucedido? Error in ABAP application program. The current ABAP program "ZMMPR_LISTADO_BASE_CONTRATOS" had to be terminated because one of the statements could not be executed. This is probably due to an error in the ABAP program. Unable to perform database selection fully. record. Anál.errores An exception occurred. This exception is dealt with in more detail below . The exception, which is assigned to the class 'CX_SY_OPEN_SQL_DB', was neither caught nor passed along using a RAISING clause, in the procedure "SELECCIONAR_DATOS" "(FORM)" . Since the caller of the procedure could not have expected this exception to occur, the running program was terminated. The reason for the exception is: One of the database selections included a database commit. The selection was then supposed to continue. Before a database commit, however, all outstanding database selections must be |
#12
|
|||
|
|||
Hola, Esto es pq estas debuggeando una sentencia SELECT... ENDSELECT.
Cuando estas manejan un gran volumen de datos al hacer debuggin peta... Es uno de los inconvenientes de usar este tipo de instruccion, por eso siempre q puedo vuelco todo el select sobre una tabla interna y luego hago un loop sobre esta y realizo las operaciones q necesite. Saludos, LouieBoy |
#13
|
|||
|
|||
ok gracias. Eso que dices es lo que estoy haciendo pero no por el debbuging sino por repartir las cargas ya que tira casi todo de BB.DD. incluso en select endselect anidados y los estoy pasando a loop at de tablas internas.
Parece ser que asi aumenta el rendimiento. Muchas gracias y feliz año. |
#14
|
|||
|
|||
Performance
Gente: Algunos Tips sobre performance:
- Evitar logica negativa en los selects. - No utilizar OR's en los SELECTS. - Utilizar APPEND LINES OF i_tab para unidir dos tablas internas. - Evitar el loop where, utilizar mejor loop check. - Evitar el into corresponding fields of table, utilizar into table (poner los campos en el mismo en que fueron definidos en la tabla interna). - Cuando accedan a tablas transparentes como las MARA, y demas que generalmente contienen muchisimos datos, eviten de ser posible los inner join, porque llevan muchisimo tiempo, traten de realizar selecciones separadas a distintas tablas internas y las unen por alguna tecnica de posicionamiento. - No utilizar select * a menos que levanten mas del 70% de los campos que tiene la tabla. Espero que les sirva! Saludos, |
#15
|
|||
|
|||
De eso no estoy totalmente seguro . Puede ser que dentro del select enselect haya introducido un commit work and wait , y puede ser debido a esto por lo que salta el dump . |
#16
|
|||
|
|||
hola.
me gustaria empezar a trabajar con estas herramientas de medicion de rendimiento. me he intentado poner con la st05 pero no veo claro que tengo que hacer o que tengo que ver. ese manual que tienes intencion de hacer... como va?? o si me puedes (podeis) dar alguna pista para saber como usar esa transacion. gracias |
#17
|
|||
|
|||
Diferencias entre ST05 y SE30
Hola :
Al hilo de todos estos (interesantísimos) post, ¿alguien me puede explicar la diferencia entre estas dos transacciones?. Tengo que pelearme con una transacción de un programa Z que a todos los usuarios les funciona perfectamente excepto a uno que se pasa horas hasta que consigue entrar en ella, y creo que esto puede serme útil. Gracias a todos. |
#18
|
|||
|
|||
DBIF_RSQL_INVALID_CURSOR --> Solucionado
Para todos aquellos que os dé este error en medio de SELECT - ENDSELECT, deciros que yo lo he podido solucionar de la siguiente manera :
Si os fijais en el apartado 'Anal. error' del DUMP sale lo siguiente: Possible causes in the application program: Within a loop (SELECT/LOOP/EXEC SQL), one of the following statements is used: - MESSAGE (apart from MESSAGE S...) - COMMIT WORK - ROLLBACK WORK - CALL SCREEN - CALL DIALOG - CALL TRANSACTION - SUBMIT - BREAK-POINT - WAIT Yo mientras debugaba el programa veía que SAP me iba haciendo commits automáticos en casi cada sentencia (Mensaje :'El sistema ha ejecutado commit' ) --> Eso es justo lo que causa el dump, LOS COMMITS AUTOMÁTICOS QUE REALIZA SAP MIENTRAS ESTÁS DEBUGANDO. Solución : Mientras esteis debugando y antes que os salte el dump ir a -> En el menú arriba -> Debugging ---> Base Datos ---> commit (desbloquear). En la siguiente sesión de debugg (en esta ya no...) el sistema ya no ejecutará commits automáticos y el dump no saltará... |
Herramientas | Buscar en Tema |
Desplegado | |
|
|