cancel
Showing results for 
Search instead for 
Did you mean: 

Trigger ao Final da execução de um programa Standart

Former Member
0 Kudos

Senhores bom dia!

Sou novo no fórum e estou precisando de ajuda. Preciso notificar uma aplicação externa ao SAP ao final de uma movimentação de Mercadoria. Existe alguma forma de colocar uma trigger (gatilho) no final da execução de um programa standart?

Obrigado

Cristiano Rodrigues

Accepted Solutions (1)

Accepted Solutions (1)

former_member182114
Active Contributor
0 Kudos

Bom dia Cristiano,

Este conceito de trigger se aplica bem ao banco de dados, no caso das transações do SAP é necessário saber quais os processos estão envolvidos e qual o seu requerimento.

Por exemplo: digamos que o usuário faça essa movimentação pela transação MIRO, VF01..., porém não é o único ponto de entrada, existem outras transações e também BAPI's e IDOC's que também fazem a movimentação.

Então digo que primeiro você tem que com o funcional identificar o requerimento, depois todos os processos (transações) e daí identificar a estratégia de modificação.

Para cada um destes processos deve existir uma BAdI ou EXIT que lhe propicie o ponto de chamar o sistema externo, ou mesmo que não seja o ponto ideal você pode chamar a função IN UPDATE TASK que será executada junto à gravação final dos dados.

Atenciosamente, Fernando Da Rós

PS: Vi no fórum em inglês resposta para você usar enhancement. Infelizmente a resposta está "certa" quanto a pergunta que você fez, mas acho que é a pior das intervenções que se possa fazer num sistema SAP pois pode mudar o comportamento do sistema e dificultar upgrades/manutenção e suporte da SAP.

Former Member
0 Kudos

Fernando obrigado pela resposta. O problema é que o funcional é de uma outra empresa e o mesmo disse que não tinha como fazer. Quando chamei de trigger foi apenas para ilustrar, sei que não devo tratar como banco de dados.

Tem como explicar melhor o IN UPDATE TASK?

É possível capturar este "evento" e executar uma RFC externa?

Abraço e obrigado!!!

Cristiano Rodrigues

former_member182114
Active Contributor
0 Kudos

Bom dia Cristiano,

Primeira coisa é contextualizar melhor sua pergunta, está muito genérica.

Trigger ao final de execução de standard não existe.

Qual a necessidade? Interface ?

O que o sistema externo vai fazer?

Precisa ser ONLINE?

Depois de você ter claramente o que precisa deve-se partir para as formas de fazer a interligaçao.

Ex.:

- Você poderia ter um job rodando de minuto em minuto mandando o que mudou

- Você numa EXIT do momento da gravação de transação standard fazer um CALL FUNCTION IN UPDATE TASK, que não será executado neste momento, mas sim junto com toda a gravação após o COMMIT WORK (Observação: Por ser um canal de Update não é ideal chamar o outro sistema daqui de dentro, pode-se chamar outra função IN NEW TASK ou gravar em uma tabela custom do tipo ZMOVIMENTOS_CRIADOS_QUE_DEVO_ENVIAR, e um programa ler esta tabela e fazer o envio).

- Também através dos pontos EXIT/BAdI faladas no item anterior você poderia usar um CALL FUNCTION IN BACKGROUND TASK, que também não será executado neste momento, mas sim após a última função de UPDATE TASK após o COMMIT WORK, ou seja, é como se fosse após o COMMIT WORK do COMMIT WORK. Benefícios, só transmite se foi tudo gravado com sucesso e não roda no canal UPD (evitando necessidade de outro prog).

- Você pode fazer interligação através de IDOC's de movimentação

Em resumo, existem várias opções que podem ser utilizadas.

Atenciosamente, Fernando Da Ró

henrique_pinto
Active Contributor
0 Kudos

Creio que o requisitop está mais pra colocar um enhancement spot ao fim de um programa, pra daí executar qq código q ele queira.

Se vc tiver no ERP 6.0 (ou qq outra apliacao baseada no SAP_BASIS 7.00+) dá pra definir enhancement spot implicito ao final da ultima linha do programa.

Abs,

Henrique.

Former Member
0 Kudos

Fernando obrigado pela paciência. Vamos lá.

