obtener un campo de itab con la lectura de la tabla de TRANSPORTE

Estoy tratando de conseguir un campo de interal tabla como esta:

READ TABLE tbl_peps TRANSPORTING ususap INTO lv_responsable WITH KEY usr03 = wa_tbl_prps-usr03.

Esta frase está mal, me da un error

tbl_peps y lv_responsable son incompatibles

.

Hay una manera de lograr que el uso de «transporte de campos»?

OriginalEl autor funkeeiads | 2015-01-08

4 Kommentare

  1. 4

    de acuerdo a la ABAP Documentación en READ TABLE, si utiliza el transporte-opción de la zona de trabajo de recepción de los datos debe ser compatible con el tipo de línea de la tabla de leer. Su variable declarada lv_responsable parece ser incompatible con tbl_peps, por lo tanto el error cuando el control de su código.

    Esto debería funcionar:

    DATA:
      wa_peps like line of tbl_peps.
    
      READ TABLE tbl_peps TRANSPORTING ususap INTO wa_peps WITH KEY usr03 = wa_tbl_prps-usr03.  
      move wa_peps-ususap to lv_responsable.
    
    Quería evitar el área de trabajo, debido a que sólo un campo es necesario.
    Trilsbeek hay notables ventajas de utilizar el TRANSPORTE de la palabra clave en la LECTURA de la TABLA de declaración. La instrucción de trabajo con y sin ella. yo.e: LEER la TABLA tbl_peps EN wa_peps CON CLAVE usr03 = wa_tbl_prps-usr03. mover wa_peps-ususap a lv_responsable.
    con el TRANSPORTE que usted puede elegir para el transporte de sólo un subconjunto de los campos de la estructura de destino. Por ejemplo, si usted sólo desea tomar un solo campo y mover el valor en la ya poblada área de trabajo, manteniendo los valores de otros campos en el WA intacta. Como LEER la TABLA de las obras en las tablas internas y se queda en la memoria, no creo que hay serias ventajas de rendimiento. Depende por supuesto de la cantidad de datos.

    OriginalEl autor Dirk Trilsbeek

  2. 12

    Con la nueva sintaxis (Al menos ABAP 7.40) usted no necesita un workarea más. La codificación por tu ejemplo sería:

    try.
        lv_responsable = tbl_peps[ usr03 = wa_tbl_prps-usr03 ]-ususap.
    catch CX_SY_ITAB_LINE_NOT_FOUND.
    endtry.
    

    Más info de las nuevas expresiones de tabla se pueden encontrar aquí.

    Excelente aporte
    Genial, esta debe ser la respuesta correcta.
    Si usted piensa que esto es un excelltent contribución puede desactivar el aceptado la marca de la otra pregunta y ponerlo aquí.

    OriginalEl autor jaegli

  3. 2

    Resolver el problema subyacente

    La razón que usted desea para el transporte de un solo campo es para ahorrar memoria y aumentar la velocidad de procesamiento. Hay una mejor manera de hacerlo, utilice el campo de los símbolos:

    READ TABLE tbl_peps 
      ASSIGNING FIELD-SYMBOL(<fs_responsable>) 
      WITH KEY usr03 = wa_tbl_prps-usr03.
    

    La línea de la definición sólo funciona con ABAP 740 y de seguridad, pero usted puede hacer esto en versiones anteriores:

    FIELD-SYMBOLS: <fs_responsable> LIKE LINE OF tbl_peps.
    READ TABLE tbl_peps 
      ASSIGNING <fs_responsable> 
      WITH KEY usr03 = wa_tbl_prps-usr03.
    

    OriginalEl autor András

  4. 0

    No hay manera. Lv_responsable tiene que ser definido de la siguiente manera.

    DATA: lv_responsable LIKE LINE OF tbl_peps.
    

    Sólo entonces se puede asignar el valor en el campo lv_responsable-ususap a otra variable del tipo de campo.

    Me temo que su derecho .. pensé que había una manera de no uso de un área de trabajo.

    OriginalEl autor Jagger

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea