Você está na página 1de 31

Treinamento de ALV 2006

Por Osmar Antunes de Araújo Júnior


INTRODUÇÃO..................................................................................................................4

REUSE_ALV_GRID_DISPLAY E LIST_DISPLAY...........................................................5
I_CALLBACK_PROGRAM............................................................................................5
I_CALLBACK_PF_STATUS_SET.................................................................................5
I_CALLBACK_USER_COMMAND............................................................................... 8
I_CALLBACK_TOP_OF_PAGE.................................................................................... 9
REUSE_ALV_COMMENTARY_WRITE......................................................................9
IT_LIST_COMMENTARY.................................................................................................................................... 9
i_LOGO............................................................................................................................................................... 9
I_CALLBACK_HTML_TOP_OF_PAGE E I_CALLBACK_HTML_END_OF_PAGE.....11
I_STRUCTURE_NAME...............................................................................................13
I_BACKGROUND_ID..................................................................................................13
I_GRID_TITLE............................................................................................................ 13
I_GRID_SETTINGS....................................................................................................13
IS_LAYOUT.................................................................................................................14
IT_FIELDCAT..............................................................................................................17
Posicionamento do Campo....................................................................................17
col_pos.............................................................................................................................................................. 17
Identificação............................................................................................................17
Fazer referência ao dicionário de dados..............................................................17
Moeda........................................................................................................................17
Quantidade................................................................................................................18
Opções de saída para campo................................................................................18
tech (Campo Técnico)....................................................................................................................................... 18
emphasize......................................................................................................................................................... 18
Formatação de Campos.........................................................................................19
Textos.......................................................................................................................20
seltext_l............................................................................................................................................................. 20
seltext_m........................................................................................................................................................... 20
seltext_s............................................................................................................................................................ 20
Ddictxt............................................................................................................................................................... 20
Parâmetros relevantes p/ programas que não fazem referência ao dicionário
de dados + adicionais.............................................................................................20
datatype (Tipo de dados)................................................................................................................................... 20
Lowercase(Letra minúscula)............................................................................................................................. 20
sp_group........................................................................................................................................................... 20
Input.................................................................................................................................................................. 20
Edit.................................................................................................................................................................... 21
Tech................................................................................................................................................................... 21
IT_EXCLUDING..........................................................................................................21
IT_SPECIAL_GROUPS..............................................................................................22
IT_SORT..................................................................................................................... 23
I_SAVE(VARIANTES)......................................................................................................24
IS_VARIANT(IMPORTANTÍSSIMO PARA INTERAÇÃO DO USUÁRIO).....................................24
INITIALIZATION........................................................................................................24
At Selection-Screen On Value-Request................................................................26
at selection-screen..................................................................................................27
IS_PRINT(PARÂMETROS DE IMPRESSÃO).......................................................................27
IT_EVENTS.................................................................................................................28
REUSE_ALV_HIERSEQ_LIST_DISPLAY......................................................................30
is_keyinfo......................................................................................................................30
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 possíveis de ALV que nós faremos neste curso: ALV GRID , ALV LIST e
ALV HIERARQUICO .
Porquê da utilização de um relatório ALV?

ALV é uma ferramenta flexível para disparar listas . Esta ferramenta fornece opções
standard para melhor interação do usuário com o relatório de forma default ou que
pode ser customizada pelo ABAP ou não.

O ALV fornece funções que necessitariam de lógica adicional em um relatório


comum .Por exemplo , ordenação , filtragem de campos de dentro do relatório e
totalização e subtotalização de campos . Nós ABAPS podemos customizar e adicionar
funções de acordo com a necessidade.
Existem várias maneiras de utilizar as funções “REUSE_ALV*” , entendendo como os
parâmetros das funções que disparam o ALV funcionam , dominaremos o ALV.

Entendimento de parâmetros relevantes das funções que disparam o relatório ALV.

Existem 3 funçoes básicas de acordo com a maneira de como queremos a saída de


nosso relatório : Grid , List ou Hierárquico .

REUSE_ALV_GRID_DISPLAY
REUSE_ALV_LIST_DISPLAY
REUSE_ALV_HIERSEQ_LIST_DISPLAY

