on 06-04-2010 1:50 PM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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ó
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.
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
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
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ó
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ó
Movendo a thread para o forum correto.
Att,
Henrique.
Equipe de Moderação SAP Community Network
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.