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
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’
Setting its SuppourtInheritance Prpoerty to Yes
When you save and
compile,it will give following error
For this we need to create a discriminator; name
‘InstanceRelationType’ and of type Int64.Now I have created a field including
discriminator
Finally I have set another table property ‘InstanceRelationType’
to ‘InstanceRelationType’ field
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.
And finally added all fields.
CompanyTable:
Same as what already we have done for EmpTable
Now when I compile it still give the two errors i.e.
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)
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.
No comments:
Post a Comment