Lembrando que quanto menos parâmetros usarmos , mais o reltório respeitará o


programa SAPLSLVC_FULLSCREEN com opções que considera Default .

Pra entender mais profundamente o ALV , ver o grupo de função SALV.


REUSE_ALV_GRID_DISPLAY e LIST_DISPLAY
I_CALLBACK_PROGRAM
Para este parâmetro devemos passar o programa em que a função é chamada e em
que terá as sub-rotinas ( forms ) para execução . O programa deverá sempre ser um
report , módulo de função ou até mesmo um module Pool . Nunca um INCLUDE .
Nunca passar SY-REPID para a função REUSE_ALV_GRID_DISPLAY . Pode conter
por exemplo um include e trará problemas para a execução . Devemos sempre utilizar
uma variável que auxilie e passe o programa correto através do INITIALIZATION .

I_CALLBACK_PF_STATUS_SET
Para este parâmetro devemos passar o nome da rotina form que define o SET PF-
STATUS requerido. Com isto não será usado o Default encontrado em programa
SAPLSLVC_FULLSCREEN com o status gui nome STANDARD_FULLSCREEN .
A rotina FORM deverá ser montada usando os seguintes parâmetros como no FORM
abaixo :

FORM set_pf_status USING rt_extab TYPE slis_t_extab .

Set pf-status ‘NOME’.

Endform.

Indico que quando quisermos fazer nosso próprio status GUI mas com algumas
funções do standard , copiar SAPLSLVC_FULLSCREEN com o status GUI nome
STANDARD_FULLSCREEN na transação se41.
A rt_extab conterá algumas das funções para execução do ALV STANDARD como
abaixo.

FCODE
&VGRID Visão SAP List Viewer
&AVE Gravar layout...
&ERW Administração dos
layouts(VARIANTES)
&OAD Selecionar layout...
&OLX Modificar layout...
&CRB
&CRE
&CRR
&CRL
&SUM Subtotais
&AUF Determinar lista expandida
de totais...
&ILD Eliminar filtro
&ILT Definir Filtro
&ALL Marcar tudo
&SAL Desmarcar Tudo
P-- Page Down
P- Desce um nível de
página
P++ Page UP
P+ Sobe um nível de página
&XINT
&REFRESH Renovar/atualizar
&DATA_SAVE Gravar

Outros Códigos de Função que não vem no Form mas vem se não usa-los devido ao
standard
&RNT_PREV Visualização de Impressão
&RNT Impressão
&CRBATCH Crystal Reports impressão em
background
&AQW Processamento de texto...
&XXL Planilha eletrônica...
%PC File local...
&XINT Arquivo ampliado do SAP Query
&CRTEMPL File Crystal Reports
&URL Arquivar URL em clipboard
&OUP Ordenação crescente
&ODN Ordenação decrescente
&UMC Total
&AVR Valor médio
&MIN Mínimo
&MAX Máximo

%SC Procurar
%SC+ Continuar pesquisa
&ABC Análise ABC
&CRDESIG Crystal Reports
&VEXCEL Visão Microsoft Excel
&VLOTUS Visão Lotus 1-2-3
&VCRYSTAL Visão Crystal Reports
&OPT Largura coluna ótima
&CFI Fixar até coluna
&CDF Suspender fixação de colunas
&ETA Detalhes
%SL Destinatário do e-mail
&ABC Análise ABC
&GRAPH Visão gráfico
&F15 Inserir Linhas
&F12 Cancelar
&F03 Voltar
&INFO Informação

Exemplo básico para utilização

FORM set_pf_status USING rt_extab TYPE slis_t_extab .

Set pf-status ‘NOME’.

Endform.

OBS: Completamente dependente do parâmetro I_CALLBACK_PROGRAM


I_CALLBACK_USER_COMMAND

Para este parâmetro devemos passar o nome da rotina form que definirá o evento
USER-COMMAND requerido.
A sua uitilação é para os fins que o ALV standard não disponibiliza . Por exemplo se
criarmos um código de função a mais no set pf-status copiado do Standard , devemos
codificar esta função para que tenha alguma ação .

A rotina FORM deverá ser montada usando os seguintes parâmetros como no FORM
abaixo :

FORM user_command USING r_ucomm LIKE sy-ucomm


