Vous êtes sur la page 1sur 9

Como criar uma FIELD-EXIT

March 20, 2009September 21, 2014Rogerio Nascimento


Para quem trabalha com projetos de SAP, vez por outra se v na situao de acrescentar consistncia ou funcionalidade a um campo na tela (ex:
consistir uma regra de negcios especfica).
No incio de 2009 eu criei um documento no meu Evernote pblico que acabou sendo bastante lido. O link para o documento original est aqui.
Segue abaixo a reedio deste documento com uma pequena atualizao.

Descrio de uma FIELD EXIT


A palavra EXIT no vocabulrio SAP representa um pedao de cdigo injetado lgica do SAP Standard. Isso adiciona flexibilidade importante
para colocar regras de negcio (consistncia) ou mesmo disparar a execuo de outros cdigos (como submeter um processamento Batch por
exemplo).
Enquanto a EXIT se refere a um evento de processo SAP (como por exemplo a criao de um pedido), a FIELD EXIT chamada quando um
campo especfico da tela alterado.
Tanta flexibilidade no vem de graa:

FIELD EXITs no so debugveis (pelo menos no pelos modos convencionais).

Somente so interceptveis por telas, portanto BAPIs no passam por elas.

O uso de EXITs e FIELD EXITs tm sido deixados de lado pela SAP e tm-se sugerido usar recursos ainda mais flexveis como BADIs e
Enhancement Points (implcitos ou explcitos).

Criao de uma FIELD EXIT


O primeiro passo para criao da FIELD EXIT obter detalhes tcnicos da tela e do campo em questo. No exemplo abaixo, apresentada a criao
de uma FIELD EXIT para o campo Local de Negcios na tela da transao FB60.

Transao FB60. Foco no campoLocal de Negcios (Business Place)


Uma vez posicionado o cursor sobre o campo Local de Negcio (ou Business Place em ingls), pressione F1

Um pequeno a parte sobre a tela de ajuda


Ser ento exibita a tela de HELP para o campo, que pode ser uma das telas abaixo:

Tela de Help para o campo Local de Negcios Modo Janela Modal


ou:

Tela de Help para o campo Local de Negcios Modo Assistente de Performance


A tela de help do segundo exemplo melhor de ser visualizada que a primeira (na opinio deste que vos escreve). Ela possui um layout semelhante ao
de uma pgina HTML e permite o click em Links de documentao (quando disponveis).
Para configurar qual tela deseja, v ao menu Ajuda (Help) do SAP GUI e clique em Configuraes

Menu Configuraes
E selecione a opo de tela de ajuda que prefere:

Seleo entre o modo Assitente de Performance e o


modo Modal

Retornando ao foco

Clique sobre o boto Informaes tcnicas (cone


no Assitente de Performance) para obter detalhes tcnicos sobre a tela e
o campo. Ser exibida uma tela abaixo, com informaes tcnicas sobre o campo, o elemento de dados, o programa e tela onde o campo est:

Dados mais relevantes para o nosso intuito que esto informados nesta tela (tome nota deles):
Nome do Programa da Tela: SAPLFDCB
Nmero da Tela: 0010
Nome do Campo: BUPLA
Nome do Programa de Tela para Batch Input: SAPMF05A
Nmero da Tela para Batch Input: 1100

Onde editar a FIELD EXIT


O programa responsvel pela manuteno de FIELD EXIT o RSMODPRF. Como no existe uma transao standard pra ele, entre na transao
SE38 (Edio de Programas), informe o nome do programa e execute (pressione F8). Ser exibida a seguinte tela:

Tela do programa
RSMODPRF onde deve ser informado o elemento de dados para se editar a FIELD EXIT.

Clique novamente em Executar. Ser exibida uma lista das FIELD EXITs j existentes na instalao.

Lista das FIELD EXITs j existentes na instalo


Uma vez na lista, clique em Exit campo > Criar e ser solicitado o elemento de dados que deve passar pela EXIT. Preencha o nome tcnico do
campo. No nosso exemplo, com o contedo BUPLA.

