Académique Documents
Professionnel Documents
Culture Documents
*
* DESCRIPCIN: Tipos, variables, constantes y forms para trabajo
* con ALV's
*
* INSTRUCCIONES: Sera obligatorio para un correcto funcionamiento de la
* libreria aadir al codigo del report un form llamado USER_COMMAND
* creado con la estructura del existente comentado al final de este
* include.
*
* Adems ser obligatorio tambin aadir al codigo del report un form
* llamado LAYOUT creado con la estructura del existente comentado al
* final de este include.
*
* Si se cumple todo esto, simplemente habra que llamar al form
* ALV_MOSTRAR_INFORME pasandole como parametros la tabla a mostrar y el
* nombre de la estructura de dicha tabla, estructura que debera ser del
* diccionario de datos, no definida en el codigo del listado, ademas se
* le pasar una constante que podr tener dos valores.
*
- C_TIPO_ALV
<- Si queremos modo grid
*
- C_TIPO_LIST <- Si queremos modo listado
*
* Si se prefiere podr crearse el catalogo de campos manualmente
* rellenando la estructura GT_FIELDCAT aunque es la opcin menos
* recomendada, en este caso el parametro P_STRUCT de
* ALV_MOSTRAR_INFORME se pasar en blanco.
*
* Permite aadir lineas a la cabecera mediante el uso del form
* ALV_RELLENAR_CABECERA pasandole los textos y los tres modos de
* texto en la cabecera, a saber: (SOLO FUNCIONA EN MODO GRID)
*
- C_TIPO_GRANDE
*
- C_TIPO_MEDIANO
*
- C_TIPO_PEQUEO
*
* Ademas es posible mostrar un logo por pantalla, para ello es
* necesario usar el form ALV_ASIGNAR_LOGO pasandole el nombre del
* logo que previamente se habr creado siguiendo lo siguientes pasos:
* (SOLO FUNCIONA EN MODO GRID)
* PASOS PARA SUBIR LOGO:
*
*
1. Ir a la transccin OAER
*
*
2. En el nombre de clase, pon 'PICTURES'
*
*
3. El tipo de clase es 'OT'
*
*
4. En el "object key" introduce el nombre que le quieres dar al
*
logo.
*
*
5. Ejecuta
*
*
6. En la siguiente pantalla seleciona documento standard. Pincha
*
sobre el incono de pantalla y entonces te preguntar por el
*
nombre del fichero que vas a subir.
*
* La librera tambin permite aadir rutinas a los distintos eventos que
* el programador desee asignandole al nombre del evento el nombre de una
************************************************************************
* Definicin de constantes
************************************************************************
CONSTANTS: c_logo_alv(100) TYPE c VALUE 'ZLOGO_ARM_ALV',
"#EC *
c_click LIKE sy-ucomm VALUE '&IC1',
"#EC *
"Codigo del doble click
c_aceptar LIKE sy-ucomm VALUE '&ONT',
"#EC *
"Codigo del aceptar
c_struct(50)
TYPE c VALUE ,
c_pf_status_set
TYPE slis_formname VALUE 'ALV_SET_STATUS',
c_user_command
TYPE slis_formname VALUE 'USER_COMMAND',
"#EC *
c_layout
TYPE slis_formname VALUE 'ALV_LAYOUT',
"#EC *
c_xselp(5)
TYPE c VALUE 'XSELP',
"#EC *
c_marked
TYPE c VALUE 'X',
"#EC *
c_form_cabecera
TYPE slis_formname VALUE 'ALV_CABECERA',
"#EC *
c_tipo_grande TYPE c VALUE 'H',
"#EC *
c_tipo_mediano TYPE c VALUE 'S',
"#EC *
c_tipo_pequeno TYPE c VALUE 'A',
"#EC *
c_tipo_alv TYPE c VALUE '1',
"#EC *
c_tipo_list TYPE c VALUE '2'.
"#EC *
* Definicin de colores para listas.
CONSTANTS: c_color_azul(4)
VALUE 'C100',
"#EC *
c_color_blanco(4)
VALUE 'C200',
"#EC *
c_color_amarillo(4)
VALUE 'C300',
"#EC *
c_color_cyan(4)
VALUE 'C400',
"#EC *
c_color_verde(4)
VALUE 'C500',
"#EC *
c_color_rojo(4)
VALUE 'C600',
"#EC *
c_color_rojo_intens(4)
VALUE 'C610',
"#EC *
c_color_marron(4)
VALUE 'C700'.
"#EC *
************************************************************************
* Definicin de variables
************************************************************************
************************************************************************
* Definicin de estructuras
************************************************************************
DATA: x_structure TYPE dd02l-tabname. "SAP Table
"#EC *
DATA: x_header TYPE dd02l-tabname.
"SAP Table
"#EC *
DATA: x_item TYPE dd02l-tabname.
"SAP Table
"#EC *
DATA: gt_layout
TYPE slis_layout_alv.
"#EC *
DATA: gt_print
TYPE slis_print_alv.
DATA: gt_variant
TYPE disvariant.
"#EC *
"#EC *
DATA: gt_list_top_of_page TYPE slis_t_listheader.
"#EC *
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
"#EC *
DATA: gt_fieldcat_hd LIKE LINE OF gt_fieldcat.
"#EC *
DATA: gt_events TYPE slis_t_event
.
"#EC *
gt_grid_scroll
gt_marked_columns
gt_filtered_entries
gt_fieldcat_backend
TYPE
TYPE
TYPE
TYPE
*
*
*
*
*
*
*
*
*
*
*
lvc_s_scrl.
slis_t_fieldcat_alv.
slis_t_filtered_entries.
slis_t_fieldcat_alv.
************************************************************************
* Definicin de rango de seleccin
************************************************************************
************************************************************************
* Definicin de la pantalla de seleccin
************************************************************************
************************************************************************
* Definicin de FIELD-SYMBOLS
************************************************************************
************************************************************************
*
*
FORMS ADICIONALES
*
************************************************************************
*---------------------------------------------------------------------*
*
FORM alv_excluir_codigo
*
*---------------------------------------------------------------------*
*
Una vez que se lance el ALV con un STATUS cualquiera definido
*
por el usuario (o bien el standar) el codigo P_CODIGO ser
*
omitido, y por tanto no se dibujar el botn asociado a l.
*---------------------------------------------------------------------*
FORM alv_excluir_codigo
"#EC CALLED
USING p_codigo TYPE any.
DATA lt_okcodes_a_excluir TYPE slis_extab.
lt_okcodes_a_excluir-fcode = p_codigo.
APPEND lt_okcodes_a_excluir TO gt_okcodes_a_excluir.
SORT gt_okcodes_a_excluir.
DELETE ADJACENT DUPLICATES FROM gt_okcodes_a_excluir.
ENDFORM.
"alv_excluir_codigo
*&---------------------------------------------------------------------*
*&
Form alv_mostrar_informe
*&---------------------------------------------------------------------*
*
Se utilizar en el programa una vez que se haya rellenado todo
*
lo necesario para lanzar el listado de la tabla P_OUTPUT.
*
P_TIPO ser igual a C_TIPO_ALV si se quiere lanzar el ALV en
*
modo GRID en caso de preferirlo en modo lista se pasar este
*
parametro igual a C_TIPO_LIST.
*
P_STRUCT ser el nombre de una estructura del diccionario de
*
la que tomar la estructura de salida del listado. En caso de
*
pasarlo en blanco habr que haber creado con anterioridad un
*
catalogo de campos bien con el perform ALV_CATALOGO o bien
*
aadiendo directamente los campos al catalogo gt_fieldcat[].
*----------------------------------------------------------------------*
FORM alv_mostrar_informe
"#EC CALLED
TABLES p_output
USING p_struct TYPE any
p_tipo TYPE any.
DATA l_struct LIKE c_struct.
l_struct = p_struct.
* Damos forma al informe
* DATA l_dyn TYPE REF TO cx_sy_dyn_call_illegal_form.
* try.
PERFORM (c_layout) IN PROGRAM (sy-cprog) IF FOUND.
*
catch cx_sy_dyn_call_illegal_form into l_dyn.
* endtry.
"#EC NO_HANDLER
" alv_mostrar_informe
*&--------------------------------------------------------------------*
*&
Form alv_mostrar_informe_jerarquico
*&--------------------------------------------------------------------*
*
REDEFINIR CUANDO SE USE
*---------------------------------------------------------------------*
FORM alv_mostrar_informe_jerarquico
"#EC *
TABLES i_header
i_item
USING pt_header TYPE any
pt_item
TYPE any
pt_key
LIKE gt_key.
* Define local data
DATA: v_repid LIKE sy-repid.
v_repid = sy-repid.
x_header = pt_header.
x_item = pt_item.
DATA i_tabname_header TYPE slis_tabname.
DATA i_tabname_item TYPE slis_tabname.
i_tabname_header = pt_header.
i_tabname_item = pt_item.
* Damos forma al informe
* DATA l_dyn TYPE REF TO cx_sy_dyn_call_illegal_form.
* try.
PERFORM (c_layout) IN PROGRAM (sy-cprog) IF FOUND.
* catch cx_sy_dyn_call_illegal_form into l_dyn.
*
endtry.
IF gt_fieldcat[] IS INITIAL
AND NOT pt_header IS INITIAL
AND NOT pt_item IS INITIAL.
PERFORM alv_catalogo_jerarquico
USING
pt_header
pt_item.
ENDIF.
"#EC NO_HANDLER
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
ENDIF.
gd_mostrado = 'X'.
ENDFORM.
" alv_mostrar_informe_jerarquico
*&---------------------------------------------------------------------*
*&
Form alv_catalogo
*&---------------------------------------------------------------------*
*
Inicializa el catalogo de campos gt_fieldcat[] aadiendole
*
todos los campos de la estructura del diccionario P_ESTRUCTURA
*----------------------------------------------------------------------*
*
-->P_C_ESTRUCTURA_LISTADO text
*----------------------------------------------------------------------*
FORM alv_catalogo
"#EC CALLED
USING
p_estructura TYPE any.
*
WHERE
AND
AND
AND
tabname
ddlanguage
as4local
fieldname
=
=
=
=
l_estructura
sy-langu
'A'
gt_fieldcat_hd-fieldname.
gt_fieldcat_hd-seltext_m = gt_fieldcat_hd-seltext_l.
gt_fieldcat_hd-seltext_s = gt_fieldcat_hd-seltext_l.
MODIFY gt_fieldcat FROM gt_fieldcat_hd.
ENDLOOP.
gt_fieldcat_hd-tabname = p_estructura.
MODIFY gt_fieldcat FROM gt_fieldcat_hd TRANSPORTING tabname
WHERE NOT fieldname IS INITIAL.
gt_fieldcat_hd-ctabname = p_estructura.
MODIFY gt_fieldcat FROM gt_fieldcat_hd TRANSPORTING ctabname
WHERE NOT cfieldname IS INITIAL.
ENDFORM.
" alv_catalogo
*&---------------------------------------------------------------------*
*&
Form alv_catalogo_jerarquico
*&---------------------------------------------------------------------*
*
Inicializa el catalogo de campos gt_fieldcat[] aadiendole
*
todos los campos de la estructura del diccionario P_HEADER
*
y P_ITEM
*----------------------------------------------------------------------*
*
-->P_C_ESTRUCTURA_LISTADO text
*----------------------------------------------------------------------*
FORM alv_catalogo_jerarquico
"#EC CALLED
USING
pt_header TYPE any
pt_item
TYPE any.
DATA lt_fieldcat LIKE gt_fieldcat.
PERFORM alv_catalogo
USING
pt_item.
lt_fieldcat[] = gt_fieldcat[].
PERFORM alv_catalogo
USING
pt_header.
LOOP AT lt_fieldcat INTO gt_fieldcat_hd.
APPEND gt_fieldcat_hd TO gt_fieldcat.
ENDLOOP.
ENDFORM.
" alv_catalogo_jerarquico
*&---------------------------------------------------------------------*
*&
Form alv_set_status
*&---------------------------------------------------------------------*
*
Inicializa el status
*----------------------------------------------------------------------*
FORM alv_set_status
"#EC CALLED
"#EC *
" alv_set_status
*&---------------------------------------------------------------------*
*&
Form alv_show_report
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM alv_show_report
"#EC CALLED
TABLES p_output
USING p_struct LIKE c_struct
p_tipo TYPE any.
* Define local data
DATA: v_repid LIKE sy-repid.
DATA l_form_cabecera LIKE c_form_cabecera.
v_repid = sy-repid.
x_structure = p_struct.
* Check that our selection retrieves any result
IF p_output[] IS INITIAL.
*
MESSAGE i666(01) WITH 'No se mostrara la tabla porque esta vacia'.
*
"#EC NOTEXT
MESSAGE i128(hi).
ELSE.
IF NOT p_struct IS INITIAL.
PERFORM alv_catalogo USING p_struct.
ENDIF.
IF NOT gt_layout-box_fieldname IS INITIAL.
DELETE gt_fieldcat WHERE fieldname = gt_layout-box_fieldname.
ENDIF.
IF NOT d_alv_status IS INITIAL
t_outtab
= p_output.
ENDCASE.
ENDIF.
ENDFORM.
" alv_show_report
*---------------------------------------------------------------------*
*
FORM ALV_ANIADIR_STATUS
*
*---------------------------------------------------------------------*
*
........
*
*---------------------------------------------------------------------*
* --> P_STATUS
*
*---------------------------------------------------------------------*
FORM alv_aniadir_status
"#EC CALLED
USING p_status TYPE any.
d_alv_status = p_status.
ENDFORM.
"alv_aniadir_status
*&---------------------------------------------------------------------*
*&
Form alv_cabecera
*&---------------------------------------------------------------------*
*
MUESTRA LA CABECERA
*----------------------------------------------------------------------*
FORM alv_cabecera.
"#EC CALLED
IF NOT gt_list_top_of_page IS INITIAL
OR NOT d_logo IS INITIAL.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page
i_logo
= d_logo
i_end_of_list_grid = .
ENDIF.
ENDFORM.
" alv_cabecera
*&---------------------------------------------------------------------*
*&
Form alv_rellenar_eventos
*&---------------------------------------------------------------------*
*
ASIGNA UN FORM A UN EVENTO A EJECUTAR
*----------------------------------------------------------------------*
* --> NOMBRE DEL EVENTO
* --> NOMBRE DEL FORM PARA DICHO EVENTO
*----------------------------------------------------------------------*
FORM alv_rellenar_eventos
"#EC CALLED
USING p_nombre_evento TYPE any
p_form_para_evento TYPE any.
DATA: ls_event TYPE slis_alv_event.
CASE p_nombre_evento.
WHEN 'HTML_TOP_OF_PAGE'.
gd_html_top_of_page = p_form_para_evento.
WHEN 'HTML_END_OF_LIST'.
gd_html_end_of_list = p_form_para_evento.
WHEN OTHERS.
IF gt_events[] IS INITIAL.
PERFORM alv_events.
ENDIF.
* Rutina que controlar el status GUI
READ TABLE gt_events WITH KEY name = p_nombre_evento
INTO ls_event.
IF sy-subrc = 0.
IF ls_event-form IS INITIAL.
MOVE p_form_para_evento TO ls_event-form.
MODIFY gt_events FROM ls_event TRANSPORTING form
WHERE name = p_nombre_evento.
ENDIF.
ELSE.
MESSAGE e403(63) WITH p_nombre_evento
'- Form: ALV_RELLENAR_EVENTOS'."#EC NOTEXT
ENDIF.
ENDCASE.
ENDFORM.
" alv_rellenar_eventos
*&---------------------------------------------------------------------*
*&
Form ALV_RELLENAR_CABECERA
*&---------------------------------------------------------------------*
*
Rellena una linea de la cabecera
*----------------------------------------------------------------------*
*
-->P_GT_LIST_TOP_OF_PAGE text
*----------------------------------------------------------------------*
FORM alv_rellenar_cabecera
"#EC CALLED
USING p_texto_negrita TYPE any
p_texto_normal TYPE any
p_tipo TYPE any.
DATA: ls_line TYPE slis_listheader.
CLEAR:ls_line.
ls_line-key = p_texto_negrita.
ls_line-typ = p_tipo.
ls_line-info = p_texto_normal.
APPEND ls_line TO gt_list_top_of_page.
ENDFORM.
" ALV_RELLENAR_CABECERA
*---------------------------------------------------------------------*
*
FORM alv_asignar_logo
*
*---------------------------------------------------------------------*
*
Rellena el logo que queremos que se muestre por pantalla
*
*---------------------------------------------------------------------*
* --> P_LOGO
Logo a cargar
*
*---------------------------------------------------------------------*
FORM alv_asignar_logo
"#EC CALLED
USING p_logo.
d_logo = p_logo.
ENDFORM.
" alv_asignar_logo
"#EC *
"#EC *
"#EC *
*&---------------------------------------------------------------------*
*&
Form alv_events
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM alv_events.
"#EC CALLED
DATA: ls_event TYPE slis_alv_event. REFRESH gt_events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events
= gt_events.
* Se aade el evento DATA_CHANGED que no incluye la funcin
ls_event-name = 'DATA_CHANGED'.
APPEND ls_event TO gt_events.
ENDFORM.
" alv_alv_events
**&--------------------------------------------------------------------**
**&
Form alv_layout
**&--------------------------------------------------------------------**
**
ESTE FORM DEBE SER CREADO EN EL CODIGO DEL LISTADO CON UNA
**
ESTRUCTURA PARECIDA A ESTA:
**---------------------------------------------------------------------**
** --> p1
text
** <-- p2
text
**---------------------------------------------------------------------**
*FORM alv_layout.
* CLEAR gt_layout.
* gt_layout-no_colhead
* gt_layout-no_hotspot
*
* gt_layout-zebra
* gt_layout-no_vline
* gt_layout-cell_merge
* gt_layout-edit
* gt_layout-edit_mode
grid)
* gt_layout-numc_sum
*
* gt_layout-no_input
* gt_layout-f2code
* gt_layout-reprep
* gt_layout-no_keyfix
* gt_layout-expand_all
* gt_layout-no_author
* gt_layout-def_status
= c_marked.
= c_marked
.
= c_marked.
= c_marked.
= c_marked.
= c_marked.
= '?'.
"
"
"
"
"
"
"
= c_marked
"
"
"
"
"
"
"
"
"
Permitir totalizacin en
campos NUMC
No permitir entrada
?
report report interface active
No rellenar columnas clave
Expandir todas las posiciones
No standard authority check
Texto para el boton ITEM
=
=
=
=
=
=
=
.
c_marked.
'?'.
c_marked.
c_marked.
c_marked.
c_marked.
'20 char'.
** Opciones de visualizacin
* gt_layout-colwidth_optimize = c_marked. " Optimizar ancho-columna
* gt_layout-no_min_linesize = c_marked. " linesize = ancho de lista
* gt_layout-min_linesize = 80.
" Tamao minimo de listado
* gt_layout-max_linesize = 250.
" Tamao mximo de listado
* gt_layout-window_titlebar = sy-title.
" Titulo en la barra de
*titulo
* gt_layout-no_uline_hs = c_marked.
" No subrayar la cabecera
** Excepciones
* gt_layout-lights_fieldname = 'Nombrecampo' " Nombre de campo para
*
. " excepcion
* gt_layout-lights_tabname = 'Nombretabla'
" Nombre de tabla para
*
. " excepcion
* gt_layout-lights_rollname = 'Elementodatos' " Nombre de elemento de
*
. " datos para excepcin
* gt_layout-lights_condense = c_marked.
" ??
** Totales
* gt_layout-no_sumchoice = c_marked.
" No permitir volver a sumar
* gt_layout-no_totalline = c_marked.
" Sin linea de totalizacin
* gt_layout-no_subchoice = c_marked
" No permitir volvera a
*
. " subtotalizar
* gt_layout-no_subtotals = c_marked.
" No permitir subtotales
* gt_layout-no_unit_splitting = c_marked
" No separar totalizaciones
*
. " para monedas diferentes
* gt_layout-totals_before_items = c_marked " Mostrar totales tras las
*
." posiciones
* gt_layout-totals_only = c_marked.
" Solo mostrar totales
* gt_layout-totals_text = '60 char'.
" Texto para linea de
*totales
* gt_layout-subtotals_text = '60 char'
" Texto para linea de
*
.
" subtotales
** Interaccin
* gt_layout-box_fieldname = 'Nombrecampo'
" Nombre de campo para
*
.
" checkbox
* gt_layout-box_tabname = 'Nombretabla'
" Nombre de tabla para
*
.
" checkbox
* gt_layout-box_rollname = 'Elementodatos'
" Nombre de elemento de
*
.
" datos para checkbox
* gt_layout-expand_fieldname = 'Nombrecampo' " Nombre de campo para
*
.
" flag expand
* gt_layout-hotspot_fieldname = 'Nombrecampo'" Nombre de campo para
*
.
" click
* gt_layout-confirmation_prompt = c_marked
" Pedir confirmacin al
*
. " salir
* gt_layout-key_hotspot = c_marked.
" Campos clave para click
* gt_layout-flexible_key = c_marked
" Permitir mover campos
*
.
" clave
* gt_layout-group_buttons = c_marked.
" Botones para COL1 - COL5
* gt_layout-get_selinfos = c_marked.
" Leer selection screen
* gt_layout-group_change_edit = c_marked
" Opciones por usuario
*
. " para nuevo grupo
* gt_layout-no_scrolling = c_marked.
" no scrolling
** Pantalla de detalle de linea
* gt_layout-detail_popup = c_marked
" Pantalla detalles en
*
.
" popup
* gt_layout-detail_initial_lines = c_marked " Mostrar tambin lineas
*
. " en blanco
*
*
**
*
*
*
**
*
*
**
*
*
*
*
*
*
*
*
gt_layout-detail_titlebar = sy-title
.
Mostrar variantes
gt_layout-header_text = '20 Char'
*ENDFORM.
" alv_layout
**&--------------------------------------------------------------------**
**&
Form user_command
**&--------------------------------------------------------------------**
**
ESTE FORM DEBE SER CREADO EN EL CODIGO DEL LISTADO CON UNA
**
ESTRUCTURA PARECIDA A ESTA:
**---------------------------------------------------------------------**
** --> p_UCOMM
COMANDO
** <-- p_CAMPO
CAMPO EXACTO DONDE SE GENERO EL COMANDO
**---------------------------------------------------------------------**
* FORM user_command USING p_ucomm LIKE sy-ucomm
"#EC CALLED
*
p_campo TYPE slis_selfield.
*
** Leemos la linea en la que se lanzo el comando
** MODIFICAR LA TABLA I_OUTPUT POR EL NOMBRE DE LA TABLA A MOSTRAR
*
READ TABLE i_output INDEX p_campo-tabindex.
** Comprobamos cual es el codigo .
*
CASE p_ucomm.
** Si se hizo doble click
*
WHEN c_click.
**Dependiendo de la
*
CASE p_campo-fieldname.
*
WHEN 'NOMBRE_CAMPO1' .
** Codigo para el campo 1
*
WHEN 'NOMBRE_CAMPO2'.
** Codigo para el campo 2
** AADIR TODOS LOS CAMPOS PARA LOS QUE SE QUIERA HACER ALGO
*
WHEN OTHERS.
*
ENDCASE.
** AADIR TODOS LOS CASOS DE COMMAND QUE EXISTA
*
WHEN OTHERS.
*
ENDCASE.
*
*
*
*
*
*
*&---------------------------------------------------------------------*
*&
Form alv_recoger_layout_info
*&---------------------------------------------------------------------*
*
Es recomendable llamar a esta funcin desde el USER_COMMAND para
*
en el caso de que se actualice la lista se respeten todas las
*
condiciones
*----------------------------------------------------------------------*
FORM alv_recoger_layout_info .
*
*
*
*
ENDFORM.
" alv_recoger_layout_info
*&---------------------------------------------------------------------*
*&
Form alv_escribir_layout_info
*&---------------------------------------------------------------------*
FORM alv_escribir_layout_info .
STATICS
STATICS
STATICS
STATICS
STATICS
STATICS
lt_filter
lt_layout
lt_sort
lt_fieldcat
lt_print
lt_grid_scroll
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
gt_filter.
gt_layout.
gt_sort.
gt_fieldcat.
gt_print.
gt_grid_scroll.
NOT
NOT
NOT
NOT
NOT
lt_filter[]
lt_grid_scroll
lt_sort[]
lt_layout
lt_print
=
=
=
=
=
gt_filter[]
gt_grid_scroll
gt_sort[]
gt_layout
gt_print.
" alv_escribir_layout_info