Sunteți pe pagina 1din 2

Sistema R/3 ______________________________________________________________ __

HY SIMGMB_DOCUMENT_BADI ____________________________________________________ BADIs durante a criao de um documento de material


A ampliao MB_DOCUMENT_BADI possui dois mtodos que so chamados com a mesma interface, mas em diferentes momentos. Todos os dados de documento de material so transferidos a este BADI a partir das seguintes tabelas: o o o MKPF (cabealho do documento de material) MSEG (itens do documento de material) VM07M (dados de atualizao)

Estes dados podem ser utilizados em outros programas, mas no podem ser modificados. Os mtodos diferenciam-se nos seguintes momentos de chamada: o O mtodo MB_DOCUMENT_BEFORE_UPDATE chamado antes da gerao do documento FI, o que significa que a chamada ocorre, mesmo quando o programa cancelado devido a um erro no processamento seguinte. A atualizao dos dados em tabelas separadas deve estar sempre includa nos mdulos de funo que so chamados com o adicional "em tarefa de atualizao". Com isso, garante-se que todos os dados sejam atualizados de modo consistente. O mtodo MB_DOCUMENT_UPDATE s executado durante a atualizao. Assim, todas as atualizaes em tabelas so imediatamente executadas e no precisam estar includas "em tarefa de atualizao" nos mdulos de funo. Por motivos de performance, o usurio no deve ler as tabelas neste momento, assim como no deve executar rotinas demoradas.

A chamada de MB_DOCUMENT_BEFORE_UPDATE deve sempre ocorrer antes da chamada de MB_DOCUMENT_UPDATE, principalmente quando o tempo crtico durante o registro de documentos de material. O mtodo MB_DOCUMENT_UPDATE processado aps a chamada do n documento FI. Como conseqncia, nenhum outro documento FI poder ser registrado, at que este documento seja atualizado por completo. Mesmo se ambos os mtodos encontrarem-se na mesma classe, o usurio no poder acessar os mesmos campos globais, visto que os mtodos so chamados em diferentes momentos e por isso executados em uma outra rea de roll. O usurio encontra exemplos coding para ambos os mtodos a partir da exibio de BADIs com Saltar -> Exemplo coding -> Exibir. Nota A ampliao no transfere os dados ao documento de material, ou seja, no possvel modificar os dados do documento de material antes da atualizao. Uma estruturao incorreta deste BADI pode levar a inconsistncias entre documentos e estoques, assim como entre documentos de material e documentos contbeis. Inconsistncias como estas podem ser causadas, por exemplo, pelos seguintes elementos em BADI: o COMMIT WORK

______________________________________________________________ __
SAP AG 18.08.2009 1

Sistema R/3 ______________________________________________________________

__

o o o

Remote Function Call (CALL FUNCTION ... DESTINATION) Atualizaes prprias em tabelas de documentos ou de estoques (p.ex. atualizao nas tabelas MBEW, MARD, MSEG) Desbloqueio de dados (p.ex. atravs de DEQUEUE_ALL)

Antes de chamar ambos os BADIs, os dados j foram marcados para atualizao. Se um COMMIT WORK ou um Remote Function Call for transmitido ampliao, este ser escrito no banco de dados. Se ocorrer ainda um erro depois do processamento dos BADIs, no poder ser executado nenhum ROLL BACK completamente, visto que os dados j foram escritos no banco de dados, com exceo de COMMIT ou Remote Function Call. Isto pode gerar um estado inconsistente (p.ex. documento de material sem documento contbil), cuja restaurao implica em muito trabalho e custos. Os BAdIs no so apropriados para atualizaes em tabelas de estoques especficas do cliente, visto que tais atualizaes destroem a atualizao standard do estoque. Um desbloqueio dos dados (p.ex. via DEQUEUE_ALL) tambm muito crtico, visto que os dados a serem atualizados no so mais protegidos de atualizaes de sistemas externos, e podem ocorrer inconsistncias por meio de atualizaes paralelas. Antes de ativar uma ampliao, verificar que o BADI no possui nenhum caractere coding crtico. Se j ocorreram inconsistncias de dados no sistema do usurio como resultado do BADI, remover os caracteres coding crticos, antes que eles causem outras inconsistncias.

______________________________________________________________ __
2 18.08.2009 SAP AG