46
Introdução Desenvolver relatórios em ABAP (Advanced Business Application Programing) com um bom visual e recursos avançados não é nada trivial. Imagine desenvolver um relatório com cores, cabeçalho, linha de totais, label de colunas e separadores de colunas. Para piorar um pouco, que permita classificar por qualquer campo, aumentar ou diminuir o tamanho de colunas, gostaria também de poder trocar a posição das colunas, omitir ou exibir campos, totalizar, agrupar, exportar para Excel, etc. Totalmente possível e igualmente inviável sem o uso de funções ALV. O ALV padroniza e simplifica a exibição e operação de listas e relatórios no sistema R/3. Fornece interfaces e formatos padronizados para todas as listas e relatórios. Na apostila vamos ver como criar programas utilizando uma função ALV. Parece pouco, mas todas trabalham de maneira similar. ABAP List Viewer 1

Apostila ALV

Embed Size (px)

DESCRIPTION

Apostila ALV

Citation preview

Introduo

Desenvolver relatrios em ABAP (Advanced Business Application Programing) com um bom visual e recursos avanados no nada trivial.

Imagine desenvolver um relatrio com cores, cabealho, linha de totais, label de colunas e separadores de colunas. Para piorar um pouco, que permita classificar por qualquer campo, aumentar ou diminuir o tamanho de colunas, gostaria tambm de poder trocar a posio das colunas, omitir ou exibir campos, totalizar, agrupar, exportar para Excel, etc.

Totalmente possvel e igualmente invivel sem o uso de funes ALV.

O ALV padroniza e simplifica a exibio e operao de listas e relatrios no sistema R/3. Fornece interfaces e formatos padronizados para todas as listas e relatrios.

Na apostila vamos ver como criar programas utilizando uma funo ALV. Parece pouco, mas todas trabalham de maneira similar.

Relatrios tradicionais

Um relatrio tradicional em ABAP no tem nenhum recurso ou formatao padro. Tudo deve ser programado via cdigo.

Um programa para listar um relatrio como no exemplo acima, j exige muita codificao. Veja que no tem nada de complexo.

Depois de pronto, uma simples alterao no posicionamento dos campos ou no tamanho do papel, j demanda um novo processo de modificao. O usurio no tem os recursos necessrios para resolver o problema.

Qualquer ao no relatrio apresentado, diferente das opes do menu standard do R/3 para esse tipo de listagem, dever ser programado. Uma tarefa nada simples, visto que o programador dever fazer o processo de da e volta, ou seja, o relatrio deve ficar dinmico ao ponto do usurio voltar na situao inicial, aps alguma modificao.

Relatrios ALV

Listagens ALV so dinmicas por definio. O programador vai escolher qual ou quais recursos ir disponibilizar em seu relatrio.

Muito similar a uma planilha do Microsoft Excel, cada coluna perfeitamente ajustvel, podem ser trocadas entre si, as linhas da grade e cores so automticas. Recursos simples que j eliminam um grande esforo de programao, principalmente em alteraes.

Barra de ferramentas

Todos os demais recursos esto concentrados em uma barra de ferramentas que a funo disponiliza junto a barra standard do R/3 (Na parte superior do relatrio). Alguns cones so bem comuns e com funes simples, mas est tudo pronto para o uso, sem digitao de uma linha de cdigo a mais no programa.

Primeiramente, vamos apenas ver uma breve descrio de suas funes:

Selecione uma linha e clique nesse boto. A linha ser destacada em forma de coluna.

Reapresenta do relatrio.

Marca todas as linhas.

Desmarca todas as linhas.

Selecionando uma coluna e clicando nesse boto, todo o relatrio ficar classificado na ordem crescente por essa coluna.

Idem ao anterior, mas a classificao na ordem decrescente.

Voc poder filtrar o seu relatrio baseando-se em valores de campos.

Totaliza a coluna selecionada. A coluna deve conter um valor. Colunas de caracteres no podem ser totalizadas.

Apresenta subtotais de um total geral, para a coluna selecionada. Alguma coluna j deve estar totalizada, seno no haver mudana.

Mostra como ir ficar a impresso do relatrio.

Exporta o relatrio para o Microsoft Excel.

Exporta o relatrio para o Microsoft Word.

Grava o relatrio em arquivo.

Barra de ferramentas

Envia o relatrio via e-mail atravs do SAP Office.

Ranking em curva ABC. obrigatrio selecionar uma coluna de valores. O R/3 solicita algumas informaes e j apresenta o resultado

Mostra o resultado em um grfico.

Permite alterar o modo de apresentao do relatrio.

Recupera algum layout alterado e o aplica no relatrio.

Permite gravar um layout alterado.

