Buenas a todos,
estoy empezando a trabajar con ALV’s y mas o menos voy avanzando, pero me ha surgido una duda que no he conseguido solucionarla. Creo que tiene que ser sencillo…pero he probado varias cosas y no lo consigo, :S.
Tengo un report con parámetros de selección y contiene un alv con los resultados. Como status guid de este ALV tengo una copia de status gui estandar (FM: SALV).
Lo que quiero hacer es que, en función de un parámetro de selección (es un checkbox), aparezca o desaparezca un botón personalizado de mi status gui.
He investigado un poco acerca de este tema y he encontrado dos opciones para solucionarlo:
1.- Usando el metodo “GRID_CONTENEDOR->set_table_for_first_display”.
2.- Usando la funcion “REUSE_ALV_GRID_DISPLAY”.
Estoy usando un ALV construido a partir de la clase CL_SALV_TABLE, y al no definir en ningún sitio ni contenedor ni grid he descartado usar la primera opción.
Estoy usando la segunda opción, pero al ejecutarse me lanza un error el programa y no carga el ALV diciéndome que “No es posible determinar un catalogo del campo”:
A continuación os pongo el trozo de código implementado:
DATA: w_salida TYPE LINE OF tipo_salida,
it_exclude TYPE slis_t_extab,
wa_exclude TYPE slis_extab.
wa_exclude-fcode = '&ADDPREINM'. " Codigo de mi boton
APPEND wa_exclude TO it_exclude.
IF it_exclude IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_STRUCTURE_NAME = 'TIPO_SALIDA' " Tipo de linea de la tabla de salida
it_excluding = it_exclude "exclude functions
TABLES
T_OUTTAB = t_salida "table data " Mi tabla de salida con los datos a mostrar
EXCEPTIONS
PROGRAM_ERROR = 6.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF. ENDIF.
g_alv->display( ).
He visto que algunos aconsejan poner también el parámetro “I_STRUCTURE_NAME”, aunque yo lo tengo comentado.
También ha coincidido que los ejemplos que he visto son sobre Tablas del estandar (SFLIGHT, SPFLI…) y en mi caso se trata de una estructura y tabla de salida personalizada (no sé si esto puede afectar en algo).
Bueno espero haberme explicado y que me podáis orientar un poco, :).
Un saludo,
Rafa.