NULL-Werte in Data Entity bzw. View
Vor einigen Tagen wurde ich von einem Kollegen mit einer interessanten Frage konfrontiert. „Es ist unzweifelhaft, dass in der darunterliegenden Tabelle entsprechende Daten vorhanden sind. Die Data Entity, die diese Tabelle teilweise offenlegt, lässt jedoch einige der Felder einfach leer. Kannst du mir erklären, warum?“ Folgendes haben wir anschließend herausgefunden.
Das in Frage stehende Objekt ist genau so im Standard enthalten. Die Data Entity PaymentTermEntity eignet sich somit wunderbar als Anschauungsbeispiel.
Verhalten und Beobachtungen
Verwendet man die Data Entity zum Exportieren, so lässt sich feststellen, dass die Felder CustomerDueDateUpdatePolicy, CutoffDayOfMonth und VendorDueDateUpdatePolicy immer leer bleiben.
Nachdem man dann die Properties der Felder an der Data Entity geprüft hat (ohne tieferen Erkenntnisgewinn) ist es vielleicht eine gute Idee, mal die View abzufragen, auf der die Data Entity basiert. Jede Data Entity wird auf Seiten SQL Server in eine View übersetzt, die darüber hinaus den gleichen Namen trägt. Zum Abfragen verwende ich SQL Server Management Studio.
Nachdem dann offensichtlich geworden ist, dass die View schon keine Daten liefert (obwohl in der Tabelle PaymTerm durchaus welche vorhanden sind), ergibt es Sinn, die Definition derselben zu prüfen (wieder mit SSMS):
CREATE VIEW [dbo].[PAYMENTTERMENTITY] AS SELECT T1.ADDITIONALMONTHS AS ADDITIONALMONTHSFORCUTOFFDATE, [...] T2.RECID AS RECID#2, CAST(NULL AS INT) AS VENDORDUEDATEUPDATEPOLICY, CAST(NULL AS INT) AS CUTOFFDAYOFMONTH, CAST(NULL AS INT) AS CUSTOMERDUEDATEUPDATEPOLICY FROM PAYMTERM T1 LEFT OUTER JOIN DIMENSIONCOMBINATIONENTITY T2 ON(( T1.CASHLEDGERDIMENSION = T2.RECID) AND ( T1.PARTITION = T2.PARTITION))
Ich habe zwecks Übersichtlichkeit die Feldliste ein wenig eingedampft. Was man hier sehen kann, bedeutet, dass die drei Felder gar nicht mal aus der Tabelle gelesen werden, sondern ganz stumpf und konstant auf NULL gesetzt werden!
Ursache
Es hat einen klitzekleinen Moment gedauert, bis wir dann drauf kamen. Am Ende ist dafür ein deaktivierter Configuration Key verantwortlich, der allen drei Feldern anhaftet – PaymCalendar.
Wenn dir also eine View über den Weg laufen sollte, die gemappte Felder NULLt, dann könnte das daran liegen, dass die Felder der zugehörigen Tabelle mit einem deaktivierten ConfigKey verbunden sind.
Nachdem wir das dann so gesehen haben, kam es mir irgendwie seltsam vertraut vor. Ich schätze, dass ich das schon mal unter AX 2012 so beobachtet habe und gehe schwer davon aus, dass sich Views dort ganz ähnlich verhalten, wenn deaktivierte Configuration Keys im Spiel sind.
Danke noch an Marius für die zu diesem Blogpost inspirierende Frage
*This post is locked for comments