Como você deve ter percebido não sou do mundo SAP.

O cenário é de uma interface que deve ser acionada logo após a movimentação de mercadoria, esta inferface será responsável por atualizar alguns sistemas no legado.

Não gostaria de usar um pooling (JOB de minuto em minuto). Gostaria de uma invocação quando necessário. Como não conheço o SAP por dentro, fica difícil, principalmente quando tenho que confiar em uma consultoria, que não me responde o que eu preciso saber para montar as interfaces. Neste projeto atuo como arquiteto de integração e utilizamos o SAP .NET Connector para inovar as BAPIs. Só que neste caso, estou criando um RFCServer para ser invocado pelo SAP para então disparar atualizações para os demais sistemas. Por este motivo pensei em "trigger" não na forma de Banco de Dados, mas na forma de uma evento de finalização do programa.

De fato preciso de uma solução assíncrona, pois não quero criar uma dependência da gravação da transação com a sinalização para os sistemas.

Espero ter melhorado o cenário.

Mais uma vez obrigado pela ajuda e paciência.

Abraço,

Cristiano Rodrigues

former_member182114
Active Contributor
0 Kudos

Bom dia Cristiano,

Sim, tinha percebido a sua situação e a necessidade por alto, consigo ajudar quando às opções que você tem tecnicamente em ambos os lados e está ok a RFC Server que está querendo fazer.

Porém do ponto de vista "o que" e "quando" disparar a transmissão, ainda não está claro para mim (qdo vc diz movimentação de mercadoria, não sei onde exatamente isso se dará no SAP, tem muitas portas abertas). Um apoio funcional irá te ajudar a mapear quais são os pontos em que esta movimentação pode acontecer (transações, BAPI's, IDOC's)... Daí pode-se pensar na(s) estratégia(s) para a transmissão.

Do ponto de vista do desenho, independente da origem e quando será disparada você pode dar continuidade à RFCServer e fazer uma função Z para chamar, a nível de testes. Isto atende à pavimentação da "ponte".

Aí falta a questão dos "acessos a esta ponte".

Que acredito ficaria melhor por conta da consultoria SAP mesmo.

Atenciosamente, Fernando Da Rós

-

-


Cara, acho que sua necessidade é atendida sem grandes mistérios com IDOC standard mesmo.

Tô dando uma fuçada no sistema pra ver se acho detalhes de movimentação de material.

Edited by: Fernando Ros on Jun 4, 2010 7:00 PM

Former Member
0 Kudos

Obrigado pela ajuda. Com suas respostas iniciei uma pesquisa na Net. Já tenho um norte.

Mais uma vez obrigado pela ajuda.

Cristiano Rodrigues

henrique_pinto
Active Contributor
0 Kudos

Se for ERP 6.0 EhP 4+, aposente os IDOCs e parta pra utilizacao de web services!

Abs,

Henrique.

former_member182114
Active Contributor
0 Kudos

Bom dia Cristiano,

Não consegui achar uma resposta definitiva para você.

A título de pesquisa, veja as respostas desta busca google para movimentação de estoque.

O que dá para concluir é que a necessidade dá para ser atendida sem desenvolvimento, basta configuração dos IDOC's.

Boa pesquisa

Atenciosamente, Fernando Da Ró

Former Member
0 Kudos

O SAP.Net Connector permite monitorar o recebimento de um IDOC. Desta forma seria possível capturar este IDOC?

Mesmo que a movimentação seja feita pela BAPI_GOODSMVT_CREATE?

Abraço,

Cristiano Rodrigues

former_member182114
Active Contributor
0 Kudos

Bom dia Cristiano,

Boa esta do monitor de IDOC. Como disse me falta conhecimento específico sobre esta parte de MM para garantir 100%, porém encontrei fortes indícios que SIM, veja:

A função BAPI_GOODSMVT_CREATE faz parte do grupo de função MB_BUS2017, que tem também a ALE_GOODSMVT_CREATE, que internamente faz referência à mensagem MBGMCR, tipo de IDOC MBGMCR03.

Atenciosamente, Fernando Da Ró

Answers (1)

Answers (1)

henrique_pinto
Active Contributor
0 Kudos

Movendo a thread para o forum correto.

Att,

Henrique.

Equipe de Moderação SAP Community Network