rs_selfield TYPE slis_selfield.

Onde r_ucomm conterá o código de função(botão ou opção de menu) clicado.

Obs : O código de função &IC1 corresponde sempre ao duplo clique ou clique


único quando campo possui hotspot .

E rs_selfield especificado com campos relevantes como abaixo :

Tabname Nome da Tabela interna de saída


Tabindex Ìndice da tabela interna de saída em que
foi efetuada a ação do click
Fieldname Nome do campo da tabela interna de saída
Endsum Fica X quando clicamos em linha de totais
Sumindex Indice só para sutotais
Value Valor da Célula Clicada
Refresh Reexecuta ALV com os novos dados de
tabela interna .
Exit Se X sai da lista ALV .
Sel_tab_field Nome do campo da tabela interna de saída
da CÉLULA clicada
I_CALLBACK_TOP_OF_PAGE

Passamos para este parâmetro o nome da rotina form que imprimirá informações de
cabeçalho .

De dentro deste form podemos chamar a função


REUSE_ALV_COMMENTARY_WRITE que é responsável pela formatação da
impressão de cabeçalho.

REUSE_ALV_COMMENTARY_WRITE

IT_LIST_COMMENTARY

Este parâmetro é do tipo slis_t_listheader

Typ Key Info


H X
S X X
A X

i_LOGO

O nome da chave do objeto ó que passamos para este parâmetro .


Document Navigator:
Transação:0fpm002
Nome de Classe:pictures
Categoria:OT
Chave de objeto: Nome desejado
A tabela onde se encontra estes objetos é a BDS_CONN05.

Uma forma exemplo para uso deste form .

FORM top_of_page.
DATA : s_top TYPE slis_t_listheader .
DATA: ls_line TYPE slis_listheader.

REFRESH : s_top .
CLEAR ls_line.

ls_line-typ = 'H'.
ls_line-info = 'Bem vindo ao treinamento'.
APPEND ls_line TO s_top.
CLEAR ls_line.
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Aspen RJ'.
ls_line-info = 'Treinamento ALV'.
APPEND ls_line TO s_top.

CLEAR ls_line.
ls_line-typ = 'A'.
ls_line-info = 'Treinamento ALV'.
APPEND ls_line TO s_top.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'


EXPORTING
it_list_commentary = s_top[]
I_LOGO = ‘LOGO’
* I_END_OF_LIST_GRID = 'X'
.

ENDFORM.
I_CALLBACK_HTML_TOP_OF_PAGE e I_CALLBACK_HTML_END_OF_PAGE

Se o parâmetro I_CALLBACK_TOP_OF_PAGE não estiver sendo utilizado , podemos


passar o nome de uma subrotina Form no seguinte formato .

FORM top_of_page_html USING cl_dd TYPE REF TO cl_dd_document.

DATA: l_texto TYPE sdydo_text_element,


l_table TYPE REF TO cl_dd_table_element,
l_column TYPE REF TO cl_dd_area.

4 etapas básicas para este treinamento :


Criação da tabela
Criar Coluna
Definir estilo da Colula
Adicionar texto

Criar tabela
CALL METHOD CL_DD->add_table
EXPORTING
no_of_columns = 3 " Número de Colunas
border = '1' " ESPESSURA DA BORDA
width = '100%' " ÁREA TOP UTILIZADA
IMPORTING
table = l_table.

Adicionar coluna à tabela


CALL METHOD l_table->add_column
EXPORTING
width = '35%'
IMPORTING
column = l_column.

Definir estilo de coluna


CALL METHOD l_table->set_column_style
EXPORTING
col_no = 1
sap_align = 'LEFT'.

Adicionar Texto
CALL METHOD l_column->add_text
EXPORTING
text = 'Linha1'
sap_fontsize = cl_dd_area=>large
sap_emphasis = cl_dd_area=>strong.
CL_DD_AREA
SAP_FONTSIZE LARGE , MEDIUM OU SMALL
SAP_EMPHASIS EMPHASIS OU STRONG

OBS: Para Pular Linha , usamos CALL METHOD l_column->new_line.

OBS: Para adicionar Figura UTILIZAR MÉTODO COMO ABAIXO.

