Você está na página 1de 5

*&--------------------------------------------------------------------*

*& Report ZPG_ALV


*&
*&--------------------------------------------------------------------*
*&
*&
*&--------------------------------------------------------------------*
REPORT

ZPG_ALV.

* Conjunto de tipos
TYPE-POOLS : slis.
* Tabelas
TABLES : ztab_rg.
*Tipos
TYPES: BEGIN OF ty_ztab,
mandt
TYPE ztab_rg-mandt,
nrrg
TYPE ztab_rg-nrrg,
nome
TYPE ztab_rg-nome,
endr
TYPE ztab_rg-endr,
sexo
TYPE ztab_rg-sexo,
estc
TYPE ztab_rg-estc,
nasc
TYPE ztab_rg-nasc,
END OF ty_ztab,
BEGIN OF ty_outtab,
nrrg
TYPE ztab_rg-nrrg,
nome
TYPE ztab_rg-nome,
endr
TYPE ztab_rg-endr,
sexo
TYPE ztab_rg-sexo,
estc
TYPE ztab_rg-estc,
nasc
TYPE ztab_rg-nasc,
END OF ty_outtab.
* Tabelas Internas
DATA: ti_ztab
TYPE TABLE OF ty_ztab,
ti_outtab
TYPE TABLE OF ty_outtab,
ti_fieldcat TYPE TABLE OF slis_fieldcat_alv.
* Estruturas
DATA : st_ztab
st_outtab
st_fieldcat
st_layout
st_varia

TYPE
TYPE
TYPE
TYPE
TYPE

ty_ztab,
ty_outtab,
slis_fieldcat_alv,
slis_layout_alv,
disvariant.

* Tela de seleo
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS :
s_nrrg FOR ztab_rg-nrrg.
PARAMETERS :
p_vari TYPE disvariant-variant.

SELECTION-SCREEN END OF BLOCK

b1.

* Aqui t parte do segredo, caso o programa j tenha alguma varivel


de
* de layout, na hora que clicar no matchcode do campo 'Layout' ser
* criado um Pop-up com essas informaes e assim voc seleciona o que
* desejar.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM z_select_variavel_alv.
* Inicio do processo
START-OF-SELECTION.
PERFORM : f_seleciona_dados.
IF

ti_ztab IS NOT INITIAL.


PERFORM : f_trata_dados,
f_cria_alv.
ELSE.
MESSAGE 'No foi encontrado o RG informado.'
TYPE 'I'.
ENDIF.
* Fim do processo.
END-OF-SELECTION.
*&--------------------------------------------------------------------*
*&
Form F_SELECIONA_DADOS
*&--------------------------------------------------------------------*
FORM f_seleciona_dados .
SELECT *
FROM ztab_rg
INTO TABLE ti_ztab
WHERE nrrg IN s_nrrg.
ENDFORM.

" F_SELECIONA_DADOS

*&--------------------------------------------------------------------*
*&
Form F_TRATA_DADOS
*&--------------------------------------------------------------------*
FORM f_trata_dados .
LOOP AT ti_ztab INTO st_ztab.
MOVE-CORRESPONDING st_ztab to st_outtab.
APPEND st_outtab TO ti_outtab.
CLEAR : st_outtab.
ENDLOOP.

ENDFORM.

" F_TRATA_DADOS

*&--------------------------------------------------------------------*
*&
Form F_CRIA_ALV
*&--------------------------------------------------------------------*
FORM f_cria_alv .
PERFORM z_fieldcat USING : '1'
'2'
'3'
'4'
'5'
'6'

'NRRG'
'NOME'
'ENDR'
'SEXO'
'ESTC'
'NASC'

'TI_OUTTAB'
'TI_OUTTAB'
'TI_OUTTAB'
'TI_OUTTAB'
'TI_OUTTAB'
'TI_OUTTAB'

'ZTAB_RG'
'ZTAB_RG'
'ZTAB_RG'
'ZTAB_RG'
'ZTAB_RG'
'ZTAB_RG'

'NRRG',
'NOME',
'ENDR',
'SEXO',
'ESTC',
'NASC'.

st_layout-zebra
= 'X'.
st_layout-colwidth_optimize = 'X'.

* Caso o usurio tenha informado a variante sem usar a MatchCode.


