Uso de field symbol o work area con in line ABAP 7.4

Siguiendo con los tutoriales de “in line”, esta vez desarrollaremos la declaración de field-symbols y work áreas dentro de la sentencia LOOP o READ. Al igual que en lo indicado anteriormente, la nueva sintaxis permite que el intérprete del lenguaje abap verifique la tabla a la que estamos teniendo acceso y determine su estructura, permitiendo crear, en el momento, el field-symbol o work área (Según la demanda del programador, recordad que un field-symbol tendrá más importancia si lo que se quiere es leer y modificar, mientras que un work área es de solo lectura).

La sintaxis para realizar esta asignación es de la siguiente forma:

Para field-symbol:

LOOP AT it_tabla ASSIGNING FIELD-SYMBOL(<fs_tabla>).

READ TABLE it_tabla ASSIGNING FIELD-SYMBOL(<fs_tabla>).

Y para work área:

LOOP AT it_tabla INTO DATA(wa_tabla).

READ TABLE it_tabla INTO DATA(wa_tabla).

Con ello, al momento de hacer la lectura de la tabla se genera la estructura y sobre ella, ya podemos trabajar.

Ejemplo de ello, realizaremos un recorrido para leer de la tabla interna que hemos obtenido de BKPF e imprimir en pantalla los números de documentos:

DATA(lv_monat) = ’02’.
DATA(lv_gjahr) = ‘2017’.

SELECT bukrs, belnr, gjahr, budat FROM bkpf
  INTO TABLE @DATA(it_bkpf)
  WHERE monat = @lv_monat
    AND gjahr = @lv_gjahr
    AND blart = ‘AB’.

LOOP AT it_bkpf ASSIGNING FIELD-SYMBOL(<fs_bkpf>).
  WRITE:/ <fs_bkpf>-belnr.
ENDLOOP.

(Si es primera vez que vez un SELECT con inline, te invito a ver el siguiente link para que aprendas, lo mismo que variables declaradas con in line en el siguiente link).

Como se puede ver en el ejercicio, no realizamos ninguna declaración del field-symbol, por ello si lo convocamos antes de entrar al LOOP, notaremos que se encuentra sin asignar

1

Una vez dentro del recorrido con LOOP, automáticamente el field-symbol se creará y empezará a asumir línea a línea el contenido de la tabla

 

2

Para finalmente mostrar un listado de los documentos.

3

El resultado con work área es similar

4

Aparece creado con sus valores inicializados

5

Y una vez entra a la sentencia LOOP, empieza a asumir valor a valor

6

Observación:

Si ya estamos empleando un field-symbol / work área con creación dentro de un recorrido o lectura, entonces no podemos volver a crearlo en otra sentencia, pues nos dará un error indicando que la estructura ya existe

7

Se puede reutilizar la estructura, invocándola como si está, ya existiera

LOOP AT it_bkpf INTO DATA(wa_bkpf).
  WRITE:/ wa_bkpf-belnr.
ENDLOOP.

READ TABLE it_bkpf INTO wa_bkpf WITH KEY gjahr = lv_gjahr.

También se puede volver a crear otra estructura con nombre distinto, pero si ambos se encuentran en segmentos de código independientes lo aconsejable es reutilizar.

 

Anuncios

2 pensamientos en “Uso de field symbol o work area con in line ABAP 7.4

  1. Pingback: Lectura a tabla interna indicando el índice con in line ABAP 7.4 | Simplemente LoKoX

  2. Pingback: Lectura a tabla interna usando filtro de columnas con in line ABAP 7.4 | Simplemente LoKoX

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s