CALL METHOD CL_DD->add_picture


EXPORTING
picture_id = 'ALV_BACKGROUND'
WIDTH = '100'
ALTERNATIVE_TEXT = 'Não sai na impressão'
.
I_STRUCTURE_NAME

Passamos o nome de uma estrutura ou tabela para este parâmetro , e ele define
automaticamente a estrutura de catálogo de campos(Field Catalog) para saída do
relatório . Um pré-requesito para esta funcionalidade é a necessidade de a tabela
interna de saída estar com INCLUDE STRUCTURE (Tabela ou estrutura) ou LIKE
tabela .

O Catalogo de campos é então definido internamente com os campos correspondentes


da estrutura da seguinte forma :

 Todos os campos são setados para saída default (NO_OUT = SPACE) exceto
campos do tipo CLNT. O campo mandante por exemplo é deste tipo .

 Os campos chave definidos tambem como chave no catalogo de campos .

 Os campos adicionais colocamos na estrutura correspondente de catálogo de


campos .

I_BACKGROUND_ID

Passamos para este parâmetro figura cadastrada em OFPM005 . Serve para


TOP_OF_PAGE e para html_end_of_list .

I_GRID_TITLE

Define-se um título no corpo do Grid.

I_GRID_SETTINGS

COLL_TOP_P Passando X minimiza TOP_OF_PAGE


COLL_END_L Passando X minimiza END_OF_LIST
EDT_CLL_CB Chamar data_changed quando célula for
editada
IS_LAYOUT

De acordo com o que passamos para os campos desta estrutura , definimos a saída do
relatório como um todo .

Campo Valores possíveis Funcionalidade


Opções de saída
simples
Colwidth_optimize X ou space Otimização de largura de colunas
no_colhead X ou space Não aparece títulos de coluna

Zebra X ou space Cor sim / Cor não

no_vline X ou space Sem linhas verticais


max_linesize Número inteiro Aumentar largura de lista
Excessões
Lights_fieldname Nome do campo da tabela Valores na itab
interna de saída que contém '1' = red traffic light
o código de exceção '2' = yellow traffic light
‘3' = green traffic light
Lights_tabname Nome da tabela interna de
saída
Lights_rollname Nome do elemento de dados Aparecerá a documentação deste
elemento de dados
Lights_condense X ou space
Totais
no_sumchoice X ou space Sem escolha para Somar para
cima
no_totalline X ou space Impede linha de totais
no_subchoice X ou space
no_subtotals X ou space Impede linha de subtotais
Totals_only X ou space Comprime linhas pa somente
totais
subtotals_text String Texto para subtotais
numc_sum X ou space Define totais para campos
numéricos . Requer que na
parametrização da que o campo
numérico desejado na fieldcat , o
campo do_sum ‘X’
Interação
box_fieldname Nome do Campo BOX na Campo deverá ser de um caracter
tabela interna de saída . e deverá aceita X os space
box_tabname Nome da tabela interna de
saída que conterá o ‘BOX’
expand_fieldname Nome do campo expansão
para ALV Hierarquico
F2code Passamos um código de Para usar a tecla F2 como atalho
função quando estamos deste código de função. Exemplo :
usando a interface do layout-f2code = ‘&ETA’
standard
Confirmation_prompt X ou space Se uma das funções 'Back(F03)',
'Exit(F15)' or 'Cancel(F12)' forem
disparadas , ele pergunta se
deseja realmente sair da lista
Key_hotspot X ou space As colunas definidas como chave
no catálogo de campos
(FIELDCAT-KEY = 'X') são
disparadas com hotspot . Com
isso um duplo clique será um com
clique especialmenrte nestes
campos
Reprep X ou space
Detalhes
detail_initial_lines X ou space X = Todos os campos em detalhes
Space – Campos iniciais não são
mostrados
detail_titlebar ‘STRING’ Passamos o título desdejado para
tela de detalhes
countfname Nome do campo do tipo
interior da tabela interna de
saída
Cores
Info_fieldname Nome do campo de 3 Este campo deverá ser foma do
caracteres que definirá a cor da seguinte forma
da linha da tabela interna de 'Cxy'
saída ao disparar o relatório C – fixo
X – Número da cor de 1 a 9
Y - Intensified ('0' = off, '1' = on)
coltab_fieldname Nome da tabela Podemos colorir as células
interna(campo) declarado individualmente especificando o
na tabela interna de saída campo ou os campos da linha que
como tipo lvc_t_scol queremos colorir e com quais
cores . As células serão coloridas
através de códigos de cores .
Criar estrutura auxiliar
gt_color com header line Ex: loop at t_saida.
para evitar problemas em gt_color-fname = 'WKGBTR'.
tempo de execução gt_color-color-int = '1'.
gt_color-color-inv = '0'.
FName – nome do campo a gt_color-color-col = '6'.
ser colorido na linha append gt_color.
corrente
COLOR-COL – Número da t_saida-colinfo[] = gt_color[].
cor de 1 a 9 modify t_saida.
COLOR-INT - Intensified (0 Endloop.
= off, 1 = on) OBS: Se não especificar o NAME ,
COLOR-INV - Inverse (0 = ele colorirá toda a linha corrente
off, 1 = on)
NOKEYCOL - Ignorar cor de
campo chave ('X' = sim, ' ' =
não)
IT_FIELDCAT

