academia 2011 - 11

36
Jun 6, 20 22 Ver. 1.1.1107 Pensando grande para você, pensando grande como você. Sonda Procwork Academia ABAP Interna – Julho de 2011

Upload: sidney-dos-anjos

Post on 27-Oct-2014

41 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Academia 2011 - 11

Apr 7, 2023Ver. 1.1.1107

Pensando grande para você, pensando grande como você.

Sonda ProcworkAcademia ABAP Interna – Julho de 2011

Page 2: Academia 2011 - 11

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.

Page 3: Academia 2011 - 11

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.

Page 4: Academia 2011 - 11

Apr 7, 2023 4

Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai

ALV

ALV List

Page 5: Academia 2011 - 11

Apr 7, 2023 5

Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai

ALV

ALV Hierárquico

Page 6: Academia 2011 - 11

Apr 7, 2023 6

Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai

ALV

ALV Grid

Page 7: Academia 2011 - 11

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

Page 8: Academia 2011 - 11

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.

Page 9: Academia 2011 - 11

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.

Page 10: Academia 2011 - 11

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.

Page 11: Academia 2011 - 11

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.

Page 12: Academia 2011 - 11

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.

Page 13: Academia 2011 - 11

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

Page 14: Academia 2011 - 11

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.

Page 15: Academia 2011 - 11

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

Page 16: Academia 2011 - 11

Apr 7, 2023 16

Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai

ALV

Passo 10 (cont.)

Page 17: Academia 2011 - 11

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

Page 18: Academia 2011 - 11

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

Page 19: Academia 2011 - 11

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.

Page 20: Academia 2011 - 11

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.

Page 21: Academia 2011 - 11

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

Page 22: Academia 2011 - 11

Apr 7, 2023 22

Argentina • Brasil • Chile • Colômbia • Costa Rica • Equador • México • Peru • Uruguai

ALV

ALV GRID

Page 23: Academia 2011 - 11

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

Page 24: Academia 2011 - 11

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

print

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

Page 25: Academia 2011 - 11

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

Page 26: Academia 2011 - 11

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.

Page 27: Academia 2011 - 11

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.

Page 28: Academia 2011 - 11

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.

Page 29: Academia 2011 - 11

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.

Page 30: Academia 2011 - 11

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.

Page 31: Academia 2011 - 11

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)

Page 32: Academia 2011 - 11

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.

Page 33: Academia 2011 - 11

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.

Page 34: Academia 2011 - 11

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

Page 35: Academia 2011 - 11

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.

Page 36: Academia 2011 - 11

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