segunda-feira, 18 de abril de 2011

Module Pool - Básico

 
"  Vou tentar comentar como faze um 'Module Pool simples o sulficiente pra
" fala que um dia fez um, vou tentar ser um pouco mais didádico.
"  'Module Pool ou programa online É uma ferramenta da SAP para interação
" de com o usuário.
"  Existem duas maneiras de Cria um 'OnLine seria pelo se38 ( editor ABAP
" normal ) se41 (MenuPainter) se51(Screen Painter) mas isso eh soh pra sabe
" pq na verdade vc vai usa o se80 ( Object Navigator ) pq vc fika vendo a
" arvore do esquema todo que vc tah criando, 'Includes, 'Campos, ' Modulos,
" 'Telas e mais um monte de coisa que faz o se80 fika bem mais vantajoso.

" Vamo lah então step by step,

"  Na se80 clique com o botão direito do mouse no na pastinha de programa e crie
" um novo programa e muito importante vc seguir a nomenclatura padrão SAP
" que seria conforme exemplo SAPMZSD0001 onde o 'SAP' é nome padrão, 'M' indica
" que é 'Module Pool, 'SD' indica pra que Modulo está sendo feita este 'Module,
" a partir daki seguir a metodologia utilizada pelo cliente ou ambiente.
"  Escolha a opção com 'Include Top pq assim os includes vão ser declarados
" automaticamente, a SAP irá sugerir um nome, o mais indicado é aceitar, nos
" atributos do programa preencha o tipo de programa com 'Pool de modulos' .


 

"  Num 'Online existem 4 principais 'Includes que serão utilizados durante
" todo o processo que ficam no programa principal já veêm escrito no código
" mas esta comentando portando soh descomente e clique duas vezes para criar,
" siga o padrão de nomenclatura que a SAP coloca no comentario:
" Nomenclatura : Include TOP - TOP / Include PBO - O01 / Include PAI - I01
" / Include Performs - f01.

"  Include TOP - serve pra vc coloca todas as declarações que será usado no
" programa como variáveis, tipos, estrutura, tabelas internas, constantes etc.
"  Include PBO - Serão armazenados todos os Modules PBO que são todas as
" rotinas para a preparação das informações e/ou elementos da tela antes
" da sua exibição.
"  Include PAI - Serão armazenados todos os Modules PAI que são todas as
" rotinas de tratamento das ações ( comando do usuário ) que foram
" executados na tela.
" Include Performs - Onde vai fika todos os performs que vc cria.




"  Agora nós estamos quase terminando, rsrs, vixi tem muita coisa ainda,
" vamos criar as telas agora, é a parte que o usuário visualiza os campos
" que tem que ser preenchido.
"  Clique com o botão direito no nome do programa criar/ tela de um numero
" pra essa tela que servirá como referencia para chamar apos numero da tela
" confirme e coloque a descrição da tela e salve.
"  ( a SAP recomenda usar o numero da tela de 9000 a 9999 indicando que
" a tela criada é uma tela 'Z' ( criada por nois mortais ))
"  Após gravar a tela irá aparecer na arvore de objetos do programa,




"  Toda ação feita na tela do programa faz retornar um valor , o
" código de função, Para saber que valor é esse, deve-se definir um
" campo OK_CODE como um campo da tela, o qual receberá o valor desse código
" e assim tomando as ações relacionadas a ela, Portanto defina uma variavel
" do tipo sy-ucomm e atribua ao campo Ok_code da tela.

"  Caso queira fazer uma validação nos valores que foram informados na tela
" e informar ao usuário de que algo não está correto, deve se usar o comando
" 'Field, com a adição de uma chamada para o 'Module, isso significa que o
" referido modulo é somente executado para o campo especificado no codigo.

"  Se quiser fazer uma validação em muitos campos é só reunir todos os
" campos dentro de um bloco de comandos ('Chain / EndChain'), um mesmo
" campo pode ser chamados em blocos de comandos diferentes.

"  Podemos querer que chame o 'Module somente se o conteudo do campo for
" alterado usando o parâmetro 'On input na chamada do 'Module, ou então
" chamar o 'Module se o conteudo de algum dos campos dentro do bloco
" usando o parâmetro 'On chain-imput.

"  O parâmetro adicional 'At exit-command, faz com que o 'Module sejá
" processado antes das verificações automaticas de entrada (PAI).

"  Existe o famoso 'Status_gui que serve para customiza as barrinhas
" com os botões, menus como o botão de ativar, salvar, voltar, modelo
" e todos os outros botões que ficam encima quando vc tah programando,
" primeiro vc tem que criar o Status-gui clicando com o botão direito
" do mouse no nome do programa e ir em criar / status gui informe o
" nome do status, coloque um texto breve e no tipo de sttatus deixe como
" Status dialog mesmo e avance.



"  Recomendo sempre definir primeiro as funções standard da barra 'ToolBar
" que seriam os botões Voltar / Sair / Cancelar na teclas de função onde
" vc ativa estes botões só colocando o nome neles.

