MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Error DBIF_RSQL_INVALID_RSQL CX_SY_OPEN_SQL_DB in program (foro/showthread.php?t=63114)

damlaplata 15/06/12 13:06:01

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.:D

calin 15/06/12 15:18:52

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.

damlaplata 15/06/12 20:15:41


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..

calin 16/06/12 04:08:35

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.

DCErick 19/06/12 13:24:27

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.


Husos Horarios son GMT. La hora en este momento es 19:35:05.

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