Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
b1.
" 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'.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
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.
" 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