Você está na página 1de 4

Criao de TABSTRIP

Criar a tabstrip no screen painter dando um nome <nome tabstrip>. Inserir as abas atravs de pushbuttons dando um nome <nome aba>, um cdigo de funao <codfunc aba> e no campo ref. deve ser incluso o nome da rea de subscreen que ser utilizada <nome rea subscreen>. Est rea subscreen deve ser inserida em uma das abas e atravs do preenchimento do campo ref. ligamos esta rea a todas as abas ou criamos uma rea especfica para cada aba. Para cada rea diferente deve haver um comando call subscreen nos mdulos PBO e PAI conforme explicado a seguir. Para cada aba esta rea de subscreen ser preenchida por uma tela diferente. Incluir no top include a clausula controls <nome tabstrip> type tabstrip. No PBO da tela me dever ter inicialmente um if no module status ou em qualquer outro: if c_subtela is initial. c_subtela = <nmero da subscreen>. <nome tabstrip>-activetab = <codfunc aba>. endif. A varivel c_subtela deve ser declarada no top include e conter a subtela a ser embutida na rea da subtela <nome subscreen> da tela me. O campo <nome tabstrip>-activetab indica qual a aba que est ativa. No PBO da tela me inserir a clusula. call subscreen <nome rea subscreen> including <nome programa> subscreen>. <nmero da

Para cada aba deve ser criada uma tela do tipo subtela que conter os elementos a serem exibidos na rea de subtela da tela me. Estas subtelas no devem ter status e user_command ( teste do comando do usurio ), isto ser feito na tela me. No PAI da tela me devemos ter a lgica. Case okcode. when <codfunc aba>. * c_subtela = <nmero da subscreen>. * <nome tabstrip>-activetab = <codfunc aba>. * Endcase. * para cada aba da tabstrip. Criao de TABLE CONTROL

Inserir o elemento table control na tela <n tela>. Criar uma estrutura <nome estrutura> com os campos que faro parte da table control e ainda um campo que armazenar se a linha foi selecionada <campo seleo> se necessrio (campo selkz). Chamar esta estrutura do dicionrio na tela e soltar os campos em cima da table control. Nos atributos da table control digitar o <campo seleo> no atributo C/col.marc. caso deseje ter a possibilidade de seleo de linha. Caso deseje ttulo setar o atributo C/ttulo e mover um elemento label para a barra de ttulo lanando nele a descrio. Digitar tambm o nome da table control <nome tablecontrol> Incluir no top include a clusula controls <nome tablecontrol> type tableview using

screen <n tela>. Carregar os registros a serem exibidos em uma tabela interna <nome tabela interna> que pode ou no ter a mesma estrutura da <nome estrutura>. No PBO da tela <n tela> devemos ter: loop at <nome tabela interna> with control <nome tablecontrol> cursor <nome tablecontrol>-current_line. module ym_carrega_linha. endloop. Este mdulo deve passar os dados necessrios da <nome tabela interna> e outras tabelas auxiliares, se necessrio, para os campos da <nome estrutura>. module ym_carrega_linha output. move <nome tabela interna> to <nome estrutura>. endmodule. " YM_CARREGA_LINHA OUTPUT

No PAI da tela <n tela> devemos ter: loop at <nome tabela interna>. Atualizar a tabela interna <nome tabela interna> com o que mudou na estrutura <nome estrutura> para cada linha. endloop. Caso o nmero de linhas mudar em tempo de processamento atualizar a varivel <nome tablecontrol>-lines antes do loop no PBO. Criao de STEP-LOOP

Inserir na tela os campos que faro parte do step-loop : <estrutura step loop>. Selecionar os campos e clicar na opo de menu Processar/Agrupamento/Setp loop/Definir. Carregar os dados que sero exibidos em uma tabela interna <tabela step loop>. No PBO digitar: loop. module ym_carrega_linha_texto_exped. endloop. Este modulo deve ler a tabela interna <tabela step loop> e mover as informaes para <estrutura step loop>. O controle de salto de pgina deve ser adicionado ao sy-stepl. module ym_carrega_linha_texto_exped output. read table <tabela step loop> index sy-stepl. if sy-subrc = 0. move <tabela step loop> to <estrutura step loop>.

else. clear <estrutura step loop>. endif. endmodule. No PAI digitar: loop. module ym_atualiza_modificacao. endloop. module ym_atualiza_modificacao input. Este modulo deve atualizar a <estrutura step loop> na tabela interna <tabela step loop> endmodule. Para que a barra de rolagem funcione automaticamente em um STEP-LOOP contido em uma tela modal

Em uma tela modal a barra de step-loop s ir funcionar se no existir o ENDING AT na chamada da tela. Cdigo para exibir um step-loop facilmente like sy-tabix.

n_cursor

Process before output. Module status_1100. Loop at htab_nbmtable cursor n_cursor. Endloop. Process after input. Module saida_1100 at exit-command. Loop at htab_nbmtable. Endloop. Module user_command_1100. OBSERVAO: limpar sempre o n_cursor no PBO antes de executar o loop causa a impossibilidade de scroll de tela e page down. Logo se houver a necessidade de scroll o n_cursor deve ser limpo antes de chamar a tela Para obter a linha selecionada em um step-loop

module user_command_1100 input. data: n_line like sy-tabix. if okcode = 'FPIC'. get cursor line n_line. if n_line = 0. exit.

endif. n_line = n_cursor + n_line - 1. read table htab_nbmtable index n_line. move htab_nbmtable-steuc to txtclsfis. Set screen 0. leave screen. endif. endmodule. " USER_COMMAND_1100 INPUT

Cdigo para controle de paginao

describe table htab_nbmtable lines linesreaded. case okcode when 'P--'. Primeira pgina n_cursor = 1. when 'P-'. Pagina anterior n_cursor = n_cursor - sy-srows + 2. "2 - distancia do topo tela when 'P+'. Prxima pgina n_line = sy-srows - 2. if linesreaded > n_line. n_cursor = n_cursor + sy-srows - 2. if n_cursor > linesreaded. n_cursor = linesreaded. endif. endif. when 'P++'. ltima pgina n_line = sy-srows - 2. if linesreaded > n_line. n_cursor = linesreaded. endif. endcase.

Você também pode gostar