Duda con select for all entrie

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • pancho6102
    Senior Member
    • jun
    • 238

    #1

    Duda con select for all entrie

    Hola buen día amigos del foro.


    tengo una duda espero y me puedan ayudar, no se si sea posible hacer un select for all entries pero de la siguiente forma

    tengo una tabla de datos que tiene la siguiente informacion

    itab-BUKRS
    itab-BELNR
    itab-GJAHR
    itab-ebeln (numero de orden de compra).

    con estos datos quiero hacer un for All entries para traerme datos de la BKPF

    algo asi:

    select
    BUKRS
    BELNR
    GJAHR
    BLART
    BLDAT
    BUDAT
    awkey
    into Corresponding fields of TABLE it_bkpf
    from bkpf
    FOR ALL ENTRIES IN itab
    where bukrs = itab-bukrs and
    belnr = itab-belnr and
    GJAHR = itab-GJAHR.

    con ello no hay problema, pero si por alguna extraña razon extraña quisiera que el resultado ademas de los campos de la BKPF apareciera tambien el numero de la orden de compras algo asi:

    select
    BUKRS
    BELNR
    GJAHR
    BLART
    BLDAT
    BUDAT
    awkey
    itab-ebeln
    into TABLE it_bkpf
    from bkpf
    FOR ALL ENTRIES IN itab
    where bukrs = itab-bukrs and
    belnr = itab-belnr and
    GJAHR = itab-GJAHR.

    no se si se pueda por que me imagino que por cada select que se haga internamente para la tabla del for all entries se puede rescatar el campo ebeln con el que se haga la consulta.

    Alguien ha tratado de hacer algo parecido o uso un camino largo y menos extraño


    Saludos.
    Francisco Ramirez.
    consultor SAP ABAP Netweaver
    Queretaro, Mexico.
  • ballan
    Senior Member
    • oct
    • 671

    #2
    Buenos dias,

    No puedes hacer eso.

    En tu IT_BKPF tendras que tener un campo para el EBELN y despues del select hacer un:

    Código:
    FIELD-SYMBOLS: <LINEA> LIKE LINE OF IT_BKPF.
    DATA: LS_LINEA LIKE LINE OF ITAB.
    
    LOOP AT IT_BKPF ASSIGNING <LINEA>.
    
    READ TABLE ITAB INTO LS_LINEA WITH KEY BUKRS = <LINEA>-BUKRS
    BELNR = <LINEA>-BELNR
    GJAHR = <LINEA>-GJAHR.
    
    IF SY-SUBRC IS INITIAL.
    <LINEA>-EBELN = LS_LINEA-EBELN.
    ENDIF.
    
    ENDLOOP.

    Comentario

    • pancho6102
      Senior Member
      • jun
      • 238

      #3
      Gracias Ballan.
      pero son esas dudas que de pronto te surgue el respectivo: ¿ se podra?

      si efectivamente lo realice asi usando un loop y el modify aunque me hubiese ahorrado el modify si usara el field symbol como lo muestras en el ejemplo.


      Saludos.
      Editado por última vez por pancho6102; 01/07/2015, 17:03:40.
      Francisco Ramirez.
      consultor SAP ABAP Netweaver
      Queretaro, Mexico.

      Comentario

      • ballan
        Senior Member
        • oct
        • 671

        #4
        Desconozco como esta implementado en detalle el FOR ALL ENTRIES, pero me imagino que internamente hara algo asi.

        Tu tienes:

        SELECT..
        FOR ALL ENTRIES IN TABLA
        WHERE CAMPO1 = TABLA1-CAMPO1

        El compilador coge tu TABLA1 y genera un rango con todos los valores distintos de CAMPO1

        Despues coge tu SELECT.. FOR ALL ENTRIES y lo convierte en

        SELECT
        WHERE CAMPO1 IN RANGO_CAMPO1

        Es por eso que no puedes hacer referencia a campos de tu tabla interna, porque el select "real" que se hace no "ve" tu tabla interna.

        Comentario

        Trabajando...