Para esta tabela interna (IT_FIELDCAT) definimos os campos da tabela interna de


saída que queremos que estejam disponíveis para exibição no nosso relatório ALV .

O catálogo de campos pode ser gerado de três maneiras :

1. Passando a estrutura para I_STRUCTURE_NAME para a função de saída.

2. Inserindo campo a campo no catálogo de acordo com as características que


cada um necessitar e adicionar campo que faltem.

3. Utilizando a função REUSE_ALV_FIELDCATALOG_MERGE .

Posicionamento do Campo
col_pos

Podemos desconsiderar a passagem de valor para este campo . Mas com isso ele
respeitará a ordem dos registros na tabela interna (IT_FIELDCAT) . Mas querendo
definir a ordem , podemos passar de 1 a 60 para o mesmo .

Identificação
Fieldname – Nome do campo da tabela interna de saída . Parâmetro obrigatório para
saída .

Tabname – Nome da tabela interna de saída .

Fazer referência ao dicionário de dados


ref_fieldname (Campo de referência do dicionário de dados)

Importante passarmos o nome deste campo quando o campo na tabela interna não
estiver fazendo referência na sua declaração a um campo do dicionário ou se o nome
do campo não for o mesmo do campo que ele faz referência no dicionário .

Moeda
Currency - Moeda
Cfieldname - Campo com Unidade de Moeda
Ctabname - Tabela referência para Unidade Moeda
Quantidade

Quantity Unidade de Medida


qfieldname Campo com Unidade Medida
Qtabname Tabela com Unidade Medida

Opções de saída para campo


Outputlen (Largura do campo)

Quando fazemos referência ao campo no dicionário de dados(DOMÍNIO) ele busca


esta referência para saída deste campo . Se não informamos a referência , podemos
passar a largura default .

Key (Coluna Chave)

Podemos definir quantas colunas chaves quisermos para saída do relatório passando X
para este campo .

Key_sel (Campo Chave não obrigatório)

no_out (Não sair na saída Default)

Passando X para este campo , ele não sairá na saída default do relatório. Aparecerá se
houver a mudança de layout(ícone alterar layout)

tech (Campo Técnico)

emphasize

Cor em campo em todas as linhas .

O formato para passagem de valor deste campo é X ou :]


'Cxyz' (x:'1'-'9'; y,z: '0'=off '1'=on)
C: Código para entrada de cor
x: Color number
y: Intensified
z: Inverse

hotspot (Coluna com Hotspot)

Valor para efeito deste campo é ‘X’.


do_sum (Calcular totais para a coluna)

Valores possíveis: SPACE, 'X'

'X' = Totais são calculados para este campo da tabela interna de saída .

no_sum (Não totalizar o campo)

Formatação de Campos
icon (Campo como Ícone)

Passamos X para este campo quando quisermos que o campo em questão seja exibido
como ícone .

Symbol (Campo como Símbolo)

Passamos X para este campo quando quisermos que o campo em questão seja exibido
como símbolo .

just (justificar)

‘R' = Justificado a direita


