Vous êtes sur la page 1sur 16

Testar Funo no SAP

J vimos que o SAP disponibiliza vrias funes que podem ser acessados por programas, reports, classes e outras funes. As funes podem ser utilizadas tambm em programas Z, porm antes de utiliz-las possvel tambm, test-las e verificar se atende a necessidade. Para nosso teste utilizaremos a funo: DATE_TO_DAY Na transao: SE37 digite a funo acima e tecle F8.

A finalidade desta funo dar o dia da semana uma determinada data, bastando apenas que seja inserida a data no campo DATE. Como resultado, teremos:

Neste caso temos um parmetro de Entrada e um parmetro de Sada. Existem funes que retornam tabelas com diversos valores, vamos testar a funo: J_1B_NF_DOCUMENT_READ. Esta funo retornar diversos dados sobre uma Nota Fiscal, alguns valores de impostos no so mostrados nesta funo.

Esta funo s tem um parmetro de Entrada: DOC_NUMBER, nmero do spool da Nota fiscal no SAP. Este nmero o campo chave da Nota fiscal para o SAP, que digitado na transao J1B3N (para visualizar uma Nota Fiscal). Veja que depois que voc entra com o DOC_NUMBER e tecla F8 ele trar preenchida diversas tabelas referentes a dados da Nota Fiscal, basta clicar na tabela para visualizar os dados.

Criar Funo no SAP


Para criar uma nova funo no SAP utilize a transao SE37.

Especificar o nome (tem que comear com Y ou Z), digitar o nome do grupo de funo. Se j no houver um grupo mster criar um em: Utilitrios->Admins. de Grp de funes->Criar Grupo .

Parmetros de Importao
Toda funo, indiferente a linguagem utilizada para sua implementao, existe um mecanismo onde se fornecem parmetros de entrada a fim de receber alguma informao processada na sada. Se levssemos para o mundo figurado do computador, a funo seria um processador, Parmetros de Importao seriam os dados brutos e Parmetros de Exportao seria a informao processada. Em parmetros de importao so criados os campos que estaro disponveis na funo como parmetros de entrada. Digitar os parmetros abaixo:

Opcional
Se no houver a obrigatoriedade de ser enviada informao em um dos campos de entrada marque como opcional. Quando no marcado ser obrigatrio o envio de informao no campo parmetro.

Parmetros de Exportao

Nesta aba voc precisa disponibilizar os parmetros de Sada, ou seja, o resultado do processamento da funo, que estar disponvel a sua aplicao. O resultado da nossa funo ser o total encontrado para a operao matemtica solicitada, ento teremos apenas um Parmetro de Sada, mostrado abaixo:

Parmetros de Modificao
Nesta aba Modific. colocaremos os campos que so tanto de entrada como sada, ou seja, so campos que so enviados como parmetro de pesquisa mas podero voltar populados com outro valor de acordo com o cdigo fonte da funo. mais utilizando quando temos o campo que do tipo de uma tabela onde enviamos algumas informaes da tabela e no cdigo fonte da funo populamos os outros campos desta mesma tabela. No parmetro de Entrada (Importao) no possvel substituir valor, sendo somente leitura, da o real uso do parmetro de Modificao.

Parmetros Tabelas
Como o sugestivo nome diz, so parmetros em forma de tabela. A grande sacada do parmetro Tabelas que pode, assim como o Modificao ser alterado. No somente leitura. bem utilizado quando a funo recebe ou retorna diversos parmetros em diversas linhas. Seria muito chato ter que fazer um loop e fazer diversas chamadas a funo a cada nova linha. Neste parmetro voc j receber a tabela populada com, talvez, o resultado de um select.

Parmetros Excees
Seria muito chato voc fazer uma chamada a uma funo ABAP ou qualquer outra linguagem e por algum motivo, no acontecer nada. Voc fica um tempo esperando e nada... Para isso existem mecanismos para tratar possveis erros, nas funes SAP, so as excees. D nomes as excees que podero acontecer durante a execuo da funo, e se cair em uma destas excees o usurio poder ter o conhecimento do que aconteceu. Nada melhor do que um feedback de vez em quando.

