Sie sind auf Seite 1von 29

ALV(ABAP LIST VIEWER)

Por Osmar Antunes de Araújo Júnior


Aspen/RJ

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

Introdução.................................................................................................................................... 3
O que é ALV?.............................................................................................................................. 3
Layouts dos Relatórios ALV:..................................................................................................... 4
ALV Hierárquico ................................................................................................................... 4
ALV List .................................................................................................................................. 5
ALV GRID ............................................................................................................................. 5
Montagem do ALV passo a passo.............................................................................................. 6
Grupo de tipos: ..................................................................................................................... 6
Variantes de exibição:......................................................................................................... 6
Seleção e preparação dos dados..................................................................................... 7
Configuração de saída do relatório ALV......................................................................... 7
Parâmetros gerais do Layout do relatório ................................................................. 7
Estrutura slis_layout_alv: ............................................................................................... 7
Detalhes Tela .................................................................................................................. 9
Criação de Grupos de Campos ........................................................................................ 9
Passo 9 - declarar uma estrutura do tipo slis_t_sp_group_alv.......................... 9
Passo 10 - Carregar esta tabela com os parâmetros necessários....................... 9
Estrutura tipo slis_t_sp_group_alv:.............................................................................. 9
Parâmetros de ordenação................................................................................................ 10
Estrutura tipo slis_t_sortinfo_alv: ............................................................................... 10
Parâmetros de cada campo em particular - slis_t_fieldcat_alv ............................... 11
Estrutura tipo slis_t_fieldcat_alv:................................................................................ 11
Definir cabeçalho (apenas para o grid) ......................................................................... 13
Somente para o hierárquico ............................................................................................ 14
Parâmetros de impressão ................................................................................................ 14
Seleção e tratamento dos Dados ................................................................................... 14
Passo 21 – Neste passo, carregamos a nossa tabela interna de saída com os dados
já processados para a exibição de nosso relatório. ................................................. 14
O Display do relatório........................................................................................................ 15
Para o LIST ..................................................................................................................... 16
Para o hierárquico.......................................................................................................... 16
Para o grid: ...................................................................................................................... 17
Tratamento de evento USER_COMMAND e criação de PF-STATUS.................. 17
Para PF-STATUS: ......................................................................................................... 18
Para user_command ..................................................................................................... 19
Tratamento de Botões:.................................................................................................. 19
Tratamento de Drill-Down:.......................................................................................... 19
Tratamento de Drill-Down disparando tela popup HTML:....................................... 20
PBO ........................................................................................................................... 21
PAI............................................................................................................................. 23
Adicionar Cores em células do ALV ....................................................................................... 24
1-Uma passando para o campo emphasize da fieldcat:........................................... 24
2-Colorindo células específicas ...................................................................................... 27
TOP-OF-PAGE no ALV Hierárquico ..................................................................................... 28

Página: 2

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

Introdução
O objetivo deste material é passar para o consultor que o ALV não é um “bicho de sete
cabeças” e citar as principais dificuldades de um iniciante em ALV.

Existem 3 tipos de ALV que nós faremos neste curso: ALV LIST, ALV HIERARQUICO e
ALV GRID.

O que é ALV?
O Abap List Viewer (ALV) é uma ferramenta que padroniza e simplifica o uso de listas e
relatórios no sistema R/3 tanto para o desenvolvedor tanto para o usuário que interage com
o relatório.

O ALV através de suas funções e estruturas torna o desenvolvimento mais simples na


medida que economiza significativas linhas de código como por exemplo no tratamento de
quebras, totais, subtotais, cores e outras vantagens que veremos a seguir.

Página: 3

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

Layouts dos Relatórios ALV:


ALV Hierárquico

Página: 4

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
ALV List

ALV GRID

Página: 5

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
Montagem do ALV passo a passo
Grupo de tipos:
Passo 1 – é necessário a declaração do grupo de tipos SLIS onde de encontram os tipos
fundamentais para a saída de um relatório ALV.
Ex: type-pools: slis.

