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