No caso da nossa funo calculadora teremos no mnimo uma exceo, vamos criar a exceo NO_ZERO para que depois possamos tratar o momento que enviaremos esta exceo ao usurio.

Texto Fonte
Nesta aba temos toda a lgica da funo, puro cdigo ABAP. No nosso caso, para nossa calculadora, escreveremos o cdigo abaixo, nada de assustar, para iniciarmos.
*DEFINIO VARIVEIS LOCAIS DATA: vl_resultado TYPE p DECIMALS 2. *DEFINIO DAS OPES DE CLCULO CASE operacao. WHEN '+'. vl_resultado = valor1 + valor2. WHEN '-'. vl_resultado = valor1 - valor2. WHEN '/'. vl_resultado = valor1 / valor2. WHEN '*'. vl_resultado = valor1 * valor2. ENDCASE.

Tratamento de Excees
Precisamos enviar para o programa que chamar a nossa funo alguns parmetros de acordo com possveis tipos de erros encontrados durante a execuo do programa. No nosso caso, j temos criado o Parametro de Exceo NO_ZERO. Vamos acrescentar entre a declarao de variveis DATA e o nosso CASE o seguinte cdigo, o qual enviar ao programa que chama nossa funo a exceo NO_ZERO para que possa ser tratado o caso do usurio tentar dividir um valor por zero.
IF operacao = '/' AND valor2 = 0. RAISE no_zero. ENDIF.

Pronto, temos nossa primeira funo. Para test-la tecle F8, entre com valores e operao desejada. Se quiser salvar os parmetros entrados para testes clique em Salvar. Isso facilitar que na prxima vez, para testar, voc no precise digitar os valores novamente.

Funes teis em ABAP


Esta pgina se destina a mostrar a documentao de alguns mdulos de funo teis. Estou colocando isso aqui porque a indexao e busca de informaes ser mais fcil aqui quando comparado pesquisa na SE37.

Mdulo de funo para executar transaes no autorizadas


TRANSACTION_CALL_VIA_RFC Para executar algumas transaes no autorizadas.

ALINK_CALL_TRANSACTION

Para executar algumas transaes no autorizadas.

Mdulos de funo para a criao de programas (til quando voc est gerando
programas)
RS_PROGRAM_CHECK_NAME Para verificar nomes de programas, se voc estiver gerando-os.

RS_CORR_INSERT

Para inserir a request de correo no diretrio

REPS_OBJECT_ACTIVATE

Para ativar objetos no repositrio. (Ativar um programa, por exemplo)

RS_DELETE_PROGRAM

Para deletar um programa.

RS_ACCESS_PERMISSION

Para bloquear/desbloquear um programa

Mdulos de funo relacionada com clculos de data e hora


CALCULATE_DATE Calcula uma data futura com base na entrada

DATE_TO_DAY

Retorna o dia para a data inserida

DATE_COMPUTE_DAY

Retorna dia da semana de uma data

DATE_GET_WEEK

Retorna a semana de uma data

RP_CALC_DATE_IN_INTERVAL

Adicionar dias / meses em uma data

DAY_ATTRIBUTES_GET

Retorna os atributos para um intervalo de datas especificado

MONTHS_BETWEEN_TWO_DATES

Para obter o nmero de meses entre as duas datas.

END_OF_MONTH_DETERMINE_2

Determina o fim de um ms.

HR_HK_DIFF_BT_2_DATES

Encontrar a diferena entre duas datas em anos, meses e dias.

FIMA_DAYS_AND_MONTHS_AND_YEARS

Encontrar a diferena entre duas datas em anos, meses e dias.

MONTH_NAMES_GET

Obter os nomes do ms

WEEK_GET_FIRST_DAY

Obter o primeiro dia da semana

HRGPBS_HESA_DATE_FORMAT

Formatar a data no formato dd/mm/aaaa