Informaes como nmero de registros retornados, filtros sendo utilizados, campos sumarizados, etc. apresentado por esse boto.

Opes standard

Essa barra de ferramentas pode ser configurada, para que o programador tenha possibilidade de criar ou retirar botes. Para tanto basta copiar, por exemplo, o Status-GUI (Que a barra de ferramentas) STANDARD_FULLSCREEN do grupo de funo SLVC_FULLSCREEN para o seu programa e alterar a vontade.

No altere os cdigos de retorno (ok-code) dos botes que voc no ir modificar, deixe como est, pois atravs desses cdigos que a funo ALV sabe o que o usurio escolheu.

Utilize para cpia a transao SE80, veja na figura abaixo os cdigos de retorno standard:

Nem todas as funes utilizam o mesmo Status-GUI. A figura est bem completa. Voc pode at criar sua prpria barra de ferramentas, mas qualquer cdigo diferente dos apresentados acima devero ser tratados no programa. Veremos como tratar uma opo criada/alterada no exemplo de programa em anexo.

O funcionamento para alguns dos recursos da barra de ferramentas o que veremos a seguir. Telas, procedimentos e sadas para alguns dos botes.

O boto de Detalhes

Primeiro selecione a linha desejada atravs do seletor de campos, e depois clique no cone.

Veja na figura abaixo que a linha foi destacada em coluna. Isso muito utilizado quando permitido a edio dos campos no relatrio.

Os botes de Total e Subtotal

Selecione a coluna com valor numrico, e escolha Total. Para subtotal, escolha uma coluna qualquer.

Sempre primeiro necessrio totalizar uma coluna com o boto de somatria e s ento definir os subtotais.

No exemplo, o relatrio possui os totais dos campos Valor Lquido e Montante do Imposto. Foi escolhido o campo Grupo de cliente para que o relatrio apresentasse os subtotais.

Por default, o relatrio fica na ordem crescente do campo que foi escolhido como subtotal. possvel totalizar e subtotallizar vrios campos.

Clicando nos cones em destaque, voc pode apresentar apenas as linhas de totais, as linhas de subtotais, apenas o total geral ou ainda mostrar as linhas de detalhe de algum Grupo de cliente e de outro no. O boto Pr-visualz.impresso

O Relatrio ALV no impresso como se v na tela do computador. Clique nesse boto para visualizar a impresso no modo que ir ser a sada realmente.

No exemplo acima no temos os totais ou subtotais. Mas essas linhas so mantidas. O que perdemos apenas o formato de grid (Microsoft Excel). Passamos a ver um relatrio tradicional.

O boto Microsoft Excel

Ao exportarmos para o Excel, algumas particularidades no sero enviadas:

Assim, se a intenso e gerar o relatrio para envia-lo ao Excel, no perca tempo com formataes. Apenas o bsico transferido.

Temos trs opes para exportar a listagem para o Microsoft Excel, vamos ver a sada de cada uma delas.

O boto Microsoft Excel Opo Excel Macros SAP

Com essa opo, o R/3 envia o relatrio para o Excel e j apresenta vrias barras de ferramentas prprias para que voc tenha as mesmas facilidades. Repare na figura, que as opes de ferramentas do prprio Excel no aparecem. Para voltar utilize a opo do menu Report e depois Exit.

O boto Microsoft Excel Opo Tabela

a forma mais simples de exportao. Veja que o R/3 mantem as barras de ferramentas do Excel e apenas inclui o relatrio na planilha.

O boto Microsoft Excel Opo Tabela Pivot

Nessa opo o R/3 abre o Excel e monta o relatrio que permanece com algumas funes.

Mesmo que o seu Excel no esteja exibindo a barra de ferramentas Tabela Dinmica, a comunicao R/3 Excel vai passar a exibi-la, para o acesso aos recursos do relatrio.

O boto Processamento de Texto

Na exportao do relatrio para o Microsoft Word no temos tantas opes, bastante simples. Voc pode utilizar um modelo do Word ou criar um documento novo.

O boto File Local

Ao salvar o relatrio em arquivo local, temos algumas opes. Escolha e logo em seguida o sistema ir solicitar o caminho e nome do arquivo.

O boto Destinatrio de correio eletrnico

Atravs do SAP Office possvel enviar o relatrio via e-mail. A tela para o preenchimento a seguinte:

O boto Modificar layout

Essa opo engloba as funes do Filtro, Totalizar, Subtotalizar, Ordenar, Selecionar colunas, Ocultar colunas, etc. Vejamos cada guia de opo.

Na figura abaixo, na parte da esquerda, temos as colunas que esto visveis no relatrio. Na parte direita, temos todas as disponveis. Veja que j temos aqui, a possibilidade de informar quais campos pretendemos totalizar.

