quarta-feira, 20 de abril de 2011

Função - Básico

 
"  A Partir de hoje estaremos postando sobre 'Functions, bem para quem não
" sabe, 'Function é uma ferramenta usada para otimizar programas como rotinas
" podendo ser usado em varios programas ao mesmo tempo.
"  Na teoria eh meio complicado, mas vcs vão ver que eh mou de boua, primeira
" coisa vou mostrar um Passo a Passo de como fazer uma 'Function e depois eu
" eu dou varios exemplos de 'functions que já vem da SAP, principalmente as
" mais usadas.

"  Primeiro para ter uma 'function temos que ter um 'Grupo de funções onde é
" ir no se80, colocar Grupo de funções, colocar o nome e dar Enter, nessa
" hora ele ira informar que não existe ai e só preencher os campos e pronto,
" agora pra criar uma 'Function e soh clicar com o botão direito do mouse
" sobre o grupo de funções criada agora e criar uma função, mas aki nós
" vamos trabalhar com o se37 pois é quase uma obrigação saber usar bem esta
" transação.
"  Na SE37 coloque o nome da 'Function e clique em Criar, o sistema irá
" informar que não existe então aparecerá uma tela onde vc deve colocar
" o grupo de função ( que eu espero que já tenha sido criado ) e clicar em
" Gravar.


"  Dentro da função existe algumas abas uma delas é a 'Importing onde vc
" deve colocar aki todas as variáveis que o seu programa irá enviar para
" a função e na aba 'Exporting colocar todas as variaveis que a função irá
" exportar depois da execução.



"  Repare bem nas propriedades preenchidas de cada campo dentro das abas
" 'Importing e 'Exporting onde está "Op..." seria 'Opcional que significa
" que para o funcionamento da 'Functions ela não precisa necessariamente
" que está variavel contenha valor e onde está " Tra..." seria 'Tranferivel.
"  Caso tenha alguma variável que será modificado durante a execução, colocar
" na aba 'Modify.
"  Caso vc tenha alguma tabela interna no programa que vá usar na sua 'function
" declarar ela na aba 'tables, lembrando que está tabela pode ser tipo uma
" estrutura "Z como tb qualquer coisa standart.



"  Em Exceções serão colocadas às mensagens que a função irá retornar.



"  Em 'Texto fonte' deverá ser codificado em ABAP normalmente, onde é
" só colocar o código abaixo é ver oq acontece.

FUNCTION Z_CRIAR_FUNCAO.
*"----------------------------------------------------------------------
*"*"Interface local:
*"  IMPORTING
*"     REFERENCE(V_MATNR) LIKE  MARA-MATNR
*"  EXPORTING
*"     REFERENCE(V_MAKTX) LIKE  MAKT-MAKTX
*"  TABLES
*"      T_TELA STRUCTURE  ZCRIAR_ESTRUT OPTIONAL
*"  EXCEPTIONS
*"      MATERIAL_INEXISTENTE
*"----------------------------------------------------------------------
  REFRESH: t_tela.
  CLEAR t_tela.

  SELECT matnr werks
  INTO TABLE t_tela
  FROM marc
  WHERE matnr = v_matnr.

  IF sy-subrc NE 0.
    RAISE Material_Inexistente.
  ENDIF.

  SELECT SINGLE maktx
  INTO v_maktx
  FROM makt
  WHERE spras = sy-langu and
        matnr = v_matnr.

LOOP AT t_tela.
 t_tela-maktx = v_maktx.

    MODIFY t_tela.

ENDLOOP.

ENDFUNCTION.


" Salve, Ative e aperte F8 para testar onde aparecerá essa tela.




"  E digite um Nº de material valido, caso contrario aparece mensagem
" de retorno.

"  Portanto daki por diante se precisar uma descrição de material
" pelo numero do material informado é soh usar essa função, rsrs,

" t+ e qualquer coisa comentem.

5 comentários:

  1. Muito bom cara, parabéns !

    ResponderExcluir
  2. Muito bom, parabéns!!!
    eu gostaria de fazer uma pergunta?
    Estou iniciando no abap por agora, e tenho muitas duvidas. Uma que está me quebrando a cabeça é que quando eu vou tentar ativer o meu módulo de função ele aparece o seguinte erro programa basico de função não começa com 'FUNCTION-POOL, o que isso quer dizer?? Mas quando eu mudo para "FUNCTION-POOL" ele vem com outro erro "O campo < nome do parametro de importação> desconhecido. Este campo não está contido em uma das tabelas indicadas nem foi definido mediante uma instrução "DATA".

    ResponderExcluir
  3. Cara não sei como você fez isso mas a ideia é criar um 'Grupo de funções' na SE80 e depois criar uma 'Função' na SE37 informando o Grupo de Função criada anteriormente, outra coisa e não esquecer de criar os parametros de Importação, Exportação e Tabelas antes de usar no Código Fonte. Boa sorte !

    ResponderExcluir
  4. Esse erro do Function-pool acontece porque você não ativou o grupo de funções. Ative ele que não irá acontecer mais esse erro. Abraços!!

    ResponderExcluir
    Respostas
    1. Era isso mesmo! Funcionou aqui! Obrigado pela resposta! Abraços

      Excluir