SELECT INTO en más de una estructura

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Abaunus
    Senior Member
    • nov
    • 119

    #1

    SELECT INTO en más de una estructura

    Hola amigos, deseo hacer lo siguiente, pero ya me estoy disuadiendo de que no se puede:

    Teniedo
    W_VBAP TYPE VBAP,
    W_VBAK TYPE VBAK.

    Código:
        SELECT SINGLE * FROM VBAP AS a INNER JOIN VBAK AS b ON
          ( a~VBELN EQ b~VBELN ) INTO (W_VBAP, W_VBACK) WHERE a~VBELN EQ V_VGBEL AND a~POSNR EQ V_VGPOS.
    Necesito que el INTO sean dos estructras. Sé que entre paréntesis se puede poner una secuencia de campos, pero así con estructuras no me está funcionando. ¿Es posible hacer un INTO en más de una estructura a la vez?

    Espero se entiendo.
    Desde ya, gracias, y saludos a todos.
  • mysmb2
    Senior Member
    • ene
    • 406

    #2
    hola compañero

    podrias recuperar en una estructura y luego copiarlo a la otra estructura.
    Ahora si lo que necestias es recuperar dos registros diferentes tenes que hacer un select up to 2 rows.
    Sebastián Chiavia
    http://www.programacionabap.com.ar

    Comentario

    • Abaunus
      Senior Member
      • nov
      • 119

      #3
      Originalmente publicado por mysmb2
      hola compañero

      podrias recuperar en una estructura y luego copiarlo a la otra estructura.
      Ahora si lo que necestias es recuperar dos registros diferentes tenes que hacer un select up to 2 rows.
      Claro, pero lo que yo necesito no es son dos estructuras iguales o dos registros.
      Necesito un solo registro (SELECT SINGLE), pero en dos estructuras distintas, una por cada tabla del INNER JOIN (VBAP y VBAK).

      Comentario

      • martin89
        Member
        • may
        • 53

        #4
        Originalmente publicado por Abaunus
        Hola amigos, deseo hacer lo siguiente, pero ya me estoy disuadiendo de que no se puede:

        Teniedo
        W_VBAP TYPE VBAP,
        W_VBAK TYPE VBAK.

        Código:
            SELECT SINGLE * FROM VBAP AS a INNER JOIN VBAK AS b ON
              ( a~VBELN EQ b~VBELN ) INTO (W_VBAP, W_VBACK) WHERE a~VBELN EQ V_VGBEL AND a~POSNR EQ V_VGPOS.
        Necesito que el INTO sean dos estructras. Sé que entre paréntesis se puede poner una secuencia de campos, pero así con estructuras no me está funcionando. ¿Es posible hacer un INTO en más de una estructura a la vez?

        Espero se entiendo.
        Desde ya, gracias, y saludos a todos.

        Tu select es a la tabla VBAP, es decir vas a traer los registros de esa tabla. Lo que vos le indicas con el inner join es que te traiga los registros que en coincidan con tu WHERE. Es decir (que el campo VBELN de la tabla VBAP sea igual al campo V_VGBEL de la tabla VBACK.. lo mismo para el campo POSNR y V_VGPOS).

        Para traer registros de dos tablas distintas lo único que te queda es hacer dos selects me parece. Puede que esté equivocado si es así por favor corregirme.

        Saludos y espero que te ayude

        Comentario

        • Abaunus
          Senior Member
          • nov
          • 119

          #5
          Originalmente publicado por martin89
          Tu select es a la tabla VBAP, es decir vas a traer los registros de esa tabla. Lo que vos le indicas con el inner join es que te traiga los registros que en coincidan con tu WHERE. Es decir (que el campo VBELN de la tabla VBAP sea igual al campo V_VGBEL de la tabla VBACK.. lo mismo para el campo POSNR y V_VGPOS).

          Para traer registros de dos tablas distintas lo único que te queda es hacer dos selects me parece. Puede que esté equivocado si es así por favor corregirme.

          Saludos y espero que te ayude

          Cuando hacés INNER JOIN podés traer cualquier (todos, o los que quieras) registro de las tablas involucradas, no sólo de la primera. Eso no es problema. El tema es saber si puedo poner en INTO más de una estructura, como sí se puede poner más de un campo, dentro del paréntesis separados por comas.

          Comentario

          • abapconsultoria
            Senior Member
            • ene
            • 101

            #6
            Originalmente publicado por Abaunus
            Hola amigos, deseo hacer lo siguiente, pero ya me estoy disuadiendo de que no se puede:

            Teniedo
            W_VBAP TYPE VBAP,
            W_VBAK TYPE VBAK.

            Código:
                SELECT SINGLE * FROM VBAP AS a INNER JOIN VBAK AS b ON
                  ( a~VBELN EQ b~VBELN ) INTO (W_VBAP, W_VBACK) WHERE a~VBELN EQ V_VGBEL AND a~POSNR EQ V_VGPOS.
            Necesito que el INTO sean dos estructras. Sé que entre paréntesis se puede poner una secuencia de campos, pero así con estructuras no me está funcionando. ¿Es posible hacer un INTO en más de una estructura a la vez?

            Espero se entiendo.
            Desde ya, gracias, y saludos a todos.

            Lo que pedis no se puede hacer. Solo tolera hacerlo con campos.

            Saludos.
            ABAPCONSULTORIA@GMAIL.COM

            www.consultoriaabap.blogspot.com

            Lo importante no es saber sino saber quien es el que sabe

            Comentario

            • ballan
              Senior Member
              • oct
              • 671

              #7
              Podrias hacer algo asi:

              Types: begin of ty_vbak_vbap.

              include structure vbak as k renaming with suffix _vbak.
              include structure vbap as p renaming with suffix _vbap.

              types: end of ty_vbak_vbap.

              data: gs_vbak_vbap type ty_vbak_vbap,
              gs_vbak type vbak,
              gs_vbap type vbap.

              select single *
              into gs_vbak_vbap
              from vbak as k inner join vbap as p
              on k~vbeln = p~vbeln
              where ...

              move-corresponding gs_vbak_vbap to gs_vbak.
              move-corresponding gs_vbak_vbap to gs_vbap.

              Los campos comunes entre vbak y vbap tendras que mapearlos a mano pero sera mas sencillo

              Espero que ayude

              Comentario

              • Abaunus
                Senior Member
                • nov
                • 119

                #8
                ¡¡Gracias Ballan!! El SELECT funcionó a la perfección, no así los MOVE-CORRESPONDING, ya que los campos de las estructuras gs_vbak y gs_vbap no tiene los sufijos, por lo tanto sus nombres difieren de gs_vbak_vbap...


                No entendí esto:
                Originalmente publicado por ballan
                Los campos comunes entre vbak y vbap tendras que mapearlos a mano pero sera mas sencillo
                De nuevo, gracias, y saludos!

                Emanuel

                Comentario

                Trabajando...