Você está na página 1de 36

Sonda Procwork

Academia ABAP Interna Julho de 2011

Pensando grande para voc, pensando grande como voc.

Ver. 1.1.1107

agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

O que ?

O ALV um tipo de relatrio que padroniza e simplifica a exibio e operao de listas no SAP. Permite que criemos relatrios sem termos que nos preocupar muito com a impresso desse relatrio na tela. O ALV atravs de suas funes e estruturas torna o desenvolvimento mais simples na medida que economiza significativas linhas de cdigo, como por exemplo, no tratamento de quebras, totais, subtotais, cores e outras vantagens que veremos a seguir. O Relatrio ALV chamado por um Mdulo de Funo.

agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Tipos de Relatrios ALV

ALV List
Lista bsica comum

ALV Hierrquico
Lista com dados de cabealho e itens

ALV Grid
Lista onde pode-se trabalhar com algumas partes grficas. Formato mais elaborado de tela, onde possvel colocar logo, fundo de cabealho, etc.

agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

ALV List

agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

ALV Hierrquico

agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

ALV Grid

agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo a passo para montagem do relatrio


Passo 1

Grupo de Tipos
necessrio a declarao do grupo de tipos SLIS onde se encontram os tipos fundamentais para a sada de um relatrio ALV.
Ex: type-pools: slis.

Variantes de Exibio
Mais a frente, veremos que o usurio poder escolher as colunas que ele deseja exibir em seu relatrio e com isso salv-los (na prpria tela do relatrio) com um nome desejado. Chamamos de variantes de exibio em ALV esses layouts (colunas desejadas) que o usurio poder salvar no relatrio

agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 2

Criar um parameter do tipo disvariant-variant


Exemplo: parameters: pc_vari type disvariant-variant.

Passo 3

Para o evento INITIALIZATION faremos a chamada de uma funo que nos retornar a variante default do relatrio. Mas para isso precisaremos declarar algumas estruturas do tipo disvariant (Variant.exibio) e variveis no seguinte padro: variant_exit(1)type c, v_variante TYPE disvariant e def_variante TYPE disvariant.
Exemplo

clear gs_variante.
gc_repid = sy-repid. gs_variante-report = gc_repid.
agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 3 (cont.)
* Buscar variante default gs_def_variante = gs_variante. A funo a seguir retornar a variante que foi salva como default na exibio do relatrio ALV. Lembrando que quando executamos o relatrio pela primeira vez , no existe variante default. Veremos depois que gerarmos nosso primeiro ALV, que quando salvarmos uma variante de exibio existir um flag chamado CONFIGURAO PRELIMINAR, que sendo marcado quando salvamos estamos definindo conseqentemente esta variante como default do relatrio.
call function 'REUSE_ALV_VARIANT_DEFAULT_GET' exporting i_save = A changing cs_variant = gs_def_variante exceptions wrong_input = 1 not_found = 2 program_error = 3 others = 4. if sy-subrc = 0. pc_vari = gs_def_variante-variant. endif.
agosto de 12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 4

Matchcode do campo de variante de exibio.


simples, basta no evento At Selection-Screen On Value-Request for p_vari fazer:
call function 'REUSE_ALV_VARIANT_F4' exporting is_variant = gs_variante i_save = A i_tabname_header = GT_SAIDA' it_default_fieldcat = gt_fieldcat[] i_display_via_grid = 'X' importing e_exit = gc_variant_exit es_variant = gs_def_variante exceptions not_found = 1 program_error = 2 others = 3. if sy-subrc is initial. if gc_variant_exit = space. pc_vari = gs_def_variante-variant. endif. endif.

Report com as Variantes Salvas Tabela interna saida Tabela de formatao Dispara POPUP em ALV

Se no existir variante Variante default

Recebe variante escolhida

agosto de 12

10

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 5

