Você está na página 1de 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

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


REPS_OBJECT_ACTIVATE
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

Retorna os atributos para um intervalo de


DAY_ATTRIBUTES_GET
datas especificado

Para obter o nmero de meses entre as duas


MONTHS_BETWEEN_TWO_DATES
datas.

END_OF_MONTH_DETERMINE_2 Determina o fim de um ms.

Encontrar a diferena entre duas datas em anos,


HR_HK_DIFF_BT_2_DATES
meses e dias.

Encontrar a diferena entre duas datas em anos,


FIMA_DAYS_AND_MONTHS_AND_YEARS
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

Encontrar a diferena entre duas datas/horas e


SD_CALC_DURATION_FROM_DATETIME
relatar a diferena em horas

Determinar a diferena de tempo entre duas


L_MC_TIME_DIFFERENCE
datas/horas
Diferena entre duas datas em dias, semanas,
HR_99S_INTERVAL_BETWEEN_DATES
meses

LAST_DAY_OF_MONTHS Retorna o ltimo dia do ms

DATE_CHECK_PLAUSIBILITY Verifique se a data invlida

Entrar com ano no formato yy para saida no


DATE_2D_TO_4D_CONVERSION
formato yyyy

Entre com a data e vai receba o nome do dia: 1-


DAY_IN_WEEK
segunda-feira, 2-tera-feira .

Mostra a diferena em dias e horas entre


SD_DATETIME_DIFFERENCE
duas datas

Feriados e calendrio de fbrica

Retorna feriados de um pas. Tem dois flags:


HOLIDAY_GET
Freeday (para fins de semana) e Holyday(para feriados).

Retorna a data do calendrio para a data de fbrica e


FACTORYDATE_CONVERT_TO_DATE
do calendrio de fbrica passado

Retorna a data de fbrica para a data e calendrio de


DATE_CONVERT_TO_FACTORYDATE
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

Mostra uma janela pop-up solicitando um valor para um


POPUP_TO_GET_VALUE
determinado tabela-nomedocampo

Exibe uma barra de progresso com um texto para


SAPGUI_PROGRESS_INDICATOR
indicar a porcentagem de concluso e status

Mostra uma janela pop-up para obter o nome de um


FILENAME_GET
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

Ajuda F4 e tambm retornando o valor a ser exibido


F4IF_INT_TABLE_VALUE_REQUEST
na tabela interna

Ajuda F4 para campos que s sero conhecidos em


F4IF_FIELD_VALUE_REQUEST
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 +

Faz o upload de um arquivo tanto no servidor de


FILE_READ_AND_CONVERT_SAP_DATA 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

Mostra uma janela de popup que retorna o nome do


FILENAME_GET
arquivo no AS (Transao FILE)

Realiza o upload de um arquivo no servidor de


GUI_UPLOAD
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

Move o sinal negativo do lado esquerdo de um


CLOI_PUT_SIGN_IN_FRONT 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

Converter um valor de uma moeda para outra (taxa


CONVERT_AMOUNT_TO_CURRENCY de cmbio tomadas a partir de tabelasdo banco de
dados)

Converter um valor de uma moeda para outra, de


CONVERT_CURRENCY_BY_RATE
acordo com a taxa de cmbio passada

Converso de valores em moeda em formato


BAPI_CURRENCY_CONV_TO_EXTERNAL
de dados externos

Converso de valores em moeda em formato interno


BAPI_CURRENCY_CONV_TO_INTERNAL
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

L os valores da NF retornados combinados com


J_1B_NF_VALUE_DETERMINATION
J_1B_NF_DOCUMENT_READ

Mdulos de funo relacionados com ABAP- HR

Este mdulo de funo usado para manter dados


HR_MAINTAIN_MASTERDATA
mestre para funcionrios e candidatos.

Este mdulo de funo l os registros de dados de


HR_READ_INFOTYPE um infotipo de HR que existem para funcionrios e
candidatos.

Essa funo usada para manter os dados dos


HR_INFOTYPE_OPERATION
funcionrios e candidatos.

CU_READ_RGDIR Essa funo usada para ler a RGDIR do cluster CU.

Esse mdulo de funo l a folha de pagamento


PYXX_READ_PAYROLL_RESULT completa das verses de todos os pases, do arquivo de
cluster PCL2.

Este mdulo de funo usado para buscar os


HR_GET_PAYROLL_RESULTS
resultados da folha de pagamento para os funcionrios.

Este mdulo de funo usado para manter a relao


HR_RELATION_MAINTAIN
entre empregado e posio.

Este mdulo de funo para criar uma posio ou


BAPI_HRMASTER_SAVE_REPL_MULT
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.

Você também pode gostar