Variantes de exibição:
Mas a frente neste curso, veremos que o usuário poderá escolher as colunas que ele deseja
exibir em seu relatório e com isso salvá-los (na própria tela do relatório) com um nome
desejado. Chamamos de variantes de exibição em ALV, esses layouts (colunas desejadas)
que o usuário poderá salvar no relatório.
Passo 2 – Criar um parameter do tipo disvariant-variant .
Ex: parameters: p_vari like disvariant-variant. "Layout
Passo 3 – para o evento INITIALIZATION faremos a chamada de uma função que nos
retornará a variante default do relatório. Mas para isso precisaremos declarar algumas
estruturas do tipo disvariant (Variant.exibição) e variáveis no seguinte padrão:
variant_def(1) type c e variant_exit(1)type c.
Ex: clear variante.
repid = sy-repid.
variante-report = repid.

* Buscar variante default


def_variante = variante.

A função abaixo retornará a variante que foi salva como default na exibição do relatório
ALV. Lembrando que quando executamos o relatório pela primeira vez , não existe
variante default. Veremos depois que gerarmos nosso primeiro ALV, que quando
salvarmos uma variante de exibição existirá um flag chamado CONFIGURAÇÃO
PRELIMINAR, que sendo marcado quando salvamos estamos definindo
conseqüentemente esta variante como default do relatório.
call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
exporting
i_save = ‘A’
changing
cs_variant = def_variante
exceptions
wrong_input = 1
not_found = 2
program_error = 3
others = 4.
if sy-subrc = 0.
p_vari = def_variante-variant.
endif.

Passo4 – Matchcode do campo de variante de exibição. É simples, basta no evento At


Selection-Screen On Value-Request fazer:
call function 'REUSE_ALV_VARIANT_F4'
exporting
is_variant = variante “ Report com as
i_save = ‘A’ “ Variantes Salvas

Página: 6

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
i_tabname_header = 'IT_SAIDA' “ Tabela interna saida
it_default_fieldcat = s_fieldcat[] “ Tabela de formatação
i_display_via_grid = 'X' “ Dispara POPUP em ALV
importing
e_exit = variant_exit “ Se não existir variante X
es_variant = def_variante “ Variante default
exceptions
not_found =1
program_error =2
others = 3.

if sy-subrc = 2.
message id sy-msgid type 'S' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
else.
if variant_exit = space.
p_vari = def_variante-variant. “ Recebe variante escolhida
endif.
endif.

Passo 5 – Sabendo que existe a possibilidade do usuário entrar com uma variante de
exibição não existente, usaremos em todos os nossos relatórios ALV uma função que
checará se a mesma existe. No evento at selection-screen faremos esta “Receita de bolo”:
if not p_vari is initial.

def_variante = variante. “ Nome do report


def_variante-variant = p_vari. “ O que foi digitado
call function 'REUSE_ALV_VARIANT_EXISTENCE'
exporting
i_save = ‘A’
changing
cs_variant = def_variante.

variante = def_variante.
else.
clear variante.
variante-report = repid.
endif.

Seleção e preparação dos dados


Passo 6 – Seleção e preparação dos dados.

Configuração de saída do relatório ALV


Parâmetros gerais do Layout do relatório
Passo7 – declarar uma estrutura do tipo slis_layout_alv.
Ex: s_layout type slis_layout_alv.
Passo8 – Abaixo passar os campos fundamentais e mais utilizados em programas de
cliente.
Ex: S_layout-box_fieldname = 'BOX'. "campo checkbox p/tab_saida
S_layout-get_selinfos = 'X'. “Mostrar tela de seleção”.
S_layout-detail_popup = 'X'. “Mostrar detalhe via popup”.
S_layout-detail_initial_lines = 'X'. “Todos os campos em detalhes”.
S_layout-zebra = 'X'. “Cor sim / cor não”.
S_layout-colwidth_optimize = 'X'. “Otimização de largura de colunas

Estrutura slis_layout_alv:
Campo Descrição Valores propostos
Parâmetros Gerais

