Este artigo aplica-se ao Microsoft Dynamics AX para todas as regiões.
Sintomas
Quando regista uma encomenda de compra no Microsoft Dynamics AX 2009, recebe a seguinte mensagem de erro:
Não é possível criar um registo no cabeçalho de encomenda de compra - Actualizar tabela (PurchParmSubTable).
Este problema ocorre caso se verifique uma das seguintes condições:
-
Activar a definição de "configuração de pista de auditoria da assinatura electrónica de ciências da vida" para todas as tabelas.
-
Criar um registo para a tabela comuns.
-
Definir a tabela de PurchParmTable no registo de base de dados.
Este problema ocorre quando é registada uma encomenda de compra, uma lista de guias de remessa, remessa e uma factura. Este problema ocorre nos seguintes produtos:
-
Microsoft Dynamics AX 2009 com o Service Pack 1
-
Microsoft Dynamics AX 2009
Resolução
Informações sobre a correcção
Agora tem uma correcção suportada disponível na Microsoft. Contudo, destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde o próximo service pack do Microsoft Dynamics AX 2009 ou a próxima versão que contenha esta correcção. Nota Em casos especiais, os custos normalmente inerentes para suporte chamadas poderão ser anuladas se um técnico de suporte técnico do Microsoft Dynamics e produtos relacionados determina que uma actualização específica resolverá o problema. Os custos normais do suporte serão aplicados a problemas e questões de suporte adicionais que não sejam qualificáveis para a atualização específica em questão.
Informações de instalação
Antes de instalar esta correcção, certifique-se de que os utilizadores de cliente do Microsoft Dynamics AX são registados no sistema. Deve ser o único usuário do cliente que tem sessão iniciada quando implementar esta correcção. Para implementar esta correcção, tem de ter uma licença de desenvolvedor.Nota Recomenda-se que a conta de utilizador na janela Logins do Windows ou na janela Logins de base de dados seja membro do grupo de administradores utilizadores no Microsoft Dynamics AX.
Alterações de código
A Microsoft fornece exemplos de programação apenas a título ilustrativo, sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas que são utilizadas para criar e depurar procedimentos. Técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento. No entanto, não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.Sempre o código de ensaio corrige num ambiente controlado antes de aplicar as correcções para os computadores de produção.Para resolver este problema, siga os estes passos:
-
Substitui o código do método Inserir na tabela PurchParmSubTable do seguinte modo:
public void insert(){ PurchParmSubTable tempPurchParmSubTable; ; select tempPurchParmSubTable where tempPurchParmSubTable.ParmId == this.ParmId && tempPurchParmSubTable.TableRefId == this.TableRefId && tempPurchParmSubTable.OrigPurchId == this.OrigPurchId; if(tempPurchParmSubTable.RecId == 0) { super(); }}
-
Substitui o código do método de createFromPurchParmTable na tabela PurchParmSubTable do seguinte modo:
static PurchParmSubTable createFromPurchParmTable(PurchParmTable _purchParmTable, boolean _insert = true){ PurchParmSubTable purchParmSubTable; systemSequence systemSequence; ; ttsbegin; purchParmSubTable.clear(); purchParmSubTable.initValue(); purchParmSubTable.initFromPurchParmTable(_purchParmTable); if (_insert) { systemSequence = new systemSequence(); purchParmSubTable.RecId = systemSequence.reserveValues(1, tablenum(PurchParmSubTable)); purchParmSubTable.insert(); } ttscommit; return purchParmSubTable;}
-
Substitui o código do método Inserir na tabela SalesParmSubTable do seguinte modo:
public void insert(){ SalesParmSubTable tempSalesParmSubTable; ; select tempSalesParmSubTable where tempSalesParmSubTable.ParmId == this.ParmId && tempSalesParmSubTable.TableRefId == this.TableRefId && tempSalesParmSubTable.OrigSalesId == this.OrigSalesId && tempSalesParmSubTable.subId == this.subId; if(tempSalesParmSubTable.RecId == 0) { super(); }}
Nota Tem de intercalar todas as personalizações existentes nestes métodos.
Pré-requisitos
Não existem pré-requisitos.
Requisito de reinício
Não é necessário reiniciar o computador depois de aplicar esta correcção.
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".