if p_vari is not initial
and st_varia-variant is initial.
* No se preocupem caso o user coloque babozeiras na tela, pois se a
variante
* de layout no existir no ira dar Dump nem nada, s a tela que no i
r mudar.
st_varia-variant = p_vari.
st_varia-report = sy-repid.
endif.
* O ato de 'flagar'(alimentar com 'X') o parametro 'i_save' da funo
de criao
* do alv far aparecer trs botes adicionais no cabealho do alv que
ir te
* possibilitar de gravar o layout do alv, assim voc poder mexer a vo
ntade
* no layout do alv e deixar ele do seu jeito q quiser, salvar e pronto
.
* O Parametro 'is_variant' uma estrutura de retorno da funo

*
*
*
*
*
*
*
*
*
*
*
*

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
I_INTERFACE_CHECK
= ' '
I_BYPASSING_BUFFER
= ' '
I_BUFFER_ACTIVE
= ' '
i_callback_program
= sy-repid
I_CALLBACK_PF_STATUS_SET
= ' '
I_CALLBACK_USER_COMMAND
= ' '
I_CALLBACK_TOP_OF_PAGE
= ' '
I_CALLBACK_HTML_TOP_OF_PAGE
= ' '
I_CALLBACK_HTML_END_OF_LIST
= ' '
I_STRUCTURE_NAME
=
I_BACKGROUND_ID
= ' '
I_GRID_TITLE
=
I_GRID_SETTINGS
=

*
*
*
*
*
*

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

is_layout
= st_layout
it_fieldcat
= ti_fieldcat
IT_EXCLUDING
=
IT_SPECIAL_GROUPS
=
IT_SORT
=
IT_FILTER
=
IS_SEL_HIDE
=
I_DEFAULT
= 'X'
i_save
= 'X'
is_variant
= st_varia
IT_EVENTS
=
IT_EVENT_EXIT
=
IS_PRINT
=
IS_REPREP_ID
=
I_SCREEN_START_COLUMN
= 0
I_SCREEN_START_LINE
= 0
I_SCREEN_END_COLUMN
= 0
I_SCREEN_END_LINE
= 0
IT_ALV_GRAPHICS
=
IT_HYPERLINK
=
IT_ADD_FIELDCAT
=
IT_EXCEPT_QINFO
=
I_HTML_HEIGHT_TOP
=
I_HTML_HEIGHT_END
=
IMPORTING
E_EXIT_CAUSED_BY_CALLER
=
ES_EXIT_CAUSED_BY_USER
=
TABLES
t_outtab
= ti_outtab
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.
clear st_varia.

ENDFORM.
" F_CRIA_ALV
*&--------------------------------------------------------------------*
*&
Form Z_FIELDCAT
*&--------------------------------------------------------------------*
FORM z_fieldcat USING
p_col
p_fname
p_tname
p_reftab
p_reffield.
st_fieldcat-col_pos
st_fieldcat-fieldname
st_fieldcat-tabname
st_fieldcat-ref_tabname
st_fieldcat-ref_fieldname

=
=
=
=
=

p_col.
p_fname.
p_tname.
p_reftab.
p_reffield.

APPEND st_fieldcat TO ti_fieldcat.


CLEAR st_fieldcat.
ENDFORM.

" Z_FIELDCCAT

*&--------------------------------------------------------------------*
*&
Form Z_SELECT_VARIAVEL_ALV
*&--------------------------------------------------------------------*
FORM z_select_variavel_alv .
* Informe dentro da estrutura que servir de import e export o nome d
o
* programa e pronto, isso criar um pop-up e o retorno ser a variante
* que voc escolheu.
* O Parametro I_save dessa funo informa se as variantes que sero e
xibidas
* no pop-up ser do usurio expecifico( A ou U ) ou no( X ou space ).
st_varia-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant
= st_varia
i_save
= 'A'
IMPORTING
es_variant
= st_varia
EXCEPTIONS
not_found
= 1
program_error
= 2
OTHERS
= 3
.
* Caso tenha dado tudo certo ser repassado o valor escolhido para a
* tela de seleo
IF sy-subrc IS INITIAL.
p_vari = st_varia-variant.
ENDIF.
ENDFORM.

" Z_SELECT_VARIAVEL_ALV

Você também pode gostar