Página: 7

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
no_colhead Sem Títulos (Cabeçalho)
no_hotspot Títulos sem Hotspot
no_vline Colunas separadas por espaços
Zebra Listrado (Uma linha clara outra X
escura)
Reprep
no_keyfix Não fixar coluna chave
Expand_all Expandir todas as posições
no_author Nenhuma verificação padrão da
autoridade
PF-status
def_status Status Default
item_text
Opções de Display
Colwidth_optimize Largura otimizada das colunas X
no_min_linesize Tamanho da linha = tamanho da
lista
min_linesize Default 80
max_linesize Default 250
Window_titlebar Título na barra de títulos ‘Titulo do relatório’
no_uline_hs
Exceções
lights_fieldname Nome do campo para exceção
lights_tabname Nome da tabela para exceção
lights_rollname
lights_condense
Somatórios
no_sumchoice Sem escolha para Somar para
cima
no_totalline Sem Total Linha
no_subchoice
no_subtotals Sem Sub-Total
no_unit_splitting
totals_before_items Mostrar total antes dos itens
totals_only Mostrar somente os totais
a
totals_text Texto para a 1 . coluna na linha
de total
a
Subtotals_text Texto para a 1 . coluna na linha
de Sub-total
Interações
box_fieldname Nome do Campo que foi ‘BOX’ Supondo que na
declarado como like nossa tabela interna o
ptrv_approval-box para campo se chame box
Checkbox na tabela interna
box_tabname Nome da tabela interna que ‘tab_int’
contem o campo box
box_rollname
Expand_fieldname
Hotspot_fieldname Nome do Campo para Hotspot
confirmation_prompt Confirmar Saída da lista
key_hotspot keys as hotspot " K_KEYHOT
flexible_key Mover as colunas chaves
group_buttons Grupo de Botões
get_selinfos Ler tela de seleção X
group_change_edit Settings by user for new group
no_scrolling Sem movimentar tela

Página: 8

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
Detalhes Tela
detail_popup Mostrar detalhes em nova X
janela
detail_initial_lines Todos os campos em detalhes X
detail_titlebar Título para tela de detalhes
Mostar Variantes
header_text Texto para o botão
default_item
Cores
info_fieldname
Coltab_fieldname Nome do campo que conterá as
cores das células
Outros
list_append Sem chamada de tela
Xifunckey Extended interaction(SAPQuery)
Xidirect Extended
INTeraction(SAPQuery)
dtc_layout Configuração de layout para
Tabstrip

Criação de Grupos de Campos


Não é fundamental a criação de grupos de campos, mas facilita ao usuário na hora de
escolher os campos de exibição após o clique do botão MODIFICAR LAYOUT . Vários
campos da fieldcat podem ser definidos para um mesmo grupo de campo.Veremos mais a
frente como atribuir um campo a um grupo de campo.
Passo 9 - declarar uma estrutura do tipo slis_t_sp_group_alv
Ex: s_grupos type slis_t_sp_group_alv with header line.
Passo 10 - Carregar esta tabela com os parâmetros necessários.
Ex: move: 'Moeda' to s_grupos-sp_group,
'Campos moeda' to s_grupos-text.
append s_grupos.

Estrutura tipo slis_t_sp_group_alv:

Campo Descrição
sp_group Nome do campo
text Descrição dos grupos

Página: 9

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

Parâmetros de ordenação

Passo 11 – declarar uma estrutura do tipo slis_t_sortinfo_alv.


Ex: s_sort type slis_t_sortinfo_alv with header line.

Passo 12 - Abaixo carregar os campos necessários e mais utilizados em programas de


cliente.
Ex:clear s_sort.
s_sort-up = 'X'. “Ordenação crescente
s_sort-fieldname = 'campo pelo qual queremos ordenar da Tabela interna de
saída'.
s_sort-tabname = 'Tabela interna de saída'.
s_sort-spos = '1'. “Prioridade de ordenação
append s_sort.

Estrutura tipo slis_t_sortinfo_alv:

Campo Descrição Valores


Spos Seqüência de Ordenação Prioridade de ordenação
fieldname Nome do campo Campo da tab.interna de
saída
Tabname Nome da tabela a qual Tabela interna de saída do
pertence o campo mesmo.
Up Ordenação Menor para Maior
Down Ordenação Maior para Menor
Group Grupo de campos
Subtot Gerar Sub Total
Comp Comprimir

Página: 10

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
Expa Expandir
Obligatory Campo obrigatório

OBS.:Na tabela it_sort(que é passada como parametro da função


REUSE_ALV_LIST_DISPLAY), coloque * no campo group no registro que deseja
fazer a quebra de página. Para traçar um uline invés da quebra de página
coloque UL no campo group.

Parâmetros de cada campo em particular - slis_t_fieldcat_alv

Agora, nós veremos os campos de nossa tabela interna de saída que desejamos que sejam
disparados no relatório. A estrutura slis_t_fieldcat_alv determina o modo de apresentação
campo a campo a nossa tabela interna de saída.

Passo 13 – declarar estrutura do tipo slis_t_fieldcat_alv with header line.


