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.
PaymentTermEntity NULL-Werte in Feldern

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.
PaymentTermEntity View 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.
PaymentTermEntity ConfigKey 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 😉

Schreibe einen Kommentar