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.

6 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
  5. apareceu no meu código que zcriar_estrut não existe

    ResponderExcluir