select single + for all entries

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Cabezademaceta
    Junior Member
    • ago
    • 6

    #1

    select single + for all entries

    Hola que tal? Quiero saber como es bien la sintaxis del select SINGLE (campo) y for all entries. Busque y siempre muestran con SELECT * + for all entries.

    Yo quiero lo siguiente:

    VTEXT (TPART-VTEXT)
    quiero hacer un select single para el campo VTEXT con for all entries, hay gluna diferencia con SELECT *? o es casi lo mismo? gracias
  • VLozano
    Senior Member
    • nov
    • 124

    #2
    No entiendo la pregunta. SELECT SINGLE devuelve sólo un registro, mientras que cuando uno usa FAEI se supone que quiere todos los registros de una tabla coincidentes con otra.

    SI lo que quieres es que te devuelva sólo un registro para cada uno de la tabla original, FOR ALL ENTRIES lo hace por defecto (lleva un DISTINCT implícito).
    "Porque algunos sabemos que somos parte del problema"
    - Pequeña guía para escribir mensajes en foros técnicos -

    Comentario

    • Cabezademaceta
      Junior Member
      • ago
      • 6

      #3
      Si, gracias, con el single no era necesario me parece ponerle eso, ya lo hice de otra forma, igual muchas gracias por la ayuda, y creo que me exprese mal.


      EDIT: que quilombo que es el batch input cuando quiere, dios.

      Comentario

      • Dennis Urbano E.
        Junior Member
        • nov
        • 28

        #4
        Segun pude entender lo que tu tienes es una tabla con codigos de Interlocutores o algun tipo de codigo y quieres actualizar el campo Denominación.

        Si es eso lo que tu quieres hacer es actualizar esos campos con un

        Select single VTEXT into tabla-vtext from tpart
        for all entries in tabla
        where PARVW = tabla-PARVW.

        Bueno lo que pasa es que necesitas tener en claro los conceptos de select single y el for all entries

        Select single -> Solo devuelve un valor o registro o el primero que encuentre ( No necesariamente significa que en la tabla consultada exista un solo registro con las condiciones utilizadas )

        For all entries -> ( Para todas las entradas ) se usa para obtener datos que dependan de uno o mas campos de una tabla interna .. por ejemplo tienes en una tabla el listado de pedidos ( cabecera ) y quieres obtener las posiciones de cada pedido en otra tabla ( detalle ) haces lo siguiente

        Select pedido posiciones from ekpo
        for all entries in t_pedidos
        where
        ebeln = t_pedidos-ebeln.

        Espero se haya entendido al menos algo xP!

        Ahora para tu requerimiento puedes hacer esto:

        1) En la consulta donde obtienes los códigos de Interlocutor realiza un Join a la tabla tpart y obtienes también la denominación.

        Select a~codigo a~etc a~etc b~vtext from t_maestra as a (Tabla standar no se cual usas) left join tpart as b on a~campoCodigo = b~campoCodigo
        where (tus Condiciones)

        Te recomiendo que hagas eso .. pongo el left join porque no se si todos los códigos esten en la tabla tpart. Si estas seguro que están entonces puedes usar INNER JOIN.

        2) Select codigo vtext from tpart
        into table t_denominacion
        for all entries in tu_tablainterna
        where codigoTpart = tabla_interna-codigo.

        luego un loop.
        loop at tabla_interna assinging <fs>.
        read table t_denominacion with key PARVW = tabla_interna-PARVW.
        if sy-subrc = 0.
        <fs>-vtext = t_denominacion-vtext.
        endif.
        endloop.

        3) También puedes hacer el loop a la tabla interna y dentro un select single a la TPART con el codigo y actualizas el campo vtext ( NO RECOMENDABLE )

        Ojala haya respondido y mas q todo se haya entendido lo que puse xD!

        SUerte saludos

        Comentario

        Trabajando...