O boto Modificar layout

Na guia ordenao, informamos quais campos queremos classificar, em qual ordem e ainda, se desejamos um subtotal por esse campo.

O boto Modificar layout

Na guia filtro definimos por qual campo (ou quais) gostaramos de delimitar o resultado. No caso abaixo, foi escolhido o nmero do documento de faturamento e sua categoria. A funo solicita essa range de valores para gerar o relatrio.

A opo Viso raramente utilizada. No se cria vises do relatrio. muito mais utilizado e simples as opes de layout. Na guia Viso voc pode utilizar templates do Excel ou do Crystal Reports. Tambm h pouca documentao sobre o assunto.

Os layouts que voc cria, no deixam de ser vises diferentes de um mesmo relatrio.

O boto Modificar layout

Na guia de Representao voc pode alterar algumas opes no formato de seu relatrio. Marque ou desmarque os checkboxes.

O boto Gravar Layout

O formato que seu relatrio estiver no momento (Que foi configurado) pode ser salvo. Vrios layouts diferentes para um mesmo relatrio. O flag Config.prelim vai indicar qual o layout default, ou seja, ao executar o programa novamente, de que forma o relatrio ser apresentado de incio.

O boto Selecionar Layout

Da mesma forma possvel mudar o formato de seu relatrio a qualquer momento. Basta selecionar outro layout salvo. Na figura abaixo, temos apenas um.

No cdigo em anexo, voc ver que possvel, na tela de seleo do programa permitir ao usurio selecionar um layout, antes do relatrio ser apresentado com o layout default (Caso exista algum).

Sem nenhum layout, o relatrio apresentado conforme foi codificado no programa.

Inserindo uma figura no cabealho

Que tal o cabealho do seu relatrio no formato da figura abiaixo (por exemplo), e logo depois as linhas de detalhe:

Isso melhora bem a aparncia dos relatrios. Veja que temos at a possibilidade de inserir figura em background, como na Web. O texto tambm configurvel, voc pode inserir vrias linhas e alterar o tamanho da fonte.

No exemplo acima foi utilizado como background a imagem ALV_BACKGROUND e o nome do logotipo ENJOYSAP_LOGO.

A tabela com todas as figuras disponveis a BDS_CONN05, CLASS = PICTURE.

Importando uma imagem para o R/3

O R/3 permite que voc importe figuras, assim no ficamos limitados apenas, as que so standard. Por exemplo importar o logotipo da empresa e inserir no cabealho do relatrio ALV. Vejamos como se faz.

Aps criar a imagem (.GIF, .BMP, .JPG, etc) em algum aplicativo (MS Paint, Photoshop, Paint Shop Pro, etc) o que precisamos, utilizar a transao 0FPM002 (Import Logo for Reporting) e importar a imagem para o R/3. Nem todas as verses do R/3 possuem essa transao.

Preencha as informaes necessrias e digite F8 para executar.

Importando uma imagem para o R/3

Na prxima tela voc ir informar onde est a figura, clicando em TELA. Veja a imagem abaixo:

Com duplo clique no item TELA, a transao apresenta a tela padro para abrir um arquivo. Localize a figura e pronto.

Exemplo de programa

*-----------------------------------------------------------------------

* ProcWork Informtica - ASPEN - Unidade de Negcios SAP

* Descrio : Programa de exemplo para criao de relatrio ALV

* Dezembro, 2002

*-----------------------------------------------------------------------

report zexemplo_alv.

*-----------------------------------------------------------------------

* Tabelas transparentes

*-----------------------------------------------------------------------

tables:

vbrk. "Documentos de faturamento

*-----------------------------------------------------------------------

* Tipos standard

*

* O conjunto de tipos VRM e SLIS so utilizados por funes ALV. Defina

* sempre no incio. O mais importante mesmo o SLIS.

*-----------------------------------------------------------------------

type-pools:

vrm, "Necessrio para uso de ALV

slis. "Tipos globais para ALV

*-----------------------------------------------------------------------

* Tipos do usurio

*-----------------------------------------------------------------------

types:

begin of y_vbrk,

vbeln like vbrk-vbeln, "Nmero documento

kdgrp like vbrk-kdgrp, "Grupo de clientes

netwr like vbrk-netwr, "Valor lquido

mwsbk like vbrk-mwsbk, "Montante do imposto

fkart like vbrk-fkart, "Tipo documento faturamento

vtweg like vbrk-vtweg, "Canal de distribuio

kunag like vbrk-kunrg, "Emissor da ordem

xblnr like vbrk-xblnr, "Nota fiscal

mark type c, "Marcar alteraes

end of y_vbrk.

*-----------------------------------------------------------------------

* Tabelas internas ALV

