Autor Tema: DUMP por entrada masiva en un select  (Leído 13090 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado molaci

  • Usuario Sr.
  • ****
  • Mensajes: 113
    • Ver Perfil
DUMP por entrada masiva en un select
« en: 24 de Febrero de 2010, 12:20:17 pm »
Hola, me ocurre lo siguiente.


Estoy accediendo a una tabla de la base de datos con mas de 12.000 materiales a la vez y me pega un DUMP por exceso de entradas.

DBIF_RSQL_INVALID_RSQL
CX_SY_OPEN_SQL_DB


Que puedo hacer?

El código que tengo es el siguiente... donde r_matnr es el rango con lo mas de 12.000 materiales.

Código: [Seleccionar]
    SELECT * FROM cdhdr WHERE objectclas EQ 'MATERIAL'
                          AND objectid   IN r_matnr.

      CHECK cdhdr-change_ind = 'U'.
      CHECK cdhdr-udate IN s_laeda.
      MOVE-CORRESPONDING cdhdr TO i_cdhdr.
      APPEND i_cdhdr.
    ENDSELECT.

Gracias por vuestra ayuda.

Desconectado dluis

  • Usuario Jr
  • **
  • Mensajes: 27
    • Ver Perfil
Re: DUMP por entrada masiva en un select
« Respuesta #1 en: 25 de Febrero de 2010, 03:23:08 pm »
Hola.

Yo lo primero que haría sería intentar quitar ese SELECT... ENDSELECT. Y cambiarlo por un LOOP a una tabla interna, mas viendo la cantidad de registros a los que accede.
Pero... sin modificar mucho tu código de pongo un ejemplo de lo que puedes hacer.
Simplemente sería hacer paquetes de 5.000 registros, como por ejemplo...



  RANGES r_matnr_tmp FOR r_matnr.
 
  DATA: lf_lines TYPE i.
  DATA: lf_desde TYPE i,
        lf_hasta TYPE i.

  DO.
    CLEAR: r_matnr_tmp[], r_matnr_tmp.

    lf_desde = lf_hasta + 1.
    lf_hasta = 5000 + lf_hasta.
    APPEND LINES OF r_matnr FROM lf_desde TO lf_hasta TO r_matnr_tmp.


    DESCRIBE TABLE r_matnr_tmp LINES lf_lines.
    IF lf_lines = 0.
      EXIT.
    ENDIF.

    SELECT * FROM cdhdr WHERE objectclas EQ 'MATERIAL'
                          AND objectid   IN r_matnr_tmp.

      CHECK cdhdr-change_ind = 'U'.
      CHECK cdhdr-udate IN s_laeda.
      MOVE-CORRESPONDING cdhdr TO i_cdhdr.
      APPEND i_cdhdr.
    ENDSELECT.

  ENDDO.


Desconectado ale12

  • Usuario Completo
  • ***
  • Mensajes: 92
    • Ver Perfil
Re: DUMP por entrada masiva en un select
« Respuesta #2 en: 16 de Noviembre de 2010, 08:52:23 am »
Me ha pasado lo mismo. No hay nada mas gratificante que buscar un poco y encontrarlo.

 ;D Muchas gracias dluis.

Desconectado Andreeea

  • Novato
  • *
  • Mensajes: 1
    • Ver Perfil
Re: DUMP por entrada masiva en un select
« Respuesta #3 en: 10 de Marzo de 2011, 08:15:50 pm »
tengo el mismo problema, alguien me puede ayudar con esto!!!

  SELECT c~werks c~matnr c~bwscl m~matkl          m~meins          m~mtart          m~bstme          e~lifnr          e~relif
         e~lifbi          e~infnr          e~ltsnr          t~zone1          t~name1

    INTO CORRESPONDING FIELDS OF TABLE t_output
    FROM ( wlk1 AS w INNER JOIN marc  AS c ON c~mandt = w~mandt
                                          AND c~matnr = w~artnr
                                          AND c~werks = p_werks
                     INNER JOIN mara  AS m ON m~mandt = c~mandt
                                          AND m~matnr = c~matnr
                     INNER JOIN eina  AS e ON e~mandt = c~mandt
                                          AND e~matnr = c~matnr
****                       INNER JOIN mean  AS n ON n~mandt = c~mandt
****                                            AND n~matnr = c~matnr
****                                            AND n~meinh = m~meins
                     INNER JOIN t001w AS t ON t~mandt = c~mandt
                                          AND t~werks = p_werks
          ) CLIENT SPECIFIED
   WHERE w~mandt = g_mandt
     AND w~filia IN r_filia          "EQ g_filia         "p_werks
     AND w~artnr IN s_matnr
     AND w~datbi GE sy-datum
     AND w~datab LE sy-datum
     AND m~matkl IN r_matkl
     and m~ersda in s_ersda
     and m~mtart in s_mtart
     AND c~bwscl IN s_bwscl
     AND e~lifnr IN s_lifnr
     AND e~relif IN r_relif
****       AND n~hpean = 'X'
****       AND ( ( e~lifbi GE sy-datum AND e~lifab LE sy-datum ) OR
****             ( e~lifbi = xfec ) )
     AND c~mmsta IN r_mmsta
     AND m~mstae IN r_mstae.

Desconectado dluis

  • Usuario Jr
  • **
  • Mensajes: 27
    • Ver Perfil
Re: DUMP por entrada masiva en un select
« Respuesta #4 en: 11 de Marzo de 2011, 01:12:59 pm »
Hola Andrea,

¿Me puedes decir cual es tu variable que contiene tantos registros?

¿Si te pasa lo mismo porque no aplicas la solución que se ha mencionado?


Saludos