SD_CALC_DURATION_FROM_DATETIME

Encontrar a diferena entre duas datas/horas e relatar a diferena em horas

L_MC_TIME_DIFFERENCE

Determinar a diferena de tempo entre duas datas/horas

HR_99S_INTERVAL_BETWEEN_DATES

Diferena entre duas datas em dias, semanas, meses

LAST_DAY_OF_MONTHS

Retorna o ltimo dia do ms

DATE_CHECK_PLAUSIBILITY

Verifique se a data invlida

DATE_2D_TO_4D_CONVERSION

Entrar com ano no formato yy para saida no formato yyyy

DAY_IN_WEEK

Entre com a data e vai receba o nome do dia: 1segunda-feira, 2-tera-feira .

SD_DATETIME_DIFFERENCE

Mostra a diferena em dias e horas entre duas datas

Feriados e calendrio de fbrica


HOLIDAY_GET Retorna feriados de um pas. Tem dois flags: Freeday (para fins de semana) e Holyday(para feriados).

FACTORYDATE_CONVERT_TO_DATE

Retorna a data do calendrio para a data de fbrica e do calendrio de fbrica passado

DATE_CONVERT_TO_FACTORYDATE

Retorna a data de fbrica para a data e calendrio de fbrica passado

Popup for dates


F4_DATE Mostra uma janela pop-up para escolher uma data

POPUP_TO_SELECT_MONTH

Mostra uma janela pop-up para selecionar um ms

Mdulos de funo relacionada a Dialog Prompts


POPUP_TO_CONFIRM Mostra uma janela popup com uma mensagem definida

pelo usurio para confirmao

POPUP_TO_GET_VALUE

Mostra uma janela pop-up solicitando um valor para um determinado tabela-nomedocampo

SAPGUI_PROGRESS_INDICATOR

Exibe uma barra de progresso com um texto para indicar a porcentagem de concluso e status

FILENAME_GET

Mostra uma janela pop-up para obter o nome de um arquivo no servidor de apresentao (local)

F4_DATE

Mostra uma janela pop-up para escolher uma data

POPUP_TO_SELECT_MONTH

Exibir um pop-up para selecionar um ms

GET_PRINT_PARAMETERS

Parmetros de impressora

F4IF_INT_TABLE_VALUE_REQUEST

Ajuda F4 e tambm retornando o valor a ser exibido na tabela interna

F4IF_FIELD_VALUE_REQUEST

Ajuda F4 para campos que s sero conhecidos em tempo de execuo

Mdulos de funo relacionados com comunicao RFC


RFC_CONNECTION_CLOSE Fecha uma conexo RFC

RFC_GET_SYSTEM_INFO

Mostra as informaes de sistema de uma conexo remota

{+}Mdulos de Funo relacionados com ler/escrever arquivos no servidor de aplicao (nomeado abaixo como AS) ou Frontend +
FILE_READ_AND_CONVERT_SAP_DATA Faz o upload de um arquivo tanto no servidor de aplicao como no de apresentao e retorna em uma tabela interna

SUBST_GET_FILE_LIST

Retorna uma lista com os arquivos no AS

ALSM_EXCEL_TO_INTERNAL_TABLE

Transferncia de dados de legados com Excel

WS_FILE_DELETE

Deleta arquivos no AS

PFL_COPY_OS_FILE

Copia arquivos no AS

EPS_GET_DIRECTORY_LISTING

Retorna todos os arquivos de um diretrio do AS

FILENAME_GET

Mostra uma janela de popup que retorna o nome do arquivo no AS (Transao FILE)

GUI_UPLOAD

Realiza o upload de um arquivo no servidor de aplicao

GUI_DOWNLOAD

Faz o download de uma tabela interna para o PC

Mdulos de funo relacionados ao envio de e-mails


SO_NEW_DOCUMENT_ATT_SEND_API1 Envia emails com texto e anexos

SO_NEW_DOCUMENT_SEND_API1

Envia emails com texto