Aqui informado o elemento de dados


para o qual se deseja aplicar a FIELD EXIT, que no nosso exemplo BUPLA
Ao pressionar OK, ser proposto automaticamente um Mdulo de Funnao com nome FIELD_EXIT_BUPLA. Este o ponto do SAP que ser
chamado e onde dever ser adicionado o cdigo de consistncia. Clique em Criar

Ao criar uma FIELD EXIT ser criado um


Mdulo de Funo.

Criao de um Mdulo de Funo chamado


pela FIELD EXIT
Aps clicar em Criar, sero ento solicitados:
Mdulo de funo: FIELD_EXIT_BUPLA (j previamente preenchido)
Grupo de funes: YBAL_ATRIB (aqui deve ser preenchido o grupo de funes onde o Mdulo de Funo ser criado)
Texto breve: Field Exit Local de Negcios

Mdulo de Funo, Grupo de


Funes e Texto Breve
Ao clicar em gravar, ser exibida a tela de criao de funes (Function Builder), onde ser implementada a lgica da FIELD EXIT. Repare no ponto
importante para a funcionalidade que desejamos: o parmetro INPUT. Este o parmetro que nos passar o contedo atual do campo que desejamos
consistir.
A lgica do Mdulo de Funo deve ser colocada no Texto Fonte. Clique na aba Texto fonte, para que seja exibida a tela de edio do cdigo.

Tela de Parmetros de Entrada na criao de um Mdulo


