web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :

NULL-Werte in Data Entity bzw. View

Volker Breitkopf Profile Picture Volker Breitkopf Microsoft Employee

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

Comments

*This post is locked for comments