Mdulos de funo relacionada manuteno de dados


VIEW_MAINTENANCE_CALL Para manter os dados de uma tabela ou viso (SM30)

Valores e Moeda
CURRENCY_AMOUNT_SAP_TO_IDOC Converter a moeda para o formato IDOC

CLOI_PUT_SIGN_IN_FRONT

Move o sinal negativo do lado esquerdo de um nmero para o lado direito do nmero. Observe que o resultado vai ser justificado esquerda (como todos os campos de caracteres), e no justificado a

direita, como nmeros normalmente so.

CONVERT_TO_FOREIGN_CURRENCY

Converter a moeda local para moeda estrangeira.

CONVERT_TO_LOCAL_CURRENCY

Converter de moeda estrangeira para moeda local

CONVERT_AMOUNT_TO_CURRENCY

Converter um valor de uma moeda para outra (taxa de cmbio tomadas a partir de tabelasdo banco de dados)

CONVERT_CURRENCY_BY_RATE

Converter um valor de uma moeda para outra, de acordo com a taxa de cmbio passada

BAPI_CURRENCY_CONV_TO_EXTERNAL

Converso de valores em moeda em formato de dados externos

BAPI_CURRENCY_CONV_TO_INTERNAL

Converso de valores em moeda em formato interno dos dados

CALCULATE_TAX_FROM_NET_AMOUNT

SPELL_AMOUNT

Para obter valor por extenso

HR_IN_CHG_INR_WRDS

Muda quantidade INR para palavras

Mdulos de funo relacionados aos mdulos FI, CO e SD


FOR_ALL_SKC1A Subtotal de uma conta

VC_I_GET_CONFIGURATION

Detalhes das configuraes de Compra e Venda

SD_PRINT_TERMS_OF_PAYMENT

Imprime os termos de um pagamento nico

SD_PRINT_TERMS_OF_PAYMENT_SPLI

Imprime os termos de um pagamento parcelado

J_1B_NF_DOCUMENT_READ

L os detalhes da NF

J_1B_NF_VALUE_DETERMINATION

L os valores da NF retornados combinados com J_1B_NF_DOCUMENT_READ

Mdulos de funo relacionados com ABAP- HR


HR_MAINTAIN_MASTERDATA Este mdulo de funo usado para manter dados mestre para funcionrios e candidatos.

HR_READ_INFOTYPE

Este mdulo de funo l os registros de dados de um infotipo de HR que existem para funcionrios e candidatos.

HR_INFOTYPE_OPERATION

Essa funo usada para manter os dados dos funcionrios e candidatos.

CU_READ_RGDIR

Essa funo usada para ler a RGDIR do cluster CU.

PYXX_READ_PAYROLL_RESULT

Esse mdulo de funo l a folha de pagamento completa das verses de todos os pases, do arquivo de cluster PCL2.

HR_GET_PAYROLL_RESULTS

Este mdulo de funo usado para buscar os resultados da folha de pagamento para os funcionrios.

HR_RELATION_MAINTAIN

Este mdulo de funo usado para manter a relao entre empregado e posio.

BAPI_HRMASTER_SAVE_REPL_MULT

Este mdulo de funo para criar uma posio ou unidade organizacional, etc.

RFC - Remote Function Call


RFC nada mais que uma funo dentro do SAP. Como vimos no material anterior, quando uma rotina utilizada por diversos programas, criamos uma funo e a ela determinamos parmetros de entrada, sada, excees etc... As RFCs so as funes remotas. So funes que esto visveis fora do SAP, processam informaes atravs de parmetros de entrada e retornam informaes processadas a um programa fora do SAP, que fez a solicitao. Um bom exemplo um portal de compras na web. Se o portal em Java, utiliza-se um conector Java que a SAP disponibiliza. Dentro do programa Java e atravs do conector fazemos a chamada a funo do SAP (RFC). No portal, o usurio ir entrar com os parmetros; internamente o programa Java far a chamada e recebera de volta do SAP as informaes processadas. Veja o que diferencia uma funo normal de uma RFC dentro do SAP:

