Você está na página 1de 7

Conhecendo o módulo de função: BTE

- Adicionando campos em relatórios


FBL's
Fala galerinha da Fox \o/

Nesse post vou falar um pouco sobre a ferramenta BTE. Tive que fazer uma demanda onde dependia dela
e vi que poucas pessoas sabia do que se tratava. Se você precisar, só consultar aqui :)

BTE - Business Transaction Events, lembra um pouco o famoso enhancements. Muito comum o seu
uso no módulo FI, representam componentes de vendas e de distribuição a receber e a pagar.
As BTE’s não são utilizadas apenas pela SAP, mas também por clientes e terceiros.
A BTE tem uma interface pré-definida e permite anexar funcionalidade adicional na forma de
um Funtion Module.

O BTE é chamado pelo programa padrão SAP por uma chamada de


função: OPEN_FI_PERFORM_ ou OUTBOUND_CALL_.
Esta função verifica se há algum BTE ativa de acordo com personalização.

Sem mais delongas, vamos colocar a mão na massa.

Descrição da requisição: " Inserir o nome do Fornecedor e Cliente em todos relatórios FBLs (Standard).
Isso deverá ser feito através da ferramenta BTE.

Mãos a obra!!!

Primeiramente vamos na estrutura RFPOS e inserir os novos campos através da estrutura " .APPEND "
que deverão aparecer no relatório.
>> SE11 >> Estrutura: RFPOS >> Exibir.

Procure se algum dos campos que você pretende utilizar já estar contido na estrutura, para não precisar
criar outro igual (desnecessariamente).
Para isso você deverá pesquisar pelo elemento de dados que faz referência ao campo.
No meu caso como eu queria acrescentar 2 campos para exibição de nome, então meu elemento de dados
é "NAME1_GP", mas você pode procurar da maneira que achar mais fácil :)

Minha pesquisa trouxe o campo “ZNOMEF” que tem como elemento de dados “NAME1_GP” o mesmo que
eu precisava. Procurei se tinha algum outro e não encontrei. Logo teria que adicionar apenas mais um
campo para essa estrutura APPEND. Então eu cliquei no campo “.APPEND” e acrescentei o campo
“ZNOMEC” utilizando o mesmo elemento de dados “NAME1_GP”. Salve e ative.
Agora você deverá fazer exatamente a mesma coisa na estrutura RFPOSX.

Salve e ative.

OBS: Para minha necessidade o campo " ZNOMEF " já era destinado ao Fornecedor, mas caso o seu caso
seja diferente, você pode adicionar uma outra estrutura " .APPEND " e colocar seus campos lá dentro por
segurança ;)

Agora acesse a transação SE38 e execute o programa “ RFPOSXEXTEND ”, para atualizar as estruturas
estendidas da RFPOS.
E também o programa “ BALVBUFDEL “, para atualizar o buffer do SAP com a nova estrutura.

Se liga nissoooo aquiiii que vai te poupar de criar um grupo de função atoaaaa

Acesse a transação FIBF. Vai no Menu >> Configurações >> Módulos (P/S) >> ... de um cliente

Se vocês encontrarem uma função já associada ao mesmo evento que irá utilizar, apenas acessa a mesma
e implemente sua lógica junto a que já estiver contida na função. Exemplo na imagem:
Caso não tenha nenhuma função associada a seu evento, você terá que criar uma ;)

Vamos na SE80 e crie um grupo de funções para a mesma.

O próximo passo é fazer a cópia da função SAMPLE_INTERFACE_00001650 para inserir a lógica


correspondente ao preenchimento dos novos campos. (ex. ZINTERFACE_00001650 ).
Acesse a transação SE37 e faça a cópia da função Standard.

Repetir o passo a seguir, informando o módulo que estará informando ao sistema:

Transação FIBF. Vai no MENU >> Configurações >> Módulos (P/S) >> ... de um cliente
Informar o seu Evento: 00001650
/ Produto: Dê um nome ao mesmo / Módulo de
Função: ZINTERFACE_00001650 ( a sua função que você copiou )

Agoraaaaa é o seguinte, se você não fizer esse próximo passo, você vai virar uma
raposa perturbada, vagando pela estrada sem entender nada \o/
Esse é pulo da raposa, pois aqui você irá cadastrar e ativar o produto. Se você não fizer isso, sua função
será um fantasma para a SAP \o/.