"  Agora com o 'Status-gui pronto nós devemos associar para uma tela onde
" é só descomentar o 'Module status_(nº tela), dar um duplo clique para
" criar o 'Module adicionando-o no PBO, dentro do 'Module coloque
" 'Set Pf-Status '(nome do status-gui criado) descomentando a linha rsrs,
" vcs viram que o SAP ajuda muito a gente pq tudo no 'Module pool e meio
" pré-definido bom pra gente rsrs.

"  Um Online pode utilizar varias telas é para chamá-las e só usarmos
" set screen  : para atualizar a proxima tela temporariamente, e
" call screen : para inserir um processamento de uma ou mais telas antes
" da tela atual.
" Leave to screen : Sai da tela atual ou indicada caso sejá descrita
" no código.

"  Existem tb as subtelas que são areas reservadas dentro da tela principal
" para outra tela, a diferença eh que ela não tem OK_CODE, nas caracteristicas
" ela eh definida como SUBTELA.

"  Existe um recurso muito utilizado que se chama 'Table control que serve
" pra mostra e edita dados de uma tabela dentro de uma tela, o 'Table control
" e tipo um quadro adicionado no 'Screen Painter ( akele botão chamado
" layout que fica do lado do 'pretty Printer na tela que vc tá mexendo ),
" para trabalhar com ela eh muito simples,
" Existe com wizard mas aih nós não vamos aprender nada, portanto manualmente
" defina o nome da 'Table Control no 'Top Include (Onde fika todas as
" declarações); na tela criar um 'Table control com as dimensões que achar
" necessário; Inserir os campos da tabela interna dentro do 'Table control.

"  Bem espero ter ajuda mais duq atrapalhado, com isso que eu passei vc já
" consegue fazer um On-line feio mas que funciona e que você pode deixar
" bem maior conforme sua necessidade ou curiosidade.

" Qualquer dúvida, opnião e sugestão por favor comentar aee  pq 'Module Pool
" tem muito dúvida as vezes até pra gente velha do ABAP.
"
report z_comm_modpool.

10 comentários:

  1. Bons dias por aqui... ehehe.
    Antes demais peço desculpa mas ainda sou amador.
    Eu tive uma serie de dificuldades em seguir estes passos, isto é, eu segui os passos mas no final não obtive nenhum resultado como esperado.
    Obtenho um erro a dizer que o meu programa zxpto não é um report online (tipo 'M').
    É possivel me explicarem onde errei?

    OBRIGADO

    ResponderExcluir
  2. Opa, na hora que você vai criar este objeto ele tem que ser do tipo 'Pool de Modulos' conforme 1ª imagem do post,esse dados está no menu 'ir para/caracteristicas' e a nomenclatura tem que seguir conforme informado tb, ex. SAPMZSD0001.

    ResponderExcluir
  3. Blz Mauro! Primeiramente obrigado pelo Blog, está sendo muito útil pra mim! Comigo ocorreu igual ao cara do primeiro comentário.
    Aí eu copiei o programa renomeando para o nome padrão (SAPMZSD0001), inclusive as includes. Mesmo assim está dando "Programa SAPMZSD0001 não é report on-line (tipo 'M')".
    O que mais pode ser?

    ResponderExcluir
  4. Na hora da criação do programa o tipo de ele tem que ser Pool de Módulos, quinem na primeira imagem do Post.

    ResponderExcluir
  5. Pois é, mas estranho que foi criado como Pool de Módulos. Conferi nas características.
    Amanhã vou fazer outro do zero novamente.
    Obrigado!

    ResponderExcluir
  6. Aos que tiveram este erro dizendo que não é report on-line (tipo 'M'), criem uma transação para o programa e tentem novamente.
    Botão direito em cima do nome do report > Criar > Transação

    ResponderExcluir
  7. Para executar um programa module pool é preciso criar um transação para ele.:
    1) Manutenção de transação: /nse93
    2) crie uma transação, ex: z_tst_mpool
    3) informe o nome do programa que a transação vai chamar e coloque interface como GUI WINDOWS.
    4) Salve e Ative
    5) Chame a transação normalmente: /nz_tst_mpool.

    Abcs

    ResponderExcluir
  8. Opa... os post de vocês são fantástico, muito bons mesmo. Sou novo no ABAP e sempre utilizo esse blog como referencia. Porem esse post ficou um pouco nebuloso.... vi que foi feito em 2011... Sera que vocês poderiam fazer um novo post sobre module pool básico, porem mais didático ?

    ResponderExcluir
  9. O mensagem 'Não é Report Online' é por que não foi criada a transação, como o amigo falou acima.
    Module Pools precisa ser acessada por uma transação.

    ResponderExcluir
  10. Legal Galera, curti a ideia de um novo, estarei desenvolvendo um novo e deixarei mais claro possível, valeo pela dica Fernando !!

    ResponderExcluir