RFC (Remote Function Call) a interface standard SAP de comunicao entre sistemas SAP. No entanto pode ser utilizado com sistemas no SAP O RFC disponibiliza uma forma de se executar um mdulo de funo num sistema remoto No existe suporte para transaes distribuidas no R/3. Os RFCs so executados em transaces locais (SAP R/3), sendo no entanto possvel executar varios RFCs na mesma transao. O protocolo utilizado rfc sobre tcp/ip. A autenticao feita na obteno da conexo rfc. As autorizaes so definidas programticamente na implementao do mdulo de funo.

Tipos de RFC:
Sncrono O RFC executado no momento da sua invocao e o cliente bloqueado at a concluso da chamada.

Transacional O RFC executado 1 e 1 s vez assincronamente depois da transaco do cliente terminar. No caso de suceder algum erro na execuo do RFC este reprocessado. No garantida que a ordem de chamada dos RFCs mantida aquando da sua execuo. Queued Semelhante ao Transaccional, mas com garantia de ordenao. possvel publicar mdulos de funo ABAP implementados como RFC (Remote Function Call), Grupos de funes, BAPIs, ou mensagens XI. Os BAPIs no SAP Web Application Server so implementados como mdulos de funo que suportam o protocolo RFC Remote Function Call, e assignados como mtodo de um SAP BO.

Como acessar funes SAP por RFC


E se quisermos utilizar alguma funo que normalmente utilizamos dentro do SAP (no remota) em uma chamada externa, possivel? Sim! Mas no tente mudar a funo para remota. O caminho criar uma funo remota que acessa a funo SAP standard. Vejamos como no passo-a-passo abaixo: Suponha que queremos acessar a funo: J_1B_NF_READ_HEADER. Esta funo nos d dados do cabealho de uma nota fiscal. O nico parmetro que passamos o numero do documento (no SAP chamamos spool).

Figura 1 Passar o nmero do documento

Figura 2 O retorno ser dados do cabealho da nota fiscal

Esta funo no d pra ser transformada em remota por ser uma funo standard. Vamos ento criar uma funo remota e a partir dela chamar a funo standard.

Criando a funo remota


Verifique os parmetros da funo standard. Na nossa funo remota teremos todos estes parmetros.

Na SE37 crie uma nova funo com o nome YXXNOTA_FISCAL.

Lembre-se: Se ainda no houver Grupo de Funes, voc dever criar; no esquecer de ativar.

D o nome funo remota assim como uma descrio.

Na funo J_1B_NF_READ_HEADER esto todos os parmetros que voc precisa. Copie-os e cole na sua funo remota. Primeiro v a Parmetros de Importao, faa este processo; depois v at Parmetros de Exportao, faa o mesmo. E assim com os outros parmetros.

Uma coisa que tem que levar em conta quando se esta gerando uma Funo Remota em relao a uma funo SAP a opo Transf.Valores que est disponvel em cada campo dos parmetros tanto de importao como exportao. Esta opo bem relevante em performance quando se trata de parmetros tipo tabela pois ele faz uma copia dos dados do

parmetro sem que seja preciso toda vez que faz uma re-chamada tenha que buscar os dados novamente. Porm, no esquea isso, para no ter dor de cabea depois tentando saber o motivo que a funo remota no ativa. As funes remotas precisam desta opo marcada.

Agora ficou fcil, em cdigo fonte, na sua funo remota clique no boto modelo.

Na tela que aparece digite o nome da funo SAP que voc deseja clonar para Remoto.

Veja como ficou o cdigo:

S precisa de uma ajudinha agora relacionando os campos de entrada e retorno com os parmetros que voc criou na sua funo, ficando assim:

Ative sua funo para que possamos, de fato, transform-la em Remote Function.

V aba Caractersticas e ative: , ative e ponto final. Agora s testar no prprio SAP e depois atravs de um programa externo. Utilize seus dons em Java ou .NET.