ALV Grid Control
A ferramenta fornece operações de lista comuns como funções genéricas e pode ser reforçada por opções auto definidas. Isso permite que você use o ALV Grid Control em uma grande variedade de programas de aplicação. O ALV Grid Control também é usado como uma ferramenta para a mudança e criação de tabelas. No entanto, essa funcionalidade é atualmente utilizado em projetos-piloto e ainda não foi liberado para os clientes.
O SAP List Viewer (ALV) é um elemento integrante do ambiente de programação ABAP Objects e este controle se divide basicamente em três partes, é composto de um cabeçalho de títulos, uma barra de ferramentas e uma grade de dados.
Você pode usar o AVL para exibir os seguintes componentes: tabelas simples e bidimensionais, listas hierárquica sequenciais e estrutura em árvore.
Considerações
O ALV Grid Control usa controles de tecnologia para alcançar exibição state-of-the-art-on-screen. Como todos os invólucros de controle, o Grid Control ALV oferece métodos através de uma classe global no sistema, que pode ser usado para afetar seu comportamento.
SAP AVL NEW API
A API antiga ainda pode ser usada, no entanto, a SAP recomenda usar o novo modelo de objeto unificado da classe cl_gui_alv_grid para a programação de todos os seus aplicativos ALV. Assim, mesmo se você planeja usar o ALV Grid Control, você pode usar a nova API simplificada.
A SAP não garante que os métodos, eventos e atributos desta classe que não são públicas permanecerão inalterados ou estará disponível em versões futuras. É por isso que você não deve derivar da classe para acessar objetos protegidos da classe. Usando esses objetos faz com que seja mais difícil para atualizar seus programas para versões posteriores da classe.
Exemplo:
Neste exemplo usamos um ALV Grid Control para exibir dados de uma tabela do SAP Netweaver 7. Você pode usar a variant para salvar os layouts do seu AVL Control, explicações extras contidas no comentário do código fonte.
Obs: Você encontra um programa para preencher com dados a tabela do exemplo abaixo SPFLI em nossos posts anteriores.
Abap
*&---------------------------------------------------------------------* *& Report ZALVGRID *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& ALV Grid Control *&---------------------------------------------------------------------* REPORT ZALVGRID. * Declara tabela TABLES : SPFLI. * Declara pools TYPE-POOLS : SLIS. * Declara tabela interna DATA : WA_SPFLI TYPE SPFLI, IT_SPFLI TYPE TABLE OF SPFLI. * Declara AVL GRID DATA: CAMPOS TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE, DA_LAYOUT TYPE SLIS_LAYOUT_ALV, DA_REPID LIKE SY-REPID, * Declara variant DA_SALVA TYPE C VALUE 'X', DA_VARIANT TYPE DISVARIANT, DAZ_VARIANT TYPE DISVARIANT. * Cria seleção - nome da variant - * Selecione vazio caso não tenha salvo nenhum layout SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE titulo . SELECTION-SCREEN COMMENT 1(79) com1. PARAMETERS: VARIANT LIKE DISVARIANT-VARIANT. SELECTION-SCREEN END OF BLOCK B1. ** Retorna Variant INITIALIZATION. DAZ_VARIANT-REPORT = SY-REPID. CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET' EXPORTING I_SAVE = DA_SALVA CHANGING CS_VARIANT = DAZ_VARIANT EXCEPTIONS NOT_FOUND = 2. IF SY-SUBRC = 0. VARIANT = DAZ_VARIANT-VARIANT. ENDIF. * Inicia variaveis da seleção LOAD-OF-PROGRAM. titulo = 'Variant permite salvar o Layout'. com1 = 'Utilize o menu Settings/Layout/Save'. * Incio do programa START-OF-SELECTION. * Chama procedimentos PERFORM RetornaDados. PERFORM CriaCampos. PERFORM MostraGrid. * Cria campos da grid FORM CriaCampos. CAMPOS-FIELDNAME = 'CARRID'. CAMPOS-SELTEXT_M = 'Linha Area'. CAMPOS-COL_POS = 0. APPEND CAMPOS TO CAMPOS. CLEAR CAMPOS. CAMPOS-FIELDNAME = 'CONNID'. CAMPOS-SELTEXT_M = 'Conexão'. CAMPOS-COL_POS = 1. APPEND CAMPOS TO CAMPOS. CLEAR CAMPOS. CAMPOS-FIELDNAME = 'CITYFROM'. CAMPOS-SELTEXT_M = 'Saida'. CAMPOS-COL_POS = 2. CAMPOS-OUTPUTLEN = 30. APPEND CAMPOS TO CAMPOS. CLEAR CAMPOS. CAMPOS-FIELDNAME = 'CITYTO'. CAMPOS-SELTEXT_M = 'Chegada'. CAMPOS-COL_POS = 3. CAMPOS-OUTPUTLEN = 30. APPEND CAMPOS TO CAMPOS. CLEAR CAMPOS. CAMPOS-FIELDNAME = 'DISTANCE'. CAMPOS-SELTEXT_M = 'Distancia'. CAMPOS-COL_POS = 4. APPEND CAMPOS TO CAMPOS. CLEAR CAMPOS. CAMPOS-FIELDNAME = 'DISTID'. CAMPOS-SELTEXT_M = 'Medida'. CAMPOS-COL_POS = 5. APPEND CAMPOS TO CAMPOS. CLEAR CAMPOS. ENDFORM. * Mostra AVL GRID FORM MostraGrid . DA_REPID = SY-REPID. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING I_CALLBACK_PROGRAM = DA_REPID I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE' I_CALLBACK_USER_COMMAND = 'USER_COMMAND' IT_FIELDCAT = CAMPOS[] I_SAVE = 'X' IS_VARIANT = DA_VARIANT TABLES T_OUTTAB = IT_SPFLI EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2. ENDFORM. * Retorna dados FORM RetornaDados. SELECT * FROM SPFLI INTO TABLE IT_SPFLI. ENDFORM. * Cabeçalho - ALV Report Header FORM TOP-OF-PAGE. * Declara cabeçalho AVL DATA: DA_TOP TYPE SLIS_T_LISTHEADER, WA_TOP TYPE SLIS_LISTHEADER. WA_TOP-TYP = 'H'. WA_TOP-INFO = 'Desenvolvimento Aberto'. APPEND WA_TOP TO DA_TOP. CLEAR WA_TOP. WA_TOP-TYP = 'H'. WA_TOP-INFO = 'SPFLI - Voos e Conexões'. APPEND WA_TOP TO DA_TOP. CLEAR WA_TOP. WA_TOP-TYP = 'S'. WA_TOP-KEY = 'Data do dia : '. CONCATENATE SY-DATUM+6(2) '.' SY-DATUM+4(2) '.' SY-DATUM(4) INTO WA_TOP-INFO. APPEND WA_TOP TO DA_TOP. CLEAR: WA_TOP. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING IT_LIST_COMMENTARY = DA_TOP. ENDFORM.