Datos personales

Mi foto
Soy programador/analista. Mis fuertes es el mundo de sap(como abaper), programador php con gran experiencia en el mundo Wordpress y Joomla.

lunes, 11 de agosto de 2008

Reportes ALV

Reportes ALV

Hay que declarar este type siempre:

TYPE-POOLS: slis. "(es necesario para usar ALV)

Hay 3 tipos de ALV:
· List (forma de lista)
· Grid (similar lista pero visualmente mas amigable)
· Hierseq (jerárquico, agrupado).

El formato del ALV queda a cargo de una tabla y un registro llamados:
· Fieldcat (tabla, con un registro por cada campo)
· Layout (registro que maneja la estética del conjunto de campos)

A su vez la fieldcat se puede llenar de 2 formas:
· Manual (especificando registro a registro que campos queremos que nos muestre el ALV)
· Por medio de la función REUSE_ALV_FIELDCATALOG_MERGE (Si se desea mostrar la tabla completa, así y todo la fieldcat posee un campo llamado NO_OUT que me permite ocultar ese campo y que no se vea)

Si es cargada mediante la función la field_cat NO debe tener header (cabecera)

EJEMPLOS:

Por ser idénticas en llamado el ALV-List y el ALV-grid. Solo se dará ejemplos del grid

ALV-Grid con fieldcat a mano:

TABLES: usr21, adrp, adr6.

DATA: BEGIN OF ti_tabla OCCURS 0,
bname LIKE usr21-bname,
persnumber LIKE usr21-persnumber,
addrnumber LIKE usr21-addrnumber,
name_first LIKE adrp-name_first,
name_last LIKE adrp-name_last,
smtp_addr LIKE adr6-smtp_addr,
smtp_srch LIKE adr6-smtp_srch,
END OF ti_tabla.

TYPE-POOLS: slis.

DATA: wa_layout TYPE slis_layout_alv.

DATA: ti_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

START-OF-SELECTION.

PERFORM carga.
PERFORM armadosalida.
PERFORM salida.


*&---------------------------------------------------------------------*
*& Form carga
*&--------------------------------------------------------------------

FORM carga .

SELECT a~bname a~persnumber a~addrnumber b~name_first b~name_last
c~smtp_addr c~smtp_srch
FROM usr21 AS a INNER JOIN adrp AS b ON a~persnumber EQ b~persnumber
INNER JOIN adr6 AS c
ON b~persnumber EQ c~persnumber
INTO TABLE ti_tabla.

ENDFORM. " carga





*&---------------------------------------------------------------------*
*& Form armadosalida
*&--------------------------------------------------------------------

FORM armadosalida .

CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'BNAME'.
ti_fieldcat-tabname = 'TI_TABLA'.
ti_fieldcat-seltext_l = 'NOMBRE CLAVE'.
APPEND ti_fieldcat.

CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'PERSNUMBER'.
ti_fieldcat-tabname = 'TI_TABLA'.
ti_fieldcat-seltext_l = 'NUMERO DE PERSONA'.
APPEND ti_fieldcat.

CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'ADDRNUMBER'.
ti_fieldcat-tabname = 'TI_TABLA'.
ti_fieldcat-seltext_l = 'DIRECCION'.
APPEND ti_fieldcat.

CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'NAME_FIRST'.
ti_fieldcat-tabname = 'TI_TABLA'.
ti_fieldcat-seltext_l = 'NOMBRE'.
APPEND ti_fieldcat.

CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'NAME_LAST'.
ti_fieldcat-tabname = 'TI_TABLA'.
ti_fieldcat-seltext_l = 'APELLIDO'.
APPEND ti_fieldcat.

CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'SMTP_ADDR'.
ti_fieldcat-tabname = 'TI_TABLA'.
ti_fieldcat-seltext_l = 'DIRECCION ELECTRONICA'.
APPEND ti_fieldcat.

CLEAR ti_fieldcat.
ti_fieldcat-fieldname = 'SMTP_SRCH'.
ti_fieldcat-tabname = 'TI_TABLA'.
ti_fieldcat-seltext_l = 'ALGO ELECTRONICO'.
APPEND ti_fieldcat.

ENDFORM. " armadosalida

*&---------------------------------------------------------------------*
*& Form salida
*&--------------------------------------------------------------------
FORM salida .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* i_callback_program = c_repid
* i_callback_pf_status_set = 'PF_STATUS'
* i_callback_user_command = 'USER_COMMAND'
* i_structure_name = 'TI_ALV'
* is_layout = wa_layout
it_fieldcat = ti_fieldcat[]
* i_save = 'A'
TABLES
t_outtab = ti_tabla
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc NE 0.
MESSAGE i398(00) WITH 'fallo la funcion'.
ENDIF.
ENDFORM. " salida

No hay comentarios:

 
Free counter and web stats