Sabendo que existe a possibilidade do usurio entrar com uma variante de exibio no existente, usaremos em todos os nossos relatrios ALV uma funo que checar se a mesma existe. No evento at selection-screen faremos esta verificao:
if not p_vari is initial. gs_def_variante = gs_variante. Nome do report def_variante-variant = pc_vari. O que foi digitado call function 'REUSE_ALV_VARIANT_EXISTENCE' exporting i_save = A changing cs_variant = gs_def_variante. gs_variante = gs_def_variante. else. clear gs_variante. gs_variante-report = gc_repid. endif.
agosto de 12

11

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 6

Seleo e Preparao dos Dados

Passo 7

Configurao de Sada do Relatrio ALV


Parmetros Gerais do Layout Declarar uma estrutura do tipo slis_layout_alv Exemplo: gs_layout type slis_layout_alv.

agosto de 12

12

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

Passo 8

Preencher a estrutura de Layout com os parmetros solicitados. Abaixo uma lista dos mais utilizados:
gs_layout-box_fieldname = 'BOX'. Campo checkbox p/tab_saida

gs_layout-get_selinfos
gs_layout-detail_popup

= 'X'.
= 'X'.

Mostrar tela de seleo.


Mostrar detalhe via popup. Todos os campos em detalhes. Cor sim / cor no. Otimizao de largura de colunas

gs_layout-detail_initial_lines = 'X'. gs_layout-zebra gs_layout-colwidth_optimize = 'X'. = 'X'.

Arquivo com a estrutura slis_layout_alv:

agosto de 12

13

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 9

Criao de Grupos de Campos


No fundamental a criao de grupos de campos, mas facilita ao usurio na hora de escolher os campos de exibio aps o clique do boto MODIFICAR LAYOUT . Vrios campos da fieldcat podem ser definidos para um mesmo grupo de campo. Veremos mais a frente como atribuir um campo a um grupo de campo. Declarar uma estrutura do tipo slis_t_sp_group_alv Exemplo:
gs_grupos type slis_t_sp_group_alv with header line.

agosto de 12

14

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 10

Carregar a tabela de grupos com os parmetros necessrios; Exemplo:


move: 'Moeda to gs_grupos-sp_group, 'Campos moeda to gs_grupos-text. append gs_grupos.

Abaixo, esto descritos os campos da estrutura tipo slis_t_sp_group_alv.

Campo
sp_group text

Descrio
Cd. do grupo que ser utilizado na fieldcat Descrio dos grupos

agosto de 12

15

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 10 (cont.)

agosto de 12

16

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 11

Parmetros de Ordenao.
Declarar uma estrutura do tipo slis_t_sortinfo_alv.
gs_sort type slis_t_sortinfo_alv with header line.

Passo 12

Preencher a estrutura de Ordenao.


Abaixo uma lista dos mais utilizados.
gs_sort-up gs_sort-fieldname gs_sort-tabname gs_sort-spos append gs_sort. = = = = 'X'. Ordenao crescente 'campo pelo qual queremos ordenar a <TI>' 'Tabela interna de sada'. '1'. Prioridade de ordenao

Arquivo com a estrutura slis_t_sortinfo_alv

agosto de 12

17

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 13

Parmetros Individuais dos campos.


Declarar uma estrutura do tipo slis_t_fieldcat_alv.
gs_fieldcat type slis_t_fieldcat_alv with header line.

Passo 14

Preencher a estrutura dos campos.


Exemplo:
gs_fieldcat-fieldname gs_fieldcat-tabname gs_fieldcat-ref_fieldname gs_fieldcat-ref_tabname gs_fieldcat-key append gs_fieldcat. = = = = = 'EBELN'. 'TI_SAIDA'. EBELN. EKKO. X.

Arquivo com a estrutura slis_t_fieldcat_alv

agosto de 12

18

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Apenas para o ALV Grid


Passo 15

Definir o Cabealho
Declarar a estrutura do tipo slis_t_listheader.
gs_top type slis_t_listheader.

Passo 16

Dados do Cabealho
Criar uma chamada de perform da seguinte forma:
PERFORM zf_top USING gs_top.

agosto de 12

19

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 16 (cont.)

