Reporte ALV 1
Reportes ALV : Reporte SAP interactivo utilizando funciones estandard . A continuación mostramos un ejemplo :
*----------------------------------------------------------------------*
* PROGRAMA : ZMM_RE_ALV_LISTCLI *
* AUTOR : DE PIERO,GASTON *
* CREADO : 24/08/2006 *
* REQ# : *
* Clase Desa : ZM00 *
* Auth Grp : *
* Clase Mess : *
* Transaccion : *
* Description : *
*----------------------------------------------------------------------*
REPORT ZMM_RE_ALV_LISTCLI .
INCLUDE ZMM_RE_ALV_LIST_CLI_VAR.
INCLUDE ZMM_RE_ALV_LIST_CLI_FOR.
START-OF-SELECTION.
*Seleccion de Datos
PERFORM SELECT.
*Formato de envio
PERFORM init_fieldcat.
*Layout
PERFORM init_layout.
*Llamado ALV
PERFORM FUN_ALV.
*----------------------------------------------------------------------*
* INCLUDE ZMM_RE_ALV_LIST_CLI_VAR *
*----------------------------------------------------------------------*
TYPE-POOLS: slis.
data : ncli like lfa1-lifnr.
TYPES : BEGIN OF ty_ALV,
lifnr type lfa1-lifnr,
name1 type lfa1-name1,
stras type lfa1-stras,
ort01 type lfa1-ort01,
regio type lfa1-regio,
stcdt type lfa1-stcdt,
text30 type j_1atodct-text30,
stcd1 type lfa1-stcd1,
text60 type j_1afitpvt-text60,
fdgrv type lfb1-fdgrv,
bukrs type lfb1-fdgrv,
fityp type lfa1-fityp,
land1 type t005s-land1,
END OF ty_ALV.
data: v_repid LIKE sy-repid.
data : indice type sy-tabix.
* Definicion del Catalogo
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
gt_eventos TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader,
gt_list_top_of_page_det TYPE slis_t_listheader.
* Definicion del Layout
DATA: wa_layout TYPE slis_layout_alv,
ti_dato type STANDARD TABLE OF ty_alv,
wa_dato type ty_alv.
*****************INGRESO DE DATOS***************************
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-TIT.
*Ingreso de cliente
SELECT-OPTIONS: so_cli FOR ncli." OBLIGATORY. "BSTYP
*Ingreso de sociedad
PARAMETERS: pa_soc like lfb1-bukrs OBLIGATORY.
SELECTION-SCREEN END OF BLOCK a1.
************************************************************
*----------------------------------------------------------------------*
* INCLUDE ZMM_RE_ALV_LIST_CLI_FOR *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT.
clear ti_dato.
clear wa_dato.
*SELECCION
SELECT lfb1~lifnr bukrs fdgrv name1 stras ort01
land1 stcdt stcd1 fityp
from LFA1 inner join LFB1 on LFA1~lifnr = LFB1~lifnr
into corresponding fields OF TABLE ti_dato
where
lfb1~lifnr in so_cli and
bukrs = pa_soc.
*Textos
Loop at ti_dato into wa_dato.
*Select p indice
read table ti_dato into wa_dato with key lifnr = wa_dato-lifnr.
indice = sy-tabix.
*Select al tipo
select single text30 from j_1atodct into wa_dato-text30 where
spras = 'S' and J_1ATODC = wa_dato-stcdt .
*Select al cuit
select single text60 from j_1afitpvt into wa_dato-text60 where
spras = 'S' and J_1AFITP = wa_dato-fityp .
**Select al pais
* select single land1 from t005s into wa_dato-land1 where
* bland = wa_dato-regio.
MODIFY ti_dato FROM wa_dato INDEX indice.
endloop.
ENDFORM. " SELECT
****************************************************************
*FORMULARIOS****************************************************
****************************************************************
FORM FUN_ALV.
v_repid = sy-repid.
*LLAMADA A FUNCION ALV
*Cargando Cabecera de ALV
PERFORM cabecera USING gt_list_top_of_page[].
*Cargando Eventos
PERFORM eventtab_build USING gt_eventos[].
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = v_repid
* I_GRID_TITLE = 'Listado Clientes'
IS_LAYOUT = wa_layout
IT_FIELDCAT = gt_fieldcat[]
it_events = gt_eventos[]
TABLES
t_outtab = ti_dato.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form init_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_fieldcat.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
wa_fieldcat-fieldname = 'LIFNR'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Nro. Prov'.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-just = 'L'.
wa_fieldcat-fix_column = 'X'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'BUKRS'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Sociedad'.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Nombre'.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-fix_column = 'X'.
wa_fieldcat-outputlen = 30.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'STRAS'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Calle y Nro.'.
wa_fieldcat-fix_column = 'X'.
wa_fieldcat-col_pos = '4'.
wa_fieldcat-outputlen = 30.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'ORT01'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Localidad'.
wa_fieldcat-outputlen = 20.
wa_fieldcat-col_pos = '5'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'LAND1'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Pais'.
wa_fieldcat-col_pos = '6'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'STCDT'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Tipo NIF'.
wa_fieldcat-outputlen = 7.
wa_fieldcat-col_pos = '7'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'TEXT30'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Id.Fisc'.
wa_fieldcat-col_pos = '8'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'STCD1'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Numero'.
wa_fieldcat-outputlen = 13.
wa_fieldcat-col_pos = '9'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'FITYP'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Tip.Imp.'.
wa_fieldcat-outputlen = 7.
wa_fieldcat-col_pos = '10'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'TEXT60'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-outputlen = 25.
wa_fieldcat-seltext_m = 'Desc.Imp'.
wa_fieldcat-col_pos = '11'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'FDGRV'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Gr. Tesor.'.
wa_fieldcat-outputlen = 17.
wa_fieldcat-col_pos = '12'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
ENDFORM. " init_fieldcat
*&---------------------------------------------------------------------*
*& Form init_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_layout.
wa_layout-zebra = 'X'.
ENDFORM. " init_layout
*****************
*Cabecera del ALV
FORM cabecera USING lt_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
*
* LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Listado de Proveedores'.
APPEND ls_line TO lt_top_of_page.
* ACTION LINE: TYPE A
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Sociedad: '.
ls_line-info = pa_soc.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ENDFORM. "COMMENT_BUILD
**********************
*Cargando los eventos
*&---------------------------------------------------------------------*
*& Form eventtab_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EVENTS[] text
*----------------------------------------------------------------------*
FORM eventtab_build USING rt_events TYPE slis_t_event.
*"Registration of events to happen during list display
DATA: ls_event TYPE slis_alv_event.
* DATA: w_index LIKE sy-tabix.
*
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = rt_events.
* TOP OF PAGE
READ TABLE rt_events INTO ls_event WITH KEY name = 'TOP_OF_PAGE'.
* w_index = sy-tabix.
IF sy-subrc = 0.
MOVE 'TOP_OF_PAGE' TO ls_event-form.
MODIFY rt_events FROM ls_event INDEX sy-tabix.
ENDIF.
ENDFORM. "eventtab_build
*&--------------------------------------------------------------------*
*& Form RUTINA_TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'XXXX_LOGO'
it_list_commentary = gt_list_top_of_page.
ENDFORM. "RUTINA_TOP_OF_PAGE
*----------------------------------------------------------------------*
* PROGRAMA : ZMM_RE_ALV_LISTCLI *
* AUTOR : DE PIERO,GASTON *
* CREADO : 24/08/2006 *
* REQ# : *
* Clase Desa : ZM00 *
* Auth Grp : *
* Clase Mess : *
* Transaccion : *
* Description : *
*----------------------------------------------------------------------*
REPORT ZMM_RE_ALV_LISTCLI .
INCLUDE ZMM_RE_ALV_LIST_CLI_VAR.
INCLUDE ZMM_RE_ALV_LIST_CLI_FOR.
START-OF-SELECTION.
*Seleccion de Datos
PERFORM SELECT.
*Formato de envio
PERFORM init_fieldcat.
*Layout
PERFORM init_layout.
*Llamado ALV
PERFORM FUN_ALV.
*----------------------------------------------------------------------*
* INCLUDE ZMM_RE_ALV_LIST_CLI_VAR *
*----------------------------------------------------------------------*
TYPE-POOLS: slis.
data : ncli like lfa1-lifnr.
TYPES : BEGIN OF ty_ALV,
lifnr type lfa1-lifnr,
name1 type lfa1-name1,
stras type lfa1-stras,
ort01 type lfa1-ort01,
regio type lfa1-regio,
stcdt type lfa1-stcdt,
text30 type j_1atodct-text30,
stcd1 type lfa1-stcd1,
text60 type j_1afitpvt-text60,
fdgrv type lfb1-fdgrv,
bukrs type lfb1-fdgrv,
fityp type lfa1-fityp,
land1 type t005s-land1,
END OF ty_ALV.
data: v_repid LIKE sy-repid.
data : indice type sy-tabix.
* Definicion del Catalogo
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
gt_eventos TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader,
gt_list_top_of_page_det TYPE slis_t_listheader.
* Definicion del Layout
DATA: wa_layout TYPE slis_layout_alv,
ti_dato type STANDARD TABLE OF ty_alv,
wa_dato type ty_alv.
*****************INGRESO DE DATOS***************************
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-TIT.
*Ingreso de cliente
SELECT-OPTIONS: so_cli FOR ncli." OBLIGATORY. "BSTYP
*Ingreso de sociedad
PARAMETERS: pa_soc like lfb1-bukrs OBLIGATORY.
SELECTION-SCREEN END OF BLOCK a1.
************************************************************
*----------------------------------------------------------------------*
* INCLUDE ZMM_RE_ALV_LIST_CLI_FOR *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form SELECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT.
clear ti_dato.
clear wa_dato.
*SELECCION
SELECT lfb1~lifnr bukrs fdgrv name1 stras ort01
land1 stcdt stcd1 fityp
from LFA1 inner join LFB1 on LFA1~lifnr = LFB1~lifnr
into corresponding fields OF TABLE ti_dato
where
lfb1~lifnr in so_cli and
bukrs = pa_soc.
*Textos
Loop at ti_dato into wa_dato.
*Select p indice
read table ti_dato into wa_dato with key lifnr = wa_dato-lifnr.
indice = sy-tabix.
*Select al tipo
select single text30 from j_1atodct into wa_dato-text30 where
spras = 'S' and J_1ATODC = wa_dato-stcdt .
*Select al cuit
select single text60 from j_1afitpvt into wa_dato-text60 where
spras = 'S' and J_1AFITP = wa_dato-fityp .
**Select al pais
* select single land1 from t005s into wa_dato-land1 where
* bland = wa_dato-regio.
MODIFY ti_dato FROM wa_dato INDEX indice.
endloop.
ENDFORM. " SELECT
****************************************************************
*FORMULARIOS****************************************************
****************************************************************
FORM FUN_ALV.
v_repid = sy-repid.
*LLAMADA A FUNCION ALV
*Cargando Cabecera de ALV
PERFORM cabecera USING gt_list_top_of_page[].
*Cargando Eventos
PERFORM eventtab_build USING gt_eventos[].
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = v_repid
* I_GRID_TITLE = 'Listado Clientes'
IS_LAYOUT = wa_layout
IT_FIELDCAT = gt_fieldcat[]
it_events = gt_eventos[]
TABLES
t_outtab = ti_dato.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form init_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_fieldcat.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
wa_fieldcat-fieldname = 'LIFNR'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Nro. Prov'.
wa_fieldcat-col_pos = '1'.
wa_fieldcat-just = 'L'.
wa_fieldcat-fix_column = 'X'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-key = 'X'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'BUKRS'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Sociedad'.
wa_fieldcat-col_pos = '2'.
wa_fieldcat-outputlen = 10.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'NAME1'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Nombre'.
wa_fieldcat-col_pos = '3'.
wa_fieldcat-fix_column = 'X'.
wa_fieldcat-outputlen = 30.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'STRAS'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Calle y Nro.'.
wa_fieldcat-fix_column = 'X'.
wa_fieldcat-col_pos = '4'.
wa_fieldcat-outputlen = 30.
wa_fieldcat-just = 'L'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'ORT01'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Localidad'.
wa_fieldcat-outputlen = 20.
wa_fieldcat-col_pos = '5'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'LAND1'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Pais'.
wa_fieldcat-col_pos = '6'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'STCDT'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Tipo NIF'.
wa_fieldcat-outputlen = 7.
wa_fieldcat-col_pos = '7'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'TEXT30'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Id.Fisc'.
wa_fieldcat-col_pos = '8'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'STCD1'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Numero'.
wa_fieldcat-outputlen = 13.
wa_fieldcat-col_pos = '9'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'FITYP'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Tip.Imp.'.
wa_fieldcat-outputlen = 7.
wa_fieldcat-col_pos = '10'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'TEXT60'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-outputlen = 25.
wa_fieldcat-seltext_m = 'Desc.Imp'.
wa_fieldcat-col_pos = '11'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = 'FDGRV'.
wa_fieldcat-tabname = 'ti_dato'.
wa_fieldcat-seltext_m = 'Gr. Tesor.'.
wa_fieldcat-outputlen = 17.
wa_fieldcat-col_pos = '12'.
APPEND wa_fieldcat TO gt_fieldcat .
CLEAR: wa_fieldcat.
ENDFORM. " init_fieldcat
*&---------------------------------------------------------------------*
*& Form init_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_layout.
wa_layout-zebra = 'X'.
ENDFORM. " init_layout
*****************
*Cabecera del ALV
FORM cabecera USING lt_top_of_page TYPE slis_t_listheader.
DATA: ls_line TYPE slis_listheader.
*
* LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Listado de Proveedores'.
APPEND ls_line TO lt_top_of_page.
* ACTION LINE: TYPE A
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Sociedad: '.
ls_line-info = pa_soc.
APPEND ls_line TO lt_top_of_page.
CLEAR ls_line.
ENDFORM. "COMMENT_BUILD
**********************
*Cargando los eventos
*&---------------------------------------------------------------------*
*& Form eventtab_build
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EVENTS[] text
*----------------------------------------------------------------------*
FORM eventtab_build USING rt_events TYPE slis_t_event.
*"Registration of events to happen during list display
DATA: ls_event TYPE slis_alv_event.
* DATA: w_index LIKE sy-tabix.
*
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = rt_events.
* TOP OF PAGE
READ TABLE rt_events INTO ls_event WITH KEY name = 'TOP_OF_PAGE'.
* w_index = sy-tabix.
IF sy-subrc = 0.
MOVE 'TOP_OF_PAGE' TO ls_event-form.
MODIFY rt_events FROM ls_event INDEX sy-tabix.
ENDIF.
ENDFORM. "eventtab_build
*&--------------------------------------------------------------------*
*& Form RUTINA_TOP_OF_PAGE
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'XXXX_LOGO'
it_list_commentary = gt_list_top_of_page.
ENDFORM. "RUTINA_TOP_OF_PAGE
No hay comentarios:
Publicar un comentario