'L' = Justificado a esquerda
'C' = Centralizado

lzero (Tirar zeros a esquerda de campos numéricos)

Valores possíveis: SPACE, 'X'

no_sign (no +/- sign)

Apenas relevante para campos de valor . Saída sem sinais +/- .

no_zero (suprimir zeros)

Apenas relevante para campos de valor .

edit_mask (Formatação de campo com máscara)

Valores possíveis : SPACE , a máscara .

Ver documentação da instrução WRITE com opção de formatação com USING EDIT
MASK máscara.
Textos

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 utilizar - (S)hort (M)iddle
(L)ong ou R
Trás do elemento de dados do fieldname da ref_tabname as denominações
breve(S),média(M) e longa(L)

Parâmetros relevantes p/ programas que não fazem referência ao dicionário de


dados + adicionais

datatype (Tipo de dados)

Tipo de dados do dicionário de dados (CHAR, NUMC,...). Importante apenas quando


não passamos a referência do dicionário de dados .

Round(Arredondar Campos possíveis)

fix_column(Fixar coluna com X)

Lowercase(Letra minúscula)

sp_group

Grupo de campos que pertencerá o campo .

Input

Passando X , as entradas serão possíveis .


Edit

Passando X , campo fica editável .

Tech
Passando X para este campo , o campo não será disponibilizado para exibição .

IT_EXCLUDING

Usamos este parâmetro quando utilizamos a interface standard do ALV e não


quisermos utilizar alguns códigos de função . Devemos passar para este parâmetro
uma tabela interna de mesmo tipo do parâmetro com os códigos de função que não
queremos .
IT_SPECIAL_GROUPS

Uma das principais funcionalidades é a boa interface que oferece para modificação e
criação de layouts para o usuário .

Campo Descrição
Sp_group Nome do grupo e é este campo que
passamos para FIELDCAT-SP_GROUP
text Descrição do Grupo
IT_SORT

Basicamente este parâmetro consiste em ordenar os campo na saída default .

Os campos a seguir são os campos da IT_SORT :

Campo Funcionalidade
Spos Prioridade de ordenação
Fieldname Nome do campo natabela interna de
saída
Tabname Nome da tabela interna de saída
Up Ordenação crescente
Down Ordenação decrescente
Subtotal A cada quebra deste campo , um
subtotal
Expa Prerequisito : IT_SORT-SUBTOT = 'X'
Obligatory Obrigatoriedade de campo
Comp Uso interno
Group 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.
I_DEFAULT

Space – Não pode salvar variantes como default .


X – Pode salvar variantes como defaut

I_SAVE(Variantes)

‘ ‘ e X Não poderá salvar variantes específicas de usuário.


U Sempre que salvar as variantes , estas serão específicas de usuário
A Sempre que salvar as variantes , estas poderão ou não ser específicas de
usuário

O flag CONFIGURAÇÃO PRELIMINAR determina que a variante é a default .

Podemos definir a variant que queremos que exiba na primeira impressão do relatório
ALV usando o parâmetro abaixo.

IS_VARIANT(Importantíssimo para interação do usuário)

Para que este paraâmetro funcione perfeitamente , passa para o parâmetro


I_DEFAULT = SPACE

REPORT Nome do programa ABAP corrente


HANDLE ID controle p/chamadas múltiplas a partir do mesmo programa interno
LOG_GROUP Conceito lógico de grupo
USERNAME Nome do usuário para gravação específica do usuário
VARIANT Layout – nome da variante salva
TEXT Denominação layout
DEPENDVARS Vetor para entradas de variante dependentes

Existem algumas funções interessantes para preenchimento desta work área e


seguimento de padrão standard .

Devemos criar um parâmetro na tela de seleção que deverá ter a funcionalidade de o


usuário poder escolher uma variante salva por ele , ou executar uma default ou nem
entrar com variante nenhuma.

Dica para criação deste parâmetro é :


p_vari like disvariant-variant. "Layout

OBS : Tabela onde se encontram as variantes é LTDX.


INITIALIZATION

