PDA

Ver la Versión Completa : Problema con el scroll en un ALV


astursap
23/06/08, 09:55:08
Buenas.
Tengo un report creado, con un ALV, y que tiene varias casillas para que cuando pinche vaya a un pedido o una factura o un IDOC.
El problema viene cuando vuelvo al ALV tras haber visualizado cualquier documento de los antes mencionados, ya que si hago un scroll con el mouse, me salta un dump que dice... Field symbol has not yet been assigned.
El error ocurre en los siguientes sitios segun la ST22.

"GETWA_NOT_ASSIGNED" C
"SAPLSLVC" or "LSLVCF36"
"DATA_TABLE_FILL"

he estado mirando las notes y no encuentro ninguna solucion, y ya no se como arreglarlo. Alguien sabe porque ocurre esto y como solucionarlo?

gracias y un saludo

ballan
23/06/08, 11:07:45
Si has creado el ALV con objetos te puede estar pasando que al hacer doble click e ir a otro sitio luego cuando vuelves el container no esta creado, o el objeto grid o algo de eso

nachosds
23/06/08, 11:26:58
¿Como has hecho la llamada?
Yo tengo hecho un ALV con la misma funcionalidad que tu pero con distintos campos. Te copio como lo he hecho:

---------------------------------
data: d_ucomm LIKE sy-ucomm,
d_campo TYPE slis_selfield.

*Si hemos hecho doble click
If d_ucomm = '&IC1'.
read it_alv INDEX d_campo-tabindex. " la tabla que le pasamos al ALV
SET PARAMETER ID 'campo' FIELD it_alv-campo.
CALL TRANSACTION 'transaccion' AND SKIP FIRST SCREEN.
endif.
---------------------------------

Con esto a mi me va bastante bien, y cuando vuelvo al ALV me lo hace correctamente.

Saludos y espero haberte ayudado!

astursap
23/06/08, 11:27:41
esta es la funcion que uso para crear el alv:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
it_fieldcat = t_fieldcat
is_layout = x_layout
* it_sort = t_sort
i_callback_pf_status_set = w_status
i_callback_user_command = w_comm
i_save = 'A'
it_events = t_event
i_grid_title = w_title
TABLES
t_outtab = it_data
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.

nachosds
23/06/08, 11:33:58
esta es la funcion que uso para crear el alv:

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = w_repid
it_fieldcat = t_fieldcat
is_layout = x_layout
* it_sort = t_sort
i_callback_pf_status_set = w_status
i_callback_user_command = w_comm
i_save = 'A'
it_events = t_event
i_grid_title = w_title
TABLES
t_outtab = it_data
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.

i_callback_pf_status_set = 'W_STATUS'
i_callback_user_command = 'W_UCOMM'

Prueba a ver que tal

nachosds
23/06/08, 11:42:12
importante!!!
En mayusculas y entre comillas!!!

'W_STATUS'
'W_UCOMM'

astursap
23/06/08, 11:54:47
Ahora me sale otro dump, diciendo que el perform no existe (por poner 'W_UCOMM'), y no entro ni siquiera en el pedido o factura...

Error: Call (PERFORM) to a non-existent routine.

An exception occurred. This exception will be dealt with in more detail
below. When the system check to see if this exception had been caught at
runtime, it established that the class to which this exception is
assigned, 'CX_SY_DYN_CALL_ILLEGAL_FORM', is not available in the database.
Either the class has been deleted accidentally, or the release of the
kernel differs from that of the database.
The reason for this exception is:
The program "SAPLSLVC_FULLSCREEN" is meant to execute an external PERFORM,
namely the routine "W_UCOMM " of the program "ZLISTADO_EDI ", but
this routine does not exist.

nachosds
23/06/08, 12:12:51
Claro, porque W_STATUS, y W_UCOMM deben de ser performs en los cuales controles el click y el status.

Por ejemplo:

FORM W_STATUS USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'tu_status'.

ENDFORM. " W_STATUS

FORM W_UCOMM USING d_ucomm LIKE sy-ucomm
d_campo TYPE slis_selfield.

Aqui controlariamos el doble clic

ENDFORM. " W_UCOMM

astursap
23/06/08, 14:12:02
Es verdad, q despiste...

bueno, pues corregido el error, sigue saliendome el dump del q hablaba en el primer post. :(

astursap
24/06/08, 07:44:11
up!.

Nadie sabe porque puede ser? no lo entiendo!!!

Turu
24/06/08, 10:39:53
Yo no tengo ni idea, he hecho un call transaction a un alv de prueba q tengo y me muevo sin problemas.

Mira en el SDN de SAP, yo he puesto SAPLSLVC y creo que el primer caso coincide bastante con lo que te pasa a ti.

Te pongo el enlace.
https://www.sdn.sap.com/irj/sdn/advancedsearch?cat=sdn_all&query=SAPLSLVC&adv=false&sortby=cm_rnd_rankvalue

Espero que te sirva de ayuda.

astursap
24/06/08, 11:41:23
muchisimas gracias a todos por vuestra ayuda, al final lo solucioné haciendo el ALV de otra manera.
El último link lo tendré en cuenta, gracias!!

leir1612
24/06/08, 18:38:13
Tambien lo podes solucionar de esta menera depues de termimar el llamado a otro reporte o comando tenes que refrescar tu alv de esta manera

rs_selfield-refresh = 'X'.