*

* As estruturas aqui utilizadas (SLIS) esto explicadas com as opes

* mais importantes no final da apostila

*-----------------------------------------------------------------------

data:

t_linecolor type slis_specialcol_alv occurs 0 with header line,

t_listheader type slis_t_listheader,

t_fieldcat type slis_t_fieldcat_alv with header line,

t_sort type slis_sortinfo_alv occurs 0 with header line.

data:

v_listheader type slis_listheader, "Cabealho

v_layout type slis_layout_alv, "layout para sada

v_print type slis_print_alv, "Ctrl de impresso

v_variante like disvariant. "Variante de exibio

*-----------------------------------------------------------------------

* Tabelas internas

*-----------------------------------------------------------------------data:

t_vbrk type y_vbrk occurs 0 with header line.

* A prxima tabela necessrio porque no possvel um select em

* tabelas que possuem campos como outras tabelas.

* No caso foi necessrio incluir a SLIS_T_SPECIALCOL_ALV

data: begin of t_alv occurs 0.

include structure t_vbrk.

data:

color type slis_t_specialcol_alv. "Definir a cor

data: end of t_alv.

*-----------------------------------------------------------------------

* Variveis de uso geral

*-----------------------------------------------------------------------data:

v_tabix like sy-tabix,

v_repid like sy-repid,

v_flag.

*-----------------------------------------------------------------------

* Tela de seleo

*-----------------------------------------------------------------------

selection-screen begin of block one.

select-options:

s_vbeln for vbrk-vbeln. "Documento de faturamento

selection-screen skip.

parameters:

p_varia like disvariant-variant. "Variante de exibio

*-----------------------------------------------------------------------

* O usurio ter a opo de iniciar a apresentao do relatrio com

* algum layout salvo anteriormente.

* Essa escolha ser armazenada em P_VARIA. Utilizamos uma funo que

* retorna todos os layout possveis.

*-----------------------------------------------------------------------

selection-screen end of block one.

*-----------------------------------------------------------------------

* Eventos

*-----------------------------------------------------------------------

initialization.

perform zf_init_alv.

at selection-screen on value-request for p_varia.

perform zf_recupera_layouts_salvos.

*-----------------------------------------------------------------------

* Principal

*-----------------------------------------------------------------------

start-of-selection.

perform:

zf_selecao_dados, "Seleciona a VBRK

zf_altera_cores, "Alterando as cores dos campos

zf_monta_tabela_alv, "Preenche o catlogo

zf_sort_subtotal, "Ordenao dos campos e subtotais

zf_executa_funcao_alv. "Gera o relatrio

end-of-selection.

*-----------------------------------------------------------------------

* Rotinas

*-----------------------------------------------------------------------

*-----------------------------------------------------------------------

* Form zf_init_alv

*-----------------------------------------------------------------------

* Busca layout de exibio default para o relatrio. Se houver

* algum formato padro para o relatrio, essa funo busca e j

* apresenta o relatrio nesse formato.

* Um layout fica como default quando marcamos "Config.Prelim." Um

* flag que pode ser marcado na opo "Gravar layout" na barra de

* ferramentas do ALV

*-----------------------------------------------------------------------

form zf_init_alv.

v_repid = sy-repid.

clear v_variante.

v_variante-report = v_repid.

call function 'REUSE_ALV_VARIANT_DEFAULT_GET'

EXPORTING

i_save = 'A'

CHANGING

cs_variant = v_variante

EXCEPTIONS

not_found = 2.

if sy-subrc = 0.

p_varia = v_variante.

endif.

endform.

*-----------------------------------------------------------------------

* Form zf_recupera_layouts_salvos

*-----------------------------------------------------------------------

* Abre um search help com os layouts j gravados. Se o usurio

* escolher algum aqui, o programa vai iniciar a apresentao do

* relatrio com esse layout, e no o que default, retornado na

* funo REUSE_ALV_VARIANT_DEFAULT_GET em ZF_INIT_ALV (Acima)

*-----------------------------------------------------------------------

form zf_recupera_layouts_salvos.

v_variante-report = v_repid.

call function 'REUSE_ALV_VARIANT_F4'

EXPORTING

is_variant = v_variante

i_save = 'A'

IMPORTING

es_variant = v_variante

EXCEPTIONS

not_found = 2.

if sy-subrc = 2.

message id sy-msgid type 'S' number sy-msgno

with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

else.

p_varia = v_variante-variant.

endif.

endform.

*-----------------------------------------------------------------------

* Form zf_selecao_dados

*-----------------------------------------------------------------------

* Seleo dos dados

*-----------------------------------------------------------------------

form zf_selecao_dados.

select vbeln kdgrp netwr mwsbk