Ex: data: s_fieldcat type slis_t_fieldcat_alv with header line.

Passo 14 – abaixo estão em detalhes os campos da s_fielcat fundamentais.


Ex: clear s_fieldcat.
s_fieldcat-fieldname = 'EBELN'.
s_fieldcat-tabname = 'IT_SAIDA'.
s_fieldcat-ref_fieldname = ‘EBELN’.
s_fieldcat-ref_tabname = ‘EKKO’.
s_fieldcat-key = ‘X’.
append s_fieldcat.

Estrutura tipo slis_t_fieldcat_alv:

Campo Descrição Definições


Row_pos Saída na linha (1,2,3,...)
Col_pos Posição da coluna
Fieldname Nome do campo na tab_int
Tabname Nome da tabela interna
Currency Moeda
cfieldname Campo com Unidade de Moeda
Ctabname Tabela referência para Unidade
Moeda
Ifieldname initial column
Quantity Unidade de Medida
qfieldname Campo com Unidade Medida
Qtabname Tabela com Unidade Medida
Round Arredondar Campo
Exponent Expoente para floats
Key Campo como Chave
Icon Campo como Ícone
Symbol Campo como Símbolo
Checkbox Campo como Checkbox Este campo é marcado em
tempo de execução na
tabela interna. Precisamos
informar apenas em ALV
Hierarquico na i_tab de
itens
Just Alinhamento – R (Direita) L
(Esquerda) C (Centralizado)
Lzero Leading zero Omitir zeros em impressão
de relatório

Página: 11

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
no_sign Sem sinal
no_zero Não imprimir campos zerados
no_convext
edit_mask Máscara de Edição
Emphasize Campo em destaque C300
fix_column Fixar Coluna Passando ‘X’
do_sum Totalizar Coluna Exibir total geral do relatório.
no_out Não exibir o campo Quando passamos ‘x’ para
este campo,este campo da
tabela interna estará
disponível somente após o
clique do botão modificar
layout.
Tech
outputlen Tamanho do campo para Largura do campo na saída do
saída dos dados relatório.
Offset
seltext_l Descrição Longa do Campo String de 40 no cabeçalho . O
ref_tabname precisa estar
vazio.
seltext_m Descrição Média do Campo String de 20 no cabeçalho . O
ref_tabname precisa estar
vazio
seltext_s Descrição Curta do Campo String de 10 no cabeçalho . O
ref_tabname precisa estar
vazio
Ddictxt Indicação de Qual descrição Trás do elemento de dados
utilizar - (S)hort (M)iddle do fieldname da ref_tabname
(L)ong as denominações
breve(S),média(M) e longa(L)
respectivamente

rollname Elemento de dados para help


Datatype Tipo do Campo
Inttype Tipo do Campo
Intlen Tamanho do Campo
Lowercase Letra Minúscula
ref_fieldname Campo referência
ref_tabname Tabela referência
Roundfieldname Nome campo para
Arredondamento
Roundtabname Nome tabela
Decimalsfieldname Nome campo para Decimais
Decimalstabname Nome tabela
decimals_out Número de decimais para
escrever um número
text_fieldname
reptext_ddic Texto para a coluna
ddic_outputlen Tamanho do Campo
key_sel field not obligatory
no_sum Não totalizar o campo
sp_group Grupo Em qual grupo de campo será
enquadrado este campo.
Reprep
Input Campo como input de dados
Edit Uso interno
Hotspot Campo como hotspot

Página: 12

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
Definir cabeçalho (apenas para o grid)

Passo 15 – Declarar a estrutura do tipo slis_t_listheader.


Ex: data : s_top type slis_t_listheader .

Passo 16 – Perform zf_top using s_top.


No form codificaremos como abaixo:
form zf_top using p_s_top type slis_t_listheader.
data: ls_line type slis_listheader.
clear ls_line.
ls_line-typ = 'H'.
ls_line-info = 'Treinamento ALV'.
append ls_line to p_s_top.

clear ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Aspen RJ'.
ls_line-info = 'Treinamento ALV'.
append ls_line to p_s_top.

clear ls_line.
ls_line-typ = 'A'.
ls_line-key = 'Aspen RJ'.
ls_line-info = 'Treinamento ALV'.
append ls_line to p_s_top.
Endform.

No campo TYP deverá ser informado :


H – Header
S – Selection
A – Action

