" hahuahua, tava dando uma olhadinha nos posts que já fiz e
" percebi que tah faltando uma das coisas principais para um
" Abap Junior que eh saber mexer pelomenos no basico do ALV pois
" hoje a maioria dos relatorios solicitados são em ALV, o
" usuário tem uma maior flexibilidade com os dados podendo organizar,
" toda a vez que falarem um report pra vc a primeira coisa que tem
" que vir na sua cabeça eh um ALV, muitos consultores que eu conheço
" já tem um arquivinho com o ALV padrão deles, façam o de vcs tb, mas
" por favor não façam por fazer entendam oq cada coisa significa que
" assim vc conseguirá dar manutenção em qualquer ALV, aki estarei
" colocando um alv basico e com este arquivo estarei trabalhando pra
" fala tudo sobre isso, como colocar botão no ALV, eventos, layout,
" pf-status, e todas as propriedades que essa função pode ter entaum
" vamos lá...
REPORT z_alv_basico.
" Tabelas transparentes ....
TABLES : mara
.
" type-pools .....
" Essa declaração e necessária pois e o grupo de tipos usados no ALV.
TYPE-POOLS: slis
.
" Tipos .....
TYPES :
BEGIN OF ty_mara,
matnr TYPE mara-matnr, " Nº do material
ersda TYPE mara-ersda, " Data de criação
ernam TYPE mara-ernam, " Nome do responsável que adicionou o objeto
pstat TYPE mara-pstat, " Status de atualização
mtart TYPE mara-mtart, " Tipo de material
END OF ty_mara .
" Estruturas ....
DATA : st_mara TYPE ty_mara
.
" Tabelas Internas ....
DATA : it_mara TYPE TABLE OF ty_mara
.
" Declarações usadas no ALV.
" Declaração da tabela e da estrutura que estaram com as informações dos campos
" do ALV
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
st_fieldcat TYPE slis_fieldcat_alv
.
" Tela de seleção .....
SELECTION-SCREEN BEGIN OF BLOCK b1.
SELECT-OPTIONS :
so_matnr FOR mara-matnr NO INTERVALS, " Nº do material
so_pstat FOR mara-pstat NO INTERVALS " Status de atualização
.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM : z_feed_table,
z_fieldcat,
z_alv
.
*&---------------------------------------------------------------------*
*& Form Z_feed_table
*&---------------------------------------------------------------------*
" Fazendo um select simples pra traze algum dado pra nos podemos visualizar
" no nosso ALV bunitão.
" não entende sobre select, clique aki :
" http://abapjuniores.blogspot.com/2011/06/for-all-entries-in-basico.html
FORM z_feed_table .
SELECT matnr
ersda
ernam
pstat
mtart
INTO TABLE it_mara
FROM mara
UP TO 100 ROWS
WHERE matnr IN so_matnr
AND pstat IN so_pstat
.
ENDFORM. " Z_feed_table
*&---------------------------------------------------------------------*
*& Form Z_FIELDCAT
*&---------------------------------------------------------------------*
" Por melhores praticas eu criei um form pra trata com o fieldcat que significa
" catalogo de campos,
FORM z_fieldcat .
" Este perfome alimenta a tabela que será utilizada na função que cria um ALV
" pois na função eh necessário informar os campos é suas propriedades, entrando
" no tipo da estrutura e da tabela di fieldcat vc verá o tanto de parametros que
" um campo pode ter .
" Não lembra muita coisa sobre Perform, clique aki :
" http://abapjuniores.blogspot.com/2011/04/performs.html
PERFORM z_feed_fieldcat USING :
"Fname Seltext check Edit Col_pos
'MATNR' 'Material' ' ' ' ' 0 ,
'ERSDA' 'Data de criação' ' ' ' ' 1 ,
'ERNAM' 'Nome do responsável' ' ' ' ' 2 ,
'PSTAT' 'Status' ' ' ' ' 3 ,
'MTART' 'Tipo de material' ' ' ' ' 4
.
ENDFORM. " Z_FIELDCAT
*&---------------------------------------------------------------------*
*& Form Z_FEED_FIELDCAT
*&---------------------------------------------------------------------*
FORM z_feed_fieldcat USING fieldname
seltext_m
checkbox
edit
col_pos .
st_fieldcat-fieldname = fieldname. " Nome do campo
st_fieldcat-seltext_m = seltext_m. " texto do campo
st_fieldcat-checkbox = checkbox. " se o campo é do tipo CheckBox
st_fieldcat-edit = edit. " se o campo pode ser editavel
st_fieldcat-col_pos = col_pos. "Em que posição fica a coluna
" Coloca a estrutura alimentada na Tabela.
APPEND st_fieldcat TO it_fieldcat.
" Limpa a estrutura e volta pra poxima linha do form.
CLEAR st_fieldcat.
ENDFORM. " Z_FEED_FIELDCAT
*&---------------------------------------------------------------------*
*& Form Z_ALV
*&---------------------------------------------------------------------*
form Z_ALV .
" Aki tah o prato principal deste Post, a function que torna o ALV em
" realidade, como vc pode ver esta function tem muitos parametros de exporting
" cada um com seu objetivo para que o ALV saia bunitinho, eu ia colocar
" um post falando sobre essa function, mas são muitas as propriedades
" entaum vou fazer ao contrário essa, depois que fala sobre cada propriedade
" eu lanço um post sobre esta function com o link explicando cada
" parametro, não sei quando, mais um dia eu termino rsrs.
" Aki eu soh estou preenchendo os parametros minimos pra que a function
" funcione,
" Obs.: se vc naum quiser colocar o field catalog tudo bem mas aih vc vai
" ter que colocar uma estrutura z ou naum no parametro 'I_STRUCTURE_NAME'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid " Nome do programa
* 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 =
it_fieldcat = it_fieldcat " catalogo de campos
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* i_save = 'X'
* IS_VARIANT =
* 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
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_mara " Tabela com os dados
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.
endform. " Z_ALV