Codificao do Form
form zf_top using pu_s_top type slis_t_listheader. data: ls_line type slis_listheader.

clear ls_line. ls_line-typ = 'H'. ls_line-info = 'Treinamento ALV'. append ls_line to pu_s_top.
clear ls_line. ls_line-typ = 'S'. ls_line-key = 'Aspen RS'. ls_line-info = 'Treinamento ALV'. append ls_line to pu_s_top. clear ls_line. ls_line-typ = 'A'. ls_line-key = Sonda Procwork'. ls_line-info = 'Treinamento ALV'. append ls_line to pu_s_top. endform.

agosto de 12

20

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 17

form top_of_page
O nome deste form ser passado para a funo de impresso do ALV.
call function 'REUSE_ALV_COMMENTARY_WRITE' exporting it_list_commentary = gs_top

i_logo

= 'figura'.

agosto de 12

21

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

ALV GRID

agosto de 12

22

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Apenas para o ALV Hierrquico

necessrio definir as ligaes entre as tabelas de cabealho e de itens para fazer as quebras no momento da visualizao.

Passo 18

Declarar uma estrutura do tipo slis_keyinfo_alv.

Passo 19
gs_keyinfo-header01 = 'Campo_tabela_header'. gs_keyinfo-item01 = Campo da tabela de item'.

agosto de 12

23

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 20

Parmetros de Impresso.
Declarar a estrutura do tipo slis_print_alv Exemplo:
data: gs_print type slis_print_alv. gs_print-no_print_selinfos = 'N'.

gs_print-no_print_listinfos = 'N'. Campo Descrio

prnt_info
print Prnt_title no_coverpage no_new_page reserve_lines no_print_listinfos

Informaes de Impresso

Linhas reservadas para o final da pgina No imprimir pgina com nmero de registros selecionados

no_change_print_params
no_print_selinfos

No alterar tamanho de linha


No mostrar informaes de impresso agosto de 12

24

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 21

Tabela de Sada.
Devemos popular nossa tabela de sada com todos os dados que mostraremos na tela.

Passo 22

Chamar o Relatrio
Como existem trs tipos de relatrios, teremos trs funes diferentes.

Observao

Enquanto no criamos os forms set_pf_status e user_command, deixaremos comentados os seguintes itens nas funes:
i_callback_pf_status_set
i_callback_user_command

agosto de 12

25

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 22 (ALV List)


call function 'REUSE_ALV_LIST_DISPLAY' exporting i_callback_program = gc_repid i_callback_pf_status_set = 'SET_PF_STATUS' i_callback_user_command = 'USER_COMMAND' i_structure_name = gt_saida' is_layout = gs_layout it_fieldcat = gt_fieldcat[] it_sort = gt_sort[] Parmetro p/executar sempre com a variante default i_default = X Se possvel salvar as variantes i_save = 'A' Nome da variante selecionada is_variant = gs_variante is_print = gs_print it_special_groups = gs_grupos[] tables t_outtab = gt_saida.

agosto de 12

26

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 22 (ALV Hierrquico)


call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' exporting i_callback_program = sy-repid i_callback_pf_status_set = 'SET_PF_STATUS' i_callback_user_command = 'USER_COMMAND' is_layout = gs_layout it_fieldcat = gt_fieldcat[] it_special_groups = gs_grupos[] i_default = X Variante default i_save = 'A' is_variant = gs_variante i_tabname_header = GT_CABECALHO' i_tabname_item = GT_ITEM' is_keyinfo = gs_keyinfo is_print = gs_print tables t_outtab_header = gt_cabecalho t_outtab_item = gt_item.

agosto de 12

27

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 22 (ALV Grid)