Sabemos que é possível criar variantes que desejamos como default na configuração
preliminar . Para esta busca , devemos utilizar a função :
REUSE_ALV_VARIANT_DEFAULT_GET .
EX:
*&---------------------------------------------------------------------*
*& Form f_buscar_variante_default
*&---------------------------------------------------------------------*
FORM f_buscar_variante_default .
wa_variant-report = v_repid .

def_variant = wa_variant .

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'


EXPORTING
i_save = 'A'
CHANGING
cs_variant = def_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.

IF sy-subrc = 0.
p_vari = def_variant-variant.
ENDIF.

ENDFORM. " f_buscar_variante_default


At Selection-Screen On Value-Request
Para ajuda ao usuário devemos usar uma função para que ele busque apenas as
salvas .

Dicas de uso com a função REUSE_ALV_VARIANT_F4:

*&---------------------------------------------------------------------*
*& Form f_f4_variante
*&---------------------------------------------------------------------*
FORM f_f4_variante .

DATA : vl_cancel .

CALL FUNCTION 'REUSE_ALV_VARIANT_F4'


EXPORTING
is_variant = wa_variant
i_save = 'A'
i_display_via_grid = 'X'
IMPORTING
e_exit = vl_cancel
es_variant = def_variant
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 vl_cancel = space.
p_vari = def_variant-variant. " recebe variante escolhida
ENDIF.
ENDIF.

ENDFORM. " f_f4_variante


at selection-screen

Devemos validar se a variante que usário atribuiu ao parâmetro , se é existente para o


programa corrente . Utilização da função : REUSE_ALV_VARIANT_EXISTENCE .

*&---------------------------------------------------------------------*
*& Form f_validar_variante
*&---------------------------------------------------------------------*
FORM f_validar_variante .

check NOT p_vari IS INITIAL.

wa_variant-variant = p_vari .

call function 'REUSE_ALV_VARIANT_EXISTENCE'


exporting
i_save = 'A'
changing
cs_variant = wa_variant.

ENDFORM. " f_validar_variante

IS_PRINT(Parâmetros de impressão)

Campo Efeitos Valores Possíveis


prnt_info Se X imprime data , título X ou Space
do programa e página
Print Imprimir direto sem exibição X ou Space
NO_PRINT_LISTINFOS Se ‘X’ não imprimir X ou Space
informações adiocionais de
filtro e subtotais fisicamente
na impressora
IT_EVENTS

Para buscar toda a lista de eventos possíveis para o ALV , utilizamos a função :

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'


EXPORTING
I_LIST_TYPE =0
IMPORTING
ET_EVENTS = it_events
EXCEPTIONS
LIST_TYPE_WRONG =1
OTHERS =2
.
Onde i_list_type pode ser :

0 = simple list REUSE_ALV_LIST_DISPLAY e


REUSE_ALV_GRID_DISPLAY
1 = hierarchcal-sequential list REUSE_ALV_HIERSEQ_LIST_DISPLAY

Os eventos normalmente possíveis nesta tabela interna são :


Chamado assim que sair de uma célula editada .
DATA_CHANGED Pré –requesito é wa_grid_set-EDT_CLL_CB = 'X'..
Usado para o topo da lista na função
Reuse_alv_List_display e imprime no fim do
END_OF_LIST relatório
END_OF_PAGE Escreve ao fim de cada página
PF_STATUS_SET Igual a forma como já vimos neste material .
Usado para o topo da lista na função
Reuse_alv_List_display e imprime no início do
TOP_OF_LIST relatório
TOP_OF_PAGE Escreve ao topo de cada página
USER_COMMAND Igual a forma como já vimos neste material .
TOP_OF_LIST e END_OF_LIST

Ex:
*&--------------------------------------------------------------------*
*& Form top_of_list
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM top_of_list .

WRITE ‘Topo da lista’.

ENDFORM. "top_of_list

*&--------------------------------------------------------------------*
*& Form end_of_list
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM end_of_list .

WRITE ‘Fim da lista’.

ENDFORM. "top_of_list
REUSE_ALV_HIERSEQ_LIST_DISPLAY
Apenas falaremos de tópicos especiais , pois muitos dos já falados neste material ,
funcionam para o chamado ALV HIERÁRQUICO .

is_keyinfo
Estrutura que define a cardinalidade entre a tabela de cabeçalho e a tabela de item .
No máximo cinco ligações .