fkart vtweg kunag xblnr

from vbrk

into table t_vbrk

where vbeln in s_vbeln.

loop at t_vbrk.

move-corresponding t_vbrk to t_alv.

append t_alv.

endloop.

endform.

*----------------------------------------------------------------------*

* Form zf_altera_cores

*----------------------------------------------------------------------*

* Permite informar a cor que vc deseja para a coluna, inclusive

* pelo valor da varivel

*----------------------------------------------------------------------*

FORM zf_altera_cores.

* Veja algumas cores

* Azul = 1

* Verde = 5

* Normal = 2

* Vermelha = 6

* Mas vai depender de como esto as cores do seu SAP-Gui

loop at t_alv.

refresh t_linecolor.

refresh t_alv-color.

t_linecolor-fieldname = 'VBELN'.

t_linecolor-color-col = '6'.

t_linecolor-color-inv = '1'. "Inverso, 1 liga e 0 desliga

append t_linecolor.

* Temos a opo INV, que invertido, mesmo esquema do INT

* 1 liga e 0 desliga

if t_vbrk-netwr > 10000.

t_linecolor-fieldname = 'NETWR'.

t_linecolor-color-col = '1'.

t_linecolor-color-int = '1'. "Negrito (1-ligado, 0-Desligado)

else.

t_linecolor-fieldname = 'NETWR'.

t_linecolor-color-col = '6'.

t_linecolor-color-int = '1'. "Negrigo (1-ligado, 0-Desligado)

endif.

append t_linecolor.

t_alv-color[] = t_linecolor[].

modify t_alv.

endloop.

ENDFORM.

*-----------------------------------------------------------------------

* Form zf_monta_tabela_alv

*-----------------------------------------------------------------------

* Monta tabela para apresentao do relatrio. Aqui montamos um

* catlogo com as informaes dos campos.

* Veja que no estamos preenchendo todas as opes do catlogo,

* no necessrio. No anexo voc poder encontrar os principais

*-----------------------------------------------------------------------

form zf_monta_tabela_alv.

clear t_fieldcat.

t_fieldcat-fieldname = 'MARK'.

t_fieldcat-tabname = 'T_ALV'.

t_fieldcat-reptext_ddic = 'S'.

t_fieldcat-inttype = 'C'.

t_fieldcat-outputlen = 1.

t_fieldcat-checkbox = 'X'.

append t_fieldcat.

clear t_fieldcat.

t_fieldcat-fieldname = 'VBELN'.

t_fieldcat-tabname = 'T_ALV'.

t_fieldcat-reptext_ddic = 'Doc. Fatura'.

t_fieldcat-inttype = 'C'.

t_fieldcat-outputlen = 10.

append t_fieldcat.

clear t_fieldcat.

t_fieldcat-fieldname = 'KDGRP'.

t_fieldcat-tabname = 'T_ALV'.

t_fieldcat-reptext_ddic = 'Grupo de Clientes'.

t_fieldcat-inttype = 'C'.

t_fieldcat-outputlen = 2.

append t_fieldcat.

* Para o campo NETWR, o relatrio j vai mostrar linha de total

clear t_fieldcat.

t_fieldcat-fieldname = 'NETWR'.

t_fieldcat-tabname = 'T_ALV'.

t_fieldcat-reptext_ddic = 'Valor lquido'.

t_fieldcat-inttype = 'P'.

t_fieldcat-outputlen = 15.

t_fieldcat-do_sum = 'X'.

append t_fieldcat.

clear t_fieldcat.

t_fieldcat-fieldname = 'MWSBK'.

t_fieldcat-tabname = 'T_ALV'.

t_fieldcat-reptext_ddic = 'Montante do Imposto'.

t_fieldcat-inttype = 'P'.

t_fieldcat-outputlen = 15.

append t_fieldcat.

* Os campos abaixo no iro aparecer no relatrio, apenas quando

* o usurio modificar o layout e inserir esses campos nas colunas

* a serem apresentadas

clear t_fieldcat.

t_fieldcat-fieldname = 'FKART'.

t_fieldcat-tabname = 'T_ALV'.

t_fieldcat-reptext_ddic = 'Tipo do documento'.

t_fieldcat-inttype = 'C'.

t_fieldcat-outputlen = 4.

t_fieldcat-no_out = 'X'.

append t_fieldcat.

clear t_fieldcat.

t_fieldcat-fieldname = 'VTWEG'.

t_fieldcat-tabname = 'T_ALV'.

t_fieldcat-reptext_ddic = 'Canal de Distribuio'.

t_fieldcat-inttype = 'C'.

t_fieldcat-outputlen = 2.

t_fieldcat-no_out = 'X'.

append t_fieldcat.

clear t_fieldcat.

