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