Na transação FIBF. Vai no Menu >> Configurações >> Produtos >> ... de um cliente

Informe o nome do produto, um texto breve e ativaaaaaaaaaa. (flag: 'A').

OBS: Para essa situação onde eu quero apenas inserir novos campos no relatório, você pode ir direto
na SE37 e copiar a função SAMPLE_INTERFACE_00001650, como eu fiz. Mas caso o seu objetivo não
seja esse, então você deverá acessar a transação FIBF. No MENU acesse: Ambiente (U) >> Sistema de
informação (P/S)

E está é a ferramenta BTE. Lembrando que existe dois tipos:


Publish & Subscribe as interfaces - Não é possível atualizar dados. Possível ter várias implementações
Interfaces Processes - Pode atualizar data. Apenas uma implementação ativa.

Caso você não sabia o parâmetro específico a informar, apenas execute a transação.
Logo será exibido uma lista de eventos e suas funcionalidades.

Caso você quisesse o evento " 00001650 ” (que foi o evento que nós utilizamos no tutorial), selecione a
linha desejada e clique em “ Módulo de função modelo “.

Observe que simplesmente encurtou o passo que nós já havíamos feito antes.

Agora vamos editar a função que copiamos anteriormente.


Na guia “ Texto Fonte” é o bendito lugar onde você deverá inserir o seu código.
Abaixo vou postar o código que eu utilizei (para minha necessidade) para ajudar vocês a não colocar fogo
na raposa, mas lembre-se que o seu caso pode ser diferente, então a lógica poderá ser outra \o/

Minha requisição: Inserir o nome do fornecedor e cliente em todas FBLs, ou seja, essa coisa linda que nós
fizemos aqui, vai refletir nos relatórios: FBL1, FBL1H, FBL1N, FBL2, FBL2N, FBL5, FBL5H, FBL5N, FBL6
e FBL6N............. Loucooo né?!
Deixei bem comentado pra ficar fácil de entender.

FUNCTION ZINTERFACE_00001650.
*"----------------------------------------------------------------------
*"*"Interface local:
*" IMPORTING
*" VALUE(I_POSTAB) LIKE RFPOS STRUCTURE RFPOS
*" EXPORTING
*" VALUE(E_POSTAB) LIKE RFPOS STRUCTURE RFPOS
*"----------------------------------------------------------------------
* Declarando WA
DATA: wa_bseg TYPE bseg.

* Isso aqui já vem desse jeito, descomente apenas, se não entender faz o curso da Fox ;)
e_postab = i_postab.

* Limpa essa birosca para não correr o risco de dá merda lá na frente


CLEAR: wa_bseg.

* Selecione todos os campos da BSEG ( se vc quiser escolher os campos específicos, fica avonts )
SELECT SINGLE *
FROM bseg
INTO wa_bseg “ Coloca os meninos aqui
WHERE bukrs = i_postab-bukrs “ Só vai pra WA_BSEG se isso aqui for verdadeiro
AND gjahr = i_postab-gjahr “ Isso aqui também
AND belnr = i_postab-belnr. “E isso também \o/

* Se tiver encontrado algum código de fornecedor, procure seu nome


IF wa_bseg-lifnr IS NOT INITIAL.

* E_POSTAB é minha tabela de exportação


* Buscando o NOME do Fornecedor
SELECT SINGLE name1
FROM lfa1
INTO (e_postab-znomef) “ ZNOMEF lembra dele lá na estrutura APPEND ? ;)
WHERE lifnr EQ wa_bseg-lifnr.
ENDIF.

* Se tiver encontrado algum código de cliente, procure seu nome


IF wa_bseg-kunnr IS NOT INITIAL.

* Buscando o NOME do Cliente


SELECT SINGLE name1
FROM kna1
INTO (e_postab-znomec) “ Haaa esse cara nós ascrencentamos na estrutura \o/
WHERE kunnr EQ wa_bseg-kunnr.
ENDIF.
* Wooow acabouuu, só isso \o///////////

ENDFUNCTION.

É isso aí pessoal, pode fazer um teste em qualquer um dos FBL's ( FBL1, FBL1H, FBL1N, FBL2, FBL2N,
FBL5, FBL5H, FBL5N, FBL6 e FBL6N ) e executar o relatório.
Na exibição lembra de clicar no botão ''Modificar Layout" e selecionar os campos que você adicionou nas
estruturas RFPOS e RFPOSX.

Você também pode gostar