Вы находитесь на странице: 1из 4

Criando um ALV OO

1 Declare os objetos Container e ALV.

*--------------------------------------------------------------------*
* Objetos: (O_...)
*--------------------------------------------------------------------*
DATA:
* Referenciando o obejto 'O_ALV' com a classe de ALV.
o_alv
TYPE REF TO cl_gui_alv_grid,
* Referenciando o objeto 'O_CONTAINER' com a classe de Container customizado.
o_container TYPE REF TO cl_gui_docking_container.
2 Em seguida ns precisamos definir as caratersticas do ALV, como alinhamento de texto,
eventos. Para isso iremos configurar o Fieldcat.
Vamos declarar a seguinte tabela interna e work rea.
t_fieldcat

TYPE TABLE OF lvc_s_fcat.

wa_fieldcat TYPE slis_fieldcat_alv.

3 Agora precisamos definir a estrutura do nosso alv, ou seja, as colunas e cabealhos da


coluna.
" Adiciona as colunas do ALV report.
PERFORM f_add_fieldcat USING:
"campo
"alinhamento "icone "texto da coluna
'LINHA'
c_centro
''
text-001,
'EMPRESA'
c_centro
''
text-002,
'CDEBITO'
c_centro
''
text-003,
'LDEBITO'
c_centro
''
text-004,
'CCREDITO'
c_centro
''
text-005,
'LCREDITO'
c_centro
''
text-006,
'CENTRO'
c_centro
''
text-007,
'MONTCRED' c_direita
''
text-008, "alinhado a direita
'MONTANTE' c_direita
''
text-009, "alinhado a direita
'MENSAGEM' c_esquerda ''
text-010, ""alinhado a esquerda
'STATUS'
c_centro c_marc text-011. "cone.

Aqui definimos os campos de referncia de cada coluna, o alinhamento do contedo de cada


clula, o tipo de cada clula e texto que ir aparecer no cabealho de cada coluna.

FORM f_add_fieldcat

USING

p_campo
p_alinhamento
p_icone
p_texto

TYPE
TYPE
TYPE
TYPE

lvc_s_fcat-ref_field
lvc_s_fcat-just
lvc_s_fcat-icon
lvc_s_fcat-coltext.

"Work Areas Local


DATA wa_fcat TYPE lvc_s_fcat.
"Preenche estrutura
wa_fcat-ref_field =
wa_fcat-fieldname =
wa_fcat-just
=
wa_fcat-icon
=
wa_fcat-coltext
=
wa_fcat-ref_table =

do fieldcat.
p_campo
.
p_campo
.
p_alinhamento.
p_icone
.
p_texto
.
c_tab
.

APPEND wa_fcat TO t_fieldcat.


CLEAR wa_fcat.
ENDFORM.

" ADD_FIELDCAT

Observe a declarao DATA wa_fcat TYPE lvc_s_fcat. A estrutura lvc_s_fcat possui os campos
com as caractersticas que utilizaremos para nosso ALV OO neste exemplo. Porm no existem
somente estes tipos.
Quando entramos na estrutura lvc_s_fcat

Podemos ver todos os tipos que podemos utilizar na passagem de parmetros do ALV.

A primeira coluna Campo indica o nome do campo que ser utilizado para referncia em
nosso ALV OO. Lembre-se que esta coluna dever conter os nomes dos campos em caixa alta
(maisculas).

4 - Em seguida vamos em Prepare before output


PROCESS BEFORE OUTPUT.
MODULE STATUS_9000.
Entre no module 9000
Descomente as seguintes linhas.
SET PF-STATUS 'STATUS_9000'.
SET TITLEBAR 'MAIN'.

Neste exemplo set pf-status nomeado como satatus_9000 e set titlebar como main, ambos em
maisculas.
5 - Agora precisamos instanciar o objeto do tipo Container.
PERFORM f_cria_container.
FORM f_cria_container .
IF o_container IS INITIAL.
CREATE OBJECT o_container
EXPORTING
side
= cl_gui_docking_container=>dock_at_top
repid
= sy-repid
dynnr
= sy-dynnr
extension = 1000
EXCEPTIONS
others
= 6.
ENDIF.
ENDFORM.

6 - Em seguida criar o ALV


PERFORM f_cria_alv
FORM f_cria_alv .
IF o_alv IS BOUND.
* Metodo da classe de alv atribuida ao objeto o_alv para limpar o obje
to.
o_alv->free( ).
ENDIF.
* Faz a criao do objeto do ALV passando o nome do Container que rec
eber
* o ALV
CREATE OBJECT o_alv
EXPORTING
i_parent = o_container.

Alimenta a estrutura de Layout do alv.


PERFORM f_layout_alv.

Como o nome do perform diz, aqui configuramos o layout. Deixando a clula proporcional ao
contedo e a saida zebrada.
FORM f_layout_alv .
"Define a estrutura do layout do ALV.
wa_layout-cwidth_opt = c_marc.
wa_layout-zebra
= c_marc.
ENDFORM.
*

Exibe alv conforme seus parametros


CALL METHOD o_alv->set_table_for_first_display
EXPORTING
is_layout
= wa_layout
CHANGING
it_fieldcatalog = t_fieldcat
it_outtab
= t_saida.

ENDFORM.

A tabela de sada corresponde a tabela com o contedo que ser passado para o ALV.

Вам также может понравиться