t_fieldcat-fieldname = 'KUNAG'.

t_fieldcat-tabname = 'T_ALV'.

t_fieldcat-reptext_ddic = 'Emissor da Ordem'.

t_fieldcat-inttype = 'C'.

t_fieldcat-outputlen = 10.

t_fieldcat-no_out = 'X'.

append t_fieldcat.

* Para o campo XBLNR, no vamos preencher nada. Nem disponvel

* na modificao do layout ele vai estar.

* No necessrio atribuir todos os campos, no ocorre

* nenhum erro.

endform.

*-----------------------------------------------------------------------

* Form zf_sort_subtotal

*-----------------------------------------------------------------------

* Classificao e item de subtotalizao

*-----------------------------------------------------------------------

form zf_sort_subtotal.

clear t_sort[].

t_sort-spos = 1.

t_sort-fieldname = 'KDGRP'.

t_sort-tabname = 'T_ALV'.

t_sort-up = 'X'.

t_sort-subtot = 'X'.

append t_sort.

* Com isso o relatrio vai sair classificado em ordem crescente de Grupo

* de cliente e ainda ir aparecer um subtotal por esse campo.

endform.

*-----------------------------------------------------------------------

* Form zf_executa_funcao_alv

*-----------------------------------------------------------------------

* Apresenta relatrio

*-----------------------------------------------------------------------

form zf_executa_funcao_alv.

* Preenchendo algumas opes de impresso (No obrigatrio)

v_layout-expand_all = 'X'. "Abrir subitens

v_layout-colwidth_optimize = 'X'. "Largura melhor possvel da coluna

v_layout-edit = 'X'. "Permitir a edio

* Indicando para funo qual o layout que deve ser apresentado

* primeiro

v_variante-variant = p_varia.

v_print-no_print_listinfos = 'X'.

call function 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = v_repid

i_background_id = 'ALV_BACKGROUND'

i_callback_top_of_page = 'ZF_TOP_OF_PAGE'

* i_callback_pf_status_set = 'ZF_STATUS'

i_callback_user_command = 'ZF_USER_COMMAND'

it_fieldcat = t_fieldcat[]

is_layout = v_layout

it_sort = t_sort[]

i_default = 'X'

i_save = 'A'

is_variant = v_variante

is_print = v_print

TABLES

t_outtab = t_alv

EXCEPTIONS

program_error = 1

others = 2.

* As funes que geram relatrios ALV possuem vrios parmetros de

* I_CALLBACK. Os que mais so utilizados, so os que esto

* na chamada acima. Para ver os demais use a transao SE37. Esses

* parmetros so preenchidos com nomes de FORMS do programa

* i_callback_program = Qual programa que executou a funo

* i_callback_top_of_page = Rotina de cabealho

* i_callback_pf_status_set = Qual barra de tarefas a funo vai usar

* i_callback_user_command = Tratamento dos botes alterados ou criadosendform.

*-----------------------------------------------------------------------

* Form zf_user_command

*-----------------------------------------------------------------------

* Tratamento das opes do usurio. Por exemplo um Drill-down ou

* algum boto que voc inseriu ou alterou. O importante conhecer

* os parmetros que o form recebe

*-----------------------------------------------------------------------

form zf_user_command using ucomm like sy-ucomm

selfield type slis_selfield.

* UCOMM: o sy-ucomm (Ok-code)

* SELFIELD: uma estrutura com dados que ns permite identifcar

* o que foi selecionado. Essa estrutura tambm est

* explicada no anexo ao final da apostila

* Salva a posio do relatrio (Linha escolhida)

selfield-row_stable = 'X'.

* Uma das questes foi como alterar o contedo de uma tabela

* transparente com as alteraes feitas no relatrio ALV

* Segue um exemplo de como pode ser feito:

* Em nossa barra de ferramentas criamos o boto com cdigo

* ZATU

if ucomm = 'ZATU'.

* Vamos ler a tabela T_VBRK onde mark = X. A idia que

* o usurio mark com X os registros alterados

loop at t_vbrk where mark = 'X'.

v_tabix = sy-tabix.

* Atualiza a tabela transparente

" update ztabela ....

* Ento voltamos a T_VBRK sem marcao alguma

clear t_vbrk-mark.

modify t_vbrk index v_tabix.

* Veja que esse tipo de esquema pode ser feito para

* excluir registros tambm

endloop.

endif.

* Para testar o cdigo do boto

if ucomm = 'ZLOG'.

" perform ...

" call transaction...

endif.

* Para um drill down a partir de um registro

if not selfield-tabindex = 0.

read table t_vbrk index selfield-tabindex.

"perform ...

"call transaction ...

else.

* Clicou em linha invlida, linha de total, cabealho, etc

