Microsoft Dynamics AX 2012 :Table Inheritance Part 1

Hi All

In Microsoft Dynamics AX 2012, tables can inherit, or extend, from the tables that are situated above them in a hierarchy. A base table contains fields that are common to all tables that derive from it. A derived table inherits these fields, but also contains fields that are unique to its purpose. Each table contains the Support Inheritance and Extends properties, which can be used to control table inheritance.

First we need understand that when we need to apply this inheritance methodology to tables. First we need to identify the Parent table and its siblings like

DataModel

Here ‘Basic Info’ is the Parent table containing fields that are required for its child table i.e. CompnayTable and EmpTable. And these tables have their own fields as well.Now to design a Inheritance pattern we need to consider following important things:

 

  • We can only apply inheritance on regular tables not on Temp or Memory tables
  • A type discriminator field must be defined on any table inheritance hierarchy created in the AOT. The field must be defined as an int64 type on the root table, with the name of the field set to InstanceRelationType.
  • The InstanceRelationType field of the root table is read-only and stores the TableIDs of record instances; it is populated automatically by Microsoft Dynamics AX 2012.
  • Also we can only set the table properties for the table inheritance only when there are no fields in the table.
  • If these requirements are not met, a compilation error will occur when the table inheritance hierarchy is compiled.

Let create parent Table ‘BasicInfo’

BasicInfo

Setting its SuppourtInheritance Prpoerty to Yes

SupportInhheritane

When you save and compile,it will give following error

ComipleError

For this we need to create a discriminator; name ‘InstanceRelationType’ and of type Int64.Now I have created a field including discriminator

InstanceRelationTYpe

Finally I have set another table property ‘InstanceRelationType’ to ‘InstanceRelationType’  field

InstanceRelationTYpeProperty.jpg

And when I compiled, the error is gone now.

Now we have to create Two child tables

EmpTable:

First I have set the ‘SupportInheritance Property to Yes.

SupportInheritance

Now for the child table to have the parent we need to set the ‘Extends’ property of child table to parent table value like

ExtendsProperty

And finally added all fields.

EmpTable

 

CompanyTable:

Same as what already we have done for EmpTable

Now when I compile it still give the two errors i.e.

TwoCompilerErrors

Basically these errors indicates that the automatic relation that have been created in the child table,have the same relation name and so it is showing duplicate so for this I have changed the name See below screen shot

ScreenShot (see below)

 FinalScreenShot

And that’s it we have created Parent-child hierarchy table .

Finally, we need to also set the ‘Abstract’ property of the parent table to ‘Yes’ and for this we need to understand below.

Abstract versus concrete tables:

Tables in a table inheritance hierarchy can be defined as either abstract or concrete, depending on whether the table property Abstract is set to Yes or No. Records can only be created for concrete table types. Any attempt to create a record and insert it in an abstract table will result in a run-time error. The position of the table in the inheritance hierarchy does not restrict its ability to be defined as abstract.

Advertisements

5 responses to “Microsoft Dynamics AX 2012 :Table Inheritance Part 1

  1. thanks asim…very helpful….can you help me with a small sample project….e.g. bank project in AX…with all the knowledge you have…..pls yaar…help…thanks.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s