PDA

Ver la Versión Completa : Estructura Append


jjeffer
17/06/11, 20:35:06
Hola

Bueno resulta que necesito agregar una columna a una tabla estándar, tengo entendido que para esto es necesario :
* Ingresar a la tabla estándar
* Pulsar en boton "Estr.append"
* Crear la estructura con el nuevo campo y activarla

Pero al momento de ver la tabla en un programa, el nuevo campo no se visualiza, ¿No se si falta algún paso o estoy haciendo algo mal?
_____________________________________________
La estructura es RN1WPV007_FIELDCAT, la transacción es la NWP1 (Puesto de Trabajo Clínico), este permite agregar columnas estándar que están en un POOL y necesito agregar una columna que no esta.

Tengo entendido que se debe crear una badi y programar los metodos EXIT_DISPLAY y EXIT_FUNCTION, pero no se como seria el código.

Muchas Gracias por su ayuda.

oarranzli
18/06/11, 10:12:43
Hola jjeffer,

¿Sobre qué programa estás intentando visualizar el campo? Si es un programa estándar no te aparecerá ese campo. En el mejor de los casos podrás encontrar alguna user exit donde asociar tu campo a alguna pantalla.

Espero que te ayude.

jjeffer
18/06/11, 17:14:25
Que tal Oscar.

Gracias por responder.

La transacción es la NWP1 (Puesto de Trabajo Clínico), este permite agregar columnas estándar que están en un POOL y necesito agregar una columna que no esta.

Tengo entendido que se debe crear una badi y programar los metodos EXIT_DISPLAY y EXIT_FUNCTION, pero no se como seria el codigo :confused:

Muchas gracias.

horacio83
22/06/11, 19:05:16
hola jjeffer,

Tenes que implementar la BADI N1_WP_LSTAMB y como bien decis luego agregar el código en el método exit display. Para que tu campo z se vea en pantalla se lo vas a tener que pasa a la tabla new_t_lststelle_list.

te paso un código de ejemplo(el campo que yo agrego es el ztriage):

FIELD-SYMBOLS: <fs_list> LIKE LINE OF new_t_lststelle_list.

* Asign data to new structure.
new_t_lststelle_list[] = old_t_lststelle_list[].

* ¿Hay registros?
CHECK NOT new_t_lststelle_list[] IS INITIAL.

SELECT einri falnr patnr dokar doknr dokvr doktl
FROM ndoc
into table it_ndoc
FOR ALL ENTRIES IN new_t_lststelle_list
WHERE einri = new_t_lststelle_list-einri
and falnr = new_t_lststelle_list-falnr
and patnr = new_t_lststelle_list-patnr.

IF sy-subrc EQ 0.
select *
FROM Y0000001
INTO table it_Y0000001
FOR ALL ENTRIES IN it_ndoc
where dokar = it_ndoc-dokar
and doknr = it_ndoc-doknr
and dokvr = it_ndoc-dokvr
and doktl = it_ndoc-doktl.

ENDIF.

loop at new_t_lststelle_list assigning <fs_list>.

READ TABLE it_ndoc INTO wa_ndoc with key einri = <fs_list>-einri
falnr = <fs_list>-falnr
patnr = <fs_list>-patnr.
IF sy-subrc = 0.

READ TABLE it_Y0000001 INTO wa_Y0000001 with key dokar = wa_ndoc-dokar
doknr = wa_ndoc-doknr
dokvr = wa_ndoc-dokvr
doktl = wa_ndoc-doktl.
ENDIF.

select single ddtext
from dd07t
into <fs_list>-ztriage
where domname = 'ZN_ACUITY'
and ddlanguage = sy-langu
and domvalue_l = wa_Y0000001-ztrg_acu.

clear: wa_Y0000001, wa_ndoc.
endloop.


también vas a tener que implementar el metodo EXIT_FUNCTION de la siguiente manera.

method IF_EX_N1_WP_LSTAMB~EXIT_FUNCTION.

* Para mantener funcionamiento de función sobrescribo
* cambio de función con anterior.
P_FCODE_CHANGED = P_FCODE.

endmethod.

Espero que te sirva.
Saludos,

jjeffer
23/06/11, 12:21:57
Gracias amigo, me salvaste la vida :)