PDA

Ver la Versión Completa : Utilizar un layout


jtristan
28/05/09, 06:28:10
Hola,
estoy viendo ejemplos de como utilizar un layout en un alv. Por lo que veo, el código es OO. Supongo, que con un ALV normal no podré utilizar los layouts, que tengo que utilizar un ALV OO para poder utilizar esas características.

pafú
28/05/09, 07:04:31
Que va, puedes utilizar perfectamente el layout sin necesidad de utilizar objetos.

Ej: informando el layout

* PARA ALV
TYPE-POOLS slis.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
gs_layout TYPE slis_layout_alv.


* Se informa el layout
gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.
gs_layout-expand_all = 'X'.
gs_layout-box_tabname = 'I_SALIDA'.

jtristan
28/05/09, 07:10:43
Muchas gracias Pafú.
Voy a echar un vistazo al box_tabname y veo como continuar.

jtristan
28/05/09, 10:03:43
Despues de investigar un poco el boxtabname que creia que era por donde iban los tiros me da que hemos confundido el tema.
No me refería al layout de un avl, sino, a la opción de poder añadir campos o quitar campos que se visualizan en un informe, y que también se llama layout.
¿Alguien sabe algún sitio donde pueda encontrar un ejemplo?

Muchas gracias.
Un saludo.

PabloGP
28/05/09, 14:02:22
Hola, con el parametro IS_LAYOUT podemos pasarle una tabla interna informando de la apariencia del report pero no te sirve para lo que tu quieres. Prueba esto:

FORM ALV.

PERFORM ASIGNAR_VARIANTE.
...
PERFORM LAYOUT.

*- Asignación del programa.
DATA G_REPID LIKE SY-REPID.
G_REPID = SY-REPID.

*- Función alv:
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PF_STATUS_SET = 'FIJA_STATUS'
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = CATALOGO
IS_LAYOUT = LAYOUT
I_SAVE = 'A'
IS_VARIANT = I_VARIANT
IT_SORT = I_SORT
IT_EVENTS = T_EVENTOS
I_DEFAULT = 'X'
* IMPORTING
* es_exit_caused_by_user = salida
TABLES
T_OUTTAB = TI_SALIDA
EXCEPTIONS
OTHERS = 1.

ENDFORM.


Tienes que definir los parametros: IS_VARIANT e I_SAVE.

IS_VARIANT
Determina la variante de display con la que se mostrará la tabla de salida del ALV. Se le pasará una estructura definida de tipo DISVARIANT.

DATA: I_VARIANT TYPE DISVARIANT.

FORM VARIANT_BUILD .
I_VARIANT-REPORT = SY-REPID.
I_VARIANT-USERNAME = SY-UNAME.
ENDFORM.

I_SAVE
Para editar la disposición del layout.
Posibles valores (‘A’, ‘U’, 'X‘)
Mejor usa ‘A’ que seleccionará todo tipo de layouts definidos para el programa, tanto estándares como específicos de usuario.