Por que o ABAP precisa de SET UPDATE TASK LOCAL

E o que fazer se, após chamar a BAPI padrão, a instrução COMMIT WORK AND WAIT não esperar pela execução de todos os módulos de atualização V1.



Problema de sincronização do atualizador



O sistema SAP R / 3 usa módulos de atualização para armazenar transacionalmente dados adicionais relacionados aos dados mestre. Você pode ler mais sobre isso, por exemplo, aqui .



Para consistência dos dados após o salvamento, é necessário aguardar a execução dos módulos do tipo V1. Em geral, isso é feito executando o comando COMMIT WORK AND WAIT.

Alguns dos módulos de função BAPI padrão chamam COMMIT WORK no texto . Depois de executar esse FM, você não poderá verificar se o processo de salvamento foi concluído com nenhum comando simples. Para resolver este problema, alguns programadores escrevem algumas consultas complicadas na tabela VB ou esperam por n segundos irracionais. Tudo é muito mais simples.



SET UPDATE TASK LOCAL vem para o resgate



Resumindo, ele inicia o modo de execução local para os módulos de atualização V1. O modo é ativado para módulos de atualização V1 cadastrados desde o momento em que o operador foi chamado até o final do DB atual do LUW. Neste caso, módulos V1:



  • salvo na memória ABAP, não na tabela de atualização VB;
  • são executados no processo atual, não em paralelo;
  • sincronizado pela instrução COMMIT WORK.


Ou seja, ao chamar COMMIT WORK, o programa aguardará até que os módulos de atualização V1 cadastrados localmente sejam executados. A diferença é mostrada na figura:







Total SET UPDATE TASK LOCAL é útil se você não pode controlar a instrução COMMIT WORK e deseja esperar que todos os módulos V1 um processo seja concluído.



All Articles