Passo 17 - form top_of_page .O nome deste form será passada para a função de impressão
do ALV.

Antes de passar a figura como parâmetro pa a função,cadastrar a figura no Business


Document Navigator:
Transação:0fpm002
Nome de Classe:pictures
Categoria:OT
Chave de objeto: Nome desejado que quiser.Vamos usar ALVFIGURA.

Página: 13

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = s_top
i_logo = 'ALVFIGURA'.

Somente para o hierárquico


Vamos definir as ligações entre as tabelas para as quebras no momento da impressão.
Passo 18 - Declarar a estrutura do tipo slis_keyinfo_alv.
Data: s_keyinfo type slis_keyinfo_alv.
Passo 19 - s_keyinfo-header01 = 'Campo_tabela_header'.
s_keyinfo-item01 = ‘Campo da tabela de item'.

Parâmetros de impressão

Passo 20 – declarar a estrutura do tipo slis_print_alv.


Ex: data: s_print type slis_print_alv.
Codificar: s_print-no_print_selinfos = 'N'.
s_print-no_print_listinfos = 'N'.

Campo Descrição
prnt_info Informações de Impressão
Print
prnt_title
no_coverpage
no_new_page
reserve_lines Linhas reservadas para o final da página
no_print_listinfos Não imprimir página com número de registros
selecionados
no_change_print_params Não alterar tamanho de linha
no_print_selinfos Não mostrar informações de impressão

Seleção e tratamento dos Dados

Passo 21 – Neste passo, carregamos a nossa tabela interna de saída com os dados já
processados para a exibição de nosso relatório.

Página: 14

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
O Display do relatório

Como já falamos anteriormente, existem 3 tipos de relatório ALV:(List, Hierarquico e


Grid).
OBS: antes de criarmos os forms set_pf_status e user_command, comentar os parâmetros
das funções i_callback_pf_status_set e i_callback_user_command .

Página: 15

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
Passo 22 – Utilizar uma das funções de ALV para saída de nosso relatório.

Para o LIST

call function 'REUSE_ALV_LIST_DISPLAY'


exporting
i_callback_program = c_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'it_saida'
is_layout = s_layout
it_fieldcat = s_fieldcat
it_sort = s_sort[]
* - Parâmetro p/executar sempre com a variante default
i_default = ‘X’
* - Se é possível salvar as variantes
i_save = 'A'
* - Nome da variante selecionada
is_variant = variante
is_print = s_print
it_special_groups = s_grupos[]
tables
t_outtab = it_saida.

Para o hierárquico

call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'


exporting
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = s_layout
it_fieldcat = s_fieldcat[]
it_special_groups = s_grupos[]
* - Parâmetro p/executar sempre com a variante default
i_default = ‘X’
* - Se é possível salvar as variantes
i_save = 'A'
* - Nome da variante selecionada
is_variant = variante
i_tabname_header = 'IT_CABECALHO'
i_tabname_item = 'IT_ITEM'
is_keyinfo = s_keyinfo
is_print = s_print
tables
t_outtab_header = it_CABECALHO
t_outtab_item = it_ITEM.

Página: 16

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

Para o grid:

call function 'REUSE_ALV_GRID_DISPLAY'


exporting
i_callback_program = c_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = s_layout
it_fieldcat = s_fieldcat[]
it_sort = s_sort[]
* - Parâmetro p/executar sempre com a variante default
i_default = ‘X’
* - Se é possível salvar as variantes
i_save = 'A'
* - Nome da variante selecionada
is_variant = variante
is_print = s_print
i_screen_start_column = 0
i_screen_start_line = 0
i_screen_end_column = 0
i_screen_end_line =0
it_special_groups = s_grupo[]
tables
t_outtab = t_ordem
exceptions
program_error =1
others = 2.
if not sy-subrc is initial.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

endif.

Tratamento de evento USER_COMMAND e criação de PF-STATUS


Agora que já aprendemos a gerar o ALV, reparamos em sua barra de botões que ele trás
botões default pelas funções de saída, mas haverá a necessidade em algumas vezes de
criações de novos botões para o usuário como exemplo abaixo.

Página: 17

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

Para PF-STATUS:

Passo 23 – Criação de um form como no modelo abaixo:


EX: form set_pf_status using extab type slis_t_extab.
set pf-status 'NOME' excluding extab.
Endform.

