Fehler "Objektverweis nicht auf eine instance eines Objekts festgelegt" in Microsoft Management Reporter 2012 für Microsoft Dynamics AX 2012

Dieser Artikel enthält eine Lösung für den Objektverweis, der nicht auf eine instance eines Objektfehlers festgelegt ist, der in Microsoft Management Reporter 2012 für Microsoft Dynamics AX 2012 auftritt.

Gilt für: Microsoft Management Reporter 2012, Microsoft Dynamics AX 2012 R3
Ursprüngliche KB-Nummer: 2967363

Problembeschreibung

Sie erhalten die folgende Fehlermeldung in den Integrationsprotokollen in der Management Reporter-Konfigurationskonsole in Microsoft Management Reporter 2012 für Microsoft Dynamics AX 2012:

[AX 2012 Accounts to Account] ist ein Fehler aufgetreten. Die Verarbeitung wird abgebrochen. Fehlertext: Der Objektverweis ist nicht auf eine instance eines Objekts festgelegt.

Darüber hinaus kann der folgende Fehler auch im Ereignisanzeige angezeigt werden:

Abgefangene Ausnahme: [System.NullReferenceException] Objektverweis ist nicht auf eine instance eines Objekts festgelegt. Stapelüberwachung:at
Microsoft.Dynamics.Integration.Adapters.AX2012GL.DataAccessHelper.GetEnumLabelId(EnumMetadata enumList, Nullable'1 value) at
Microsoft.Dynamics.Integration.Adapters.AX2012GL.DataAccessHelper.GetEnumLabelId(EnumMetadata enumList, Nullable'1 value) at
Microsoft.Dynamics.Integration.Adapters.AX2012GL.AX2012GLAdapter.GetEnumValueLabelString(String enumName, Nullable'1 value) at
Microsoft.Dynamics.Integration.Adapters.AX2012GL.AccountObjectProvider.PopulateAccountAttributes(SqlDataReader accountReader) at
Microsoft.Dynamics.Integration.Adapters.AX2012GL.AccountObjectProvider.CreateAccount(SqlDataReader reader, Dimension mainAccountDimension, Int64 mainAccountRecId) at Microsoft.Dynamics.Integration.Adapters.AX2012GL.AccountObjectProvider.QueryAccountValues() at
Microsoft.Dynamics.Integration.Adapters.AX2012GL.AccountObjectProvider.ReadObjectKeys(DateTime modifiedDate) at
Microsoft.Dynamics.Integration.Service.Tasks.MapWork.ReadObjectKeyList(DbMap map, DateTime queryDate, Int32& count)at
Microsoft.Dynamics.Integration.Service.Tasks.MapWork.ProcessRecordsImplementation(OperationType operationType)

Ursache

Dieses Problem tritt auf, weil ein Post-Typ, der in der MainAccount-Tabelle in der AX-Datenbank vorhanden ist, aber nicht in der Anwendungsobjektstruktur (Application Object Tree, AOT) vorhanden ist.

Lösung

Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:

  1. Führen Sie die folgende SQL-Anweisung für die AX-Datenbank aus, um den Buchungstyp der Konten zu überprüfen:

    select distinct (postingtype) from MainAccount
    
  2. Melden Sie sich bei AX an, und überprüfen Sie die AOT. Um zu AOT zu navigieren, wählen Sie Datenwörterbuch, Basisenums und dann LedgerPostingType aus. Überprüfen Sie die Eigenschaften der einzelnen Elemente, und beachten Sie die Tabelle EnumValues.

  3. Wenn Unterschiede zwischen der Tabelle MainAccount und der Tabelle EnumValues in AOT gefunden werden, muss für die Konten, die ungültige Buchungstypen enthalten, ein gültiger Buchungstyp festgelegt sein.

    Verwenden Sie beispielsweise die folgende Anweisung, um die MainAccount-Tabelle zu aktualisieren, in der der ungültige Buchungstyp 255 in AOT nicht vorhanden ist. Diese Anweisung legt den Buchungstyp auf einen gültigen Typ von 0 fest.

    update MainAccount set postingtype = 0 where postingtype = 255
    
  4. Wenn Sie die Tabelle MainAccount aktualisieren, müssen Sie den Management Reporter Data Mart neu erstellen. Gehen Sie dazu wie folgt vor:

    1. Wählen Sie Start aus, und öffnen Sie die Konfigurationskonsole auf dem Server.
    2. Wählen Sie im linken Navigationsbereich ERP-Integrationen aus.
    3. Wählen Sie die verwendete Integration aus, und deaktivieren Sie dann die Integration, indem Sie Integration deaktivieren auswählen.
    4. Wählen Sie Entfernen aus, um die ERP-Integration zu entfernen.
    5. Wählen Sie im linken Navigationsbereich Management Reporter Services aus, und beenden Sie beide Management Reporter-Dienste.
    6. Sichern und löschen Sie die DDB-Datenbank in Microsoft SQL Management Studio.
    7. Starten Sie die Management Reporter-Dienste.
    8. Wählen Sie Datei und dann Konfigurieren aus, um die ERP-Integration erneut zu konfigurieren.
    9. Wenn die Integration konfiguriert ist, wählen Sie die Integration auf der linken Seite der Konfigurationskonsole und dann Integration aktivieren aus.