PDA

Ver la Versión Completa : Ayudaaaaaaaa Field-Symbols


robert_milan
04/06/08, 10:29:53
Pues bien, me gustaria saber si es posible cambiar el valor de un field symbol que esta en estado de solo lectura.


Saludos!!!

ibecerra
04/06/08, 13:06:37
interesante, tienes el codigo para darle una revisada.
yo utilizo field symbol para modificar campos de una tabla interna en forma dinamica.. vale decir si tengo en una tabla interna
campo001 campo002 campo003 campo004.....
y para no estar poniendo case y tanto codigo, utilizo los field-symbols para q en forma dinamica me actualice los campos sin necesidad de colocarlos todos.
Saludos

robert_milan
04/06/08, 13:44:29
Si claro, este es el codigo:

DATA aux LIKE sol_ped-zprocomp.
FIELD-SYMBOLS <eb> TYPE LINE OF MEREQ_T_EBAN.
LOOP AT im_t_eban_pers ASSIGNING <eb>.

IF sy-tabix EQ 1.
aux = <eb>-zprocomp.
ELSEIF aux NE <eb>-zprocomp.
MOVE aux TO <eb>-zprocomp.
ENDIF.

ENDLOOP.

Lo utilizo en la funcion EXIT_SAPLMEREQ_010. segun esto con los field symbols puedo modificarlo. pero no se como :S

ibecerra
04/06/08, 13:51:53
a ver lo lo que deseas en cambias el contenido de la tabla interna mediante un
Ejemplo
FIELD-SYMBOLS : <MOVIPER> LIKE LINE OF T_MOVIPER.
LOOP AT T_MOVIPER ASSIGNING <MOVIPER>.
* Ya no necesitas hacer un modify ni nada por el estilo
* el valor se actualiza directamente en la tabla interna.
<MOVIPER>-CAMPO1 = 'VALOR CAMBIADO'.

ENDLOOP.

robert_milan
04/06/08, 14:08:20
a ver lo lo que deseas en cambias el contenido de la tabla interna mediante un
Ejemplo
FIELD-SYMBOLS : <MOVIPER> LIKE LINE OF T_MOVIPER.
LOOP AT T_MOVIPER ASSIGNING <MOVIPER>.
* Ya no necesitas hacer un modify ni nada por el estilo
* el valor se actualiza directamente en la tabla interna.
<MOVIPER>-CAMPO1 = 'VALOR CAMBIADO'.

ENDLOOP.


si eso es correcto pero me dice que el campo es de solo lectura :s

ibecerra
04/06/08, 14:10:37
solo es lectura siempre y cuando el campo sea una llave interna.
si es asi , no podras modificarlo

robert_milan
04/06/08, 14:29:33
el problema es que en el user exist esta definido asi:
REFERENCE(IM_T_EBAN) TYPE MEREQ_T_EBAN

y en teoria no lo puedo modificar o si?'

si fuera Value (IM_T_EBAN) TYPE MEREQ_T_EBAN

se podria modificar.??

victoria
04/06/08, 19:11:58
hola, ese user exit solo te sirve para verificar datos, que campo quieres modificar, es un campo Z?

robert_milan
04/06/08, 20:53:46
Si es un campo Z que agregue con el append...

espero me puedas ayudar.

cubanito
08/08/08, 14:55:33
Robert...
Se trata de una referencia dinámica, por lo tanto... si se puede!!!
Al fin y al cabo sólo son apuntadores... es posible que el que te "brinda" SAP en esa U.E. sólo "contenga" la dirección de memoria donde se encuentra el dato... o sea, apunta a la dirección física del mismo, mas no a su "contenido", por eso no puedes modificarlo. Si lo que tú necesitas es "entrar" al dato, te sugiero que generes tu propia "asignación dinámica" haciendo referencia al "contenido" del apuntador (o field-symbol)...

Saludos!!!

dgarcgon
14/10/08, 11:04:33
LOOP AT t_bseg ASSIGNING <fs>.
clear bkpf-bukrs.
SELECT SINGLE bukrs FROM bkpf into bkpf-bukrs
WHERE bukrs = <fs>-bukrs AND
belnr = <fs>-belnr AND
gjahr = <fs>-gjahr AND
blart = 'F9' AND
bldat = it_periodif-bldat AND
budat = it_periodif-budat AND
grpid = 'ZSD00031'.

IF sy-subrc EQ 0.
MOVE-CORRESPONDING it_periodif TO it_delete.
APPEND it_delete.
CLEAR it_delete.

EXIT.
ENDIF.
ENDLOOP.

En cierta medida, en cierta medida no acabo de verle utilidad a utilizar un FIELDSYMBOL en este progrma, si ya está dentro de un loop porqué referenciar de forma dinámica?

Alguien podria arrojarme algo de luz sobre la razón de este bucle?

La declaración del FS es la siguiente:

DATA: t_bseg TYPE TABLE OF zbseg1.
FIELD-SYMBOLS <fs> TYPE zbseg1.

Gracias de antemano,