Para criação do pf-status, nós iremos repetir alguns botões que vinham através das funções.
Para que esses botões continuem não precisando de tratamento é necessário que se saiba o
nome da função standard de cada botão.Abaixo temos a relação.

%PC File local...


%SL Destinatário de correio eletrônico
&ABC Análise ABC
&AQW Processamento de texto...
&AVE Gravar layout...
&ETA Detalhes
&F03 Voltar
&F12 Cancelar
&F15 Encerrar
&GRAPH Gráfico
&ILT Definir filtro
&INFO Informação
&OAD Selecionar layout...
&ODN Ordenação decrescente
&OL0 Modificar layout...
&OUP Ordenação crescente
&RNT_PREV Pré-visualiz.impressão
&SUM Subtotais
&UMC Total

Página: 18

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
&VEXCEL Microsoft Excel

Uma outra forma de adquirir o nome destas funções é com os procedimentos abaixo:
1. Pressionar o botão esquerdo do mouse encima do botão;
2. Pressionar a tecla F1;
3. Soltar o botão esquerdo do mouse.

Passo 24 – Declaração de uma estrutura do tipo slis_selfield para o Drill Down e uma
variável do tipo sy-ucomm.
Ex: s_selfield type slis_selfield.
V_ucomm like sy-ucomm.

Abaixo os campos principais da estrutura slis_selfield em detalhes:

TABNAME Nome da tabela interna de saída do ALV


TABINDEX Índice do clique na tabela interna de saída
SEL_TAB_FIELD Tabela-interna-campo do clique
VALUE Valor da célula do clique
REFRESH Reexecuta o ALV
FIELDNAME Campo do clique(coluna)

Para user_command
Passo 25 – Para tratamento destes botões e drill down vamos criar um PERFORM USER_
COMMAND como modelo abaixo:
Ex: perform user_command using v_ucomm
s_selfield.
E o form:
Ex: form user_command using p_v_ucomm
p_s_selfield type slis_selfield.

Tratamento de Botões:
Ex:
Case p_v_ucomm.
When ‘BOTÃO1’.
Commandos;
When ‘BOTÃO2.
Comandos;
Endcase.
Tratamento de Drill-Down:
Ex:
case p_s_selfield-sel_tab_field.
When ‘tab_int-campo1’.
Para ler linha do clique.
Read table tab_int index p_s_selfield-tabindex.
Valor da célula do clique
set parameter id 'ALV' field p_s_selfield-value.
call transaction 'ALV' and skip first screen.

Página: 19

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

When ‘tab_int-campo2’.
Comandos;

Endcase.

Tratamento de Drill-Down disparando tela popup HTML:

Ex:
case p_s_selfield-sel_tab_field.
When ‘tab_int-campo1’.

CALL SCREEN '0100' STARTING AT 6 6 ENDING AT 90 20.

Página: 20

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

PBO
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR 'teste'.

ENDMODULE. " STATUS_0100 OUTPUT

Página: 21

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
module gera_objeto output.

Instanciando o objeto container


Na declaração fazer como abaixo:

Data :o_container type ref to cl_gui_custom_container.


Constants: c_container(4) value 'HTML'.

perform f_criar_container using o_container c_container.

form f_criar_container using


p_object type ref to cl_gui_custom_container
p_container.

create object p_object


exporting

container_name = p_container.
Endform.

Instanciando objeto html


Na declaração fazer como abaixo:
Data: o_html type ref to cl_gui_html_viewer.
perform f_criar_html using o_html
o_container.
form f_criar_html using
p_object type ref to cl_gui_html_viewer
p_container type ref to cl_gui_custom_container.

Instanciando o objeto - HTML


create object p_object
exporting
parent = p_container.

endform. " f_criar_html

endmodule. " gera_objeto OUTPUT

module gera_html output.


Cabeçalho HTML
Na declaração fazer como abaixo:

Data: t_html like w3html occurs 0.

perform f_criar _html tables t_html.

CLEAR : t_html.
REFRESH : t_html.

* start HTML;

wa_html = '<HTML><HEAD><TITLE> Teste com a tag img</TITLE></HEAD>'.


t_html = wa_html.
APPEND t_html.

CONCATENATE '<BODY><H1><CENTER>Imagem</H1>'</CENTER></BODY></HTML>' INTO


wa_html.
t_html = wa_html.
APPEND t_html.

Página: 22

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

* Finalizando página

