Visual – Alv Grid Control (Sap List Viewer) – Abap

Publicado: 20 de abril de 2014 em Abap

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.

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.

ALV Grid Control

ALV Grid Control

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

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s