de Funo
No exemplo abaixo, caso o campo em questo (BUPLA) tenha valor inicial, ou seja, no esteja preenchido, ser apresentada a mensagem de erro 398
(e398) que utilizar uma mensagem (que por enquanto est descrita como xxxx e um smbolo de nome obr (que encontra-se entre parnteses).
Enquanto a funcionalidade do FIELD EXIT bastante til, a funcionalidade descrita no cdigo abaixo poderia ser obtida atravs de uma configurao
muito mais simples: Regra de Validao (transao GGB0). Para efeito de apresentar a FIELD EXIT, porm, esta lgica ser o suficiente.
Veja abaixo a imagem da tela at este momento:

Tela de edio ABAP com lgica de validao do campo Local de Negcios


Outro problema comum em projetos SAP internacionais a necessidade de que as mensagens sejam exibidas em mais de uma lngua. Segue abaixo o
exemplo desta mensagem em Portugus (PT) e em Ingls (EN).
D um duplo clique sobre o smbolo obr, para que seja solicitado o cadastramento da mensagem. Ser solicitado o salvamento da funo, conforme
abaixo:

Solicitao de criar mensagem de erro.


Clique em Sim para que seja exibida a tela com o cadastramento do smbolo. Digite ento o texto desejado, conforme o exemplo abaixo:

Mensagem informativa do erro.


Aps isso, clique no menu Ir para > Traduo, para iniciar a traduo do smbulo obr para outras lnguas (este passo pode ser repetido para
quantas lnguas forem necessrias):

Opo de menu para entrar na


traduo.
Ser ento solicitada a lingua para qual se deseja traduzir o smbulo. No exemplo abaixo foi selecionado ingls.

Seleo da Lngua para mensagem


A tela que ser exibida inicialmente exibir status vermelho. Aps ser digitado o texto (campo amarelo abaixo do texto original) e pressionar-se
ENTER, a mensagem ficar com status amarelo. Digite a descrio para o smbolo obr na lngua inglesa. Aps isso, clique em salvar e duas vezes
em voltar (uma vez na tela de traduo e outra na tela de cadastro da mensagem em portugus)

No retorno a tela onde encontra-se o cdigo fonte da FIELD EXIT, o texto xxxx j foi substitudo pela mensagem cadastrada para o smbolo obr na
lngua de login atual, conforme exemplo abaixo:

Tela de cdigo ABAP Mensagem atualizada


Ative o programa, pressionando as teclas CTRL+F3. Para quem tem pouca vivncia com ABAP, ativar significa que:

O programa ser compilado e, caso existam erros estes sero apresentados na tela para que se corrija

O programa fica ativo e passa a ser reconhecido pelo SAP


Aps a ativao, clique no boto Sair por duas vezes. Ser apresentada a tela solicitando novamente o elemento de dados a ser visualizado. D um
ESC ou clique no boto de cancelar para que a lista de FIELD EXITs seja atualizada, conforme abaixo:

Lista de FIELD EXITs Status INATIVO


Note que o elemento de dados BUPLA agora faz parte da lista de FIELD EXITs. Note tambm que esta FIELD EXIT ainda no est ativa, sendo
apresentado o status INATIVO. Isso pode confundir um pouco no incio, mas perceba que:

A Ativao feita no passo anterior foi no Mdulo de Funo FIELD_EXIT_BUPLA

Na tela acima, a ligao entre o Elemento de Dados BUPLA e o Mdulo de Funo que est INATIVO

O efeito final disso que, embora seja possvel entrar manualmente no Mdulo de Funo e execut-lo (transao SE37), no existe ainda
a automatizao de chamada do mdulo de funo quando o campo for editado
Note tambm que na coluna Programa apresentado o texto GLOBAL. Isso significa que esta FIELD EXIT, caso ativada, ter ao sobre todas
as ocorrncias do campo BUPLA. Isso significa que:
Em toda a instncia de SAP sempre que um campo na tela utilizar o elemento de dados BUPLA, o mdulo de funo ser chamado.

Em nosso exemplo, queremos ativar esta FIELD EXIT apenas para a transao FB60. Para tanto devemos atribuir um programa e tela. Selecione o
elemento de dados BUPLA e clique no boto Atribuir prog/tela.
A seguinte tela ser exibida, onde deve ser preenchido o nome do programa e o nmero da tela, obtidos no primeiro passo deste tutorial.

Atribuio de Programa e Tela para execuo da FIELD


EXIT
Clique no boto Gravar.
Na lista de FIELD EXITs agora est sendo apresentado o programa e tela informados. Para manter a integridade, aconselhvel efetuar a mesma
consistncia esta tela seja utilizada via batch input. Para tanto, repita o cadastamento informando programa e tela de batch input. O resultado final
ser o seguinte:

Lista de Telas onde a FIELD


EXIT se aplica. Tela online e tela Batch Input neste exemplo

O ltimo passo necessrio que a FIELD EXIT esteja funcional sua ativao. Clique no menu Exit campo > Ativar. Informe as requests (ou de
ok) tanto quanto for solicitado.

FIELD EXIT ativada


Ao tentar efetuar um lanamento na transao FB60, a partir de agora o cdigo da FIELD EXIT ser acionado, fazendo a checagem de conteudo.
Caso o campo no seja preenchido, ser exibida uma tela de erro, conforme exibido abaixo:

FB60 Com consistncia do campo Local de Negcios

Mas voc disse que Regra de Validao


melhor
Conforme eu mencionei neste texto, a FIELD EXIT tem vrias possibilidades. Ela pode ser bastante til, por exemplo, para se submeter uma rotina de
verificao que execute em paralelo ou uma regrade consistncia mais elaborada, que busque uma certa sequncia de tabelas para identificar se a
operao permitida ou deve ser negada.
O que a FIELD EXIT no permite fazer de forma simples cruzar o contedo de outros campos da mesma tela, o que facilitaria a consistncia: os
demais campos da tela mapeam a transao de negcios de forma mais completa do que apenas um nico campo.
Uma outra soluo para este requerimento o uso de Regras de Validao. Uma Regra de Validao:

Permite a verificao cruzada de campos

Tambm permite adicionar lgicaABAP, embora isso no seja mandatrio

Permite utilizar o recurso SET (GS00) que torna-se uma tabela de manuteno para parmetros dinmicos.
Em breve vou colocar um post sobre Regras de Validao.

Vous aimerez peut-être aussi