PDA

Ver la Versión Completa : Consulta sobre ALV List


danieldl
19/05/06, 14:22:23
Si quisiera ver en pantalla un ALV LIST com encabezados y logos la funcion REUSE_ALV_LIST_DISPLAY lo mostraria?

desde ya gracias

Juan Jo
19/05/06, 15:37:04
Hola !!

Yo tengo un problema critico, entrando al foro veo que existe este tema relacionado con ALV, les cuento...
En la transaccion VB(8 Lista de acuerdos, deseo inlcuir mas campos en la lista de visualizacion, como debo hacerlo?
Gracias anticipadas..
Juan Jo

bono
19/05/06, 16:24:13
REPORT ZPLANTILLA_ALV.


* Tabla interna donde almacenar info Base Datos
data: begin of it_datos occurs 0,
<...>
end of it_datos.

* Tabla interna donde almacenar info a mostrar mediante ALV
DATA: BEGIN OF it_list OCCURS 0,
sel, "campo de selección
<...>
end of it_list.

* Objetos para ALV
TYPE-POOLS: slis, "necesario para ALV
icon. "sólo si se utilizan iconos

DATA: repid LIKE sy-repid.
* Obligatorio, estructuras para ALV grid
DATA: s_layout TYPE slis_layout_alv,
fieldcat TYPE slis_t_fieldcat_alv,
tab_sort TYPE slis_t_sortinfo_alv,
gt_list_top_of_page TYPE slis_t_listheader.

* Criterios de selección
SELECTION-SCREEN BEGIN of block b1 with frame title text-001.
PARAMETERS: p_em LIKE zdat_sgaa_zmigo-carta_porte.
SELECTION-SCREEN END of block b1.


INITIALIZATION.
repid = sy-repid.

START-OF-SELECTION.
PERFORM cargar_datos.

IF it_datos[] IS INITIAL.
MESSAGE s899(v1) WITH 'No se han seleccionado registros'.
EXIT.
ELSE.
PERFORM visualizar_info.
ENDIF.



*&---------------------------------------------------------------------*
*& Form visualizar_info
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM visualizar_info.

* Generación tabla it_tabla a partir de los datos obtenidos en la tabla
* it_datos.
PERFORM construir_tabla.
* Parámetros ALV
PERFORM parametros_alv.
* Construcción del catálogo de campos
PERFORM field_catalog_build TABLES fieldcat.
* Tabla de orden de salida (opcional)
PERFORM sorttab_build TABLES tab_sort.
* Cabecera
PERFORM comment_build USING gt_list_top_of_page[].
* MOSTRAR ALV
PERFORM mostrar_alv.
ENDFORM. " visualizar_info
*&---------------------------------------------------------------------*
*& Form parametros_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM parametros_alv.
s_layout-box_fieldname = 'SEL'. "campo de selección de it_list
s_layout-colwidth_optimize = ''.
s_layout-zebra = 'X'.
s_layout-f2code = 'DISPLAY'.
ENDFORM. " parametros_alv
*&---------------------------------------------------------------------*
*& Form field_catalog_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FIELDCAT text
*----------------------------------------------------------------------*
FORM field_catalog_build TABLES p_fieldcat TYPE slis_t_fieldcat_alv.
DATA inclname LIKE trdir-name.
DATA v_text(50).

MOVE repid TO inclname.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = repid
i_internal_tabname = 'IT_LIST'
i_inclname = inclname
CHANGING
ct_fieldcat = p_fieldcat[].

LOOP AT p_fieldcat.

p_fieldcat-key = ''. "los campos clave aparecen los primeros

CASE p_fieldcat-fieldname.
WHEN 'SEL'.
* No mostrar ni dejar incluir campo
p_fieldcat-no_out = 'X'.
p_fieldcat-tech = 'X'.
WHEN 'ERR_1'. "Cambio labels
p_fieldcat-seltext_s =
p_fieldcat-seltext_m =
p_fieldcat-seltext_l =
p_fieldcat-reptext_ddic = 'No existe en tabla AA'.
p_fieldcat-checkbox = 'X'. "Mostrar como checkbox
ENDCASE.

MODIFY p_fieldcat.

ENDLOOP.

ENDFORM. " field_catalog_build

*---------------------------------------------------------------------*
* FORM sorttab_build *
*---------------------------------------------------------------------*
FORM sorttab_build TABLES tx_sort TYPE slis_t_sortinfo_alv.
CLEAR tx_sort. REFRESH tx_sort.
ENDFORM.

*---------------------------------------------------------------------*
* FORM comment_build *
*---------------------------------------------------------------------*
FORM comment_build USING lt_top_of_page TYPE slis_t_listheader.

DATA ls_line TYPE slis_listheader.
DATA mes(50).

CLEAR lt_top_of_page. REFRESH lt_top_of_page.

* LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.

* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = sy-title.
APPEND ls_line TO lt_top_of_page.

* STATUS LINE: TYPE S
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Nombre:'.
ls_line-info = sy-uname.
APPEND ls_line TO lt_top_of_page.
ls_line-key = 'Fecha:'.
WRITE sy-datum TO ls_line-info.
APPEND ls_line TO lt_top_of_page.
ls_line-key = 'Centro:'.
CONCATENATE s_werks-low '-' s_werks-high INTO ls_line-info
SEPARATED BY space.
APPEND ls_line TO lt_top_of_page.
ls_line-key = 'Almacén:'.
CONCATENATE s_lgort-low '-' s_lgort-high INTO ls_line-info
SEPARATED BY space.
APPEND ls_line TO lt_top_of_page.

* ACTION LINE: TYPE A
CLEAR ls_line.
ls_line-typ = 'A'.

* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = sy-cprog.
APPEND ls_line TO lt_top_of_page.

ENDFORM.

*---------------------------------------------------------------------*
* FORM mostrar_alv *
*---------------------------------------------------------------------*
FORM mostrar_alv.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repid
i_callback_top_of_page = 'TOP_OF_PAGE'
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'USER_COMMAND'
is_layout = s_layout
it_fieldcat = fieldcat
it_sort = tab_sort
i_save = 'A'
TABLES
t_outtab = it_list
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM.

*---------------------------------------------------------------------*
* FORM pf_status_set *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM pf_status_set USING gt_extab TYPE slis_t_extab.

SET TITLEBAR 'ALV' WITH sy-title.
SET PF-STATUS 'ALV'.

ENDFORM.


*---------------------------------------------------------------------*
* FORM top_of_page *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM top_of_page.

* Para mostrar un logo en la cabecera hay que crearlo en:
* Transacción OAOR
* Oficina -> Documentos comerciales ->
* Documentos -> Buscar (nombre de clase: Pictures, tipo de clase: OT)

* Es un transacción un poco complicada de utlizar pero desde ahí
* se carga el logo como el del ejemplo ZLOGO_CALIER

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
* i_logo = 'ZLOGO_CALIER'
it_list_commentary = gt_list_top_of_page.

WRITE: 'Pág.:', sy-pagno LEFT-JUSTIFIED.

ENDFORM. " top_of_page

FORM user_command USING f_ucomm LIKE sy-ucomm
i_selfield TYPE slis_selfield.

* READ TABLE it_list INDEX i_selfield-tabindex.
*
* CLEAR: v_okcode, v_refresh.
*
* MOVE f_ucomm TO v_ucomm.
*
* CASE f_ucomm.
* WHEN 'ZDEL'.
* CALL SCREEN 2 STARTING AT 45 2.
* IF NOT v_refresh IS INITIAL.
* PERFORM get_data.
* PERFORM construir_lista. "Actualizar info ALV
* i_selfield-refresh = 'X'.
* ENDIF.
* WHEN 'DISPLAY'.
* CASE i_selfield-fieldname.
* WHEN 'EBELN'.
* PERFORM visualizar_doc USING it_list-ebeln '00000'.
* WHEN 'EBELP'.
* PERFORM visualizar_doc USING it_list-ebeln it_list-ebelp.
* WHEN 'MATNR'.
* SET PARAMETER ID 'MAT' FIELD it_list-matnr.
* CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
* ENDCASE.
* ENDCASE.

* Si queremos salir a la pantalla de selección, podemos llenar f_ucomm
* con el código asignado a BACK (&F03 si copias el status
* STANDARD_FULLSCREEN del programa SAPLSLVC_FULLSCREEN)

* f_ucomm = '&F03'.

ENDFORM.


*&---------------------------------------------------------------------*
*& Form construir_tabla
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM construir_tabla.
LOOP AT it_datos.
CLEAR it_list.
MOVE-CORRESPONDING it_datos TO it_list.
APPEND it_list.
ENDLOOP.
ENDFORM.

form cargar_datos.
* Llenar tabla it_datos con SQL a BBDD
endform.

danieldl
19/05/06, 20:06:40
Compañeros del foro necesito a ver quien me puede pasar algun pgm ejemplo de ALVList sencillo pero completo y si es posible explicado en cada sentencia, además , el ALV list que veo en pantalla si le quiero pasar titulos y logo como saldria en papel tambien lo veria?
Espero vuestra respuesta, desde ya gracias.

Marco
19/05/06, 22:49:58
Hola,
El ejemplo q han enviado esta bien... utilizalo como plantilla.
En descargas tambien hay varios ejemplos explicados (cheka ahi). ;)