endif.

endform.

*-----------------------------------------------------------------------

* Form zf_top_of_page

*-----------------------------------------------------------------------

* Cabealho do relatrio

*-----------------------------------------------------------------------

form zf_top_of_page.

* Uma dica, em relatrios ALV com utilizao de drill down, na volta ao

* relatrio principal ele vai executar novamente o cabealho. Isso faz

* com que ele fique duplicado. Utilize um flag que aps apresentar o

* cabealho uma vez, fique marcado com um 'X', por exemplo.

* V_FLAG na primeira vez branco.

check v_flag is initial.

* Monta as linhas de cabealho

clear t_listheader[].

clear v_listheader.

v_listheader-typ = 'H'.

* TYP = H, faz com que a fonte fique maior

v_listheader-info = 'Apenas um Exemplo em ALV'.

append v_listheader to t_listheader.

* Definio do Projeto

clear v_listheader.

v_listheader-typ = 'A'.

* TYP = S, outro tipo de fonte

v_listheader-info = 'Segunda linha do cabealho'.

append v_listheader to t_listheader.

* O campo INFO, pode ter no mximo 60 caracteres

* Apresenta o cabealho.

* Veja que j uma outra funo, essa apresenta a figura, j

* a funo REUSE_ALV_GRID_DISPLAY (Principal) tem o parmetro

* que voc indica a imagem que ser apresentada em background,

* como na WEB.

call function 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

i_logo = 'ENJOYSAP_LOGO'

it_list_commentary = t_listheader.

* Para no apresentar mais o cabealho no refresh

v_flag = 'X'.

endform.

*----------------------------------------------------------------------

* Form zf_status

*----------------------------------------------------------------------

* Status com boto de log (Item a mais na barra ALV)

*----------------------------------------------------------------------

form zf_status using rt_extab type slis_t_extab.

* Aqui estamos informando a funo que ela dever utilizar a barra de

* ferramentas ZALV_BOTOES.

"set pf-status 'ZALV_BOTOES'.

* Tambm possvel excluir funes

"if sy-uname = ...

"EXCLUDING ...

"endif.

endform.

Estruturas SLIS

SLIS_FIELDCAT_ALV Tabela que o catlogo de campos. Vai conter toda informao necessria sobre cada campo do relatrio. formada por um grupo de tipos, aqui descrevemos os mais utilizados. Obrigatrio (Ou no mnimo) preencha os campos que esto sublinhados.

FIELDNAMETam. 30, tipo caracterNome do campo, que vai ser uma coluna do seu relatrio.

TABNAMETam. 30, tipo caracterNome da tabela que possui o campo definido acima. Essa tabela deve os registros (linhas) do seu relatrio.

ICONTam. 1, tipo caracterPreencha com X, caso o campo represente um cone.

SYMBOLTam. 1, tipo caracterPreencha com X, caso o campo represente um smbolo.

CHECKBOXTam. 1, tipo caracterPreencha com X, caso deseje apresentar um checkbox na coluna. Utilizado para campos do tipo flag.

JUSTTam. 1, tipo caracterJustificar a texto do campo. Use R, C ou L (Direita, Esquerda ou Centro).

LZEROTam. 1, tipo caracterPreencher com X, para eliminar zeros esquerda.

NO_SIGNTam. 1, tipo caracterPreencher com X, para no apresentar sinal em valores.

NO_ZEROTam. 1, tipo caracterPreencher com X, para no exibir valores zerados.

DO_SUMTam. 1, tipo caracterSe a coluna um valor, preencha com X, caso queira a sumarizao j na apresentao do relatrio.

NO_OUTTam. 1, tipo caracterPreencher com X, se deseja que a coluna no aparea.

OUTPUTLENTam. 6, tipo numricoAqui voc indica o tamanho do seu campo.

INTTYPETam. 1, tipo caracterTipo do campo, veja os tipos principais:

C-Cadeia de caracteres

N-Cadeia de caracteres (S nmero)

D-Data (data: AAAAMMDD)

T-Momento (hora:HHMMSS)

X-Seqncia de byte (hexadecimal)

I-N inteiro (4 byte c/sinal)

P-Compactado

F-Ponto flutuante

REPTEXT_DDICTam. 30, tipo caracterLabel da coluna do relatrio.

HOTSPOTTam. 1, tipo caracterPreencher com X, caso deseje que ao passar o mouse por cima do campo, aparea o cone de uma mo. Indicando que existe alguma ao ao clicar sobre esse campo.

Estruturas SLIS

SLIS_T_LISTHEADER Tabela para criao do cabealho de seu relatrio. O preenchimento de todos os campos, inclusive a prpria utilizao dessa tabela no obrigatria.

