PDA

Ver la Versión Completa : Dudas con Field Symbols


Tute.360
28/11/10, 13:34:41
Tengo una duda con respecto a los field symbols:

Yo tengo una tabla interna y cuando hago un read table, lo asigno a un FS.

READ TABLE <tabla> ASSIGNING <wa>.

Luego, chequeo que la asignacion se hizo de manera correcta controlando el SY-SUBRC.

Ahora, es redundante poner el AND <wa> IS ASSIGNED?

Porque veo que mucha gente no lo usa y no mucha gente si. Y no se realmente, en que caso podria devolver SY-SUBRC = 0 y que el FS no este asignado...

Alfredosite
28/11/10, 15:18:54
Tengo una duda con respecto a los field symbols:

Yo tengo una tabla interna y cuando hago un read table, lo asigno a un FS.

READ TABLE <tabla> ASSIGNING <wa>.

Luego, chequeo que la asignacion se hizo de manera correcta controlando el SY-SUBRC.

Ahora, es redundante poner el AND <wa> IS ASSIGNED?

Porque veo que mucha gente no lo usa y no mucha gente si. Y no se realmente, en que caso podria devolver SY-SUBRC = 0 y que el FS no este asignado...

Mira ambos cumplen una función similar (pero se diferencian en algo) ambos validan si se asigno el valor al fiel-symbol pero la diferencia es la siguiente:

1) IS ASSIGNED:
Este se usa para validar si se asigno un valor a un <fs> "sin estructura" (TYPE ANY, TYPE TABLE ANY,etc) es decir no se sabe que estructura tiene antes de asignarle el valor al <fs> Ejm:

FIELD-SYMBOLS <FS>.
DATA TEXT(20) TYPE C VALUE 'Texto a Mostrar'.

ASSIGN TEXT TO <FS>.
IF <FS> IS ASSIGNED.
WRITE <FS>.
ENDIF.

2) SY-SUBRC:
Este se usa para saber si se asigno algo al field symbol y por lo general ya se tiene definida la estructura del field symbol Ejm.

FIELD-SYMBOL: <tabla> TYPE pa0001.
<wa> TYPE LINE OF pa001.

data: v_pernr type persno.

READ TABLE <tabla> ASSIGNING <wa>.
IF SY-SUBRC EQ 0.
Cotinua tu lógica...
ENDIF.

Tute.360
28/11/10, 16:02:51
Muchas Gracias!

Ahora, sabes de algun caso en el que un READ TABLE ... ASSIGNING ... retorne SY-SUBRC = 0 y el FS no este asignado?

K-MUS
30/11/10, 12:49:43
No debería. Si el Read Table da sy-subrc = 0. Debería llenar al field-symbol.

seimeinomi
30/11/10, 14:07:53
Hola en el caso que se de o no, tienes que validar a parte del SY-SUBRC = 0, que el <FS> IS ASSIGNED que este asigando, porque sino te da DUMP

IF SY_SUBRC EQ 0 AND
<FS> IS ASSIGNED.
........
ENDIF.


Saludos