Sobre los titulos, al momento de cargar las columnas del ALV eso lo pondra automatico segun el campo de tabla q le des en la opcion ref_fieldname en tu llenado de ALV, y si no te gusta ese titulo, tu puedes declar un Elemento de Texto y ahi poner el titulo, luego en el campo seltext_l.

Espero que te ayude en algo.
Saludos, :D

chamoe
24/05/06, 12:03:57
El problema de este ejemplo es que el top_of_page es bastante limitado, me refiero que el logo no te deja ponerlo donde tu quieres, me parece que lo pone en la izquierda.

Yo me encontré con este problema, necesitaban un listado y queria que apareciese el logo, un titulo con letras mas grandes, etc...
No se si se puede hacer con alv, yo acabé haciendo un smartform, al fin y al cabo se le pasa la misma tabla interna.


espero que te sirva

chamoe
24/05/06, 12:05:59
Si quisiera ver en pantalla un ALV LIST com encabezados y logos la funcion REUSE_ALV_LIST_DISPLAY lo mostraria?

desde ya gracias
Con el rollo que he soltado, y no te he contestado la pregunta,

No lo muestra, se muestra con el grid, y com he dicho antes, es limitado

Ariamxp
14/08/08, 22:16:35
no logro que me funcione ese codigo, me da un error en (zdat_sgaa_zmigo-carta_porte) yo creo que es por las tablas internas que debo declarar al principio. que nombre deberia DARLES A ESAS TABLAS???
:confused: :confused: :confused: :confused:

cubanito
18/08/08, 22:40:09
Hola...
Todo lo que quieres hacer lo puedes lograr con objetos. No es sencillo, pero es posible. Puedes poner tantos "logos" como quieras y tantos "ALV's" como quepan en tu pantalla...
Si quieres te puedo enviar toda una serie de programas como ejemplo o puedes darte una vueltecita por las siguientes transacciones que están llenas de ejemplos sobre lo que te interesa y mil cosas mas:
La SE83, la DWDM y, por supuesto, la transacción ABAPDOCU.

Saludos!!! :)