Você está na página 1de 37

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.

ABAP List Viewer 1

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.

ABAP List Viewer 2

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.

ABAP List Viewer 3

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.

ABAP List Viewer 4

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.

ABAP List Viewer 5

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.

ABAP List Viewer 6

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.

ABAP List Viewer 7

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.

ABAP List Viewer 8

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.

ABAP List Viewer 9

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.

ABAP List Viewer 10

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.

ABAP List Viewer 11

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.

ABAP List Viewer 12

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.

ABAP List Viewer 13

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.

ABAP List Viewer 14

O boto Destinatrio de correio eletrnico


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

ABAP List Viewer 15

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.

ABAP List Viewer 16

O boto Modificar layout


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

ABAP List Viewer 17

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.

ABAP List Viewer 18

O boto Modificar layout


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

ABAP List Viewer 19

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.

ABAP List Viewer 20

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.

ABAP List Viewer 21

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.

ABAP List Viewer 22

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.

ABAP List Viewer 23

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.

ABAP List Viewer 24

Exemplo de programa
*----------------------------------------------------------------------* ProcWork Informtica - ASPEN - Unidade de Negcios SAP * Descrio : Programa de exemplo para criao de relatrio ALV * Dezembro, 2002 (marcelo.bueno@procwork.com.br) *----------------------------------------------------------------------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

ABAP List Viewer 25

*----------------------------------------------------------------------* 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. selection-screen skip. parameters: p_varia like disvariant-variant. "Variante de exibio "Documento de faturamento

*----------------------------------------------------------------------* 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.

ABAP List Viewer 26

*----------------------------------------------------------------------* 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.

ABAP List Viewer 27

*----------------------------------------------------------------------* 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.

ABAP List Viewer 28

*----------------------------------------------------------------------* * 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.

ABAP List Viewer 29

*----------------------------------------------------------------------* 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.

ABAP List Viewer 30

* 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.

ABAP List Viewer 31

*----------------------------------------------------------------------* 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 criados

endform.

ABAP List Viewer 32

*----------------------------------------------------------------------* 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.

* *

ABAP List Viewer 33

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.

ABAP List Viewer 34

*---------------------------------------------------------------------* 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.

ABAP List Viewer 35

Estruturas SLIS

CHECKBOX

Estruturas SLIS
TYP KEY INFO Tam. 60, tipo caracter o texto que voc quer que aparea no cabealho. Voc pode utilizar n linhas. Veja no programa exemplo. H = Header, S = Selection, A = Action

Estruturas SLIS

ABAP List Viewer 36

Preencherl t is NO_VLINE NUMC_SUM Tam. 1, tipo caracter Tam. 1, tipo caracter Preencher com X para que as colunas do relatrio no tenham divises. Preencher com X, para que o relatrio permita totalizao de campos to tipo N (Caracteres numricos). Preencher com X para que o usurio possa editar o valor do campo no relatrio. Preencher com X se o campo for apenas de sada. Marcar com X para que a largura da coluna fique de acordo com o maior tamanho: Label ou Detalhe Preenchendo esse campo com X, em seu relatrio no ir aparecer linha de total. Preencher com X para que os totais apaream antes das linhas de detalhe. Preencher com X para que em seu relatrio apaream apenas os totais. Texto para as linhas de total Texto para as linhas de subtotal

EDIT NO_INPUT COLWIDTH_OPTIMIZE

Tam. 1, tipo caracter Tam. 1, tipo caracter Tam. 1, tipo caracter

NO_TOTALLINE TOTALS_BEFORE_ITEM S TOTALS_ONLY TOTALS_TEXT SUBTOTALS_TEXT

Tam. 1, tipo caracter Tam. 1, tipo caracter Tam. 1, tipo caracter Tam. 60, tipo caracter Tam. 60, tipo caracter

NO_PRINT_LISTINFOS

Tam. 1, tipo caracter

Preencher com X para que na impresso no apaream as informaes da listagem.

Estruturas SLIS
TABNAME TABINDEX Tam. 30, tipo caracter Sy-tabix Nome da tabela que d origem aos dados. Vai 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. Marque com X, para manter o relatrio na coluna em que estava antes do drill down. Marque com X, para manter o relatrio na linha selecionada antes do drill down. Para atualizar o relatrio, preencher com X.

COL_STABLE ROW_STABLE REFRESH

Tam. 1, tipo caracter Tam. 1, tipo caracter Tam. 1, tipo caracter

ABAP List Viewer 37