Como optimizo una consulta con "SELECT SINGLE"

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • moji87
    Junior Member
    • may
    • 19

    #31
    La tabla se activo pero con warrnings,es decir:
    Adjunto el log.
    Archivos Adjuntos

    Comentario

    • moji87
      Junior Member
      • may
      • 19

      #32
      Ver el contendio de la tabla

      Bueno,parece que utilizando TABLES ZCLIENTES,funciona.
      Sintácticamente es correcto el código,ejecuto y demás,pero no veo los registros creados,el contenido de la tabla.¿Cómo hago esto?¿alguna idea?
      Gracias.

      Comentario

      • moji87
        Junior Member
        • may
        • 19

        #33
        Transacciones SQ01 y SQ02

        Vale.Estoy probando con sq01 y sq02:
        Con SQ01 me dice : Object can be only created in package of namespace /SAPQUERY.¿Cómo cambio a este paquete?
        Con SQ02,parece que necesita unirse a otra tabla.
        Necestio más ayuda para crear estas consultas con esas transacciones.

        Gracias

        Comentario

        • vanesamacri
          Senior Member
          • jun
          • 146

          #34
          Pará... ¿de qué estás hablando? Me da la sensación de que estás consultando acerca de múltiples dudas sin seguir ningún tipo de ordenamiento.

          Volvamos a la consulta a la tabla ZCLIENTES. Tu consulta original era por qué no activaba el código y ya se encuentra solucionado. ¿Qué es lo que querés hacer ahora? Nunca lo aclaraste.

          Comentario

          • jvctaz23
            Junior Member
            • oct
            • 13

            #35
            Originalmente publicado por dmgman
            Hola a todos,
            Me han encargado optimizar un report ya que el tiempo de ejecucion es demasiado elevado.
            Tras analizarlo encuentro que casi la mitad de la ejecucion se va en un "SELECT SINGLE" a la tabla BSAS que contiene 5 millones de registros.
            Esta es la famosa sentencia:

            Código:
                SELECT SINGLE bukrs belnr gjahr
                  INTO (bsas-bukrs, bsas-belnr, bsas-gjahr)
                    FROM bsas
                    WHERE bukrs EQ bkpf-bukrs
                      AND augdt IN r_budat
                      AND augbl EQ bkpf-belnr
                      AND blart NE 'ZI'.
            No llevo mucho tiempo en Sap y no se me ocurre q alternativa podria tomar.
            Gracias

            Bueno lo que yo te recomiendo es eliminar todos los select single que estén dentro de loops, realizar la consulta con campos clave a las tablas que requieras fuera del loop para posteriormente solo realizar lecturas a tus tablas internas dentro del loop.

            Si este fuera tu caso, yo lo aria de esta forma:

            types: begin of ty_bsas,
            bukrs type bsas-bukrs,
            belnr type bsas-belnr,
            gjahr type bsas-gjahr,
            end of ty_bsas.

            data: tg_bsas type table of ty_bsas,
            sg_bsas type ty_bsas.

            SELECT bukrs belnr gjahr
            INTO table tg_bsas
            FROM bsas
            for all entries in tablai_bkpf
            WHERE bukrs EQ tablai_bkpf-bukrs
            AND augdt IN r_budat
            AND augbl EQ tablai_bkpf-belnr.

            if sy-subrc eq 0.
            *Se eliminan todos los registros que sean igual a 'ZI'.
            delete tg_bsas where blart eq 'ZI'.

            * se procede a realizar el loop a tablai_bkpf.
            Loop at tablai_bkpf into sg_bkpf.
            * Lectura a tabla interna bsas
            read table tg_bsas into sg_bsas with key bukrs = sg_bkpf-bukrs
            augdt IN r_budat
            augbl = sg_bkpf-belnr.
            endloop.
            endif.


            algo así yo haría, espero y me allá dado a entender. Saludos.
            Editado por última vez por jvctaz23; 29/05/2013, 15:23:59.

            Comentario

            • moji87
              Junior Member
              • may
              • 19

              #36
              Indexes

              Pero...¿para que sirve un índice?¿Dónde se utiliza?¿Dónde se crea?¿Cuales se utilizan?

              Comentario

              • damiko30
                Junior Member
                • mar
                • 13

                #37
                Coding

                Buen día gente!!!
                Les comento, tengo un Query que tiene delimitaciones de dos campos, uno es para fechas, en este necesito generar un código ABAP que no me permita cargar un rango de fecha mayor a 30 días. Se puede lograr esto?
                Aguardo respuesta. Desde ya muchas gracias.
                Darío Hernán Mur

                Analista en Sistema
                de Información

                Comentario

                • Jacobo
                  Member
                  • may
                  • 58

                  #38
                  pasale la tabla bsas a una tabla interna
                  y luego haces un read a esa tabla interna para coger bukrs,belnr y gjahr

                  data: i_bsas type bsas occurs 0 with header line.
                  data: w_bsas type bsas.

                  SELECT * INTO TABLE I_bsas FROM bsas.

                  READ TABLE i_bsas INTO w_BSAS
                  WITH KEY bukrs = bkpf-bukrs
                  augdt = r_budat
                  augbl = bkpf-belnr
                  blart <> 'ZI'
                  BINARY SEARCH.

                  en w_bsas estan los campos

                  Comentario

                  Trabajando...