#1
|
|||
|
|||
Error DBIF_RSQL_INVALID_RSQL CX_SY_OPEN_SQL_DB in program
Buen Dia Gente Sabia,
Les consulto a Uds por este error que me aparece. Por la ST22 encontre que las causas podrian ser: o The maximum size of an SQL statement was exceeded. o The statement contains too many input variables. o The input data requires more space than is available. o ... Y ademas me marca esta sentencia: SELECT pep,acao,conta_debito,ccusto_debito,conta_credito,ccusto_cretito FROM zistps_mtcd_acao INTO TABLE tl_mtcd_acao FOR ALL ENTRIES IN tl_perc_fae WHERE pep IN rl_pep_ran AND acao EQ tl_perc_fae-acao. Yo pienso que podria ser la primera causa, ademas me fije los datos y tengo: -La tabla Z 'zistps_mtcd_acao' tiene 258 records -La tabla interna 'tl_perc_fae' tiene 57. -Pero, el 'Range' rl_pep_ran' tiene 5747 records. Con lo cual la comparacion con este se hace tremenda. Mi primera forma de encararlo es separar la sentencia where. Primero tomo por rl_pep_ran y luego filtro la tabla resultado 'tl_mtcd_acao' por tl_perc_fae-acao. Que les parece? no se si funcionaria....eso lo mas choto porque no tengo caso con las misma cantidad de datos. A alguien le paso esto? como lo soluciono? Desde antemano muchas gracias por la ayuda. Un saludo Genial. |
#2
|
|||
|
|||
Hola damlaplata,
Revisa que el rango rl_pep_ran no tenga registros repetidos y la tabla interna tl_perc_fae no tenga registros con el mismo valor en el campo acao. Saludos. |
#3
|
|||
|
|||
eso lo hago. Igual me queda con una gran cantidad rl_pep_ran. Gracias por responder. Ahora estoy viendo si funciona la idea que propuse.. |
#4
|
|||
|
|||
Podrias probar la siguientes opciones:
1) Construir el rango r_acao para el campo acao. SELECT pep,acao,conta_debito,ccusto_debito,conta_credito, ccusto_cretito FROM zistps_mtcd_acao INTO TABLE tl_mtcd_acao. SORT tl_mtcd_acao BY pep acao. DELETE tl_mtcd_acao where NOT pep IN rl_pep_ran or NOT acao IN r_acao. 2) Construir el rango r_acao para el campo acao. Construir la tabla interna t_pep sólo con los valores de pep. SELECT pep,acao,conta_debito,ccusto_debito,conta_credito, ccusto_cretito FROM zistps_mtcd_acao INTO TABLE tl_mtcd_acao. SORT tl_mtcd_acao by acao DELETE tl_mtcd_acao NOT acao IN r_acao. SORT t_pep by pep. SORT tl_mtcd_acao BY pep. LOOP at tl_mtcd_acao. READ TABLE t_pep WITH KEY pep = tl_mtcd_acao-pep BINARY SEARCH TRANSPORTING NO FIELDS. IF sy-sybrc NE 0. DELETE tl_mtcd_acao WHERE pep EQ tl_mtcd_acao-pep. CONTINUE. ENDIF. ENDLOOP. Nota: El uso de SELECT sin clausula WHERE no es recomendable si aumenta significativamente el número de registros de la tabla zistps_mtcd_acao. Saludos. |
#5
|
||||
|
||||
Verifica que la tabla interna tl_mtcd_acao tenga los campos
pep,acao,conta_debito,ccusto_debito,conta_credito, ccusto_cretito en ese mismo orden, que no le falte ninguno. Si le sobran no hay problema siempre y cuando estén al final.
__________________
------------------- ¿Dudas para descargar manuales? Ver este tema -> |
Herramientas | Buscar en Tema |
Desplegado | |
|
|