Visual – ListBox, Vrm_Set_Values, Vrm_Get_Values, Vrm_Value – Abap

Publicado: 20 de março de 2014 em Abap

ListBox

Em computação, uma caixa de combinação é um elemento de interface gráfica. Um ListBox em Abap é chamado de ComboBox em outras linguagens de programação e permite ao usuário escolher uma das várias opções, pode ter duas formas muito diferentes. A forma padrão é a caixa de combinação não editável, que conta com um botão e uma lista suspensa de valores. A segunda forma, chamada de caixa de combinação editável, possui um campo de texto com um pequeno botão confinando-o. O usuário pode digitar um valor no campo de texto ou clique no botão para exibir uma lista drop-down.

VRM_Set_Value

É um modulo de função Abap que adiciona dois valores a uma variável tipo tabela, esta tabela possui dois campos o primeiro chamado KEY do tipo inteiro e o segundo chamado TEXT do tipo string, esta função vincula-se a um componente através de seu parâmetro ID e adiciona os valores através do parâmetro Values .

VRM_Get_Value

É a mesma função acima, apenas ao invés de adicionar, retorna os valores  atrelados a um ID de um componente.

Vrm_VAlue

É um tipo associado a estrutura de chave e valores.

Screen Painter

Para criar uma tela visual para o programa relacionado ao código abaixo siga os seguintes passos:

List_design

  1. Crie um programa chamado ZCOMBO.
  2. Na transação SE51, relacione o programa e insira o numero dela igual a 100.
  3. Na aba Flow Logic , tire o comentário da linha “MODULE STATUS_0100.” e de um duplo clique na variável: “STATUS_0100“.
  4. Crie o modulo PBO  selecionando a opção MAIN PROGRAM.
  5. Salve o programa e volte para a transação SE51.
  6. Clique no botão Layout e desenhe uma tela como na imagem acima.
  7. No componente ListBox coloque seu nome de COMBO, seu Fct_Code de F_CODE e sua propriedade DropDown de LISTBOX.
  8. No componente Pushbutton coloque seu nome de SAIR e seu Fct_Code de F_SAIR.
  9. Salve e Ative as telas.
  10. Na transação SE38 chame o programa ZCOMBO e insira o código abaixo, você deve obter um programa como na figura a seguir.

List_programa

Exemplo:

No programa a seguir criamos um ListBox e o populamos com nomes de musicas da banda Rolling Stones, e usamos código Abap para  capturar o evento SelectedChange através de atributos do R/3.

Abap

*&---------------------------------------------------------------------*
*& Report  ZCOMBO
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& ComboBox
*&---------------------------------------------------------------------*

REPORT  ZCOMBO.

* Cria um Pool tipo VRM
TYPE-POOLS vrm.

* Declara Variaveis
DATA: LISTBOX TYPE vrm_value OCCURS 0,
COMBO TYPE SY-UCOMM,
retorno TYPE VRM_VALUES,
texto TYPE string,
LCOMBO TYPE vrm_value,
TNOME TYPE vrm_value.

* Carrega Itens temporariamente
LOAD-OF-PROGRAM.

  LCOMBO-KEY = '1'.
  LCOMBO-TEXT = 'Satisfaction'.
  APPEND LCOMBO TO LISTBOX.

  LCOMBO-KEY = '2'.
  LCOMBO-TEXT = 'Paint it Black'.
  APPEND LCOMBO TO LISTBOX.

  LCOMBO-KEY = '3'.
  LCOMBO-TEXT = 'Wild Horses'.
  APPEND LCOMBO TO LISTBOX.

  LCOMBO-KEY = '4'.
  LCOMBO-TEXT = 'Brown Sugar'.
  APPEND LCOMBO TO LISTBOX.

  LCOMBO-KEY = '5'.
  LCOMBO-TEXT = 'Sympathy for the Devil'.
  APPEND LCOMBO TO LISTBOX.

  LCOMBO-KEY = '6'.
  LCOMBO-TEXT = 'Start Me Up'.
  APPEND LCOMBO TO LISTBOX.

START-OF-SELECTION.

* Chama a tela
CALL SCREEN 100.

* Inicio do Modulo 100
MODULE STATUS_0100 OUTPUT.
*  SET PF-STATUS 'xxxxxxxx'.
*  SET TITLEBAR 'xxx'.

* Popula o componente ListBox

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = 'COMBO'
      values = LISTBOX[].

* Verifica ações dos componentes
  CASE SY-UCOMM.
    " Deixa o programa
    WHEN 'F_SAIR'.
      LEAVE PROGRAM.

    " Captura Item Selecionado
    WHEN 'F_COMBO'.

      " Retorna os valores dos componentes
      CALL FUNCTION 'VRM_GET_VALUES'
        EXPORTING
          ID     = 'COMBO'
        IMPORTING
          VALUES = RETORNO.

      " Lê variavel dentro do retorno tipo tabela pelo ID.
      READ TABLE RETORNO WITH KEY KEY = COMBO INTO TEXTO.

      " Adiciona item selecionado ao componente textbox
      TNOME = TEXTO.

  ENDCASE.

ENDMODULE.                 " STATUS_0100  OUTPUT
Anúncios

Deixe um comentário

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

Logotipo do WordPress.com

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

Foto do Google+

Você está comentando utilizando sua conta Google+. 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