PDA

Ver la Versión Completa : field symbols en un work area


zebalia
26/04/10, 16:33:49
Hola, necesito ayuda.

Vereis, tengo un wa, que llamaremos wa_b.

El caso, es que ese wa_b tiene campos a los que necesito acceder, pero el nombre de los campos a los que quiero acceder, están en una variable y no se como se llaman esos campos hasta tiempo de ejecución.

Sería algo así

parameters campo type string.
data valor type string.

valor = wa_b-<campo>.

Evidentemente, está erroneo ya que no puedo acceder al wa_b de la forma que he puesto. Se os ocurre como solucionar este problema? Tengo entendido que se resuelve con field symbols pero no tengo ni idea de usarlo.


Un saludo

ppchico
26/04/10, 16:39:14
Por lo que dices, tienes el nombre del campo al que quieres acceder en la variable campo. En este caso solo tendrías que hacer lo siguiente:




FIELD-SYMBOLS: <FS> TYPE ANY.
PARAMETERS: CAMPO TYPE STRING.

CONSTANTS: LC_NOMBRE WORK_AREA TYPE STRING VALUE 'WA_B'.
DATA: VALOR TYPE STRING,
L_CAMPO_FINAL TYPE STRING


CONCATENATE LC_NOMBRE_WORK_AREA CAMPO INTO L_CAMPO_FINAL.
ASSIGN (L_CAMPO_FINAL) TO <FS>.
VALOR = <FS>.

zebalia
26/04/10, 16:53:00
Gracias por la info, pero me da un dump.

Me dice lo siguiente:


Field symbol has not yet been assigned

ppchico
26/04/10, 16:57:52
Perdona, se me olvidó una cosa:

FIELD-SYMBOLS: <FS> TYPE ANY.
PARAMETERS: CAMPO TYPE STRING.

CONSTANTS: LC_NOMBRE WORK_AREA TYPE STRING VALUE 'WA_B'.
DATA: VALOR TYPE STRING,
L_CAMPO_FINAL TYPE STRING


CONCATENATE LC_NOMBRE_WORK_AREA '-' CAMPO INTO L_CAMPO_FINAL.
ASSIGN (L_CAMPO_FINAL) TO <FS>.
if sy-subrc ne 0.

message 'error. El campo no existe.'

else.
VALOR = <FS>.

endif.


Prueba Ahora con eso.
Un Saludo,

zebalia
26/04/10, 17:02:43
Estupendo ppchico, me has ayudado mucho!

Gracias

ppchico
26/04/10, 17:19:01
Lo celebro :)