* perform f_fim_html tables t_html.

perform f_exibe_html using o_html.

FORM f_exibe_html USING p_object TYPE REF TO cl_gui_html_viewer.

DATA : v_doc_url(80).

CALL METHOD p_object->load_data


EXPORTING
type = 'text'
subtype = 'html'
IMPORTING
assigned_url = v_doc_url
CHANGING
data_table = t_html
EXCEPTIONS
dp_invalid_parameter = 1
dp_error_general = 2
cntl_error = 3

OTHERS = 4
.

CALL METHOD p_object->show_data


EXPORTING
url = v_doc_url
EXCEPTIONS
cntl_error = 1
cnht_error_not_allowed = 2
cnht_error_parameter = 3
dp_error_general = 4
OTHERS = 5
.

ENDFORM. " f_exibe_html

PAI

MODULE user_command_0100 INPUT.

* Liberando objeto HTML


PERFORM f_libera_html USING o_html.
FORM f_libera_html USING
p_object TYPE REF TO cl_gui_html_viewer.

CALL METHOD p_object->free.

ENDFORM. " f_libera_html

* Liberando o objeto container


PERFORM f_libera_container USING o_container.
FORM f_libera_container USING
p_object TYPE REF TO cl_gui_custom_container.

CALL METHOD p_object->free.

ENDFORM.
SET SCREEN 0.
LEAVE SCREEN.

ENDMODULE.

Página: 23

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

Adicionar Cores em células do ALV

Exitem duas formas de adicionar cores:


1-Uma passando para o campo emphasize da fieldcat:
Valores para emphasize.Lembrando que desta forma aplicaremos a cor a coluna
inteira.Observe os efeitos na segunda coluna dos relatórios exemplo:

C100,C101 e C110

Página: 24

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
C200,C201 e 210

C300,C301 e C310

C400,C401 e C410

Página: 25

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

C500,C501 e C510

C600,C601 e C610

C700,C701 e C710

Página: 26

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

2-Colorindo células específicas

Passo1:Declarar um campo na tabela interna de saída do ALV com o tipo lvc_t_scol.


Ex: begin of it_saida occurs 0,
Campo 1 like …….,
COLINFO type lvc_t_scol,
End of it_saida.

Passo2: Criar uma tabela interna de mesmo tipo com header line.
EX: data: gt_color type lvc_t_scol with header line.

Passo3: Na estrutura s_Layout campo coltab_fieldname passar o nome do campo da tabela


interna de saída que conterá as cores.
Ex: s_layout-coltab_fieldname = ‘COLINFO’.

Passo4: Lógica exemplo de campos que iremos colorir.

EX: loop at t_saida.


gt_color-fname = 'WKGBTR'.
gt_color-color-int = '1'.
gt_color-color-inv = '0'.
gt_color-color-col = '6'.

Página: 27

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)
append gt_color.

t_saida-colinfo[] = gt_color[].

modify t_saida.

Endloop.

TOP-OF-PAGE no ALV Hierárquico


Passo1: Criar duas estruturas:

Data:t_eventosheader type slis_alv_event,


T_eventos type slis_t_event.

Passo2: Criar antes da chamada da função de saída Perform zf_evento carregando a


t_eventos.

FORM f_evento.

t_headerline-name = 'TOP_OF_PAGE'.
t_headerline-form = 'TOP_OF_PAGE'.
APPEND t_headerline TO t_eventos.

ENDFORM.

Passo3: De acordo com o exemplo anterior crie um FORM top_of_page e dentro do


mesmo insira comandos de um Report comum conforme a necessidade como no exemplo:

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.


WRITE: t_ekko-kdatb,
sy-vline, t_ekko-kdate,
sy-vline, t_ekko-waers.

NEW-LINE NO-SCROLLING.
WRITE: sy-uline(66).
SKIP.

Passo4: Na função de saída (REUSE_ALV_HIERSEQ_LIST_DISPLAY) passe para o parâmetro


it_events a tabela que contém os eventos,no caso do exemplo seria it_events = t_eventos[].

Página: 28

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version
ALV(ABAP LIST VIEWER)

Qualquer sugestão de alterações ou acréscimos deste documento passarem para


mailto:osmar.araujo@procwork.com.br

Página: 29

Create PDF with PDF4U. If you wish to remove this line, please click here to purchase the full version

Das könnte Ihnen auch gefallen