call function 'REUSE_ALV_GRID_DISPLAY' exporting i_callback_program = gc_repid i_callback_pf_status_set = 'SET_PF_STATUS' i_callback_user_command = 'USER_COMMAND' i_callback_top_of_page = 'TOP_OF_PAGE' is_layout = gs_layout it_fieldcat = gt_fieldcat[] it_sort = gt_sort[] i_default = X i_save = 'A' is_variant = gs_variante is_print = gs_print i_screen_start_column = 0 i_screen_start_line = 0 i_screen_end_column = 0 i_screen_end_line = 0 it_special_groups = gs_grupo[] tables t_outtab = gt_saida.
agosto de 12

28

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

User-Command e PF-Status

Com o ALV gerado, reparamos em sua barra de botes que ele trs botes default pelas funes de sada, mas haver a necessidade em algumas vezes de criaes de novos botes para o usurio como exemplo abaixo.

agosto de 12

29

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 23

PF-STATUS
Criao de um form como no modelo abaixo:
form set_pf_status using pu_extab type slis_t_extab. set pf-status 'NOME' excluding pu_extab. endform.

Para criao do pf-status, ns iremos repetir alguns botes que vinham atravs das funes. Para que esses botes continuem no precisando de tratamento necessrio que se saiba o nome da funo standard de cada boto.

agosto de 12

30

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 24

Variveis de Controle
Declarao de uma estrutura do tipo slis_selfield para o Drill Down e uma varivel do tipo syucomm.

Exemplo
ls_selfield type slis_selfield. lc_ucomm like sy-ucomm.

TABNAME TABINDEX SEL_TAB_FIELD VALUE

Nome da tabela interna de sada do ALV ndice do clique na tabela interna de sada Tabela-interna-campo do clique Valor da clula do clique

REFRESH
FIELDNAME

Reexecuta o ALV
Campo do clique(coluna)

agosto de 12

31

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Passo 25

Tratamento
Devemos criar um form para tratamento do user-command e do drill-down. Exemplo: perform user_command using lc_ucomm ls_selfield.

form user_command using pu_ucomm pu_selfield type slis_selfield.

agosto de 12

32

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

ALV

Tratamento dos Botes


case pu_ucomm. when BOTO1. Comandos. when BOTO2. Comandos. endcase.

Tratamento do Drill Down


case pu_selfield-sel_tab_field. when TAB_INT-CAMPO1. Para ler linha do clique. Read table tab_int index pu_selfield-tabindex. Valor da clula do clique set parameter id 'ALV field pu_selfield-value. call transaction 'ALV and skip first screen. when TAB_INT-CAMPO2. Comandos. endcase.

agosto de 12

33

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

Exerccio

Relatrio ALV Pedidos de Compras


Criar um Relatrio ALV LIST utilizando as tabelas EKKO e EKPO. Buscar os seguintes campos:
EKKO > EBELN, BEDAT, LIFNR EKPO > EBELP, MATNR, MENGE, NETPR, LOEKZ

Mostrar todos os campos na tela. Utilizar um cone para identificar o LOEKZ Ordenar pelos campos EBELN, EBELP

agosto de 12

34

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

Exerccio

Relatrio ALV Ordens de Vendas


Criar um Relatrio ALV Hierrquico utilizando as tabelas VBAK e VBAP. Buscar os seguintes campos:
VBAK > VBELN, AUDAT, NETWR, WAERK VBAP > POSNR, MATNR, MATKL, ARKTX, NETWR

Mostrar todos os campos na tela. Ordenar pelos campos VBELN, POSNR Observao: No esquecer de relacionar as tabelas para visualizao no relatrio.

agosto de 12

35

Argentina Brasil Chile Colmbia Costa Rica Equador Mxico Peru Uruguai

Exerccio

Relatrio ALV Notas Fiscais

Criar um relatrio ALV GRID de Notas Fiscais utilizando os seguintes campos:


J_1BNFDOC DOCNUM NFTYPE DOCTYP DIRECT DOCDAT PSTDAT CREDAT CRETIM CRENAM SERIES SUBSER NFNUM PARID PARTYP J_1BNFLIN DOCNUM ITMNUM MATNR BWKEY BWTAR CHARG MATKL MAKTX DOCREF ITMREF MENGE NETPR NETWR

agosto de 12

36

Você também pode gostar