Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 6

REPORT z04_curso_tabela_quebra04_alv MESSAGE-ID z04curso04.

TABLES: scarr, spfli .


TYPES: BEGIN OF e_spfli,
carrid LIKE spfli-carrid,
connid LIKE spfli-carrid,
countryfr LIKE spfli-countryfr,
cityfrom LIKE spfli-cityfrom,
airpfrom LIKE spfli-airpfrom,
countryto LIKE spfli-countryto,
cityto LIKE spfli-cityto,
airpto LIKE spfli-airpto,
fltime LIKE spfli-fltime,
deptime LIKE spfli-deptime,
arrtime LIKE spfli-arrtime,
distance LIKE spfli-distance,
distid LIKE spfli-distid,
fltype LIKE spfli-fltype,
period LIKE spfli-period,
carrname LIKE scarr-carrname,
END OF e_spfli.
DATA: t_spfli type table of e_spfli with header line.
DATA: v_carrname LIKE SCARR-carrname.
*FORMA MAIS SIMPLES DE DECLARACAO DE TABELA.
DATA: t_scarr LIKE scarr OCCURS 0 WITH HEADER LINE.
************************************************************************
* Declarao de TYPES standards
************************************************************************
TYPE-POOLS: slis, kkblo.
************************************************************************
* Declarao das variveis e tabelas para o relatrio ALV
************************************************************************
DATA: t_variant
LIKE disvariant.
DATA: t_layout
TYPE slis_layout_alv.
DATA: t_keyinfo
TYPE slis_keyinfo_alv.
DATA: t_print
TYPE slis_print_alv.
DATA: t_fieldcat
TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: t_events
TYPE slis_t_event
WITH HEADER LINE.
DATA: t_sort
TYPE slis_t_sortinfo_alv WITH HEADER LINE.
DATA: v_repid
LIKE sy-repid.
DATA: v_user(20)
TYPE c.
" Usuario ALV
DATA: fieldcat
TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA: t_header
TYPE slis_t_listheader.
DATA: e_header
TYPE slis_listheader.
************************************************************************
* Tela de seleo
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_carrid FOR spfli-carrid,
s_connid FOR spfli-connid.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM seleciona_dados.

PERFORM monta_alv.
PERFORM imprime_alv.
END-OF-SELECTION.
************************************************************************
* Cabealho
************************************************************************
TOP-OF-PAGE.
PERFORM: zf_header.
*&---------------------------------------------------------------------*
*&
Form SELECIONA_DADOS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM seleciona_dados.
SELECT a~carrid a~connid a~countryfr a~cityfrom a~airpfrom a~countryto
a~cityto a~airpto a~fltime a~deptime a~arrtime a~distance
a~distid a~fltype a~period b~carrname
FROM spfli AS a
JOIN scarr AS b
ON a~carrid = b~carrid
INTO TABLE t_spfli
WHERE a~carrid IN s_carrid
AND a~connid IN s_connid.
ENDFORM.

" SELECIONA_DADOS

*&---------------------------------------------------------------------*
*&
Form imprime_alv
*&---------------------------------------------------------------------*
* Imprime o relatrio da forma escolhida com a funo
*----------------------------------------------------------------------*
FORM imprime_alv.
MOVE sy-repid TO v_repid.
PERFORM: define_cabecalho,
imprimir.
ENDFORM.
" imprime_alv
*&---------------------------------------------------------------------*
*&
Form define_cabecalho
*&---------------------------------------------------------------------*
FORM define_cabecalho .
e_header-typ = 'H'.
e_header-info = 'TESTE COM ALV'.
APPEND e_header TO t_header.
CLEAR e_header.
CONCATENATE 'Usurio:' sy-uname INTO v_user.
e_header-typ = 'A'.
e_header-info = v_user.
APPEND e_header TO t_header.

CLEAR e_header.
ENDFORM.

" define_cabecalho

*&---------------------------------------------------------------------*
*&
Form zf_fieldcat
*&---------------------------------------------------------------------*
FORM zf_fieldcat USING
fieldname LIKE fieldcat-fieldname
tabname LIKE fieldcat-tabname
outputlen LIKE fieldcat-outputlen
datatype LIKE fieldcat-datatype
reptext LIKE fieldcat-reptext_ddic
do_sum
LIKE fieldcat-do_sum
key
LIKE fieldcat-key
col_pos LIKE fieldcat-col_pos.
CLEAR fieldcat.
fieldcat-fieldname
fieldcat-tabname
fieldcat-outputlen
fieldcat-datatype
fieldcat-reptext_ddic
fieldcat-do_sum
fieldcat-key
fieldcat-col_pos
APPEND fieldcat.
ENDFORM.