TYPH = Header, S = Selection, A = ActionDependendo do tipo (H,S ou A) o tipo de letra modifica.

KEYTam. 20, tipo caracterNo precisa preencher.

INFOTam. 60, tipo caracter o texto que voc quer que aparea no cabealho. Voc pode utilizar n linhas. Veja no programa exemplo.

SLIS_SORTINFO_ALV Tabela que vai indicar para funo como a classificao dos campos do relatrio. O preenchimento de todos os campos, inclusive a prpria utilizao dessa tabela no obrigatria.

FIELDNAMETam. 30, tipo caracterNome do campo, que vai ser uma coluna do seu relatrio

TABNAMETam. 30, tipo caracterNome da tabela que possui o campo definido acima.

UPTam. 1, tipo caracterMarque esse campo com X para classificar em ordem crescente.

DOWNTam. 1, tipo caracterMarque esse campo com X para classificar em ordem decrescente.

SUBTOTTam. 1, tipo caracterMarque com X para que no relatrio aparea um subtotal por esse campo.

SPOSTam. 2, tipo numricoSeqncia de ordenao dos campos

DISVARIANT - Variant.Exibio (Layouts salvos)

REPORTNome do programa ABAPPreencher com o nome do programa. Utilize a varivel do sistema SY-REPID

HANDLEID controle p/chamadas mltiplas a partir do mesmo programaUso interno

LOG_GROUPConceito lgico de grupoUso interno

USERNAMENome do usurio para gravao especfica do usurioUso interno

VARIANTLayoutUso interno. Aqui vai retornar o nome do layout que voc salvou

TEXTDenominao layoutUso interno. Aqui retorna a descrio que voc deu para o seu layout

DEPENDVARSVetor para entradas de variante dependentesUso interno

Estruturas SLIS

SLIS_LAYOUT_ALV Define o formato de sada do relatrio. O preenchimento de todos os campos, inclusive a prpria utilizao dessa estrutura no obrigatria.

NO_COLHEADTam. 1, tipo caracterPreencha com X para que o seu relatrio no tenha label das colunas.

ZEBRATam. 1, tipo caracterPreencher com X para que sua listagem aparea zebrada.

NO_VLINETam. 1, tipo caracterPreencher com X para que as colunas do relatrio no tenham divises.

NUMC_SUMTam. 1, tipo caracterPreencher com X, para que o relatrio permita totalizao de campos to tipo N (Caracteres numricos).

EDITTam. 1, tipo caracterPreencher com X para que o usurio possa editar o valor do campo no relatrio.

NO_INPUTTam. 1, tipo caracterPreencher com X se o campo for apenas de sada.

COLWIDTH_OPTIMIZETam. 1, tipo caracterMarcar com X para que a largura da coluna fique de acordo com o maior tamanho: Label ou Detalhe

NO_TOTALLINETam. 1, tipo caracterPreenchendo esse campo com X, em seu relatrio no ir aparecer linha de total.

TOTALS_BEFORE_ITEMSTam. 1, tipo caracterPreencher com X para que os totais apaream antes das linhas de detalhe.

TOTALS_ONLYTam. 1, tipo caracterPreencher com X para que em seu relatrio apaream apenas os totais.

TOTALS_TEXTTam. 60, tipo caracterTexto para as linhas de total

SUBTOTALS_TEXTTam. 60, tipo caracterTexto para as linhas de subtotal

SLIS_PRINT_ALV Informao para a impresso. O preenchimento de todos os campos, inclusive a prpria utilizao dessa estrutura no obrigatria.

PRINTTam. 1, tipo caracterPreencher com X para permitir a impresso.

PRNT_TITLETam. 1, tipo caracterPreencher com X para permitir a impresso do ttulo do relatrio.

NO_PRINT_LISTINFOSTam. 1, tipo caracterPreencher com X para que na impresso no apaream as informaes da listagem.

Estruturas SLIS

SLIS_SELFIELD Informao sobre o registro selecionado. As informaes so retiradas do catlogo.

TABNAME Tam. 30, tipo caracterNome da tabela que d origem aos dados.

TABINDEXSy-tabixVai indicar a posio do registro dentro da tabela. Se precisar recuperar os valores utilize esse ndice em um comando read table ... index slis_selfield-tabindex.

COL_STABLETam. 1, tipo caracterMarque com X, para manter o relatrio na coluna em que estava antes do drill down.

ROW_STABLETam. 1, tipo caracterMarque com X, para manter o relatrio na linha selecionada antes do drill down.

REFRESHTam. 1, tipo caracterPara atualizar o relatrio, preencher com X.

Problemas e correes por favor enviar para: [email protected]

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

EMBED PBrush

PAGE 39ABAP List Viewer