academia 2011 - 11
Post on 27-Oct-2014
41 Views
Preview:
TRANSCRIPT
Apr 7, 2023Ver. 1.1.1107
Pensando grande para você, pensando grande como você.
Sonda ProcworkAcademia ABAP Interna – Julho de 2011
Apr 7, 2023 2
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
O que é? O ALV é um tipo de relatório que padroniza e simplifica a exibição e operação
de listas no SAP.
Permite que criemos relatórios sem termos que nos preocupar muito com a impressão desse relatório na tela.
O ALV através de suas funções e estruturas torna o desenvolvimento mais simples na medida que economiza significativas linhas de código, como por exemplo, no tratamento de quebras, totais, subtotais, cores e outras vantagens que veremos a seguir.
O Relatório ALV é chamado por um Módulo de Função.
Apr 7, 2023 3
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Tipos de Relatórios ALV ALV List
Lista básica comum
ALV Hierárquico Lista com dados de cabeçalho e itens
ALV Grid Lista onde pode-se trabalhar com algumas partes gráficas. Formato mais elaborado de tela,
onde é possível colocar logo, fundo de cabeçalho, etc.
Apr 7, 2023 4
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
ALV List
Apr 7, 2023 5
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
ALV Hierárquico
Apr 7, 2023 6
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
ALV Grid
Apr 7, 2023 7
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo a passo para montagem do relatório
Passo 1 Grupo de Tipos
É necessário a declaração do grupo de tipos SLIS onde se encontram os tipos fundamentais para a saída de um relatório ALV.
Ex: type-pools: slis.
Variantes de Exibição Mais a frente, veremos que o usuário poderá escolher as colunas que ele deseja exibir em
seu relatório e com isso salvá-los (na própria tela do relatório) com um nome desejado. Chamamos de variantes de exibição em ALV esses layouts (colunas desejadas) que o usuário poderá salvar no relatório
Apr 7, 2023 8
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • 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 função que nos
retornará a variante default do relatório. Mas para isso precisaremos declarar algumas estruturas do tipo disvariant (Variant.exibição) e variáveis no seguinte padrão: variant_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.
Apr 7, 2023 9
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 3 (cont.)* Buscar variante default
gs_def_variante = gs_variante.
A função a seguir retornará a variante que foi salva como default na exibição do relatório ALV. Lembrando que quando executamos o relatório pela primeira vez , não existe variante default. Veremos depois que gerarmos nosso primeiro ALV, que quando salvarmos uma variante de exibição existirá um flag chamado CONFIGURAÇÃO PRELIMINAR, que sendo marcado quando salvamos estamos definindo conseqüentemente esta variante como default do relatório.
call function 'REUSE_ALV_VARIANT_DEFAULT_GET' exporting i_save = ‘A’ changing cs_variant = 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.
Apr 7, 2023 10
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 4 Matchcode do campo de variante de exibição.
É 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 “ Report com as i_save = ‘A’ “ Variantes Salvas i_tabname_header = ‘GT_SAIDA' “ Tabela interna saida it_default_fieldcat = gt_fieldcat[] “ Tabela de formatação i_display_via_grid = 'X' “ Dispara POPUP em ALV
importing e_exit = gc_variant_exit “ Se não existir variante es_variant = gs_def_variante “ Variante default 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. “ Recebe variante escolhida endif. endif.
Apr 7, 2023 11
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 5 Sabendo que existe a possibilidade do usuário entrar com uma variante de
exibição não existente, usaremos em todos os nossos relatórios ALV uma função que checará se a mesma existe. No evento at selection-screen faremos esta verificação:
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.
Apr 7, 2023 12
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 6 Seleção e Preparação dos Dados
Passo 7 Configuração de Saída do Relatório ALV
Parâmetros Gerais do Layout
Declarar uma estrutura do tipo slis_layout_alv
Exemplo:
gs_layout type slis_layout_alv.
Apr 7, 2023 13
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
Passo 8 Preencher a estrutura de Layout com os parâmetros solicitados. Abaixo uma
lista dos mais utilizados:gs_layout-box_fieldname = 'BOX'. “Campo checkbox p/tab_saida
gs_layout-get_selinfos = 'X'. “Mostrar tela de seleção.
gs_layout-detail_popup = 'X'. “Mostrar detalhe via popup.
gs_layout-detail_initial_lines = 'X'. “Todos os campos em detalhes.
gs_layout-zebra = 'X'. “Cor sim / cor não.
gs_layout-colwidth_optimize = 'X'. “Otimização de largura de colunas
Arquivo com a estrutura slis_layout_alv:
Estrutura slis_layout_alv
Apr 7, 2023 14
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 9 Criação de Grupos de Campos
Não é fundamental a criação de grupos de campos, mas facilita ao usuário na hora de escolher os campos de exibição após o clique do botão MODIFICAR LAYOUT . Vários campos da fieldcat podem ser definidos para um mesmo grupo de campo. Veremos mais a frente como atribuir um campo a um grupo de campo.
Declarar uma estrutura do tipo slis_t_sp_group_alv
Exemplo:
gs_grupos type slis_t_sp_group_alv with header line.
Apr 7, 2023 15
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 10 Carregar a tabela de grupos com os parâmetros necessários;
Exemplo:move: 'Moeda‘ to gs_grupos-sp_group,
'Campos moeda‘ to gs_grupos-text.
append gs_grupos.
Abaixo, estão descritos os campos da estrutura tipo slis_t_sp_group_alv.
Campo Descrição
sp_group Cód. do grupo que será utilizado na fieldcat
text Descrição dos grupos
Apr 7, 2023 16
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 10 (cont.)
Apr 7, 2023 17
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 11 Parâmetros de Ordenação.
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 Ordenação.
Abaixo uma lista dos mais utilizados. gs_sort-up = 'X'. “Ordenação crescentegs_sort-fieldname = 'campo pelo qual queremos ordenar a <TI>'gs_sort-tabname = 'Tabela interna de saída'. gs_sort-spos = '1'. “Prioridade de ordenaçãoappend gs_sort.
Arquivo com a estrutura slis_t_sortinfo_alv
Estrutura slis_t_sortinfo_alv
Apr 7, 2023 18
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 13 Parâmetros 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 = 'EBELN'.gs_fieldcat-tabname = 'TI_SAIDA'.gs_fieldcat-ref_fieldname = ‘EBELN’.gs_fieldcat-ref_tabname = ‘EKKO’.gs_fieldcat-key = ‘X’.append gs_fieldcat.
Arquivo com a estrutura slis_t_fieldcat_alv
Estrutura slis_t_fieldcat_alv
Apr 7, 2023 19
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Apenas para o ALV Grid
Passo 15 Definir o Cabeçalho
Declarar a estrutura do tipo slis_t_listheader.
gs_top type slis_t_listheader.
Passo 16 Dados do Cabeçalho
Criar uma chamada de perform da seguinte forma:
PERFORM zf_top USING gs_top.
Apr 7, 2023 20
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 16 (cont.) Codificação 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.
Apr 7, 2023 21
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 17 form top_of_page
O nome deste form será passado para a função de impressão do ALV.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = gs_top
i_logo = 'figura'.
Apr 7, 2023 22
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
ALV GRID
Apr 7, 2023 23
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Apenas para o ALV Hierárquico É necessário definir as ligações entre as tabelas de cabeçalho e de itens para
fazer as quebras no momento da visualização.
Passo 18 Declarar uma estrutura do tipo slis_keyinfo_alv.
Passo 19gs_keyinfo-header01 = 'Campo_tabela_header'.
gs_keyinfo-item01 = ‘Campo da tabela de item'.
Apr 7, 2023 24
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 20 Parâmetros de Impressão.
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 Descrição
prnt_info Informações de Impressão
Prnt_title
no_coverpage
no_new_page
reserve_lines Linhas reservadas para o final da página
no_print_listinfos Não imprimir página com número de registros selecionados
no_change_print_params Não alterar tamanho de linha
no_print_selinfos Não mostrar informações de impressão
Apr 7, 2023 25
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 21 Tabela de Saída.
Devemos popular nossa tabela de saída com todos os dados que mostraremos na tela.
Passo 22 Chamar o Relatório
Como existem três tipos de relatórios, teremos três funções diferentes.
Observação Enquanto não criamos os forms ‘set_pf_status’ e ‘user_command’,
deixaremos comentados os seguintes itens nas funções: i_callback_pf_status_set
i_callback_user_command
Apr 7, 2023 26
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • 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[] “ Parâmetro p/executar sempre com a variante default i_default = ‘X’ “ Se é possível salvar as variantes i_save = 'A' “ Nome da variante selecionada is_variant = gs_variante is_print = gs_print it_special_groups = gs_grupos[] tables t_outtab = gt_saida.
Apr 7, 2023 27
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 22 (ALV Hierárquico)call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' exporting i_callback_program = sy-repid “i_callback_pf_status_set = 'SET_PF_STATUS' “i_callback_user_command = 'USER_COMMAND' is_layout = 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.
Apr 7, 2023 28
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • 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.
Apr 7, 2023 29
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
User-Command e PF-Status Com o ALV gerado, reparamos em sua barra de botões que ele trás botões
default pelas funções de saída, mas haverá a necessidade em algumas vezes de criações de novos botões para o usuário como exemplo abaixo.
Apr 7, 2023 30
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 23 PF-STATUS
Criação 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 criação do pf-status, nós iremos repetir alguns botões que vinham através das funções. Para que esses botões continuem não precisando de tratamento é necessário que se saiba o nome da função standard de cada botão.
Apr 7, 2023 31
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Passo 24 Variáveis de Controle
Declaração de uma estrutura do tipo slis_selfield para o Drill Down e uma variável do tipo sy-ucomm.
Exemplo
ls_selfield type slis_selfield.
lc_ucomm like sy-ucomm.
TABNAME Nome da tabela interna de saída do ALV
TABINDEX Índice do clique na tabela interna de saída
SEL_TAB_FIELD Tabela-interna-campo do clique
VALUE Valor da célula do clique
REFRESH Reexecuta o ALV
FIELDNAME Campo do clique(coluna)
Apr 7, 2023 32
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • 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.
Apr 7, 2023 33
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
ALV
Tratamento dos Botõescase pu_ucomm. when ‘BOTÃO1’. Comandos. when ‘BOTÃO2. Comandos.endcase.
Tratamento do Drill Downcase pu_selfield-sel_tab_field. when ‘TAB_INT-CAMPO1’. ”Para ler linha do clique. Read table tab_int
index pu_selfield-tabindex. ”Valor da célula do clique set parameter id 'ALV‘ field pu_selfield-value. call transaction 'ALV‘ and skip first screen. when ‘TAB_INT-CAMPO2’. Comandos. endcase.
Apr 7, 2023 34
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
Exercício
Relatório ALV – Pedidos de Compras Criar um Relatório 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
Apr 7, 2023 35
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
Exercício
Relatório ALV – Ordens de Vendas Criar um Relatório ALV Hierárquico 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
Observação: Não esquecer de relacionar as tabelas para visualização no relatório.
Apr 7, 2023 36
Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai
Exercício
Relatório ALV – Notas Fiscais Criar um relatório 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
top related