=
=
=
=
=
=
=
=

fieldname.
tabname.
outputlen.
datatype.
reptext.
do_sum.
key.
col_pos.

"
"
"
"
"
"
"
"

Nome do Campo da Tab. Interna


Nome da Tabela Interna
Tamanho da coluna
Formato de saida
Texto
Campo somatorio
Campo Chave
Ordem

" zf_fieldcat

*&---------------------------------------------------------------------*
*&
Form imprimir
*&---------------------------------------------------------------------*
FORM imprimir .
DATA: v_repid
DATA: layout
DATA: it_sort
wa_sort

TYPE
TYPE
TYPE
TYPE

sy-repid.
slis_layout_alv.
slis_t_sortinfo_alv,
slis_sortinfo_alv.

v_repid = sy-repid.
* Layout do report
layout-zebra
layout-no_keyfix
layout-expand_all

= 'X'.
= ' '.
= 'X'.

* Quebra do report - Por material e Descricao


wa_sort-fieldname = 'CARRID'.
wa_sort-spos
= 1.
wa_sort-up
= 'X'.
APPEND wa_sort TO it_sort.
* Funcao que gera o ALV Grid
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program
= v_repid
i_callback_top_of_page = 'ZF_HEADER'
it_fieldcat
= t_fieldcat[]
is_layout
= layout

*
*

i_grid_title
i_default
i_save
is_print
it_sort
TABLES
t_outtab
EXCEPTIONS
program_error
OTHERS

= v_titulo
= 'X'
= 'A'
= print
= it_sort[]
= T_SPFLI
= 1
= 2.

* Verifica se houve algum ERRO


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.

" imprimir

*&---------------------------------------------------------------------*
*&
Form monta_alv
*&---------------------------------------------------------------------*
* Monta relatrio ALV de duas maneiras diferentes
*----------------------------------------------------------------------*
FORM monta_alv.
PERFORM alv_rapido.
ENDFORM.
" monta_alv
*&---------------------------------------------------------------------*
*&
Form alv_rapido
*&---------------------------------------------------------------------*
* Monta relatrio ALV de um modo mais rpido
*----------------------------------------------------------------------*
FORM alv_rapido.
PERFORM insere_no_alv USING 'CARRID'
't_SPFLI'
'Air. ID'
'C'
3.
PERFORM insere_no_alv USING 'CONNID'
't_SPFLI'
'Conexo'
'N'
4.
PERFORM insere_no_alv USING 'COUNTRYFR'
't_SPFLI'
'Pas origem'
'C'
3.
PERFORM insere_no_alv USING 'CITYFROM'
't_SPFLI'
'Cidade origem'
'C'
20.

PERFORM insere_no_alv USING 'AIRPFROM'


't_SPFLI'
'Aeroporto origem'
'C'
3.
PERFORM insere_no_alv USING 'COUNTRYTO'
't_SPFLI'
'Pas destino'
'C'
3.
PERFORM insere_no_alv USING 'CITYTO'
't_SPFLI'
'Cidade destino'
'C'
20.
PERFORM insere_no_alv USING 'AIRPTO'
't_SPFLI'
'Aeroporto destino'
'C'
3.
PERFORM insere_no_alv USING 'FLTIME'
't_SPFLI'
'Horas de Voo'
'I'
5.
ENDFORM.
" alv_rapido
*&---------------------------------------------------------------------*
*&
Form insere_no_alv
*&---------------------------------------------------------------------*
* Monta a tabela do relatrio ALV
*----------------------------------------------------------------------*
FORM insere_no_alv USING p_fieldname
p_tabname
p_reptext
p_inttype
p_outputlen.
CLEAR t_fieldcat.
t_fieldcat-fieldname
t_fieldcat-tabname
t_fieldcat-reptext_ddic
t_fieldcat-inttype
t_fieldcat-outputlen
APPEND t_fieldcat.

ENDFORM.

=
=
=
=
=

p_fieldname.
p_tabname.
p_reptext.
p_inttype.
p_outputlen.

" insere_no_alv

*&---------------------------------------------------------------------*
*&
Form zf_header
*&---------------------------------------------------------------------*
FORM zf_header .

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
it_list_commentary = t_header.
ENDFORM.

" zf_header

You might also like