Tuesday, September 1, 2015

PostLoad() method in AX tables

Today I found an interesting thing with regards to AX tables and this post is all about this new experience which is the PostLoad() method in AX tables.

When we create a new table in AOT, Morphx automatically creates a series of methods for it. We cannot see those methods but those can be overriden on each table as per requirements. PostLoad() is one of these system methods. List of all system methods can be seen from

Lets create a new table, I named it PostLoadTable with two fields Name and Value.



I added 5 records in the table manually (open table and added).

Tables in Microsoft Dynamics AX have a number of system-defined methods, such as insert, validateField,validateWrite. For a list of these methods, see the xRecord system class. The xRecord class can be seen as the base class for the Common table. The Common table can be seen as the base table for all tables.

In any table class, the body of each system-defined method contains only a call to super(). When you edit the X++ code in a table method, you override the parent's implementation of that method. Usually the call to super() must remain in the methods that you edit.

PostLoad() is the method that is used to read records from database and you can perform any custom logic by overriding this method on any table.

Let’s override this method and play around it

public void postLoad()
{
    super();

    if (this.Name == 'MEL')
        this.Value = 5;
}

By opening table again it shows me different result as compared to what we entered earlier as shown above.



Value for name MEL changes from 1 to 5 and I did not require to call update method.

There are many existing implementation of postLoad method in AX tables, I am listing few of them here for ease.

HCMWorkerTable\postLoad()
VendTrans\PostLoad()
CustTrans\PostLoad()