SAP Container é um controle que acomoda outros controles, como o SAP Tree, o SAP Picture , 0 SAP TextEdit , e assim por diante. Ele gerencia esses controles logicamente em uma coleção, e fornece uma área física em que eles são exibidos. Existem cinco tipos de SAP Containers.
CL_GUI_SPLITTER_CONTAINER
Representa um controle que consiste de uma barra móvel que divide a área de exibição de um recipiente em dois painéis redimensionáveis. Permite exibir mais de um controle em uma determinada área, dividindo-o nas células.
CL_GUI_CONTAINER
Representa um painel que pode ser alocado dentro de uma célula de um container.
Screen Painter
Para usar o Sap Container no modo Splitter siga os seguintes passos:
- Crie um programa chamado ZSPLITERCONTAINER na transação SE38.
- Você pode criar um titulo e um menu para este programa na transação SE41 (Opcional).
- Crie uma tela de numero 100 para este programa no Screen Painter na transação SE51.
- Crie um evento PBO padrão para a variável Status 100 na aba Flow Logic.
- Em Layout coloque um componente Custom Control na tela e o nomeie como MEUCONTAINER.
- Ative a tela 100.
- Abra seu programa e utilize o código abaixo.
Exemplo:
Neste exemplo criamos uma tela à partir de um componente visual Custom Control que possui um painel contendo duas células redimensionáveis, cada uma contendo um painel que contem um outro componente Custom instanciado de um objeto.
Abap
*&---------------------------------------------------------------------* *& Report ZSPLITERCONTAINER *& *&---------------------------------------------------------------------* *& Desenvolvimento Aberto *& SAP Container - Splitter *&---------------------------------------------------------------------* REPORT ZSPLITERCONTAINER. * Declara componentes DATA: meucontainer TYPE REF TO cl_gui_custom_container, painel TYPE REF TO CL_GUI_SPLITTER_CONTAINER, imagem TYPE REF TO CL_GUI_PICTURE, editor TYPE REF TO cl_gui_textedit, painel1 TYPE REF TO CL_GUI_CONTAINER, painel2 TYPE REF TO CL_GUI_CONTAINER. * Declara tabela interna DATA: linha(256), texto_tab LIKE STANDARD TABLE OF linha. * Inicio do programa START-OF-SELECTION. * Adiciona texto na tabela interna linha = 'O balonismo é um esporte aeronáutico praticado com um balão de ar quente.'. APPEND linha TO texto_tab. linha = 'Possui adeptos em todo o mundo. No Brasil, o esporte começou a se popularizar'. APPEND linha TO texto_tab. linha = 'a partir dos anos 90.'. APPEND linha TO texto_tab. linha = 'O balão é considerado uma aeronave assim como avião, helicópteros e outros.'. APPEND linha TO texto_tab. linha = 'Por esta razão o balão deve ter uma matricula (prefixo) registrado junto'. APPEND linha TO texto_tab. linha = 'à ANAC, seu piloto deve possuir uma licença (brevê) específico para a pratica'. APPEND linha TO texto_tab. linha = 'do balonismo também emitido pela ANAC.'. APPEND linha TO texto_tab. * Chama tela Screen Painter CALL SCREEN 100. * Modulo PBO MODULE STATUS_0100 OUTPUT. * SET PF-STATUS 'xxxxxxxx'. * SET TITLEBAR 'xxx'. * Cria componentes * Cria componente Screen Painter Custom Container CREATE OBJECT MEUCONTAINER EXPORTING CONTAINER_NAME = 'MEUCONTAINER' LIFETIME = MEUCONTAINER->LIFETIME_DYNPRO. * Cria Splitter Container CREATE OBJECT PAINEL EXPORTING PARENT = MEUCONTAINER ROWS = 1 COLUMNS = 2 ALIGN = 15. * Exibe Painel 1 CALL METHOD PAINEL->GET_CONTAINER EXPORTING ROW = 1 COLUMN = 1 RECEIVING CONTAINER = PAINEL1. * Exibe Painel 2 CALL METHOD PAINEL->GET_CONTAINER EXPORTING ROW = 1 COLUMN = 2 RECEIVING CONTAINER = PAINEL2. * Cria imagem CREATE OBJECT IMAGEM EXPORTING LIFETIME = IMAGEM->LIFETIME_DYNPRO PARENT = PAINEL1. *Chama imagem da url CALL METHOD IMAGEM->load_picture_from_url EXPORTING url = 'https://desenvolvimentoaberto.files.wordpress.com/2014/04/balonismo.jpg' EXCEPTIONS error = 1. * Cria Editor CREATE OBJECT EDITOR EXPORTING PARENT = PAINEL2. * Adiciona texto CALL METHOD editor->set_text_as_stream EXPORTING text = texto_tab. ENDMODULE. " STATUS_0100 OUTPUT