Error DBIF_RSQL_INVALID_RSQL CX_SY_OPEN_SQL_DB in program

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • damlaplata
    Member
    • sep
    • 41

    #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.
  • calin
    Member
    • jul
    • 52

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

    Comentario

    • damlaplata
      Member
      • sep
      • 41

      #3
      Originalmente publicado por calin
      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.
      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..

      Comentario

      • calin
        Member
        • jul
        • 52

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

        Comentario

        • DCErick
          Moderator
          • mar
          • 1090

          #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 -> Cómo descargar manuales de la sección "Descargas" ?

          Comentario

          Trabajando...